]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blame - bip39-standalone.html
add dash testnet
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
CommitLineData
ebd8d4e8
IC
1<!DOCTYPE html>
2<html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
ab78acc6 6 <style>/*!
ebd8d4e8
IC
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)
ab78acc6
IC
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" />
b630f83d 14 <meta content="Ian Coleman" name="author" />
18f16009 15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
3af2954a 16
ab78acc6
IC
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
d5dc92fd
IC
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
0515eeec
IC
48 .phrase {
49 word-break: keep-all;
50 }
2a6dd137 51 .generate-container .strength {
b0818b31
IC
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
ea87f1d3 56 .languages a {
0515eeec
IC
57 padding-left: 10px;
58 }
ea87f1d3
IC
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
d737abf6
IC
63 .monospace {
64 font-family: monospace;
65 }
2a6dd137
IC
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
e00964cc
IC
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
52da415f
IC
100 .qr-hint,
101 .qr-warning {
e00964cc 102 padding: 2px;
52da415f
IC
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
e00964cc 109 }
920eb591
IC
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
ab78acc6
IC
115 </style>
116 </head>
117 <body>
118 <div class="container">
3af2954a 119
ab78acc6 120 <h1 class="text-center">Mnemonic Code Converter</h1>
920eb591 121 <p class="version">v0.1.0</p>
ab78acc6
IC
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
ab78acc6 127 <div class="form-group">
c6624d51
IC
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
ea87f1d3
IC
130 <p data-translate>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).</p>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
c6624d51
IC
135 </div>
136 </div>
137 <div class="form-group generate-container">
b0818b31 138 <label class="col-sm-2 control-label"></label>
ab78acc6 139 <div class="col-sm-10">
b0818b31
IC
140 <div class="form-inline">
141 <div class="input-group-inline">
ea87f1d3 142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
b0818b31 143 <button class="btn generate">Generate</button>
b0818b31
IC
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
ea87f1d3 154 <span data-translate>words</span>
b0818b31
IC
155 </div>
156 </div>
ab78acc6 157 </div>
0515eeec 158 </div>
c6624d51 159 <div class="entropy-container hidden">
2a6dd137 160 <div class="form-group text-danger">
ea87f1d3 161 <label class="col-sm-2 control-label" data-translate>Warning</label>
2a6dd137 162 <div class="col-sm-10 form-control-static">
ea87f1d3
IC
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
18abe53b
IC
165 </div>
166 </div>
2a6dd137 167 <div class="form-group">
ea87f1d3 168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
2a6dd137 169 <div class="col-sm-7">
ea87f1d3 170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
95f04905 171 <div class="row">
ea87f1d3 172 <label class="col-sm-3 control-label" data-translate>Strength</label>
95f04905 173 <div class="strength col-sm-3 form-control-static"></div>
ea87f1d3 174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
95f04905
IC
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
ea87f1d3 178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
95f04905 179 <div class="type col-sm-3 form-control-static"></div>
ea87f1d3 180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
95f04905
IC
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
ea87f1d3 184 <label class="col-sm-3 control-label" data-translate>Word Count</label>
95f04905 185 <div class="word-count col-sm-3 form-control-static"></div>
52da415f 186 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
95f04905
IC
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
ea87f1d3 189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
2a6dd137 190 <div class="filtered col-sm-9 form-control-static"></div>
ea87f1d3 191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
2a6dd137 192 <div class="binary col-sm-9 form-control-static"></div>
ea87f1d3 193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
2a6dd137 194 <div class="col-sm-9">
18abe53b 195 <select class="mnemonic-length form-control">
5ed50bd9 196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
ea87f1d3 197 <option value="12">12 <span data-translate>Words</span></option>
5ed50bd9 198 <option value="15">15 <span data-translate>Words</option>
ea87f1d3
IC
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
18abe53b 202 </select>
c6624d51 203 </div>
18abe53b 204 </div>
2a6dd137 205 <div class="col-sm-3">
ea87f1d3 206 <p data-translate>Valid entropy values include:</p>
2a6dd137 207 <ul>
ea87f1d3
IC
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
2a6dd137
IC
214 </ul>
215 </div>
c6624d51
IC
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
ea87f1d3 223 <span data-translate>Supply my own source of entropy</span>
c6624d51
IC
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
ea87f1d3 228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
0515eeec 229 <div class="col-sm-10 languages">
ea87f1d3
IC
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
0515eeec 239 </div>
ab78acc6
IC
240 </div>
241 <div class="form-group">
ea87f1d3 242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
ab78acc6 243 <div class="col-sm-10">
e00964cc 244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
ab78acc6
IC
245 </div>
246 </div>
247 <div class="form-group">
ea87f1d3 248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
ab78acc6
IC
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
73161a92 253 <div class="form-group">
ea87f1d3 254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
73161a92 255 <div class="col-sm-10">
e00964cc 256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
73161a92
IC
257 </div>
258 </div>
ab78acc6 259 <div class="form-group">
ea87f1d3 260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
ab78acc6
IC
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
ea87f1d3 268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
ab78acc6 269 <div class="col-sm-10">
e00964cc 270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
ab78acc6
IC
271 </div>
272 </div>
273 </form>
274 </div>
275 </div>
3af2954a 276
ab78acc6 277 <hr>
3af2954a 278
ab78acc6
IC
279 <div class="row">
280 <div class="col-md-12">
281 <h2>Derivation Path</h2>
282 <ul class="derivation-type nav nav-tabs" role="tablist">
d5dc92fd 283 <li id="bip44-tab" class="active">
ab78acc6
IC
284 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
285 </li>
286 <li id="bip32-tab">
287 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
288 </li>
289 </ul>
290 <div class="derivation-type tab-content">
d5dc92fd 291 <div id="bip44" class="tab-pane active">
ab78acc6
IC
292 <form class="form-horizontal" role="form">
293 <br>
294 <div class="col-sm-2"></div>
295 <div class="col-sm-10">
ea87f1d3
IC
296 <p data-translate-html>
297 For more info see the
298 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
299 </p>
ab78acc6
IC
300 </div>
301 <div class="form-group">
302 <label for="purpose" class="col-sm-2 control-label">
ea87f1d3 303 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
ab78acc6
IC
304 </label>
305 <div class="col-sm-10">
306 <input id="purpose" type="text" class="purpose form-control" value="44">
307 </div>
308 </div>
309 <div class="form-group">
310 <label for="coin" class="col-sm-2 control-label">
ea87f1d3 311 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
ab78acc6
IC
312 </label>
313 <div class="col-sm-10">
314 <input id="coin" type="text" class="coin form-control" value="0">
315 </div>
316 </div>
317 <div class="form-group">
318 <label for="account" class="col-sm-2 control-label">
ea87f1d3 319 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
ab78acc6
IC
320 </label>
321 <div class="col-sm-10">
322 <input id="account" type="text" class="account form-control" value="0">
323 </div>
324 </div>
325 <div class="form-group">
326 <label for="change" class="col-sm-2 control-label">
ea87f1d3 327 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
ab78acc6
IC
328 </label>
329 <div class="col-sm-10">
330 <input id="change" type="text" class="change form-control" value="0">
331 </div>
332 </div>
20083ab9
IC
333 <div class="form-group">
334 <label class="col-sm-2 control-label">
335 </label>
336 <div class="col-sm-10">
f3bfd2a5 337 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
20083ab9
IC
338 </div>
339 </div>
340 <div class="form-group">
341 <label for="account-xprv" class="col-sm-2 control-label">
342 <span data-translate>Account Extended Private Key</span>
343 </label>
344 <div class="col-sm-10">
345 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
346 </div>
347 </div>
348 <div class="form-group">
349 <label for="account-xpub" class="col-sm-2 control-label">
350 <span data-translate>Account Extended Public Key</span>
351 </label>
352 <div class="col-sm-10">
353 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
354 </div>
355 </div>
356 <div class="form-group">
357 <label class="col-sm-2 control-label">
358 </label>
359 <div class="col-sm-10">
360 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
361 </div>
362 </div>
ab78acc6 363 <div class="form-group">
ea87f1d3 364 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
ab78acc6
IC
365 <div class="col-sm-10">
366 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
367 </div>
368 </div>
369 </form>
370 </div>
371 <div id="bip32" class="tab-pane">
372 <form class="form-horizontal" role="form">
373 <br>
374 <div class="col-sm-2"></div>
375 <div class="col-sm-10">
ea87f1d3
IC
376 <p data-translate>
377 For more info see the
378 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
379 </p>
ab78acc6 380 </div>
56530adc
IC
381 <div class="form-group">
382 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
383 <div class="col-sm-10">
384 <select id="bip32-client" class="client form-control">
385 <option value="custom">Custom derivation path</option>
386 <!-- populated by javascript -->
387 </select>
388 </div>
389 </div>
ab78acc6 390 <div class="form-group">
ea87f1d3 391 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
ab78acc6
IC
392 <div class="col-sm-10">
393 <input id="bip32-path" type="text" class="path form-control" value="m/0">
394 </div>
395 </div>
1975bfbc
IC
396 <div class="form-group">
397 <div class="col-sm-2"></div>
398 <label class="col-sm-10">
399 <input class="hardened-addresses" type="checkbox">
ea87f1d3 400 <span data-translate>Use hardened addresses</span>
1975bfbc
IC
401 </label>
402 </div>
1975bfbc 403 <div class="form-group">
ea87f1d3 404 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
1975bfbc 405 <div class="col-sm-10">
ea87f1d3 406 <p class="form-control no-border" data-translate-html>
1975bfbc 407 Use path <code>m/0'/0'</code> with hardened addresses.
c866242d 408 </p>
ea87f1d3
IC
409 <p class="form-control no-border" data-translate-html>
410 For more info see the
411 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
1975bfbc
IC
412 </p>
413 </div>
414 </div>
56530adc
IC
415 <div class="form-group">
416 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
417 <div class="col-sm-10">
418 <p class="form-control no-border">
419 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
420 </p>
421 <p class="form-control no-border">
422 <span data-translate>For more info see</span>
423 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
424 </p>
425 </div>
426 </div>
aa51da11 427 <div class="form-group">
ea87f1d3 428 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
aa51da11
IC
429 <div class="col-sm-10">
430 <p class="form-control no-border">
ea87f1d3
IC
431 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
432 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
c866242d
IC
433 </p>
434 <p class="form-control no-border">
ea87f1d3
IC
435 <span data-translate>Can be used with</span>:
436 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
aa51da11
IC
437 </p>
438 </div>
439 </div>
ab78acc6
IC
440 </form>
441 </div>
442 </div>
443 <form class="form-horizontal" role="form">
444 <div class="form-group">
20083ab9 445 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
ab78acc6 446 <div class="col-sm-10">
e00964cc 447 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
ab78acc6
IC
448 </div>
449 </div>
450 <div class="form-group">
20083ab9 451 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
ab78acc6 452 <div class="col-sm-10">
e00964cc 453 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
ab78acc6
IC
454 </div>
455 </div>
456 </form>
457 </div>
458 </div>
3af2954a 459
ab78acc6 460 <hr>
3af2954a 461
ab78acc6
IC
462 <div class="row">
463 <div class="col-md-12">
464 <h2>Derived Addresses</h2>
ea87f1d3 465 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
ab78acc6
IC
466 <table class="table table-striped">
467 <thead>
468 <th>
469 <div class="input-group">
ea87f1d3
IC
470 <span data-translate>Path</span>&nbsp;&nbsp;
471 <button class="index-toggle" data-translate>Toggle</button>
ab78acc6
IC
472 </div>
473 </th>
474 <th>
475 <div class="input-group">
ea87f1d3
IC
476 <span data-translate>Address</span>&nbsp;&nbsp;
477 <button class="address-toggle" data-translate>Toggle</button>
ab78acc6
IC
478 </div>
479 </th>
1b12b2f5
IC
480 <th>
481 <div class="input-group">
ea87f1d3
IC
482 <span data-translate>Public Key</span>&nbsp;&nbsp;
483 <button class="public-key-toggle" data-translate>Toggle</button>
1b12b2f5
IC
484 </div>
485 </th>
ab78acc6
IC
486 <th>
487 <div class="input-group">
ea87f1d3
IC
488 <span data-translate>Private Key</span>&nbsp;&nbsp;
489 <button class="private-key-toggle" data-translate>Toggle</button>
ab78acc6
IC
490 </div>
491 </th>
492 </thead>
d737abf6 493 <tbody class="addresses monospace">
c866242d
IC
494 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
495 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
496 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
497 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
498 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
ab78acc6
IC
499 </tbody>
500 </table>
501 </div>
502 </div>
ea87f1d3 503 <span data-translate>Show more rows</span>:
ab78acc6 504 <input type="number" class="rows-to-add" value="20">
ea87f1d3 505 <button class="more" data-translate>Show</button>
3af2954a 506
ab78acc6 507 <hr>
3af2954a 508
ab78acc6
IC
509 <div class="row">
510 <div class="col-md-12">
ea87f1d3
IC
511 <h2 data-translate>More info</h2>
512 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
513 <p data-translate-html>
ab78acc6
IC
514 Read more at the
515 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
516 </p>
ea87f1d3
IC
517 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
518 <p data-translate-html>
ab78acc6
IC
519 Read more at the
520 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
ea87f1d3
IC
521 </p>
522 <p data-translate-html>
523 See the demo at
ab78acc6
IC
524 <a href="http://bip32.org/" target="_blank">bip32.org</a>
525 </p>
ea87f1d3
IC
526 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
527 <p data-translate-html>
ab78acc6
IC
528 Read more at the
529 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
530 </p>
ea87f1d3 531 <h3 data-translate>Private Keys</h3>
ab78acc6 532 <p>
ea87f1d3
IC
533 <span data-translate-html>
534 Use private keys at
535 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
536 </span>
537 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
ab78acc6 538 </p>
ea87f1d3 539 <h3 id="entropy-notes" data-translate>Entropy</h3>
c6624d51 540 <p>
ea87f1d3
IC
541 <span data-translate-html>
542 Entropy values must be sourced from a
543 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
544 </span>
545 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
546 <span data-translate-html>
547 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
548 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
549 random enough for the needs of this tool.
550 </span>
c6624d51 551 </p>
434caecd
IC
552 <p>
553 <strong><span data-translate>Do not store entropy.</span></strong>
554 </p>
555 <p>
556 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
557 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
558 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
559 </p>
c6624d51 560 <p>
ea87f1d3
IC
561 <span data-translate-html>
562 The random mnemonic generator on this page uses a
563 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
564 </span>
565 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
566 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
567 <span data-translate>In that case you might choose to use your own source of entropy.</span>
c6624d51
IC
568 </p>
569 <p>
ea87f1d3 570 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
c6624d51 571 </p>
52da415f
IC
572 <h3 data-translate>License</h3>
573 <p>
574 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
575 </span>
576 </p>
577 <p data-translate>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
ab78acc6
IC
578 </div>
579 </div>
3af2954a 580
ab78acc6 581 <hr>
3af2954a 582
ab78acc6
IC
583 <div class="row">
584 <div class="col-md-12">
3af2954a 585
ea87f1d3 586 <h2 data-translate>Offline Usage</h2>
3af2954a 587
ea87f1d3 588 <p data-translate>
ab78acc6
IC
589 You can use this tool without having to be online.
590 </p>
ea87f1d3 591 <p data-translate>
ab78acc6
IC
592 In your browser, select file save-as, and save this page
593 as a file.
594 </p>
ea87f1d3 595 <p data-translate>
ab78acc6
IC
596 Double-click that file to open it in a browser
597 on any offline computer.
598 </p>
599 <p>
ea87f1d3
IC
600 <span data-translate>Alternatively, download the file from the repository</span>
601 -
602 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
603 </p>
3af2954a 604
ab78acc6
IC
605 </div>
606 </div>
3af2954a 607
ab78acc6 608 <hr>
3af2954a 609
ab78acc6
IC
610 <div class="row">
611 <div class="col-md-12">
3af2954a 612
ea87f1d3 613 <h2 data-translate>This project is 100% open-source code</h2>
3af2954a 614
ab78acc6 615 <p>
ea87f1d3
IC
616 <span data-translate>Get the source code from the repository</span>
617 -
b630f83d
IC
618 <a href="https://github.com/iancoleman/bip39" target="_blank">
619 https://github.com/iancoleman/bip39
ab78acc6
IC
620 </a>
621 </p>
3af2954a 622
ea87f1d3 623 <h3 data-translate>Libraries</h3>
3af2954a 624
ab78acc6
IC
625 <p>
626 <span>BitcoinJS - </span>
627 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
628 https://github.com/bitcoinjs/bitcoinjs-lib
629 </a>
630 </p>
3af2954a 631
ab78acc6
IC
632 <p>
633 <span>jsBIP39 - </span>
634 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
635 https://github.com/iancoleman/jsbip39
636 </a>
637 </p>
3af2954a 638
ab78acc6
IC
639 <p>
640 <span>sjcl - </span>
641 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
642 https://github.com/bitwiseshiftleft/sjcl
643 </a>
644 </p>
3af2954a 645
ab78acc6
IC
646 <p>
647 <span>jQuery - </span>
648 <a href="https://jquery.com/" target="_blank">
649 https://jquery.com/
650 </a>
651 </p>
3af2954a 652
ab78acc6
IC
653 <p>
654 <span>Twitter Bootstrap - </span>
655 <a href="http://getbootstrap.com/" target="_blank">
656 http://getbootstrap.com/
657 </a>
658 </p>
3af2954a 659
ab78acc6
IC
660 </div>
661 </div>
3af2954a 662
ab78acc6 663 </div>
3af2954a 664
e00964cc 665 <div class="qr-container hidden">
52da415f
IC
666 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
667 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
668 <div class="qr-hider hidden">
669 <div class="qr-image"></div>
670 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
671 </div>
e00964cc
IC
672 </div>
673
ab78acc6
IC
674 <div class="feedback-container">
675 <div class="feedback">Loading...</div>
676 </div>
3af2954a 677
ab78acc6
IC
678 <script type="text/template" id="address-row-template">
679 <tr>
680 <td class="index"><span></span></td>
e00964cc
IC
681 <td class="address"><span data-show-qr></span></td>
682 <td class="pubkey"><span data-show-qr></span></td>
683 <td class="privkey"><span data-show-qr></span></td>
ab78acc6
IC
684 </tr>
685 </script>
8b095871
IC
686 <script>// From
687// https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
688// Required for ethereumjs-utils.js when run in phantomjs-2.1.1
689// but is not required in any modern browsers.
690// For more information, see
691// https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
692
693//----------------------------------------------------------------------
694//
695// ECMAScript 2015 Polyfills
696//
697//----------------------------------------------------------------------
563e401a 698
8b095871
IC
699(function (global) {
700 "use strict";
701
702 // Set this to always override native implementations, for testing
703 // the polyfill in browsers with partial/full ES2015 support.
704 var OVERRIDE_NATIVE_FOR_TESTING = false;
705
706 var undefined = (void 0); // Paranoia
707
708 // Helpers
709
710 function strict(o) {
711 return o === global ? undefined : o;
712 }
713
714 function hook(o, p, f) {
715 var op = o[p];
716 console.assert(typeof op === 'function', 'Hooking a non-function');
717 o[p] = function() {
718 var o = strict(this);
719 var r = f.apply(o, arguments);
720 return r !== undefined ? r : op.apply(o, arguments);
721 };
722 }
723
724 function isSymbol(s) {
725 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
726 }
727
728 function getPropertyDescriptor(target, name) {
729 var desc = Object.getOwnPropertyDescriptor(target, name);
730 var proto = Object.getPrototypeOf(target);
731 while (!desc && proto) {
732 desc = Object.getOwnPropertyDescriptor(proto, name);
733 proto = Object.getPrototypeOf(proto);
563e401a 734 }
8b095871
IC
735 return desc;
736 }
563e401a 737
8b095871
IC
738 var enqueue = (function(nativePromise, nativeSetImmediate) {
739 if (nativePromise)
740 return function(job) { nativePromise.resolve().then(function() { job(); }); };
741 if (nativeSetImmediate)
742 return function(job) { nativeSetImmediate(job); };
743 return function(job) { setTimeout(job, 0); };
744 }(global['Promise'], global['setImmediate']));
563e401a 745
8b095871
IC
746 function define(o, p, v, override) {
747 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
748 return;
749
750 if (typeof v === 'function') {
751 // Sanity check that functions are appropriately named (where possible)
752 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
753 Object.defineProperty(o, p, {
754 value: v,
755 configurable: true,
756 enumerable: false,
757 writable: true
758 });
563e401a 759 } else {
8b095871
IC
760 Object.defineProperty(o, p, {
761 value: v,
762 configurable: false,
763 enumerable: false,
764 writable: false
765 });
563e401a 766 }
8b095871 767 }
563e401a 768
8b095871
IC
769 function set_internal(o, p, v) {
770 Object.defineProperty(o, p, {
771 value: v,
772 configurable: false,
773 enumerable: false,
774 writable: true
775 });
776 }
563e401a 777
8b095871
IC
778 // Snapshot intrinsic functions
779 var $isNaN = global.isNaN,
780 $parseInt = global.parseInt,
781 $parseFloat = global.parseFloat;
782
783 var E = Math.E,
784 LOG10E = Math.LOG10E,
785 LOG2E = Math.LOG2E,
786 abs = Math.abs,
787 ceil = Math.ceil,
788 exp = Math.exp,
789 floor = Math.floor,
790 log = Math.log,
791 max = Math.max,
792 min = Math.min,
793 pow = Math.pow,
794 random = Math.random,
795 sqrt = Math.sqrt;
796
797 var orig_match = String.prototype.match,
798 orig_replace = String.prototype.replace,
799 orig_search = String.prototype.search,
800 orig_split = String.prototype.split;
801
802 // These are used for implementing the polyfills, but not exported.
803
804 // Inspired by https://gist.github.com/1638059
805 /** @constructor */
806 function EphemeronTable() {
807 var secretKey = ObjectCreate(null);
808
809 function conceal(o) {
810 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
811 Object.defineProperty(o, 'valueOf', {
812 value: (function(secretKey) {
813 return function (k) {
814 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
815 };
816 }(secretKey)),
817 configurable: true,
818 writeable: true,
819 enumerable: false
820 });
821 return secrets;
822 }
563e401a 823
8b095871
IC
824 function reveal(o) {
825 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
826 return v === o ? null : v;
827 }
828
829 return {
830 clear: function() {
831 secretKey = ObjectCreate(null);
832 },
833 remove: function(key) {
834 var secrets = reveal(key);
835 if (secrets && HasOwnProperty(secrets, 'value')) {
836 delete secrets.value;
837 return true;
838 }
839 return false;
840 },
841 get: function(key, defaultValue) {
842 var secrets = reveal(key);
843 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
844 },
845 has: function(key) {
846 var secrets = reveal(key);
847 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
848 },
849 set: function(key, value) {
850 var secrets = reveal(key) || conceal(key);
851 secrets.value = value;
563e401a 852 }
8b095871
IC
853 };
854 }
563e401a 855
8b095871 856 var empty = Object.create(null);
563e401a 857
8b095871
IC
858 //----------------------------------------------------------------------
859 //
860 // ECMAScript 2015
861 // http://www.ecma-international.org/ecma-262/6.0/
862 //
863 //----------------------------------------------------------------------
563e401a 864
8b095871
IC
865 // ---------------------------------------
866 // 19.4 Symbol Objects
867 // ---------------------------------------
563e401a 868
8b095871
IC
869 // NOTE: Symbols are defined here - out of spec order - since we need the
870 // properties and prototype to be populated for other polyfills.
563e401a 871
8b095871 872 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
563e401a 873
8b095871
IC
874 var symbolForKey;
875 (function() {
876 var secret = Object.create(null);
877 var symbolMap = {};
878 symbolForKey = function(k) {
879 return symbolMap[k];
880 };
563e401a 881
8b095871 882 var GlobalSymbolRegistry = [];
563e401a 883
8b095871
IC
884 function unique(bits) {
885 return Array(bits + 1).join('x').replace(/x/g, function() {
886 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
887 });
888 }
563e401a 889
8b095871
IC
890 // 19.4.1 The Symbol Constructor
891 // 19.4.1.1 Symbol ( description=undefined )
892 function Symbol(description) {
893 if (!(this instanceof Symbol)) return new Symbol(description, secret);
894 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
563e401a 895
8b095871
IC
896 var descString = description === undefined ? undefined : String(description);
897
898 set_internal(this, '[[SymbolData]]', unique(128));
899 set_internal(this, '[[Description]]', descString);
900
901 symbolMap[this] = this;
902 return this;
903 }
904
905 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
906 global.Symbol = Symbol;
907
908 // 19.4.2 Properties of the Symbol Constructor
909
910 // 19.4.2.1 Symbol.for (key)
911 define(Symbol, 'for', function for_(key) {
912 var stringKey = String(key);
913 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
914 var e = GlobalSymbolRegistry[i];
915 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
563e401a 916 }
8b095871
IC
917 var newSymbol = Symbol(key);
918 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
919 return newSymbol;
920 });
563e401a 921
8b095871
IC
922 // 19.4.2.2 Symbol.hasInstance
923 // 19.4.2.3 Symbol.isConcatSpreadable
563e401a 924
8b095871
IC
925 // 19.4.2.4 Symbol.iterator
926 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
563e401a 927
8b095871
IC
928 // 19.4.2.5 Symbol.keyFor (sym)
929 define(Symbol, 'keyFor', function keyFor(sym) {
930 if (!(sym instanceof Symbol)) throw TypeError();
931 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
932 var e = GlobalSymbolRegistry[i];
933 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
934 }
935 return undefined;
936 });
563e401a 937
8b095871
IC
938 // 19.4.2.6 Symbol.match
939 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
563e401a 940
8b095871 941 // 19.4.2.7 Symbol.prototype
563e401a 942
8b095871
IC
943 // 19.4.2.8 Symbol.replace
944 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
563e401a 945
8b095871
IC
946 // 19.4.2.9 Symbol.search
947 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
563e401a 948
8b095871 949 // 19.4.2.10 Symbol.species
563e401a 950
8b095871
IC
951 // 19.4.2.11 Symbol.search
952 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
563e401a 953
8b095871 954 // 19.4.2.12 Symbol.toPrimitive
563e401a 955
8b095871
IC
956 // 19.4.2.13 Symbol.toStringTag
957 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
958
959 // 19.4.2.14 Symbol.unscopables
960
961 // 19.4.3 Properties of the Symbol Prototype Object
962 // 19.4.3.1 Symbol.prototype.constructor
963
964 // 19.4.3.2 Symbol.prototype.toString ( )
965 Object.defineProperty(Symbol.prototype, 'toString', {
966 value: function toString() {
967 var s = strict(this);
968 var desc = s['[[Description]]'];
969 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
970 },
971 configurable: true, writeable: true, enumerable: false });
972
973 // 19.4.3.3 Symbol.prototype.valueOf ( )
974 Object.defineProperty(Symbol.prototype, 'valueOf', {
975 value: function valueOf() {
976 // To prevent automatic string conversion:
977 throw TypeError();
978
979 // Spec has approximately the following:
980 //var s = strict(this);
981 //if (Type(s) === 'symbol') return s;
982 //if (Type(s) !== 'object') throw TypeError();
983 //if (!('[[SymbolData]]' in s)) throw TypeError();
984 //return s['[[SymbolData]]'];
985 },
986 configurable: true, writeable: true, enumerable: false });
987
988 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
989 // (Done later to polyfill partial implementations)
990
991 // 19.4.4 Properties of Symbol Instances
992 }());
993
994 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
995
996 // Defined here so that other prototypes can reference it
997 // 25.1.2 The %IteratorPrototype% Object
998 var $IteratorPrototype$ = {};
999
1000 //----------------------------------------
1001 // 6 ECMAScript Data Types and Values
1002 //----------------------------------------
1003
1004 // 6.1 ECMAScript Language Types
1005
1006 // "Type(x)" is used as shorthand for "the type of x"...
1007 function Type(v) {
1008 switch (typeof v) {
1009 case 'undefined': return 'undefined';
1010 case 'boolean': return 'boolean';
1011 case 'number': return 'number';
1012 case 'string': return 'string';
1013 case 'symbol': return 'symbol';
1014 default:
1015 if (v === null) return 'null';
1016 if (v instanceof global.Symbol) return 'symbol';
1017 return 'object';
563e401a 1018 }
8b095871 1019 }
563e401a 1020
8b095871
IC
1021 // 6.1.5.1 Well-Known Symbols
1022 var $$iterator = global.Symbol.iterator,
1023 $$match = global.Symbol.match,
1024 $$replace = global.Symbol.replace,
1025 $$search = global.Symbol.search,
1026 $$split = global.Symbol.split,
1027 $$toStringTag = global.Symbol.toStringTag;
563e401a 1028
8b095871
IC
1029 //----------------------------------------
1030 // 7 Abstract Operations
1031 //----------------------------------------
1032
1033 //----------------------------------------
1034 // 7.1 Type Conversion
1035 //----------------------------------------
1036
1037 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1038 // just use valueOf()
1039
1040 // 7.1.2 ToBoolean ( argument )
1041 // just use Boolean()
1042
1043 // 7.1.3 ToNumber ( argument )
1044 // just use Number()
1045
1046 // 7.1.4 ToInteger ( argument )
1047 function ToInteger(n) {
1048 n = Number(n);
1049 if ($isNaN(n)) return 0;
1050 if (n === 0 || n === Infinity || n === -Infinity) return n;
1051 return ((n < 0) ? -1 : 1) * floor(abs(n));
563e401a 1052 }
8b095871
IC
1053
1054 // 7.1.5 ToInt32 ( argument )
1055 function ToInt32(v) { return v >> 0; }
1056
1057 // 7.1.6 ToUint32 ( argument )
1058 function ToUint32(v) { return v >>> 0; }
1059
1060 // 7.1.7 ToInt16 ( argument )
1061 function ToInt16(v) { return (v << 16) >> 16; }
1062
1063 // 7.1.8 ToUint16 ( argument )
1064 function ToUint16(v) { return v & 0xFFFF; }
1065
1066 // 7.1.9 ToInt8 ( argument )
1067 function ToInt8(v) { return (v << 24) >> 24; }
1068
1069 // 7.1.10 ToUint8 ( argument )
1070 function ToUint8(v) { return v & 0xFF; }
1071
1072 // 7.1.11 ToUint8Clamp ( argument )
1073 function ToUint8Clamp(argument) {
1074 var number = Number(argument);
1075 if ($isNaN(number)) return 0;
1076 if (number <= 0) return 0;
1077 if (number >= 255) return 255;
1078 var f = floor(number);
1079 if ((f + 0.5) < number) return f + 1;
1080 if (number < (f + 0.5)) return f;
1081 if (f % 2) return f + 1;
1082 return f;
563e401a 1083 }
8b095871
IC
1084
1085 // 7.1.12 ToString ( argument )
1086 // just use String()
1087
1088 // 7.1.13 ToObject ( argument )
1089 function ToObject(v) {
1090 if (v === null || v === undefined) throw TypeError();
1091 return Object(v);
563e401a 1092 }
563e401a 1093
8b095871
IC
1094 // 7.1.14 ToPropertyKey ( argument )
1095 function ToPropertyKey(v) {
1096 return String(v);
1097 }
3af2954a 1098
8b095871
IC
1099 // 7.1.15 ToLength ( argument )
1100 function ToLength(v) {
1101 var len = ToInteger(v);
1102 if (len <= 0) return 0;
1103 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1104 return min(len, 0x20000000000000 - 1); // 2^53-1
ab78acc6 1105 }
3af2954a 1106
8b095871 1107 // 7.1.16 CanonicalNumericIndexString ( argument )
3af2954a 1108
8b095871
IC
1109 //----------------------------------------
1110 // 7.2 Testing and Comparison Operations
1111 //----------------------------------------
3af2954a 1112
8b095871
IC
1113 // 7.2.1 RequireObjectCoercible ( argument )
1114 // 7.2.2 IsArray ( argument )
3af2954a 1115
8b095871
IC
1116 // 7.2.3 IsCallable ( argument )
1117 function IsCallable(o) { return typeof o === 'function'; }
3af2954a 1118
8b095871
IC
1119 // 7.2.4 IsConstructor ( argument )
1120 function IsConstructor(o) {
1121 // Hacks for Safari 7 TypedArray XXXConstructor objects
1122 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1123 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1124 // TODO: Can this be improved on?
1125 return typeof o === 'function';
3af2954a 1126 }
8b095871
IC
1127
1128 // 7.2.5 IsExtensible (O)
1129 // 7.2.6 IsInteger ( argument )
1130
1131 // 7.2.7 IsPropertyKey ( argument )
1132 function IsPropertyKey(argument) {
1133 if (Type(argument) === 'string') return true;
1134 if (Type(argument) === 'symbol') return true;
1135 return false;
3af2954a
IC
1136 }
1137
8b095871
IC
1138 // 7.2.8 IsRegExp ( argument )
1139 // 7.2.5 IsConstructor ( argument )
3af2954a 1140
8b095871
IC
1141 // 7.2.9 SameValue(x, y)
1142 function SameValue(x, y) {
1143 if (typeof x !== typeof y) return false;
1144 switch (typeof x) {
1145 case 'undefined':
1146 return true;
1147 case 'number':
1148 if (x !== x && y !== y) return true;
1149 if (x === 0 && y === 0) return 1/x === 1/y;
1150 return x === y;
1151 case 'boolean':
1152 case 'string':
1153 case 'object':
1154 default:
1155 return x === y;
1156 }
1157 }
3af2954a 1158
8b095871
IC
1159 // 7.2.10 SameValueZero(x, y)
1160 function SameValueZero(x, y) {
1161 if (typeof x !== typeof y) return false;
1162 switch (typeof x) {
1163 case 'undefined':
1164 return true;
1165 case 'number':
1166 if (x !== x && y !== y) return true;
1167 return x === y;
1168 case 'boolean':
1169 case 'string':
1170 case 'object':
1171 default:
1172 return x === y;
1173 }
1174 }
3af2954a 1175
8b095871
IC
1176 //----------------------------------------
1177 // 7.3 Operations on Objects
1178 //----------------------------------------
3af2954a 1179
8b095871
IC
1180 // 7.3.1 Get (O, P)
1181 // - just use o.p or o[p]
3af2954a 1182
8b095871
IC
1183 // 7.3.2 GetV (V, P)
1184 function GetV(v, p) {
1185 var o = ToObject(v);
1186 return o[p];
1187 }
3af2954a 1188
8b095871
IC
1189 // 7.3.3 Set (O, P, V, Throw)
1190 // - just use o.p = v or o[p] = v
3af2954a 1191
3af2954a 1192
3af2954a 1193
3af2954a 1194
8b095871
IC
1195 // 7.3.9 GetMethod (O, P)
1196 function GetMethod(o, p) {
1197 var func = GetV(o, p);
1198 if (func === undefined || func === null) return undefined;
1199 if (!IsCallable(func)) throw TypeError();
1200 return func;
ab78acc6 1201 }
8b095871
IC
1202
1203 // 7.3.10 HasProperty (O, P)
1204 function HasProperty(o, p) {
1205 while (o) {
1206 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1207 if (Type(o) !== 'object') return false;
1208 o = Object.getPrototypeOf(o);
ab78acc6 1209 }
8b095871 1210 return false;
ab78acc6 1211 }
8b095871
IC
1212
1213 // 7.3.11 HasOwnProperty (O, P)
1214 function HasOwnProperty(o, p) {
1215 return Object.prototype.hasOwnProperty.call(o, p);
ab78acc6 1216 }
3af2954a 1217
8b095871
IC
1218 //----------------------------------------
1219 // 7.4 Operations on Iterator Objects
1220 //----------------------------------------
3af2954a 1221
8b095871
IC
1222 // 7.4.1 GetIterator ( obj, method )
1223 function GetIterator(obj, method) {
1224 if (arguments.length < 2)
1225 method = GetMethod(obj, $$iterator);
1226 var iterator = method.call(obj);
1227 if (Type(iterator) !== 'object') throw TypeError();
1228 return iterator;
3af2954a
IC
1229 }
1230
8b095871
IC
1231 // 7.4.2 IteratorNext ( iterator, value )
1232 function IteratorNext(iterator, value) {
1233 if (arguments.length < 2)
1234 var result = iterator.next();
1235 else
1236 result = iterator.next(value);
1237 if (Type(result) !== 'object') throw TypeError();
1238 return result;
1239 }
3af2954a 1240
8b095871
IC
1241 // 7.4.3 IteratorComplete ( iterResult )
1242 function IteratorComplete(iterResult) {
1243 console.assert(Type(iterResult) === 'object');
1244 return Boolean(iterResult.done);
1245 }
3af2954a 1246
8b095871
IC
1247 // 7.4.4 IteratorValue ( iterResult )
1248 function IteratorValue(iterResult) {
1249 console.assert(Type(iterResult) === 'object');
1250 return iterResult.value;
1251 }
1252
1253 // 7.4.5 IteratorStep ( iterator )
1254 function IteratorStep( iterator, value ) {
1255 var result = IteratorNext(iterator, value);
1256 var done = result['done'];
1257 if (Boolean(done) === true) return false;
1258 return result;
1259 }
1260
1261 // 7.4.6 IteratorClose( iterator, completion )
1262 function IteratorClose( iterator, completion ) {
1263 console.assert(Type(iterator) === 'object');
1264 var _return = GetMethod(iterator, 'return');
1265 if (_return === undefined) return completion;
1266 try {
1267 var innerResult = _return[iterator]();
1268 } catch (result) {
1269 // TODO: If completion.[[type]] is throw, return completion
1270 return result;
1271 }
1272 if (Type(innerResult) !== 'object') throw TypeError();
1273 return completion;
1274 }
1275
1276 // 7.4.7 CreateIterResultObject (value, done)
1277 function CreateIterResultObject(value, done) {
1278 console.assert(Type(done) === 'boolean');
1279 var obj = {};
1280 obj["value"] = value;
1281 obj["done"] = done;
1282 return obj;
1283 }
1284
1285 // 7.4.8 CreateListIterator (list)
1286 // 7.4.8.1 ListIterator next( )
1287 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1288 // 7.4.9.1 CompoundIterator next( )
1289
1290 //----------------------------------------
1291 // 8 Executable Code and Execution Contexts
1292 //----------------------------------------
1293
1294 //----------------------------------------
1295 // 8.4 Jobs and Job Queues
1296 //----------------------------------------
1297
1298 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1299 function EnqueueJob(queueName, job, args) {
1300 var fn = function() { job.apply(undefined, args); };
1301 enqueue(fn);
1302 }
1303
1304 // 8.4.2 NextJob result
1305 function NextJob(result) {
1306 // no-op
1307 }
1308
1309 //----------------------------------------
1310 // 9 Ordinary and Exotic Objects Behaviors
1311 //----------------------------------------
1312
1313 // 9.1.11 [[Enumerate]] ()
1314 function Enumerate(obj) {
1315 var e = [];
1316 if (Object(obj) !== obj) return e;
1317 var visited = new Set;
1318 while (obj !== null) {
1319 Object.getOwnPropertyNames(obj).forEach(function(name) {
1320 if (!visited.has(name)) {
1321 var desc = Object.getOwnPropertyDescriptor(obj, name);
1322 if (desc) {
1323 visited.add(name);
1324 if (desc.enumerable) e.push(name);
1325 }
1326 }
1327 });
1328 obj = Object.getPrototypeOf(obj);
1329 }
1330 return e[$$iterator]();
1331 }
1332
1333 // 9.1.12 [[OwnPropertyKeys]] ( )
1334 function OwnPropertyKeys(o) {
1335 return Object.getOwnPropertyNames(o);
1336 }
1337
1338 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1339 function ObjectCreate(proto, internalSlotsList) {
1340 return Object.create(proto, internalSlotsList);
1341 }
1342
1343 // ---------------------------------------
1344 // 19 Fundamental Objects
1345 // ---------------------------------------
1346
1347 // ---------------------------------------
1348 // 19.1 Object Objects
1349 // ---------------------------------------
1350
1351 // 19.1.1 The Object Constructor
1352 // 19.1.1.1 Object ( [ value ] )
1353 // 19.1.2 Properties of the Object Constructor
1354 // 19.1.2.1 Object.assign ( target, ...sources )
1355 define(
1356 Object, 'assign',
1357 function assign(target, /*...*/sources) {
1358 var to = ToObject(target);
1359 if (arguments.length < 2) return to;
1360
1361 var sourcesIndex = 1;
1362 while (sourcesIndex < arguments.length) {
1363 var nextSource = arguments[sourcesIndex++];
1364 if (nextSource === undefined || nextSource === null) {
1365 var keys = [];
1366 } else {
1367 var from = ToObject(nextSource);
1368 keys = OwnPropertyKeys(from);
1369 }
1370 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1371 var nextKey = keys[keysIndex];
1372 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1373 if (desc !== undefined && desc.enumerable) {
1374 var propValue = from[nextKey];
1375 to[nextKey] = propValue;
1376 }
1377 }
1378 }
1379 return to;
1380 });
1381
1382 // 19.1.2.2 Object.create ( O [ , Properties ] )
1383 // 19.1.2.3 Object.defineProperties ( O, Properties )
1384 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1385 // 19.1.2.5 Object.freeze ( O )
1386 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1387
1388 (function() {
1389 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1390 $getOwnPropertyNames = Object.getOwnPropertyNames,
1391 $keys = Object.keys,
1392 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1393
1394 function isStringKey(k) { return !symbolForKey(k); }
1395
1396 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1397 define(
1398 Object, 'getOwnPropertyNames',
1399 function getOwnPropertyNames(o) {
1400 if (Object.prototype.toString.call(o) === '[object Window]') {
1401 // Workaround for cross-realm calling by IE itself.
1402 // https://github.com/inexorabletash/polyfill/issues/96
1403 try {
1404 return $getOwnPropertyNames(o).filter(isStringKey);
1405 } catch (_) {
1406 return $window_names.slice();
1407 }
1408 }
1409 return $getOwnPropertyNames(o).filter(isStringKey);
1410 }, !nativeSymbols);
1411
1412 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1413 define(
1414 Object, 'getOwnPropertySymbols',
1415 function getOwnPropertySymbols(o) {
1416 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1417 }, !nativeSymbols);
1418
1419 // 19.1.2.14 Object.keys ( O )
1420 define(
1421 Object, 'keys',
1422 function keys(o) {
1423 return $keys(o).filter(isStringKey);
1424 }, !nativeSymbols);
1425 }());
1426
1427 // 19.1.2.9 Object.getPrototypeOf ( O )
1428 // 19.1.2.10 Object.is ( value1, value2 )
1429 define(
1430 Object, 'is',
1431 function is(value1, value2) {
1432 return SameValue(value1, value2);
1433 });
1434
1435 // 19.1.2.11 Object.isExtensible ( O )
1436 // 19.1.2.12 Object.isFrozen ( O )
1437 // 19.1.2.13 Object.isSealed ( O )
1438
1439 // 19.1.2.14 Object.keys ( O )
1440 // see above
1441
1442 // 19.1.2.15 Object.preventExtensions ( O )
1443 // 19.1.2.16 Object.prototype
1444 // 19.1.2.17 Object.seal ( O )
1445
1446 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1447 define(
1448 Object, 'setPrototypeOf',
1449 function setPrototypeOf(o, proto) {
1450 if (Type(o) !== 'object') throw TypeError();
1451 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1452 o.__proto__ = proto;
1453 return o;
1454 }
1455 );
1456
1457 // 19.1.3 Properties of the Object Prototype Object
1458 // 19.1.3.1 Object.prototype.constructor
1459 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1460 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1461 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1462 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1463 // 19.1.3.6 Object.prototype.toString ( )
1464 hook(Object.prototype, 'toString',
1465 function() {
1466 var o = strict(this);
1467 if (o === Object(o) && $$toStringTag in o) {
1468 return '[object ' + o[$$toStringTag] + ']';
1469 }
1470 return undefined;
1471 });
1472
1473 // 19.1.3.7 Object.prototype.valueOf ( )
1474 // 19.1.4 Properties of Object Instances
1475
1476 // ---------------------------------------
1477 // 19.2 Function Objects
1478 // ---------------------------------------
1479
1480 // 19.2.1 The Function Constructor
1481 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1482 // 19.2.2 Properties of the Function Constructor
1483 // 19.2.2.1 Function.length
1484 // 19.2.2.2 Function.prototype
1485 // 19.2.3 Properties of the Function Prototype Object
1486 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1487 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1488 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1489 // 19.2.3.4 Function.prototype.constructor
1490 // 19.2.3.5 Function.prototype.toString ( )
1491 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1492 // 19.2.4 Function Instances
1493 // 19.2.4.1 length
1494 // 19.2.4.2 name
1495 // 19.2.4.3 prototype
1496
1497 // (No polyfillable changes from ES5)
1498
1499 // ---------------------------------------
1500 // 19.3 Boolean Objects
1501 // ---------------------------------------
1502
1503 // 19.3.1 The Boolean Constructor
1504 // 19.3.1.1 Boolean ( value )
1505 // 19.3.2 Properties of the Boolean Constructor
1506 // 19.3.2.1 Boolean.prototype
1507 // 19.3.3 Properties of the Boolean Prototype Object
1508 // 19.3.3.1 Boolean.prototype.constructor
1509 // 19.3.3.2 Boolean.prototype.toString ( )
1510 // 19.3.3.3 Boolean.prototype.valueOf ( )
1511 // 19.3.4 Properties of Boolean Instances
1512
1513 // (No polyfillable changes from ES5)
1514
1515 // ---------------------------------------
1516 // 19.4 Symbol Objects
1517 // ---------------------------------------
1518
1519 // Moved earlier in this script, so that other polyfills can depend on them.
1520
1521 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1522 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1523
1524 // ---------------------------------------
1525 // 19.5 Error Objects
1526 // ---------------------------------------
1527
1528 // 19.5.1 The Error Constructor
1529 // 19.5.1.1 Error ( message )
1530 // 19.5.1.2 new Error( ...argumentsList )
1531 // 19.5.2 Properties of the Error Constructor
1532 // 19.5.2.1 Error.prototype
1533 // 19.5.3 Properties of the Error Prototype Object
1534 // 19.5.3.1 Error.prototype.constructor
1535 // 19.5.3.2 Error.prototype.message
1536 // 19.5.3.3 Error.prototype.name
1537 // 19.5.3.4 Error.prototype.toString ( )
1538 // 19.5.4 Properties of Error Instances
1539 // 19.5.5 Native Error Types Used in This Standard
1540 // 19.5.5.1 EvalError
1541 // 19.5.5.2 RangeError
1542 // 19.5.5.3 ReferenceError
1543 // 19.5.5.4 SyntaxError
1544 // 19.5.5.5 TypeError
1545 // 19.5.5.6 URIError
1546 // 19.5.6 NativeError Object Structure
1547 // 19.5.6.1 NativeError Constructors
1548 // 19.5.6.1.1 NativeError ( message )
1549 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1550 // 19.5.6.2 Properties of the NativeError Constructors
1551 // 19.5.6.2.1 NativeError.prototype
1552 // 19.5.6.3 Properties of the NativeError Prototype Objects
1553 // 19.5.6.4 Properties of NativeError Instances
1554
1555 // (No polyfillable changes from ES5)
1556
1557 // ---------------------------------------
1558 // 20 Numbers and Dates
1559 // ---------------------------------------
1560
1561 // ---------------------------------------
1562 // 20.1 Number Objects
1563 // ---------------------------------------
1564
1565 // 20.1.1 The Number Constructor
1566 // 20.1.1.1 Number ( [ value ] )
1567 // 20.1.1.2 new Number ( ...argumentsList )
1568 // 20.1.2 Properties of the Number Constructor
1569
1570 // 20.1.2.1 Number.EPSILON
1571 define(
1572 Number, 'EPSILON',
1573 (function () {
1574 var next, result;
1575 for (next = 1; 1 + next !== 1; next = next / 2)
1576 result = next;
1577 return result;
1578 }()));
1579
1580 // 20.1.2.2 Number.isFinite ( number )
1581 define(
1582 Number, 'isFinite',
1583 function isFinite(number) {
1584 if (Type(number) !== 'number') return false;
1585 if (number !== number || number === +Infinity || number === -Infinity) return false;
1586 return true;
1587 });
1588
1589 // 20.1.2.3 Number.isInteger ( number )
1590 define(
1591 Number, 'isInteger',
1592 function isInteger(number) {
1593 if (Type(number) !== 'number') return false;
1594 if (number !== number || number === +Infinity || number === -Infinity) return false;
1595 var integer = ToInteger(number);
1596 if (integer !== number) return false;
1597 return true;
1598 });
1599
1600 // 20.1.2.4 Number.isNaN ( number )
1601 define(
1602 Number, 'isNaN',
1603 function isNaN(number) {
1604 if (Type(number) !== 'number') return false;
1605 if (number !== number) return true;
1606 return false;
1607 });
1608
1609 // 20.1.2.5 Number.isSafeInteger ( number )
1610 define(
1611 Number, 'isSafeInteger',
1612 function isSafeInteger(number) {
1613 if (Type(number) !== 'number') return false;
1614 if (number !== number || number === +Infinity || number === -Infinity) return false;
1615 var integer = ToInteger(number);
1616 if (integer !== number) return false;
1617 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1618 return true;
1619 return false;
1620 });
1621
1622 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1623 define(
1624 Number, 'MAX_SAFE_INTEGER',
1625 9007199254740991); // 2^53-1
1626
1627 // 20.1.2.7 Number.MAX_VALUE
1628
1629 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1630 define(
1631 Number, 'MIN_SAFE_INTEGER',
1632 -9007199254740991); // -2^53+1
1633
1634 // 20.1.2.9 Number.MIN_VALUE
1635 // 20.1.2.10 Number.NaN
1636 // 20.1.2.11 Number.NEGATIVE_INFINITY
1637
1638 // 20.1.2.12 Number.parseFloat ( string )
1639 define(Number, 'parseFloat', $parseFloat);
1640
1641 // 20.1.2.13 Number.parseInt ( string, radix )
1642 define(Number, 'parseInt', $parseInt);
1643
1644 // 20.1.2.14 Number.POSITIVE_INFINITY
1645 // 20.1.2.15 Number.prototype
1646
1647 // 20.1.3 Properties of the Number Prototype Object
1648 // 20.1.3.1 Number.prototype.constructor
1649 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1650 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1651 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1652 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1653 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1654 // 20.1.3.7 Number.prototype.valueOf ( )
1655 // 20.1.4 Properties of Number Instances
1656
1657 // ---------------------------------------
1658 // 20.2 The Math Object
1659 // ---------------------------------------
1660
1661 // 20.2.1 Value Properties of the Math Object
1662 // 20.2.1.1 Math.E
1663 // 20.2.1.2 Math.LN10
1664 // 20.2.1.3 Math.LN2
1665 // 20.2.1.4 Math.LOG10E
1666 // 20.2.1.5 Math.LOG2E
1667 // 20.2.1.6 Math.PI
1668 // 20.2.1.7 Math.SQRT1_2
1669 // 20.2.1.8 Math.SQRT2
1670
1671 // 20.2.1.9 Math [ @@toStringTag ]
1672 define(Math, $$toStringTag, 'Math');
1673
1674 // 20.2.2 Function Properties of the Math Object
1675 // 20.2.2.1 Math.abs ( x )
1676 // 20.2.2.2 Math.acos ( x )
1677
1678 // 20.2.2.3 Math.acosh(x)
1679 define(
1680 Math, 'acosh',
1681 function acosh(x) {
1682 x = Number(x);
1683 return log(x + sqrt(x * x - 1));
1684 });
1685
1686 // 20.2.2.4 Math.asin ( x )
1687
1688 // 20.2.2.5 Math.asinh( x )
1689 define(
1690 Math, 'asinh',
1691 function asinh(x) {
1692 x = Number(x);
1693 if (SameValue(x, -0)) {
1694 return x;
1695 }
1696 var s = sqrt(x * x + 1);
1697 return (s === -x) ? log(0) : log(x + s);
1698 });
1699
1700 // 20.2.2.6 Math.atan ( x )
1701
1702 // 20.2.2.7 Math.atanh( x )
1703 define(
1704 Math, 'atanh',
1705 function atanh(x) {
1706 x = Number(x);
1707 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1708 });
1709
1710 // 20.2.2.8 Math.atan2 ( y, x )
1711
1712 // 20.2.2.9 Math.cbrt ( x )
1713 define(
1714 Math, 'cbrt',
1715 function cbrt(x) {
1716 x = Number(x);
1717 if ($isNaN(x/x)) {
1718 return x;
1719 }
1720 var r = pow(abs(x), 1/3);
1721 var t = x/r/r;
1722 return r + (r * (t-r) / (2*r + t));
1723 });
1724
1725 // 20.2.2.10 Math.ceil ( x )
1726
1727 // 20.2.2.11 Math.clz32 ( x )
1728 define(
1729 Math, 'clz32',
1730 function clz32(x) {
1731 function clz8(x) {
1732 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1733 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1734 }
1735 x = ToUint32(x);
1736 return x & 0xff000000 ? clz8(x >> 24) :
1737 x & 0xff0000 ? clz8(x >> 16) + 8 :
1738 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1739 });
1740
1741
1742
1743 // 20.2.2.12 Math.cos ( x )
1744
1745 // 20.2.2.13 Math.cosh ( x )
1746 define(
1747 Math, 'cosh',
1748 function cosh(x) {
1749 x = Number(x);
1750 return (pow(E, x) + pow(E, -x)) / 2;
1751 });
1752
1753 // 20.2.2.14 Math.exp ( x )
1754
1755 // 20.2.2.15 Math.expm1 ( x )
1756 define(
1757 Math, 'expm1',
1758 function expm1(x) {
1759 x = Number(x);
1760 // from: http://www.johndcook.com/cpp_log1p.html
1761 if (SameValue(x, -0)) {
1762 return -0;
1763 } else if (abs(x) < 1e-5) {
1764 return x + 0.5 * x * x; // two terms of Taylor expansion
1765 } else {
1766 return exp(x) - 1;
1767 }
1768 });
1769
1770 // 20.2.2.16 Math.floor ( x )
1771
1772 // 20.2.2.17 Math.fround ( x )
1773 define(
1774 Math, 'fround',
1775 function fround(x) {
1776 if ($isNaN(x)) {
1777 return NaN;
1778 }
1779 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1780 return x;
1781 }
1782 return (new Float32Array([x]))[0];
1783 });
1784
1785 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1786 define(
1787 Math, 'hypot',
1788 function hypot() {
1789 var values = [];
1790 var m = 0, sawNaN = false;
1791 for (var i = 0; i < arguments.length; ++i) {
1792 var n = abs(Number(arguments[i]));
1793 if (n === Infinity) return n;
1794 if (n !== n) sawNaN = true;
1795 if (n > m) m = n;
1796 values[i] = n;
1797 }
1798 if (sawNaN) return NaN;
1799 if (m === 0) return +0;
1800 var sum = +0;
1801 for (i = 0; i < values.length; ++i) {
1802 var r = values[i] / m;
1803 sum = sum + r * r;
1804 }
1805 return m * sqrt(sum);
1806 });
1807
1808 // 20.2.2.19 Math.imul ( x, y )
1809 define(
1810 Math, 'imul',
1811 function imul(x, y) {
1812 var a = ToUint32(x);
1813 var b = ToUint32(y);
1814 // (slow but accurate)
1815 var ah = (a >>> 16) & 0xffff;
1816 var al = a & 0xffff;
1817 var bh = (b >>> 16) & 0xffff;
1818 var bl = b & 0xffff;
1819 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1820 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1821 );
1822
1823 // 20.2.2.20 Math.log ( x )
1824
1825 // 20.2.2.21 Math.log1p ( x )
1826 define(
1827 Math, 'log1p',
1828 function log1p(x) {
1829 x = Number(x);
1830 // from: http://www.johndcook.com/cpp_expm1.html
1831 if (x < -1) {
1832 return NaN;
1833 } else if (SameValue(x, -0)) {
1834 return -0;
1835 } else if (abs(x) > 1e-4) {
1836 return log(1 + x);
1837 } else {
1838 return (-0.5 * x + 1) * x;
1839 }
1840 });
1841
1842 // 20.2.2.22 Math.log10 ( x )
1843 define(
1844 Math, 'log10',
1845 function log10(x) {
1846 x = Number(x);
1847 return log(x) * LOG10E;
1848 });
1849
1850 // 20.2.2.23 Math.log2 ( x )
1851 define(
1852 Math, 'log2',
1853 function log2(x) {
1854 x = Number(x);
1855 return log(x) * LOG2E;
1856 });
1857
1858 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1859 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1860 // 20.2.2.26 Math.pow ( x, y )
1861 // 20.2.2.27 Math.random ( )
1862 // 20.2.2.28 Math.round ( x )
1863
1864 // 20.2.2.29 Math.sign(x)
1865 define(
1866 Math, 'sign',
1867 function sign(x) {
1868 x = Number(x);
1869 return x < 0 ? -1 : x > 0 ? 1 : x;
1870 });
1871
1872 // 20.2.2.30 Math.sin ( x )
1873
1874 // 20.2.2.31 Math.sinh( x )
1875 define(
1876 Math, 'sinh',
1877 function sinh(x) {
1878 x = Number(x);
1879 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1880 });
1881
1882 // 20.2.2.32 Math.sqrt ( x )
1883 // 20.2.2.33 Math.tan ( x )
1884
1885 // 20.2.2.34 Math.tanh ( x )
1886 define(
1887 Math, 'tanh',
1888 function tanh(x) {
1889 x = Number(x);
1890 var n = pow(E, 2 * x) - 1,
1891 d = pow(E, 2 * x) + 1;
1892 if (SameValue(x, -0))
1893 return x;
1894 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1895 });
1896
1897 // 20.2.2.35 Math.trunc ( x )
1898 define(
1899 Math, 'trunc',
1900 function trunc(x) {
1901 x = Number(x);
1902 return $isNaN(x) ? NaN :
1903 x < 0 ? ceil(x) : floor(x);
1904 });
1905
1906 // ---------------------------------------
1907 // 20.3 Date Objects
1908 // ---------------------------------------
1909
1910 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1911 // 20.3.1.1 Time Values and Time Range
1912 // 20.3.1.2 Day Number and Time within Day
1913 // 20.3.1.3 Year Number
1914 // 20.3.1.4 Month Number
1915 // 20.3.1.5 Date Number
1916 // 20.3.1.6 Week Day
1917 // 20.3.1.7 Local Time Zone Adjustment
1918 // 20.3.1.8 Daylight Saving Time Adjustment
1919 // 20.3.1.9 Local Time
1920 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1921 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1922 // 20.3.1.12 MakeDay (year, month, date)
1923 // 20.3.1.13 MakeDate (day, time)
1924 // 20.3.1.14 TimeClip (time)
1925 // 20.3.1.15 Date Time String Format
1926 // 20.3.1.15.1 Extended years
1927 // 20.3.2 The Date Constructor
1928 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1929 // 20.3.2.2 Date ( value )
1930 // 20.3.2.3 Date ( )
1931 // 20.3.3 Properties of the Date Constructor
1932 // 20.3.3.1 Date.now ( )
1933 // 20.3.3.2 Date.parse (string)
1934 // 20.3.3.3 Date.prototype
1935 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1936 // 20.3.4 Properties of the Date Prototype Object
1937 // 20.3.4.1 Date.prototype.constructor
1938 // 20.3.4.2 Date.prototype.getDate ( )
1939 // 20.3.4.3 Date.prototype.getDay ( )
1940 // 20.3.4.4 Date.prototype.getFullYear ( )
1941 // 20.3.4.5 Date.prototype.getHours ( )
1942 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1943 // 20.3.4.7 Date.prototype.getMinutes ( )
1944 // 20.3.4.8 Date.prototype.getMonth ( )
1945 // 20.3.4.9 Date.prototype.getSeconds ( )
1946 // 20.3.4.10 Date.prototype.getTime ( )
1947 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1948 // 20.3.4.12 Date.prototype.getUTCDate ( )
1949 // 20.3.4.13 Date.prototype.getUTCDay ( )
1950 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1951 // 20.3.4.15 Date.prototype.getUTCHours ( )
1952 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1953 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1954 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1955 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1956 // 20.3.4.20 Date.prototype.setDate ( date )
1957 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1958 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1959 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1960 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1961 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1962 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1963 // 20.3.4.27 Date.prototype.setTime ( time )
1964 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1965 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1966 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1967 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1968 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1969 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1970 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1971 // 20.3.4.35 Date.prototype.toDateString ( )
1972 // 20.3.4.36 Date.prototype.toISOString ( )
1973 // 20.3.4.37 Date.prototype.toJSON ( key )
1974 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1975 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1976 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1977 // 20.3.4.41 Date.prototype.toString ( )
1978 // 20.3.4.42 Date.prototype.toTimeString ( )
1979 // 20.3.4.43 Date.prototype.toUTCString ( )
1980 // 20.3.4.44 Date.prototype.valueOf ( )
1981 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1982 // 20.3.5 Properties of Date Instances
1983
1984 // (No polyfillable changes from ES5)
1985
1986 // ---------------------------------------
1987 // 21 Text Processing
1988 // ---------------------------------------
1989
1990 var string_regexp_dispatch = (function() {
1991 var faux = {}, secret = Symbol();
1992 faux[Symbol.match] = function() { return secret; };
1993 return ("").match(faux) === secret;
1994 }());
1995
1996 // 21.1 String Objects
1997 // 21.1.1 The String Constructor
1998 // 21.1.1.1 String ( value )
1999 // 21.1.2 Properties of the String Constructor
2000 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2001
2002 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2003 define(
2004 String, 'fromCodePoint',
2005 function fromCodePoint(/*...codePoints*/) {
2006 var codePoints = arguments,
2007 length = codePoints.length,
2008 elements = [],
2009 nextIndex = 0;
2010 while (nextIndex < length) {
2011 var next = codePoints[nextIndex];
2012 var nextCP = Number(next);
2013 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2014 nextCP < 0 || nextCP > 0x10FFFF) {
2015 throw RangeError('Invalid code point ' + nextCP);
2016 }
2017 if (nextCP < 0x10000) {
2018 elements.push(String.fromCharCode(nextCP));
2019 } else {
2020 nextCP -= 0x10000;
2021 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2022 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2023 }
2024 nextIndex += 1;
2025 }
2026 return elements.join('');
2027 });
2028
2029 // 21.1.2.3 String.prototype
2030
2031 // 21.1.2.4 String.raw ( template , ...substitutions )
2032 define(
2033 String, 'raw',
2034 function raw(template /*, ...substitutions*/) {
2035 var substitutions = [].slice.call(arguments, 1);
2036
2037 var cooked = Object(template);
2038 var rawValue = cooked['raw'];
2039 var raw = Object(rawValue);
2040 var len = raw['length'];
2041 var literalSegments = ToLength(len);
2042 if (literalSegments <= 0) return '';
2043 var stringElements = [];
2044 var nextIndex = 0;
2045 while (true) {
2046 var next = raw[nextIndex];
2047 var nextSeg = String(next);
2048 stringElements.push(nextSeg);
2049 if (nextIndex + 1 === literalSegments)
2050 return stringElements.join('');
2051 next = substitutions[nextIndex];
2052 var nextSub = String(next);
2053 stringElements.push(nextSub);
2054 nextIndex = nextIndex + 1;
2055 }
2056 });
2057
2058 // See https://githib.com/inexorabletash/uate for a more useful version.
2059
2060 // 21.1.3 Properties of the String Prototype Object
2061 // 21.1.3.1 String.prototype.charAt ( pos )
2062 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2063
2064 // 21.1.3.3 String.prototype.codePointAt ( pos )
2065 define(
2066 String.prototype, 'codePointAt',
2067 function codePointAt(pos) {
2068 var o = strict(this);
2069 var s = String(o);
2070 var position = ToInteger(pos);
2071 var size = s.length;
2072 if (position < 0 || position >= size) return undefined;
2073 var first = s.charCodeAt(position);
2074 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2075 var second = s.charCodeAt(position + 1);
2076 if (second < 0xDC00 || second > 0xDFFF) return first;
2077 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2078 });
2079
2080 // 21.1.3.4 String.prototype.concat ( ...args )
2081 // 21.1.3.5 String.prototype.constructor
2082
2083 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2084 define(
2085 String.prototype, 'endsWith',
2086 function endsWith(searchString) {
2087 var endPosition = arguments[1];
2088
2089 var o = strict(this);
2090 var s = String(o);
2091 var searchStr = String(searchString);
2092 var len = s.length;
2093 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2094 var end = min(max(pos, 0), len);
2095 var searchLength = searchStr.length;
2096 var start = end - searchLength;
2097 if (start < 0) return false;
2098 if (s.substring(start, start + searchLength) === searchStr) return true;
2099 return false;
2100 });
2101
2102 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2103 define(
2104 String.prototype, 'includes',
2105 function includes(searchString) {
2106 var position = arguments[1];
2107
2108 var o = strict(this);
2109 var s = String(o);
2110 var searchStr = String(searchString);
2111 var pos = ToInteger(position);
2112 var len = s.length;
2113 var start = min(max(pos, 0), len);
2114 return s.indexOf(searchStr, start) !== -1;
2115 });
2116
2117 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2118 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2119 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2120 // 21.1.3.11 String.prototype.match ( regexp )
2121 define(
2122 String.prototype, 'match',
2123 function match(regexp) {
2124 var o = strict(this);
2125 var s = String(o);
2126 if (HasProperty(regexp, $$match)) var rx = regexp;
2127 else rx = new RegExp(regexp);
2128 return rx[$$match](s);
2129 }, !string_regexp_dispatch);
2130
2131 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2132
2133 // Not practical due to table sizes; if needed, pull in:
2134 // https://github.com/walling/unorm/
2135
2136 // 21.1.3.13 String.prototype.repeat ( count )
2137 define(
2138 String.prototype, 'repeat',
2139 function repeat(count) {
2140 var o = strict(this);
2141 var s = String(o);
2142 var n = ToInteger(count);
2143 if (n < 0) throw RangeError();
2144 if (n === Infinity) throw RangeError();
2145 var t = new Array(n + 1).join(s);
2146 return t;
2147 });
2148
2149 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2150 define(
2151 String.prototype, 'replace',
2152 function replace(searchValue, replaceValue) {
2153 var o = strict(this);
2154 if (HasProperty(searchValue, $$replace))
2155 return searchValue[$$replace](o, replaceValue);
2156 return orig_replace.call(o, searchValue, replaceValue);
2157 }, !string_regexp_dispatch);
2158
2159 // 21.1.3.15 String.prototype.search ( regexp )
2160 define(
2161 String.prototype, 'search',
2162 function search(regexp) {
2163 var o = strict(this);
2164 var string = String(o);
2165 if (HasProperty(regexp, $$search)) var rx = regexp;
2166 else rx = new RegExp(regexp);
2167 return rx[$$search](string);
2168 }, !string_regexp_dispatch);
2169
2170 // 21.1.3.16 String.prototype.slice ( start, end )
2171 // 21.1.3.17 String.prototype.split ( separator, limit )
2172 define(
2173 String.prototype, 'split',
2174 function split(separator, limit) {
2175 var o = strict(this);
2176 if (HasProperty(separator, $$split))
2177 return separator[$$split](o, limit);
2178 return orig_split.call(o, separator, limit);
2179 }, !string_regexp_dispatch);
2180
2181 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2182 define(
2183 String.prototype, 'startsWith',
2184 function startsWith(searchString) {
2185 var position = arguments[1];
2186
2187 var o = strict(this);
2188 var s = String(o);
2189 var searchStr = String(searchString);
2190 var pos = ToInteger(position);
2191 var len = s.length;
2192 var start = min(max(pos, 0), len);
2193 var searchLength = searchStr.length;
2194 if (searchLength + start > len) return false;
2195 if (s.substring(start, start + searchLength) === searchStr) return true;
2196 return false;
2197 });
2198
2199 // 21.1.3.19 String.prototype.substring ( start, end )
2200 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2201 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2202 // 21.1.3.22 String.prototype.toLowerCase ( )
2203 // 21.1.3.23 String.prototype.toString ( )
2204 // 21.1.3.24 String.prototype.toUpperCase ( )
2205 // 21.1.3.25 String.prototype.trim ( )
2206 // 21.1.3.26 String.prototype.valueOf ( )
2207
2208 // 21.1.3.27 String.prototype [ @@iterator ]( )
2209 define(
2210 String.prototype, $$iterator,
2211 function entries() {
2212 return CreateStringIterator(this, 'value');
2213 });
2214
2215 // 21.1.4 Properties of String Instances
2216 // 21.1.4.1 length
2217
2218 // 21.1.5 String Iterator Objects
2219 /** @constructor */
2220 function StringIterator() {}
2221
2222 // 21.1.5.1 CreateStringIterator Abstract Operation
2223 function CreateStringIterator(string, kind) {
2224 var s = String(string);
2225 var iterator = new StringIterator;
2226 set_internal(iterator, '[[IteratedString]]', s);
2227 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2228 set_internal(iterator, '[[StringIterationKind]]', kind);
2229 return iterator;
2230 }
2231
2232 // 21.1.5.2 The %StringIteratorPrototype% Object
2233 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2234 StringIterator.prototype = $StringIteratorPrototype$;
2235
2236 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2237 define(
2238 $StringIteratorPrototype$, 'next',
2239 function next() {
2240 var o = ToObject(this);
2241 var s = String(o['[[IteratedString]]']),
2242 index = o['[[StringIteratorNextIndex]]'],
2243 len = s.length;
2244 if (index >= len) {
2245 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2246 return CreateIterResultObject(undefined, true);
2247 }
2248 var cp = s.codePointAt(index);
2249 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2250 return CreateIterResultObject(String.fromCodePoint(cp), false);
2251 });
2252
2253 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2254 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2255
2256 // 21.1.5.3 Properties of String Iterator Instances
2257
2258 // ---------------------------------------
2259 // 21.2 RegExp (Regular Expression) Objects
2260 // ---------------------------------------
2261
2262 // 21.2.1 Patterns
2263 // 21.2.2 Pattern Semantics
2264 // 21.2.2.1 Notation
2265 // 21.2.2.2 Pattern
2266 // 21.2.2.3 Disjunction
2267 // 21.2.2.4 Alternative
2268 // 21.2.2.5 Term
2269 // 21.2.2.6 Assertion
2270 // 21.2.2.7 Quantifier
2271 // 21.2.2.8 Atom
2272 // 21.2.2.9 AtomEscape
2273 // 21.2.2.10 CharacterEscape
2274 // 21.2.2.11 DecimalEscape
2275 // 21.2.2.12 CharacterClassEscape
2276 // 21.2.2.13 CharacterClass
2277 // 21.2.2.14 ClassRanges
2278 // 21.2.2.15 NonemptyClassRanges
2279 // 21.2.2.16 NonemptyClassRangesNoDash
2280 // 21.2.2.17 ClassAtom
2281 // 21.2.2.18 ClassAtomNoDash
2282 // 21.2.2.19 ClassEscape
2283 // 21.2.3 The RegExp Constructor
2284 // 21.2.3.1 RegExp ( pattern, flags )
2285 // 21.2.3.2 new RegExp( ...argumentsList )
2286 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2287 // 21.2.4 Properties of the RegExp Constructor
2288 // 21.2.4.1 RegExp.prototype
2289 // 21.2.5 Properties of the RegExp Prototype Object
2290 // 21.2.5.1 RegExp.prototype.constructor
2291 // 21.2.5.2 RegExp.prototype.exec ( string )
2292
2293 // 21.2.5.3 get RegExp.prototype.flags
2294 if (!('flags' in RegExp.prototype)) {
2295 Object.defineProperty(
2296 RegExp.prototype, 'flags', {
2297 get: function() {
2298 var s = String(this);
2299 return s.substring(s.lastIndexOf('/') + 1);
2300 }
2301 });
2302 }
2303
2304 // 21.2.5.4 get RegExp.prototype.global
2305 // 21.2.5.5 get RegExp.prototype.ignoreCase
2306
2307 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2308 define(RegExp.prototype, $$match, function(string) {
2309 var o = strict(this);
2310 return orig_match.call(string, o);
2311 });
2312
2313 // 21.2.5.7 get RegExp.prototype.multiline
2314
2315 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2316 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2317 var o = strict(this);
2318 return orig_replace.call(string, o, replaceValue);
2319 });
2320
2321 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2322 define(RegExp.prototype, $$search, function(string) {
2323 var o = strict(this);
2324 return orig_search.call(string, o);
2325 });
2326
2327 // 21.2.5.10 get RegExp.prototype.source
2328
2329 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2330 define(RegExp.prototype, $$split, function(string, limit) {
2331 var o = strict(this);
2332 return orig_split.call(string, o, limit);
2333 });
2334
2335 // 21.2.5.12 get RegExp.prototype.sticky
2336 // 21.2.5.13 RegExp.prototype.test( S )
2337 // 21.2.5.14 RegExp.prototype.toString ( )
2338 // 21.2.5.15 get RegExp.prototype.unicode
2339
2340 // 21.2.6 Properties of RegExp Instances
2341 // 21.2.6.1 lastIndex
2342
2343 // (No polyfillable changes from ES5)
2344
2345 // ---------------------------------------
2346 // 22 Indexed Collections
2347 // ---------------------------------------
2348
2349 // ---------------------------------------
2350 // 22.1 Array Objects
2351 // ---------------------------------------
2352
2353 // 22.1.1 The Array Constructor
2354 // 22.1.1.1 Array ( )
2355 // 22.1.1.2 Array (len)
2356 // 22.1.1.3 Array (...items )
2357
2358 // 22.1.2 Properties of the Array Constructor
2359
2360 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2361 define(
2362 Array, 'from',
2363 function from(items) {
2364 var mapfn = arguments[1];
2365 var thisArg = arguments[2];
2366
2367 var c = strict(this);
2368 if (mapfn === undefined) {
2369 var mapping = false;
2370 } else {
2371 if (!IsCallable(mapfn)) throw TypeError();
2372 var t = thisArg;
2373 mapping = true;
2374 }
2375 var usingIterator = GetMethod(items, $$iterator);
2376 if (usingIterator !== undefined) {
2377 if (IsConstructor(c)) {
2378 var a = new c();
2379 } else {
2380 a = new Array(0);
2381 }
2382 var iterator = GetIterator(items, usingIterator);
2383 var k = 0;
2384 while (true) {
2385 var next = IteratorStep(iterator);
2386 if (next === false) {
2387 a.length = k;
2388 return a;
2389 }
2390 var nextValue = IteratorValue(next);
2391 if (mapping)
2392 var mappedValue = mapfn.call(t, nextValue);
2393 else
2394 mappedValue = nextValue;
2395 a[k] = mappedValue;
2396 k += 1;
2397 }
2398 }
2399 var arrayLike = ToObject(items);
2400 var lenValue = arrayLike.length;
2401 var len = ToLength(lenValue);
2402 if (IsConstructor(c)) {
2403 a = new c(len);
2404 } else {
2405 a = new Array(len);
2406 }
2407 k = 0;
2408 while (k < len) {
2409 var kValue = arrayLike[k];
2410 if (mapping)
2411 mappedValue = mapfn.call(t, kValue, k);
2412 else
2413 mappedValue = kValue;
2414 a[k] = mappedValue;
2415 k += 1;
2416 }
2417 a.length = len;
2418 return a;
2419 });
2420
2421 // 22.1.2.2 Array.isArray ( arg )
2422
2423 // 22.1.2.3 Array.of ( ...items )
2424 define(
2425 Array, 'of',
2426 function of() {
2427 var items = arguments;
2428
2429 var lenValue = items.length;
2430 var len = ToUint32(lenValue);
2431 var c = strict(this), a;
2432 if (IsConstructor(c)) {
2433 a = new c(len);
2434 a = ToObject(a);
2435 } else {
2436 a = new Array(len);
2437 }
2438 var k = 0;
2439 while (k < len) {
2440 a[k] = items[k];
2441 k += 1;
2442 }
2443 a.length = len;
2444 return a;
2445 });
2446
2447 // 22.1.2.4 Array.prototype
2448 // 22.1.2.5 get Array [ @@species ]
2449 // 22.1.3 Properties of the Array Prototype Object
2450 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2451 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2452 // 22.1.3.2 Array.prototype.constructor
2453 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2454 define(
2455 Array.prototype, 'copyWithin',
2456 function copyWithin(target, start/*, end*/) {
2457 var end = arguments[2];
2458
2459 var o = ToObject(this);
2460 var lenVal = o.length;
2461 var len = ToLength(lenVal);
2462 len = max(len, 0);
2463 var relativeTarget = ToInteger(target);
2464 var to;
2465 if (relativeTarget < 0)
2466 to = max(len + relativeTarget, 0);
2467 else
2468 to = min(relativeTarget, len);
2469 var relativeStart = ToInteger(start);
2470 var from;
2471 if (relativeStart < 0)
2472 from = max(len + relativeStart, 0);
2473 else
2474 from = min(relativeStart, len);
2475 var relativeEnd;
2476 if (end === undefined)
2477 relativeEnd = len;
2478 else
2479 relativeEnd = ToInteger(end);
2480 var final;
2481 if (relativeEnd < 0)
2482 final = max(len + relativeEnd, 0);
2483 else
2484 final = min(relativeEnd, len);
2485 var count = min(final - from, len - to);
2486 var direction;
2487 if (from < to && to < from + count) {
2488 direction = -1;
2489 from = from + count - 1;
2490 to = to + count - 1;
2491 } else {
2492 direction = 1;
2493 }
2494 while (count > 0) {
2495 var fromKey = String(from);
2496 var toKey = String(to);
2497 var fromPresent = HasProperty(o, fromKey);
2498 if (fromPresent) {
2499 var fromVal = o[fromKey];
2500 o[toKey] = fromVal;
2501 } else {
2502 delete o[toKey];
2503 }
2504 from = from + direction;
2505 to = to + direction;
2506 count = count - 1;
2507 }
2508 return o;
2509 });
2510
2511 // 22.1.3.4 Array.prototype.entries ( )
2512 var nativeArrayIteratorMethods =
2513 ('entries' in Array.prototype && 'next' in [].entries());
2514
2515 define(
2516 Array.prototype, 'entries',
2517 function entries() {
2518 return CreateArrayIterator(this, 'key+value');
2519 }, !nativeArrayIteratorMethods);
2520
2521 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2522
2523 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2524 define(
2525 Array.prototype, 'fill',
2526 function fill(value/*, start, end*/) {
2527 var start = arguments[1],
2528 end = arguments[2];
2529
2530 var o = ToObject(this);
2531 var lenVal = o.length;
2532 var len = ToLength(lenVal);
2533 len = max(len, 0);
2534 var relativeStart = ToInteger(start);
2535 var k;
2536 if (relativeStart < 0)
2537 k = max((len + relativeStart), 0);
2538 else
2539 k = min(relativeStart, len);
2540 var relativeEnd;
2541 if (end === undefined)
2542 relativeEnd = len;
2543 else
2544 relativeEnd = ToInteger(end);
2545 var final;
2546 if (relativeEnd < 0)
2547 final = max((len + relativeEnd), 0);
2548 else
2549 final = min(relativeEnd, len);
2550 while (k < final) {
2551 var pk = String(k);
2552 o[pk] = value;
2553 k += 1;
2554 }
2555 return o;
2556 });
2557
2558 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2559
2560 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2561 define(
2562 Array.prototype, 'find',
2563 function find(predicate) {
2564 var o = ToObject(this);
2565 var lenValue = o.length;
2566 var len = ToInteger(lenValue);
2567 if (!IsCallable(predicate)) throw TypeError();
2568 var t = arguments.length > 1 ? arguments[1] : undefined;
2569 var k = 0;
2570 while (k < len) {
2571 var pk = String(k);
2572 var kPresent = HasProperty(o, pk);
2573 if (kPresent) {
2574 var kValue = o[pk];
2575 var testResult = predicate.call(t, kValue, k, o);
2576 if (Boolean(testResult)) {
2577 return kValue;
2578 }
2579 }
2580 ++k;
2581 }
2582 return undefined;
2583 });
2584
2585 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2586 define(
2587 Array.prototype, 'findIndex',
2588 function findIndex(predicate) {
2589 var o = ToObject(this);
2590 var lenValue = o.length;
2591 var len = ToLength(lenValue);
2592 if (!IsCallable(predicate)) throw TypeError();
2593 var t = arguments.length > 1 ? arguments[1] : undefined;
2594 var k = 0;
2595 while (k < len) {
2596 var pk = String(k);
2597 var kPresent = HasProperty(o, pk);
2598 if (kPresent) {
2599 var kValue = o[pk];
2600 var testResult = predicate.call(t, kValue, k, o);
2601 if (Boolean(testResult)) {
2602 return k;
2603 }
2604 }
2605 ++k;
2606 }
2607 return -1;
2608 });
2609
2610 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2611 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2612 // 22.1.3.12 Array.prototype.join (separator)
2613
2614 // 22.1.3.13 Array.prototype.keys ( )
2615 define(
2616 Array.prototype, 'keys',
2617 function keys() {
2618 return CreateArrayIterator(this, 'key');
2619 }, !nativeArrayIteratorMethods);
2620
2621 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2622 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2623 // 22.1.3.16 Array.prototype.pop ( )
2624 // 22.1.3.17 Array.prototype.push ( ...items )
2625 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2626 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2627 // 22.1.3.20 Array.prototype.reverse ( )
2628 // 22.1.3.21 Array.prototype.shift ( )
2629 // 22.1.3.22 Array.prototype.slice (start, end)
2630 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2631 // 22.1.3.24 Array.prototype.sort (comparefn)
2632 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2633 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2634 // 22.1.3.27 Array.prototype.toString ( )
2635 // 22.1.3.28 Array.prototype.unshift ( ...items )
2636
2637 // 22.1.3.29 Array.prototype.values ( )
2638 define(
2639 Array.prototype, 'values',
2640 function values() {
2641 return CreateArrayIterator(this, 'value');
2642 }, !nativeArrayIteratorMethods);
2643
2644 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2645 define(
2646 Array.prototype, $$iterator,
2647 Array.prototype.values
2648 );
2649
2650 // 22.1.3.31 Array.prototype [ @@unscopables ]
2651 // 22.1.4 Properties of Array Instances
2652 // 22.1.4.1 length
2653
2654 // 22.1.5 Array Iterator Objects
2655 function ArrayIterator() {}
2656
2657 // 22.1.5.1 CreateArrayIterator Abstract Operation
2658 function CreateArrayIterator(array, kind) {
2659 var o = ToObject(array);
2660 var iterator = new ArrayIterator;
2661 set_internal(iterator, '[[IteratedObject]]', o);
2662 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2663 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2664 return iterator;
2665 }
2666
2667 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2668 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2669 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2670
2671 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2672 define(
2673 $ArrayIteratorPrototype$, 'next',
2674 function next() {
2675 var o = strict(this);
2676 if (Type(o) !== 'object') throw TypeError();
2677 var a = o['[[IteratedObject]]'],
2678 index = o['[[ArrayIteratorNextIndex]]'],
2679 itemKind = o['[[ArrayIterationKind]]'],
2680 lenValue = a.length,
2681 len = ToUint32(lenValue),
2682 elementKey,
2683 elementValue;
2684 if (itemKind.indexOf('sparse') !== -1) {
2685 var found = false;
2686 while (!found && index < len) {
2687 elementKey = String(index);
2688 found = HasProperty(a, elementKey);
2689 if (!found) {
2690 index += 1;
2691 }
2692 }
2693 }
2694 if (index >= len) {
2695 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2696 return CreateIterResultObject(undefined, true);
2697 }
2698 elementKey = index;
2699 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2700 if (itemKind.indexOf('value') !== -1)
2701 elementValue = a[elementKey];
2702 if (itemKind.indexOf('key+value') !== -1)
2703 return CreateIterResultObject([elementKey, elementValue], false);
2704 if (itemKind.indexOf('key') !== -1)
2705 return CreateIterResultObject(elementKey, false);
2706 if (itemKind === 'value')
2707 return CreateIterResultObject(elementValue, false);
2708 throw Error('Internal error');
2709 });
2710
2711 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2712 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2713
2714 // 22.1.5.3 Properties of Array Iterator Instances
2715
2716
2717 // ---------------------------------------
2718 // 22.2 TypedArray Objects
2719 // ---------------------------------------
2720
2721 // See typedarray.js for TypedArray polyfill
2722
2723 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2724 'Int16Array', 'Uint16Array',
2725 'Int32Array', 'Uint32Array',
2726 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2727 if (!($TypedArrayName$ in global))
2728 return;
2729 var $TypedArray$ = global[$TypedArrayName$];
2730
2731 // 22.2.1 The %TypedArray% Intrinsic Object
2732 // 22.2.1.1 %TypedArray% ( length )
2733 // 22.2.1.2 %TypedArray% ( typedArray )
2734 // 22.2.1.3 %TypedArray% ( object )
2735 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2736 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2737 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2738
2739 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2740 define(
2741 $TypedArray$, 'from',
2742 function from(source) {
2743 var mapfn = arguments[1];
2744 var thisArg = arguments[2];
2745
2746 var c = strict(this);
2747 if (!IsConstructor(c)) throw TypeError();
2748 if (mapfn === undefined) {
2749 var mapping = false;
2750 } else {
2751 if (IsCallable(mapfn)) throw TypeError();
2752 var t = thisArg;
2753 mapping = true;
2754 }
2755 var usingIterator = GetMethod(source, $$iterator);
2756 if (usingIterator !== undefined) {
2757 var iterator = GetIterator(source, usingIterator);
2758 var values = [];
2759 var next = true;
2760 while (next !== false) {
2761 next = IteratorStep(iterator);
2762 if (next !== false) {
2763 var nextValue = IteratorValue(next);
2764 values.push(nextValue);
2765 }
2766 }
2767 var len = values.length;
2768 var newObj = new c(len);
2769 var k = 0;
2770 while (k < len) {
2771 var kValue = values.shift();
2772 if (mapping) {
2773 var mappedValue = mapfn.call(t, kValue);
2774 } else {
2775 mappedValue = kValue;
2776 }
2777 newObj[k] = mappedValue;
2778 ++k;
2779 }
2780 console.assert(values.length === 0);
2781 return newObj;
2782 }
2783 var arrayLike = ToObject(source);
2784 var lenValue = arrayLike.length;
2785 len = ToLength(lenValue);
2786 newObj = new c(len);
2787 k = 0;
2788 while (k < len) {
2789 kValue = arrayLike[k];
2790 if (mapping) {
2791 mappedValue = mapfn.call(t, kValue, k);
2792 } else {
2793 mappedValue = kValue;
2794 }
2795 newObj[k] = mappedValue;
2796 ++k;
2797 }
2798 return newObj;
2799 });
2800
2801 // 22.2.2.2 %TypedArray%.of ( ...items )
2802 define(
2803 $TypedArray$, 'of',
2804 function of() {
2805 var items = arguments;
2806
2807 var len = items.length;
2808 var c = strict(this);
2809 var newObj = new c(len);
2810 var k = 0;
2811 while (k < len) {
2812 newObj[k] = items[k];
2813 ++k;
2814 }
2815 return newObj;
2816 });
2817
2818 // 22.2.2.3 %TypedArray%.prototype
2819 // 22.2.2.4 get %TypedArray% [ @@species ]
2820 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2821 // 22.2.3.1 get %TypedArray%.prototype.buffer
2822 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2823 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2824 // 22.2.3.4 %TypedArray%.prototype.constructor
2825
2826 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2827 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2828
2829 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2830 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2831
2832 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2833 define($TypedArray$.prototype, 'every', Array.prototype.every);
2834
2835 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2836 define(
2837 $TypedArray$.prototype, 'fill',
2838 //Array.prototype.fill // Doesn't work in Safari 7
2839 function fill(value/*, start, end*/) {
2840 var start = arguments[1],
2841 end = arguments[2];
2842
2843 var o = ToObject(this);
2844 var lenVal = o.length;
2845 var len = ToLength(lenVal);
2846 len = max(len, 0);
2847 var relativeStart = ToInteger(start);
2848 var k;
2849 if (relativeStart < 0) k = max((len + relativeStart), 0);
2850 else k = min(relativeStart, len);
2851 var relativeEnd;
2852 if (end === undefined) relativeEnd = len;
2853 else relativeEnd = ToInteger(end);
2854 var final;
2855 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2856 else final = min(relativeEnd, len);
2857 while (k < final) {
2858 var pk = String(k);
2859 o[pk] = value;
2860 k += 1;
2861 }
2862 return o;
2863 });
2864
2865 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2866 define(
2867 $TypedArray$.prototype, 'filter',
2868 function filter(callbackfn) {
2869 var thisArg = arguments[1];
2870
2871 var o = ToObject(this);
2872 var lenVal = o.length;
2873 var len = ToLength(lenVal);
2874 if (!IsCallable(callbackfn)) throw TypeError();
2875 var t = thisArg;
2876 var c = o.constructor;
2877 var kept = [];
2878 var k = 0;
2879 var captured = 0;
2880 while (k < len) {
2881 var kValue = o[k];
2882 var selected = callbackfn.call(t, kValue, k, o);
2883 if (selected) {
2884 kept.push(kValue);
2885 ++captured;
2886 }
2887 ++k;
2888 }
2889 var a = new c(captured);
2890 var n = 0;
2891 for (var i = 0; i < kept.length; ++i) {
2892 var e = kept[i];
2893 a[n] = e;
2894 ++n;
2895 }
2896 return a;
2897 });
2898
2899 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2900 define($TypedArray$.prototype, 'find', Array.prototype.find);
2901
2902 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2903 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2904
2905 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2906 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2907
2908 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2909 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2910
2911 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2912 define($TypedArray$.prototype, 'join', Array.prototype.join);
2913
2914 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2915 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2916
2917 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2918 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2919
2920 // 22.2.3.17 get %TypedArray%.prototype.length
2921
2922 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2923 define(
2924 $TypedArray$.prototype, 'map',
2925 function map(callbackfn) {
2926 var thisArg = arguments[1];
2927
2928 var o = ToObject(this);
2929 var lenValue = o.length;
2930 var len = ToLength(lenValue);
2931 if (!IsCallable(callbackfn)) throw TypeError();
2932 var t = thisArg;
2933 var a = undefined;
2934 var c = o.constructor;
2935 if (IsConstructor(c))
2936 a = new c(len);
2937 if (a === undefined)
2938 a = new Array(len);
2939 var k = 0;
2940 while (k < len) {
2941 var kPresent = HasProperty(o, k);
2942 if (kPresent) {
2943 var kValue = o[k];
2944 var mappedValue = callbackfn.call(t, kValue, k, o);
2945 a[k] = mappedValue;
2946 }
2947 ++k;
2948 }
2949 return a;
2950 });
2951
2952 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2953 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2954
2955 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2956 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2957
2958 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2959 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2960
2961 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2962 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2963 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2964
2965 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2966 define(
2967 $TypedArray$.prototype, 'slice',
2968 function slice(start, end) {
2969 var o = ToObject(this);
2970 var lenVal = o.length;
2971 var len = ToLength(lenVal);
2972 var relativeStart = ToInteger(start);
2973 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2974 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2975 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2976 var count = final - k;
2977 var c = o.constructor;
2978 if (IsConstructor(c)) {
2979 var a = new c(count);
2980 } else {
2981 throw TypeError();
2982 }
2983 var n = 0;
2984 while (k < final) {
2985 var kValue = o[k];
2986 a[n] = kValue;
2987 ++k;
2988 ++n;
2989 }
2990 return a;
2991 });
2992
2993 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2994 define($TypedArray$.prototype, 'some', Array.prototype.some);
2995
2996 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2997 define(
2998 $TypedArray$.prototype, 'sort',
2999 function sort() {
3000 var comparefn = arguments[0];
3001
3002 function sortCompare(x, y) {
3003 console.assert(Type(x) === 'number' && Type(y) === 'number');
3004 if (x !== x && y !== y) return +0;
3005 if (x !== x) return 1;
3006 if (y !== y) return -1;
3007 if (comparefn !== undefined) {
3008 return comparefn(x, y);
3009 }
3010 if (x < y) return -1;
3011 if (x > y) return 1;
3012 return +0;
3013 }
3014 return Array.prototype.sort.call(this, sortCompare);
3015 });
3016
3017 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3018 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3019 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3020
3021 // 22.2.3.29 %TypedArray%.prototype.values ( )
3022 define($TypedArray$.prototype, 'values', Array.prototype.values);
3023
3024 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3025 define(
3026 $TypedArray$.prototype, $$iterator,
3027 $TypedArray$.prototype.values
3028 );
3029
3030 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3031 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3032
3033 // 22.2.4 The TypedArray Constructors
3034 // 22.2.4.1TypedArray( ... argumentsList)
3035 // 22.2.5 Properties of the TypedArray Constructors
3036 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3037 // 22.2.5.2 TypedArray.prototype
3038 // 22.2.6 Properties of TypedArray Prototype Objects
3039 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3040 // 22.2.6.2 TypedArray.prototype.constructor
3041 // 22.2.7 Properties of TypedArray Instances
3042 });
3043
3044 // ---------------------------------------
3045 // 23 Keyed Collection
3046 // ---------------------------------------
3047
3048 // ---------------------------------------
3049 // 23.1 Map Objects
3050 // ---------------------------------------
3051
3052 (function() {
3053 // 23.1.1 The Map Constructor
3054
3055 // 23.1.1.1 Map ( [ iterable ] )
3056 /** @constructor */
3057 function Map(/*iterable*/) {
3058 var map = strict(this);
3059 var iterable = arguments[0];
3060
3061 if (Type(map) !== 'object') throw TypeError();
3062 if ('[[MapData]]' in map) throw TypeError();
3063
3064 if (iterable !== undefined) {
3065 var adder = map['set'];
3066 if (!IsCallable(adder)) throw TypeError();
3067 var iter = GetIterator(ToObject(iterable));
3068 }
3069 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3070 if (iter === undefined) return map;
3071 while (true) {
3072 var next = IteratorStep(iter);
3073 if (next === false)
3074 return map;
3075 var nextItem = IteratorValue(next);
3076 if (Type(nextItem) !== 'object') throw TypeError();
3077 var k = nextItem[0];
3078 var v = nextItem[1];
3079 adder.call(map, k, v);
3080 }
3081
3082 return map;
3083 }
3084
3085 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3086 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3087 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3088 (new global.Map([['a', 1]]).size !== 1))
3089 global.Map = Map;
3090
3091
3092 function MapDataIndexOf(mapData, key) {
3093 var i;
3094 if (key === key) return mapData.keys.indexOf(key);
3095 // Slow case for NaN
3096 for (i = 0; i < mapData.keys.length; i += 1)
3097 if (SameValueZero(mapData.keys[i], key)) return i;
3098 return -1;
3099 }
3100
3101 // 23.1.1.2 new Map ( ... argumentsList )
3102 // 23.1.2 Properties of the Map Constructor
3103 // 23.1.2.1 Map.prototype
3104 var $MapPrototype$ = {};
3105 Map.prototype = $MapPrototype$;
3106
3107 // 23.1.2.2 get Map [ @@species ]
3108
3109 // 23.1.3 Properties of the Map Prototype Object
3110 // 23.1.3.1 Map.prototype.clear ()
3111 define(
3112 Map.prototype, 'clear',
3113 function clear() {
3114 var m = strict(this);
3115 if (Type(m) !== 'object') throw TypeError();
3116 if (!('[[MapData]]' in m)) throw TypeError();
3117 if (m['[[MapData]]'] === undefined) throw TypeError();
3118 var entries = m['[[MapData]]'];
3119 entries.keys.length = 0;
3120 entries.values.length = 0;
3121 return undefined;
3122 });
3123
3124 // 23.1.3.2 Map.prototype.constructor
3125
3126 // 23.1.3.3 Map.prototype.delete ( key )
3127 define(
3128 Map.prototype, 'delete',
3129 function delete_(key) {
3130 var m = strict(this);
3131 if (Type(m) !== 'object') throw TypeError();
3132 if (!('[[MapData]]' in m)) throw TypeError();
3133 if (m['[[MapData]]'] === undefined) throw TypeError();
3134 var entries = m['[[MapData]]'];
3135 var i = MapDataIndexOf(entries, key);
3136 if (i < 0) return false;
3137 entries.keys[i] = empty;
3138 entries.values[i] = empty;
3139 return true;
3140 });
3141
3142 // 23.1.3.4 Map.prototype.entries ( )
3143 define(
3144 Map.prototype, 'entries',
3145 function entries() {
3146 var m = strict(this);
3147 if (Type(m) !== 'object') throw TypeError();
3148 return CreateMapIterator(m, 'key+value');
3149 });
3150
3151 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3152 define(
3153 Map.prototype, 'forEach',
3154 function forEach(callbackfn /*, thisArg*/) {
3155 var thisArg = arguments[1];
3156
3157 var m = strict(this);
3158 if (Type(m) !== 'object') throw TypeError();
3159 if (!('[[MapData]]' in m)) throw TypeError();
3160 if (m['[[MapData]]'] === undefined) throw TypeError();
3161 var entries = m['[[MapData]]'];
3162
3163 if (!IsCallable(callbackfn)) {
3164 throw TypeError('First argument to forEach is not callable.');
3165 }
3166 for (var i = 0; i < entries.keys.length; ++i) {
3167 if (entries.keys[i] !== empty) {
3168 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3169 }
3170 }
3171 return undefined;
3172 });
3173
3174 // 23.1.3.6 Map.prototype.get ( key )
3175 define(
3176 Map.prototype, 'get',
3177 function get(key) {
3178 var m = strict(this);
3179 if (Type(m) !== 'object') throw TypeError();
3180 if (!('[[MapData]]' in m)) throw TypeError();
3181 if (m['[[MapData]]'] === undefined) throw TypeError();
3182 var entries = m['[[MapData]]'];
3183 var i = MapDataIndexOf(entries, key);
3184 if (i >= 0) return entries.values[i];
3185 return undefined;
3186 });
3187
3188 // 23.1.3.7 Map.prototype.has ( key )
3189 define(
3190 Map.prototype, 'has',
3191 function has(key) {
3192 var m = strict(this);
3193 if (Type(m) !== 'object') throw TypeError();
3194 if (!('[[MapData]]' in m)) throw TypeError();
3195 if (m['[[MapData]]'] === undefined) throw TypeError();
3196 var entries = m['[[MapData]]'];
3197 if (MapDataIndexOf(entries, key) >= 0) return true;
3198 return false;
3199 });
3200
3201 // 23.1.3.8 Map.prototype.keys ( )
3202 define(
3203 Map.prototype, 'keys',
3204 function keys() {
3205 var m = strict(this);
3206 if (Type(m) !== 'object') throw TypeError();
3207 return CreateMapIterator(m, 'key');
3208 });
3209
3210 // 23.1.3.9 Map.prototype.set ( key , value )
3211 define(
3212 Map.prototype, 'set',
3213 function set(key, value) {
3214 var m = strict(this);
3215 if (Type(m) !== 'object') throw TypeError();
3216 if (!('[[MapData]]' in m)) throw TypeError();
3217 if (m['[[MapData]]'] === undefined) throw TypeError();
3218 var entries = m['[[MapData]]'];
3219 var i = MapDataIndexOf(entries, key);
3220 if (i < 0) i = entries.keys.length;
3221 if (SameValue(key, -0)) key = 0;
3222 entries.keys[i] = key;
3223 entries.values[i] = value;
3224 return m;
3225 });
3226
3227 // 23.1.3.10 get Map.prototype.size
3228 Object.defineProperty(
3229 Map.prototype, 'size', {
3230 get: function() {
3231 var m = strict(this);
3232 if (Type(m) !== 'object') throw TypeError();
3233 if (!('[[MapData]]' in m)) throw TypeError();
3234 if (m['[[MapData]]'] === undefined) throw TypeError();
3235 var entries = m['[[MapData]]'];
3236 var count = 0;
3237 for (var i = 0; i < entries.keys.length; ++i) {
3238 if (entries.keys[i] !== empty)
3239 count = count + 1;
3240 }
3241 return count;
3242 }
3243 });
3244
3245 // 23.1.3.11 Map.prototype.values ( )
3246 define(
3247 Map.prototype, 'values',
3248 function values() {
3249 var m = strict(this);
3250 if (Type(m) !== 'object') throw TypeError();
3251 return CreateMapIterator(m, 'value');
3252 });
3253
3254 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3255 define(
3256 Map.prototype, $$iterator,
3257 function() {
3258 var m = strict(this);
3259 if (Type(m) !== 'object') throw TypeError();
3260 return CreateMapIterator(m, 'key+value');
3261 });
3262
3263 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3264 define(global.Map.prototype, $$toStringTag, 'Map');
3265
3266 // 23.1.4 Properties of Map Instances
3267 // 23.1.5 Map Iterator Objects
3268
3269 /** @constructor */
3270 function MapIterator() {}
3271
3272 // 23.1.5.1 CreateMapIterator Abstract Operation
3273 function CreateMapIterator(map, kind) {
3274 if (Type(map) !== 'object') throw TypeError();
3275 if (!('[[MapData]]' in map)) throw TypeError();
3276 if (map['[[MapData]]'] === undefined) throw TypeError();
3277 var iterator = new MapIterator;
3278 set_internal(iterator, '[[Map]]', map);
3279 set_internal(iterator, '[[MapNextIndex]]', 0);
3280 set_internal(iterator, '[[MapIterationKind]]', kind);
3281 return iterator;
3282 }
3283
3284 // 23.1.5.2 The %MapIteratorPrototype% Object
3285 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3286 MapIterator.prototype = $MapIteratorPrototype$;
3287
3288 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3289 define(
3290 $MapIteratorPrototype$, 'next',
3291 function next() {
3292 var o = strict(this);
3293 if (Type(o) !== 'object') throw TypeError();
3294 var m = o['[[Map]]'],
3295 index = o['[[MapNextIndex]]'],
3296 itemKind = o['[[MapIterationKind]]'],
3297 entries = m['[[MapData]]'];
3298 while (index < entries.keys.length) {
3299 var e = {key: entries.keys[index], value: entries.values[index]};
3300 index = index += 1;
3301 set_internal(o, '[[MapNextIndex]]', index);
3302 if (e.key !== empty) {
3303 if (itemKind === 'key') {
3304 return CreateIterResultObject(e.key, false);
3305 } else if (itemKind === 'value') {
3306 return CreateIterResultObject(e.value, false);
3307 } else {
3308 return CreateIterResultObject([e.key, e.value], false);
3309 }
3310 }
3311 }
3312 return CreateIterResultObject(undefined, true);
3313 });
3314
3315 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3316 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3317
3318 // 23.1.5.3 Properties of Map Iterator Instances
3319 }());
3320
3321 // ---------------------------------------
3322 // 23.2 Set Objects
3323 // ---------------------------------------
3324
3325 (function() {
3326 // 23.2.1 The Set Constructor
3327 // 23.2.1.1 Set ( [ iterable ] )
3328
3329 /** @constructor */
3330 function Set(/*iterable*/) {
3331 var set = strict(this);
3332 var iterable = arguments[0];
3333
3334 if (Type(set) !== 'object') throw TypeError();
3335 if ('[[SetData]]' in set) throw TypeError();
3336
3337 if (iterable !== undefined) {
3338 var adder = set['add'];
3339 if (!IsCallable(adder)) throw TypeError();
3340 var iter = GetIterator(ToObject(iterable));
3341 }
3342 set_internal(set, '[[SetData]]', []);
3343 if (iter === undefined) return set;
3344 while (true) {
3345 var next = IteratorStep(iter);
3346 if (next === false)
3347 return set;
3348 var nextValue = IteratorValue(next);
3349 adder.call(set, nextValue);
3350 }
3351
3352 return set;
3353 }
3354
3355 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3356 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3357 (new global.Set([1]).size !== 1))
3358 global.Set = Set;
3359
3360 function SetDataIndexOf(setData, key) {
3361 var i;
3362 if (key === key)
3363 return setData.indexOf(key);
3364 // Slow case for NaN
3365 for (i = 0; i < setData.length; i += 1)
3366 if (SameValueZero(setData[i], key)) return i;
3367 return -1;
3368 }
3369
3370 // 23.2.1.2 new Set ( ...argumentsList )
3371 // 23.2.2 Properties of the Set Constructor
3372
3373 // 23.2.2.1 Set.prototype
3374 var $SetPrototype$ = {};
3375 Set.prototype = $SetPrototype$;
3376
3377 // 23.2.2.2 get Set [ @@species ]
3378 // 23.2.3 Properties of the Set Prototype Object
3379
3380 // 23.2.3.1 Set.prototype.add (value )
3381 define(
3382 Set.prototype, 'add',
3383 function add(value) {
3384 var s = strict(this);
3385 if (Type(s) !== 'object') throw TypeError();
3386 if (!('[[SetData]]' in s)) throw TypeError();
3387 if (s['[[SetData]]'] === undefined) throw TypeError();
3388 if (SameValue(value, -0)) value = 0;
3389 var entries = s['[[SetData]]'];
3390 var i = SetDataIndexOf(entries, value);
3391 if (i < 0) i = s['[[SetData]]'].length;
3392 s['[[SetData]]'][i] = value;
3393
3394 return s;
3395 });
3396
3397 // 23.2.3.2 Set.prototype.clear ()
3398 define(
3399 Set.prototype, 'clear',
3400 function clear() {
3401 var s = strict(this);
3402 if (Type(s) !== 'object') throw TypeError();
3403 if (!('[[SetData]]' in s)) throw TypeError();
3404 if (s['[[SetData]]'] === undefined) throw TypeError();
3405 var entries = s['[[SetData]]'];
3406 entries.length = 0;
3407 return undefined;
3408 });
3409
3410 // 23.2.3.3 Set.prototype.constructor
3411 // 23.2.3.4 Set.prototype.delete ( value )
3412 define(
3413 Set.prototype, 'delete',
3414 function delete_(value) {
3415 var s = strict(this);
3416 if (Type(s) !== 'object') throw TypeError();
3417 if (!('[[SetData]]' in s)) throw TypeError();
3418 if (s['[[SetData]]'] === undefined) throw TypeError();
3419 var entries = s['[[SetData]]'];
3420 var i = SetDataIndexOf(entries, value);
3421 if (i < 0) return false;
3422 entries[i] = empty;
3423 return true;
3424 });
3425
3426 // 23.2.3.5 Set.prototype.entries ( )
3427 define(
3428 Set.prototype, 'entries',
3429 function entries() {
3430 var s = strict(this);
3431 if (Type(s) !== 'object') throw TypeError();
3432 return CreateSetIterator(s, 'key+value');
3433 });
3434
3435 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3436 define(
3437 Set.prototype, 'forEach',
3438 function forEach(callbackfn/*, thisArg*/) {
3439 var thisArg = arguments[1];
3440
3441 var s = strict(this);
3442 if (Type(s) !== 'object') throw TypeError();
3443 if (!('[[SetData]]' in s)) throw TypeError();
3444 if (s['[[SetData]]'] === undefined) throw TypeError();
3445 var entries = s['[[SetData]]'];
3446
3447 if (!IsCallable(callbackfn)) {
3448 throw TypeError('First argument to forEach is not callable.');
3449 }
3450 for (var i = 0; i < entries.length; ++i) {
3451 if (entries[i] !== empty) {
3452 callbackfn.call(thisArg, entries[i], entries[i], s);
3453 }
3454 }
3455 });
3456
3457 // 23.2.3.7 Set.prototype.has ( value )
3458 define(
3459 Set.prototype, 'has',
3460 function has(key) {
3461 var s = strict(this);
3462 if (Type(s) !== 'object') throw TypeError();
3463 if (!('[[SetData]]' in s)) throw TypeError();
3464 if (s['[[SetData]]'] === undefined) throw TypeError();
3465 var entries = s['[[SetData]]'];
3466 return SetDataIndexOf(entries, key) !== -1;
3467 });
3468
3469 // 23.2.3.8 Set.prototype.keys ( )
3470 // See Set.prototype.values
3471
3472 // 23.2.3.9 get Set.prototype.size
3473 Object.defineProperty(
3474 Set.prototype, 'size', {
3475 get: function() {
3476 var s = strict(this);
3477 if (Type(s) !== 'object') throw TypeError();
3478 if (!('[[SetData]]' in s)) throw TypeError();
3479 if (s['[[SetData]]'] === undefined) throw TypeError();
3480 var entries = s['[[SetData]]'];
3481 var count = 0;
3482 for (var i = 0; i < entries.length; ++i) {
3483 if (entries[i] !== empty)
3484 count = count + 1;
3485 }
3486 return count;
3487 }
3488 });
3489
3490 // 23.2.3.10 Set.prototype.values ( )
3491 define(
3492 Set.prototype, 'values',
3493 function values() {
3494 var s = strict(this);
3495 if (Type(s) !== 'object') throw TypeError();
3496 return CreateSetIterator(s, 'value');
3497 });
3498 // NOTE: function name is still 'values':
3499 Set.prototype.keys = Set.prototype.values;
3500
3501 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3502 define(
3503 Set.prototype, $$iterator,
3504 function() {
3505 var s = strict(this);
3506 if (Type(s) !== 'object') throw TypeError();
3507 return CreateSetIterator(s);
3508 });
3509
3510 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3511 define(global.Set.prototype, $$toStringTag, 'Set');
3512
3513 // 23.2.4 Properties of Set Instances
3514 // 23.2.5 Set Iterator Objects
3515 /** @constructor */
3516 function SetIterator() {}
3517
3518 // 23.2.5.1 CreateSetIterator Abstract Operation
3519 function CreateSetIterator(set, kind) {
3520 if (Type(set) !== 'object') throw TypeError();
3521 if (!('[[SetData]]' in set)) throw TypeError();
3522 if (set['[[SetData]]'] === undefined) throw TypeError();
3523 var iterator = new SetIterator;
3524 set_internal(iterator, '[[IteratedSet]]', set);
3525 set_internal(iterator, '[[SetNextIndex]]', 0);
3526 set_internal(iterator, '[[SetIterationKind]]', kind);
3527 return iterator;
3528 }
3529
3530 // 23.2.5.2 The %SetIteratorPrototype% Object
3531 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3532 SetIterator.prototype = $SetIteratorPrototype$;
3533
3534 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3535 define(
3536 $SetIteratorPrototype$, 'next',
3537 function next() {
3538 var o = strict(this);
3539 if (Type(o) !== 'object') throw TypeError();
3540 var s = o['[[IteratedSet]]'],
3541 index = o['[[SetNextIndex]]'],
3542 itemKind = o['[[SetIterationKind]]'],
3543 entries = s['[[SetData]]'];
3544 while (index < entries.length) {
3545 var e = entries[index];
3546 index = index += 1;
3547 set_internal(o, '[[SetNextIndex]]', index);
3548 if (e !== empty) {
3549 if (itemKind === 'key+value')
3550 return CreateIterResultObject([e, e], false);
3551 return CreateIterResultObject(e, false);
3552 }
3553 }
3554 return CreateIterResultObject(undefined, true);
3555 });
3556
3557 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3558 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3559
3560 // 23.2.5.3 Properties of Set Iterator Instances
3561
3562 }());
3563
3564 // ---------------------------------------
3565 // 23.3 WeakMap Objects
3566 // ---------------------------------------
3567
3568 (function() {
3569 // 23.3.1 The WeakMap Constructor
3570 // 23.3.1.1 WeakMap ( [ iterable ] )
3571 /** @constructor */
3572 function WeakMap(/*iterable*/) {
3573 var map = strict(this);
3574 var iterable = arguments[0];
3575
3576 if (Type(map) !== 'object') throw TypeError();
3577 if ('[[WeakMapData]]' in map) throw TypeError();
3578
3579 if (iterable !== undefined) {
3580 var adder = map['set'];
3581 if (!IsCallable(adder)) throw TypeError();
3582 var iter = GetIterator(ToObject(iterable));
3583 }
3584 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3585 if (iter === undefined) return map;
3586 while (true) {
3587 var next = IteratorStep(iter);
3588 if (next === false)
3589 return map;
3590 var nextValue = IteratorValue(next);
3591 if (Type(nextValue) !== 'object') throw TypeError();
3592 var k = nextValue[0];
3593 var v = nextValue[1];
3594 adder.call(map, k, v);
3595 }
3596
3597 return map;
3598 }
3599
3600 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3601 global.WeakMap = WeakMap;
3602
3603 // 23.3.2 Properties of the WeakMap Constructor
3604 // 23.3.2.1 WeakMap.prototype
3605 var $WeakMapPrototype$ = {};
3606 WeakMap.prototype = $WeakMapPrototype$;
3607
3608
3609
3610 // 23.3.2.2 WeakMap[ @@create ] ( )
3611 // 23.3.3 Properties of the WeakMap Prototype Object
3612
3613 // 23.3.3.1 WeakMap.prototype.constructor
3614
3615 // 23.3.3.2 WeakMap.prototype.delete ( key )
3616 define(
3617 WeakMap.prototype, 'delete',
3618 function delete_(key) {
3619 var M = strict(this);
3620 if (Type(M) !== 'object') throw TypeError();
3621 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3622 if (Type(key) !== 'object') throw TypeError('Expected object');
3623 return M['[[WeakMapData]]'].remove(key);
3624 });
3625
3626 // 23.3.3.3 WeakMap.prototype.get ( key )
3627 define(
3628 WeakMap.prototype, 'get',
3629 function get(key, defaultValue) {
3630 var M = strict(this);
3631 if (Type(M) !== 'object') throw TypeError();
3632 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3633 if (Type(key) !== 'object') throw TypeError('Expected object');
3634 return M['[[WeakMapData]]'].get(key, defaultValue);
3635 });
3636
3637 // 23.3.3.4 WeakMap.prototype.has ( key )
3638 define(
3639 WeakMap.prototype, 'has',
3640 function has(key) {
3641 var M = strict(this);
3642 if (Type(M) !== 'object') throw TypeError();
3643 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3644 if (Type(key) !== 'object') throw TypeError('Expected object');
3645 return M['[[WeakMapData]]'].has(key);
3646 });
3647
3648 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3649 define(
3650 WeakMap.prototype, 'set',
3651 function set(key, value) {
3652 var M = strict(this);
3653 if (Type(M) !== 'object') throw TypeError();
3654 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3655 if (Type(key) !== 'object') throw TypeError('Expected object');
3656 M['[[WeakMapData]]'].set(key, value);
3657 return M;
3658 });
3659
3660 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3661 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3662
3663 // 23.3.4 Properties of WeakMap Instances
3664
3665 // Polyfills for incomplete native implementations:
3666 (function() {
3667 var wm = new global.WeakMap();
3668 var orig = global.WeakMap.prototype.set;
3669 define(global.WeakMap.prototype, 'set', function set() {
3670 orig.apply(this, arguments);
3671 return this;
3672 }, wm.set({}, 0) !== wm);
3673 }());
3674 }());
3675
3676 // ---------------------------------------
3677 // 23.4 WeakSet Objects
3678 // ---------------------------------------
3679
3680 (function() {
3681 // 23.4.1 The WeakSet Constructor
3682 // 23.4.1.1 WeakSet ( [ iterable ] )
3683 /** @constructor */
3684 function WeakSet(/*iterable*/) {
3685 var set = strict(this);
3686 var iterable = arguments[0];
3687
3688 if (Type(set) !== 'object') throw TypeError();
3689 if ('[[WeakSetData]]' in set) throw TypeError();
3690
3691 if (iterable !== undefined) {
3692 var adder = set['add'];
3693 if (!IsCallable(adder)) throw TypeError();
3694 var iter = GetIterator(ToObject(iterable));
3695 }
3696 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3697 if (iter === undefined) return set;
3698 while (true) {
3699 var next = IteratorStep(iter);
3700 if (next === false)
3701 return set;
3702 var nextValue = IteratorValue(next);
3703 adder.call(set, nextValue);
3704 }
3705
3706 return set;
3707 }
3708
3709 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3710 global.WeakSet = WeakSet;
3711
3712 // 23.4.2 Properties of the WeakSet Constructor
3713 // 23.4.2.1 WeakSet.prototype
3714 var $WeakSetPrototype$ = {};
3715 WeakSet.prototype = $WeakSetPrototype$;
3716
3717 // 23.4.3 Properties of the WeakSet Prototype Object
3718 // 23.4.3.1 WeakSet.prototype.add (value )
3719 define(
3720 WeakSet.prototype, 'add',
3721 function add(value) {
3722 var S = strict(this);
3723 if (Type(S) !== 'object') throw TypeError();
3724 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3725 if (Type(value) !== 'object') throw TypeError('Expected object');
3726 S['[[WeakSetData]]'].set(value, true);
3727 return S;
3728 });
3729
3730 // 23.4.3.2 WeakSet.prototype.constructor
3731 // 23.4.3.3 WeakSet.prototype.delete ( value )
3732 define(
3733 WeakSet.prototype, 'delete',
3734 function delete_(value) {
3735 var S = strict(this);
3736 if (Type(S) !== 'object') throw TypeError();
3737 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3738 if (Type(value) !== 'object') throw TypeError('Expected object');
3739 return S['[[WeakSetData]]'].remove(value);
3740 });
3741
3742 // 23.4.3.4 WeakSet.prototype.has ( value )
3743 define(
3744 WeakSet.prototype, 'has',
3745 function has(key) {
3746 var S = strict(this);
3747 if (Type(S) !== 'object') throw TypeError();
3748 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3749 if (Type(key) !== 'object') throw TypeError('Expected object');
3750 return S['[[WeakSetData]]'].has(key);
3751 });
3752
3753 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3754 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3755
3756 // 23.4.4 Properties of WeakSet Instances
3757
3758 // Polyfills for incomplete native implementations:
3759 (function() {
3760 var ws = new global.WeakSet();
3761 var orig = global.WeakSet.prototype.add;
3762 define(global.WeakSet.prototype, 'add', function add() {
3763 orig.apply(this, arguments);
3764 return this;
3765 }, ws.add({}) !== ws);
3766 }());
3767 }());
3768
3769 // ---------------------------------------
3770 // 24 Structured Data
3771 // ---------------------------------------
3772
3773 // ---------------------------------------
3774 // 24.1 ArrayBuffer Objects
3775 // ---------------------------------------
3776
3777 // See typedarray.js for TypedArray polyfill
3778
3779 (function() {
3780 if (!('ArrayBuffer' in global))
3781 return;
3782
3783 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3784 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3785 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3786 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3787 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3788 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3789 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3790 // 24.1.2 The ArrayBuffer Constructor
3791 // 24.1.2.1 ArrayBuffer( length )
3792 // 24.1.3 Properties of the ArrayBuffer Constructor
3793
3794 // 24.1.3.1 ArrayBuffer.isView ( arg )
3795 define(
3796 ArrayBuffer, 'isView',
3797 function isView(arg) {
3798 if (Type(arg) !== 'object') return false;
3799 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3800 return false;
3801 });
3802
3803 // 24.1.3.2 ArrayBuffer.prototype
3804 // 24.1.3.3 get ArrayBuffer [ @@species ]
3805 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3806 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3807 // 24.1.4.2 ArrayBuffer.prototype.constructor
3808 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3809
3810 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3811 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3812
3813 // 24.1.5 Properties of the ArrayBuffer Instances
3814 }());
3815
3816 // ---------------------------------------
3817 // 24.2 DataView Objects
3818 // ---------------------------------------
3819
3820 // See typedarray.js for TypedArray polyfill
3821
3822 (function() {
3823 if (!('DataView' in global))
3824 return;
3825
3826 // 24.2.1 Abstract Operations For DataView Objects
3827 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3828 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3829 // 24.2.2 The DataView Constructor
3830 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3831 // 24.2.3 Properties of the DataView Constructor
3832 // 24.2.3.1 DataView.prototype
3833 // 24.2.4 Properties of the DataView Prototype Object
3834 // 24.2.4.1 get DataView.prototype.buffer
3835 // 24.2.4.2 get DataView.prototype.byteLength
3836 // 24.2.4.3 get DataView.prototype.byteOffset
3837 // 24.2.4.4 DataView.prototype.constructor
3838 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3839 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3840 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3841 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3842 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3843 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3844 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3845 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3846 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3847 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3848 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3849 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3850 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3851 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3852 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3853 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3854
3855 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3856 define(DataView.prototype, $$toStringTag, 'DataView');
3857
3858 // 24.2.5 Properties of DataView Instances
3859 }());
3860
3861 // ---------------------------------------
3862 // 24.3 The JSON Object
3863 // ---------------------------------------
3864
3865 // 24.3.1 JSON.parse ( text [ , reviver ] )
3866 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3867 // 24.3.3 JSON [ @@toStringTag ]
3868 define(JSON, $$toStringTag, 'JSON');
3869
3870 // ---------------------------------------
3871 // 25.1 Iteration
3872 // ---------------------------------------
3873
3874 // 25.1.1 Common Iteration Interfaces
3875 // 25.1.1.1 The Iterable Interface
3876 // 25.1.1.2 The Iterator Interface
3877 // 25.1.1.3 The IteratorResult Interface
3878
3879 // 25.1.2 The %IteratorPrototype% Object
3880 // Defined earlier, so other prototypes can reference it.
3881 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3882 define($IteratorPrototype$, $$iterator, function() {
3883 return this;
3884 });
3885
3886
3887 // ---------------------------------------
3888 // 25.4 Promise Objects
3889 // ---------------------------------------
3890
3891 (function() {
3892 // 25.4 Promise Objects
3893
3894 // 25.4.1 Promise Abstract Operations
3895
3896 // 25.4.1.1 PromiseCapability Records
3897 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3898
3899 function IfAbruptRejectPromise(value, capability) {
3900 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3901 return capability['[[Promise]]'];
3902 }
3903
3904 // 25.4.1.2 PromiseReaction Records
3905
3906 // 25.4.1.3 CreateResolvingFunctions ( promise )
3907
3908 function CreateResolvingFunctions(promise) {
3909 var alreadyResolved = {'[[value]]': false};
3910 var resolve = PromiseResolveFunction();
3911 set_internal(resolve, '[[Promise]]', promise);
3912 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3913 var reject = PromiseRejectFunction();
3914 set_internal(reject, '[[Promise]]', promise);
3915 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3916 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3917 }
3918
3919 // 25.4.1.3.1 Promise Reject Functions
3920
3921 function PromiseRejectFunction() {
3922 var F = function(reason) {
3923 console.assert(Type(F['[[Promise]]']) === 'object');
3924 var promise = F['[[Promise]]'];
3925 var alreadyResolved = F['[[AlreadyResolved]]'];
3926 if (alreadyResolved['[[value]]']) return undefined;
3927 set_internal(alreadyResolved, '[[value]]', true);
3928 return RejectPromise(promise, reason);
3929 };
3930 return F;
3931 }
3932
3933 // 25.4.1.3.2 Promise Resolve Functions
3934
3935 function PromiseResolveFunction() {
3936 var F = function(resolution) {
3937 console.assert(Type(F['[[Promise]]']) === 'object');
3938 var promise = F['[[Promise]]'];
3939 var alreadyResolved = F['[[AlreadyResolved]]'];
3940 if (alreadyResolved['[[value]]']) return undefined;
3941 set_internal(alreadyResolved, '[[value]]', true);
3942
3943 if (SameValue(resolution, promise)) {
3944 var selfResolutionError = TypeError();
3945 return RejectPromise(promise, selfResolutionError);
3946 }
3947 if (Type(resolution) !== 'object')
3948 return FulfillPromise(promise, resolution);
3949 try {
3950 var then = resolution['then'];
3951 } catch(then) {
3952 return RejectPromise(promise, then);
3953 }
3954 if (!IsCallable(then))
3955 return FulfillPromise(promise, resolution);
3956 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3957 return undefined;
3958 };
3959 return F;
3960 }
3961
3962 // 25.4.1.4 FulfillPromise ( promise, value )
3963
3964 function FulfillPromise(promise, value) {
3965 console.assert(promise['[[PromiseState]]'] === 'pending');
3966 var reactions = promise['[[PromiseFulfillReactions]]'];
3967 set_internal(promise, '[[PromiseResult]]', value);
3968 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3969 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3970 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3971 return TriggerPromiseReactions(reactions, value);
3972 }
3973
3974 // 25.4.1.5 NewPromiseCapability ( C )
3975
3976 function NewPromiseCapability(c) {
3977 // To keep Promise hermetic, this doesn't look much like the spec.
3978 return CreatePromiseCapabilityRecord(undefined, c);
3979 }
3980
3981 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3982
3983 function CreatePromiseCapabilityRecord(promise, constructor) {
3984 // To keep Promise hermetic, this doesn't look much like the spec.
3985 console.assert(IsConstructor(constructor));
3986 var promiseCapability = {};
3987 set_internal(promiseCapability, '[[Promise]]', promise);
3988 set_internal(promiseCapability, '[[Resolve]]', undefined);
3989 set_internal(promiseCapability, '[[Reject]]', undefined);
3990 var executor = GetCapabilitiesExecutor();
3991 set_internal(executor, '[[Capability]]', promiseCapability);
3992
3993 // NOTE: Differs from spec; object is constructed here
3994 var constructorResult = promise = new constructor(executor);
3995 set_internal(promiseCapability, '[[Promise]]', promise);
3996
3997 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3998 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3999 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4000 return promiseCapability;
4001 }
4002
4003 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4004
4005 function GetCapabilitiesExecutor() {
4006 var F = function(resolve, reject) {
4007 console.assert(F['[[Capability]]']);
4008 var promiseCapability = F['[[Capability]]'];
4009 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4010 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4011 set_internal(promiseCapability, '[[Resolve]]', resolve);
4012 set_internal(promiseCapability, '[[Reject]]', reject);
4013 return undefined;
4014 };
4015 return F;
4016 }
4017
4018 // 25.4.1.6 IsPromise ( x )
4019
4020 function IsPromise(x) {
4021 if (Type(x) !== 'object') return false;
4022 if (!('[[PromiseState]]' in x)) return false;
4023 if (x['[[PromiseState]]'] === undefined) return false;
4024 return true;
4025 }
4026
4027 // 25.4.1.7 RejectPromise ( promise, reason )
4028
4029 function RejectPromise(promise, reason) {
4030 console.assert(promise['[[PromiseState]]'] === 'pending');
4031 var reactions = promise['[[PromiseRejectReactions]]'];
4032 set_internal(promise, '[[PromiseResult]]', reason);
4033 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4034 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4035 set_internal(promise, '[[PromiseState]]', 'rejected');
4036 return TriggerPromiseReactions(reactions, reason);
4037 }
4038
4039 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4040
4041 function TriggerPromiseReactions(reactions, argument) {
4042 for (var i = 0, len = reactions.length; i < len; ++i)
4043 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4044 return undefined;
4045 }
4046
4047 // 25.4.2 Promise Jobs
4048
4049 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4050
4051 function PromiseReactionJob(reaction, argument) {
4052 var promiseCapability = reaction['[[Capabilities]]'];
4053 var handler = reaction['[[Handler]]'];
4054 var handlerResult, status;
4055 try {
4056 if (handler === 'Identity') handlerResult = argument;
4057 else if (handler === 'Thrower') throw argument;
4058 else handlerResult = handler.call(undefined, argument);
4059 } catch (handlerResult) {
4060 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4061 NextJob(status); return;
4062 }
4063 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4064 NextJob(status);
4065 }
4066
4067 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4068
4069 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4070 // SPEC BUG: promise vs. promiseToResolve
4071 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4072 try {
4073 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4074 resolvingFunctions['[[Reject]]']);
4075 } catch (thenCallResult) {
4076 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4077 NextJob(status); return;
4078 }
4079 NextJob(thenCallResult);
4080 }
4081
4082 // 25.4.3 The Promise Constructor
4083
4084 // 25.4.3.1 Promise ( executor )
4085
4086 function Promise(executor) {
4087 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4088 Object.defineProperty(this, '[[PromiseState]]', config);
4089 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4090 Object.defineProperty(this, '[[PromiseResult]]', config);
4091 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4092 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4093
4094 var promise = this;
4095 if (Type(promise) !== 'object') throw new TypeError();
4096 if (!('[[PromiseState]]' in promise)) throw TypeError();
4097 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4098 if (!IsCallable(executor)) throw TypeError();
4099
4100 set_internal(promise, '[[PromiseConstructor]]', Promise);
4101
4102 return InitializePromise(promise, executor);
4103 }
4104
4105 // 25.4.3.1.1 InitializePromise ( promise, executor )
4106
4107 function InitializePromise(promise, executor) {
4108 console.assert('[[PromiseState]]' in promise);
4109 console.assert(IsCallable(executor));
4110 set_internal(promise, '[[PromiseState]]', 'pending');
4111 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4112 set_internal(promise, '[[PromiseRejectReactions]]', []);
4113 var resolvingFunctions = CreateResolvingFunctions(promise);
4114 try {
4115 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4116 resolvingFunctions['[[Reject]]']);
4117 } catch (completion) {
4118 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4119 }
4120 return promise;
4121 }
4122
4123 // 25.4.4 Properties of the Promise Constructor
4124 // 25.4.4.1 Promise.all ( iterable )
4125
4126 define(Promise, 'all', function all(iterable) {
4127 var c = strict(this);
4128 var promiseCapability = NewPromiseCapability(c);
4129 try {
4130 var iterator = GetIterator(iterable);
4131 } catch (value) {
4132 promiseCapability['[[Reject]]'].call(undefined, value);
4133 return promiseCapability['[[Promise]]'];
4134 }
4135 var values = [];
4136 var remainingElementsCount = { value: 1 };
4137 var index = 0;
4138 while (true) {
4139 try {
4140 var next = IteratorStep(iterator);
4141 } catch (value) {
4142 promiseCapability['[[Reject]]'].call(undefined, value);
4143 return promiseCapability['[[Promise]]'];
4144 }
4145 if (!next) {
4146 remainingElementsCount.value -= 1;
4147 if (remainingElementsCount.value === 0) {
4148 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4149
4150
4151 }
4152 return promiseCapability['[[Promise]]'];
4153 }
4154 try {
4155 var nextValue = IteratorValue(next);
4156 } catch (value) {
4157 promiseCapability['[[Reject]]'].call(undefined, value);
4158 return promiseCapability['[[Promise]]'];
4159 }
4160 try {
4161 var nextPromise = c.resolve(nextValue);
4162 } catch (value) {
4163 promiseCapability['[[Reject]]'].call(undefined, value);
4164 return promiseCapability['[[Promise]]'];
4165 }
4166 var resolveElement = PromiseAllResolveElementFunction();
4167 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4168 set_internal(resolveElement, '[[Index]]', index);
4169 set_internal(resolveElement, '[[Values]]', values);
4170 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4171 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4172 remainingElementsCount.value += 1;
4173 try {
4174 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4175 } catch (value) {
4176 promiseCapability['[[Reject]]'].call(undefined, value);
4177 return promiseCapability['[[Promise]]'];
4178 }
4179 index += 1;
4180 }
4181 });
4182
4183 // 25.4.4.1.1 Promise.all Resolve Element Functions
4184
4185 function PromiseAllResolveElementFunction() {
4186 var F = function(x) {
4187 var alreadyCalled = F['[[AlreadyCalled]]'];
4188 if (alreadyCalled.value) return undefined;
4189 alreadyCalled.value = true;
4190 var index = F['[[Index]]'];
4191 var values = F['[[Values]]'];
4192 var promiseCapability = F['[[Capabilities]]'];
4193 var remainingElementsCount = F['[[RemainingElements]]'];
4194 try {
4195 values[index] = x;
4196 } catch (result) {
4197 promiseCapability['[[Reject]]'].call(undefined, result);
4198 return promiseCapability['[[Promise]]'];
4199 }
4200 remainingElementsCount.value -= 1;
4201 if (remainingElementsCount.value === 0)
4202 return promiseCapability['[[Resolve]]'].call(undefined, values);
4203 return undefined;
4204 };
4205 return F;
4206 }
4207
4208 // 25.4.4.2 Promise.prototype
4209
4210 Promise.prototype = {};
4211
4212 // 25.4.4.3 Promise.race ( iterable )
4213
4214 define(Promise, 'race', function race(iterable) {
4215 var c = strict(this);
4216 var promiseCapability = NewPromiseCapability(c);
4217 try {
4218 var iterator = GetIterator(iterable);
4219 } catch (value) {
4220 promiseCapability['[[Reject]]'].call(undefined, value);
4221 return promiseCapability['[[Promise]]'];
4222 }
4223 while (true) {
4224 try {
4225 var next = IteratorStep(iterator);
4226 } catch (value) {
4227 promiseCapability['[[Reject]]'].call(undefined, value);
4228 return promiseCapability['[[Promise]]'];
4229 }
4230 if (!next) return promiseCapability['[[Promise]]'];
4231 try {
4232 var nextValue = IteratorValue(next);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 try {
4238 var nextPromise = c.resolve(nextValue);
4239 } catch (value) {
4240 promiseCapability['[[Reject]]'].call(undefined, value);
4241 return promiseCapability['[[Promise]]'];
4242 }
4243 try {
4244 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4245 } catch (value) {
4246 promiseCapability['[[Reject]]'].call(undefined, value);
4247 return promiseCapability['[[Promise]]'];
4248 }
4249 }
4250 });
4251
4252 // 25.4.4.4 Promise.reject ( r )
4253
4254 define(Promise, 'reject', function reject(r) {
4255 var c = strict(this);
4256 var promiseCapability = NewPromiseCapability(c);
4257 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4258 return promiseCapability['[[Promise]]'];
4259 });
4260
4261 // 25.4.4.5 Promise.resolve ( x )
4262
4263 define(Promise, 'resolve', function resolve(x) {
4264 var c = strict(this);
4265 if (IsPromise(x)) {
4266 var constructor = x['[[PromiseConstructor]]'];
4267 if (SameValue(constructor, c)) return x;
4268 }
4269 var promiseCapability = NewPromiseCapability(c);
4270 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4271 return promiseCapability['[[Promise]]'];
4272 });
4273
4274 // 25.4.4.6 Promise [ @@create ] ( )
4275 // 25.4.4.6.1 AllocatePromise ( constructor )
4276 // 25.4.5 Properties of the Promise Prototype Object
4277 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4278
4279 define(Promise.prototype, 'catch', function catch_(onRejected) {
4280 var promise = this;
4281 return promise.then(undefined, onRejected);
4282 });
4283
4284 // 25.4.5.2 Promise.prototype.constructor
4285
4286 Promise.prototype.constructor = Promise;
4287
4288 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4289
4290 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4291 var promise = this;
4292 if (!IsPromise(promise)) throw TypeError();
4293 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4294 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4295 var c = promise.constructor;
4296 var promiseCapability = NewPromiseCapability(c);
4297 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4298 '[[Handler]]': onFulfilled };
4299 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4300 '[[Handler]]': onRejected };
4301 if (promise['[[PromiseState]]'] === 'pending') {
4302 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4303 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4304 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4305 var value = promise['[[PromiseResult]]'];
4306 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4307 } else if (promise['[[PromiseState]]'] === 'rejected') {
4308 var reason = promise['[[PromiseResult]]'];
4309 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4310 }
4311 return promiseCapability['[[Promise]]'];
4312 });
4313
4314 // 25.4.6 Properties of Promise Instances
4315
4316 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4317 global.Promise = Promise;
4318
4319 // Patch early Promise.cast vs. Promise.resolve implementations
4320 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4321 }());
4322
4323 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4324 define(Promise.prototype, $$toStringTag, 'Promise');
4325
4326 // ---------------------------------------
4327 // 26 Reflection
4328 // ---------------------------------------
4329
4330 (function() {
4331 // 26.1 The Reflect Object
4332 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4333 global.Reflect = {};
4334
4335 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4336 define(
4337 Reflect, 'apply',
4338 function apply(target, thisArgument, argumentsList) {
4339 if (!IsCallable(target)) throw TypeError();
4340 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4341 });
4342
4343 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4344 define(
4345 Reflect, 'construct',
4346 function construct(target, argumentsList) {
4347 return __cons(target, argumentsList);
4348 });
4349
4350 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4351 define(
4352 Reflect, 'defineProperty',
4353 function defineProperty(target, propertyKey, attributes) {
4354 try {
4355 Object.defineProperty(target, propertyKey, attributes);
4356 return true;
4357 } catch (_) {
4358 return false;
4359 }
4360 });
4361
4362 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4363 define(
4364 Reflect, 'deleteProperty',
4365 function deleteProperty(target,name) {
4366 try {
4367 delete target[name];
4368 return !HasOwnProperty(target, name);
4369 } catch (_) {
4370 return false;
4371 }
4372 });
4373
4374 // 26.1.5 Reflect.enumerate ( target )
4375 define(
4376 Reflect, 'enumerate',
4377 function enumerate(target) {
4378 target = ToObject(target);
4379 var iterator = Enumerate(target);
4380 return iterator;
4381 });
4382
4383 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4384 define(
4385 Reflect, 'get',
4386 function get(target, name, receiver) {
4387 target = ToObject(target);
4388 name = String(name);
4389 receiver = (receiver === undefined) ? target : ToObject(receiver);
4390 var desc = getPropertyDescriptor(target, name);
4391 if (desc && 'get' in desc)
4392 return Function.prototype.call.call(desc['get'], receiver);
4393 return target[name];
4394 });
4395
4396 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4397 define(
4398 Reflect, 'getOwnPropertyDescriptor',
4399 Object.getOwnPropertyDescriptor);
4400
4401 // 26.1.8 Reflect.getPrototypeOf ( target )
4402 define(
4403 Reflect, 'getPrototypeOf',
4404 Object.getPrototypeOf);
4405
4406 // 26.1.9 Reflect.has ( target, propertyKey )
4407 define(
4408 Reflect, 'has',
4409 function has(target,name) {
4410 return String(name) in ToObject(target);
4411 });
4412
4413 // 26.1.10 Reflect.isExtensible (target)
4414 define(
4415 Reflect, 'isExtensible',
4416 Object.isExtensible);
4417
4418 // 26.1.11 Reflect.ownKeys ( target )
4419 define(
4420 Reflect, 'ownKeys',
4421 function ownKeys(target) {
4422 var obj = ToObject(target);
4423 return Object.getOwnPropertyNames(obj);
4424 });
4425
4426 // 26.1.12 Reflect.preventExtensions ( target )
4427 define(
4428 Reflect, 'preventExtensions',
4429 function preventExtensions(target) {
4430 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4431 });
4432
4433 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4434 define(
4435 Reflect, 'set',
4436 function set(target, name, value, receiver) {
4437 target = ToObject(target);
4438 name = String(name);
4439 receiver = (receiver === undefined) ? target : ToObject(receiver);
4440 var desc = getPropertyDescriptor(target, name);
4441 try {
4442 if (desc && 'set' in desc)
4443 Function.prototype.call.call(desc['set'], receiver, value);
4444 else
4445 target[name] = value;
4446 return true;
4447 } catch (_) {
4448 return false;
4449 }
4450 });
4451
4452 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4453 define(
4454 Reflect, 'setPrototypeOf',
4455 function setPrototypeOf(target, proto) {
4456 try {
4457 target.__proto__ = proto;
4458 return Reflect.getPrototypeOf(target) === proto;
4459 } catch(_) {
4460 return false;
4461 }
4462 });
4463
4464 }());
4465
4466 // ---------------------------------------
4467 // 26.2 Proxy Objects
4468 // ---------------------------------------
4469
4470 // Not polyfillable.
4471
4472}(self));
4473
4474// This helper is defined outside the main scope so that the use of
4475// 'eval' does not taint the scope for minifiers.
4476function __cons(t, a) {
4477 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4478}
6e0f24b1 4479</script>
8a1f452d 4480 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
4481'use strict'
4482
4483exports.byteLength = byteLength
4484exports.toByteArray = toByteArray
4485exports.fromByteArray = fromByteArray
4486
4487var lookup = []
4488var revLookup = []
4489var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4490
4491var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4492for (var i = 0, len = code.length; i < len; ++i) {
4493 lookup[i] = code[i]
4494 revLookup[code.charCodeAt(i)] = i
4495}
4496
4497revLookup['-'.charCodeAt(0)] = 62
4498revLookup['_'.charCodeAt(0)] = 63
4499
4500function placeHoldersCount (b64) {
4501 var len = b64.length
4502 if (len % 4 > 0) {
4503 throw new Error('Invalid string. Length must be a multiple of 4')
4504 }
4505
4506 // the number of equal signs (place holders)
4507 // if there are two placeholders, than the two characters before it
4508 // represent one byte
4509 // if there is only one, then the three characters before it represent 2 bytes
4510 // this is just a cheap hack to not do indexOf twice
4511 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4512}
4513
4514function byteLength (b64) {
4515 // base64 is 4/3 + up to two characters of the original data
4516 return b64.length * 3 / 4 - placeHoldersCount(b64)
4517}
4518
4519function toByteArray (b64) {
4520 var i, j, l, tmp, placeHolders, arr
4521 var len = b64.length
4522 placeHolders = placeHoldersCount(b64)
4523
4524 arr = new Arr(len * 3 / 4 - placeHolders)
4525
4526 // if there are placeholders, only get up to the last complete 4 chars
4527 l = placeHolders > 0 ? len - 4 : len
4528
4529 var L = 0
4530
4531 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4532 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4533 arr[L++] = (tmp >> 16) & 0xFF
4534 arr[L++] = (tmp >> 8) & 0xFF
4535 arr[L++] = tmp & 0xFF
4536 }
4537
4538 if (placeHolders === 2) {
4539 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4540 arr[L++] = tmp & 0xFF
4541 } else if (placeHolders === 1) {
4542 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4543 arr[L++] = (tmp >> 8) & 0xFF
4544 arr[L++] = tmp & 0xFF
4545 }
4546
4547 return arr
4548}
4549
4550function tripletToBase64 (num) {
4551 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4552}
4553
4554function encodeChunk (uint8, start, end) {
4555 var tmp
4556 var output = []
4557 for (var i = start; i < end; i += 3) {
4558 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4559 output.push(tripletToBase64(tmp))
4560 }
4561 return output.join('')
4562}
4563
4564function fromByteArray (uint8) {
4565 var tmp
4566 var len = uint8.length
4567 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4568 var output = ''
4569 var parts = []
4570 var maxChunkLength = 16383 // must be multiple of 3
4571
4572 // go through the array every three bytes, we'll deal with trailing stuff later
4573 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4574 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4575 }
4576
4577 // pad the end with zeros, but make sure to not forget the extra bytes
4578 if (extraBytes === 1) {
4579 tmp = uint8[len - 1]
4580 output += lookup[tmp >> 2]
4581 output += lookup[(tmp << 4) & 0x3F]
4582 output += '=='
4583 } else if (extraBytes === 2) {
4584 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4585 output += lookup[tmp >> 10]
4586 output += lookup[(tmp >> 4) & 0x3F]
4587 output += lookup[(tmp << 2) & 0x3F]
4588 output += '='
4589 }
4590
4591 parts.push(output)
4592
4593 return parts.join('')
4594}
4595
4596},{}],2:[function(require,module,exports){
4597/*!
4598 * The buffer module from node.js, for the browser.
4599 *
4600 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4601 * @license MIT
4602 */
4603/* eslint-disable no-proto */
4604
4605'use strict'
4606
4607var base64 = require('base64-js')
4608var ieee754 = require('ieee754')
4609
4610exports.Buffer = Buffer
4611exports.SlowBuffer = SlowBuffer
4612exports.INSPECT_MAX_BYTES = 50
4613
4614var K_MAX_LENGTH = 0x7fffffff
4615exports.kMaxLength = K_MAX_LENGTH
4616
4617/**
4618 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4619 * === true Use Uint8Array implementation (fastest)
4620 * === false Print warning and recommend using `buffer` v4.x which has an Object
4621 * implementation (most compatible, even IE6)
4622 *
4623 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4624 * Opera 11.6+, iOS 4.2+.
4625 *
4626 * We report that the browser does not support typed arrays if the are not subclassable
4627 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4628 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4629 * for __proto__ and has a buggy typed array implementation.
4630 */
4631Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4632
4633if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4634 typeof console.error === 'function') {
4635 console.error(
4636 'This browser lacks typed array (Uint8Array) support which is required by ' +
4637 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4638 )
4639}
4640
4641function typedArraySupport () {
4642 // Can typed array instances can be augmented?
4643 try {
4644 var arr = new Uint8Array(1)
4645 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4646 return arr.foo() === 42
4647 } catch (e) {
4648 return false
4649 }
4650}
4651
4652function createBuffer (length) {
4653 if (length > K_MAX_LENGTH) {
4654 throw new RangeError('Invalid typed array length')
4655 }
4656 // Return an augmented `Uint8Array` instance
4657 var buf = new Uint8Array(length)
4658 buf.__proto__ = Buffer.prototype
4659 return buf
4660}
4661
4662/**
4663 * The Buffer constructor returns instances of `Uint8Array` that have their
4664 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4665 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4666 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4667 * returns a single octet.
4668 *
4669 * The `Uint8Array` prototype remains unmodified.
4670 */
4671
4672function Buffer (arg, encodingOrOffset, length) {
4673 // Common case.
4674 if (typeof arg === 'number') {
4675 if (typeof encodingOrOffset === 'string') {
4676 throw new Error(
4677 'If encoding is specified then the first argument must be a string'
4678 )
4679 }
4680 return allocUnsafe(arg)
4681 }
4682 return from(arg, encodingOrOffset, length)
4683}
4684
4685// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4686if (typeof Symbol !== 'undefined' && Symbol.species &&
4687 Buffer[Symbol.species] === Buffer) {
4688 Object.defineProperty(Buffer, Symbol.species, {
4689 value: null,
4690 configurable: true,
4691 enumerable: false,
4692 writable: false
4693 })
4694}
4695
4696Buffer.poolSize = 8192 // not used by this implementation
4697
4698function from (value, encodingOrOffset, length) {
4699 if (typeof value === 'number') {
4700 throw new TypeError('"value" argument must not be a number')
4701 }
4702
4703 if (value instanceof ArrayBuffer) {
4704 return fromArrayBuffer(value, encodingOrOffset, length)
4705 }
4706
4707 if (typeof value === 'string') {
4708 return fromString(value, encodingOrOffset)
4709 }
4710
4711 return fromObject(value)
4712}
4713
4714/**
4715 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4716 * if value is a number.
4717 * Buffer.from(str[, encoding])
4718 * Buffer.from(array)
4719 * Buffer.from(buffer)
4720 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4721 **/
4722Buffer.from = function (value, encodingOrOffset, length) {
4723 return from(value, encodingOrOffset, length)
4724}
4725
4726// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4727// https://github.com/feross/buffer/pull/148
4728Buffer.prototype.__proto__ = Uint8Array.prototype
4729Buffer.__proto__ = Uint8Array
4730
4731function assertSize (size) {
4732 if (typeof size !== 'number') {
4733 throw new TypeError('"size" argument must be a number')
4734 } else if (size < 0) {
4735 throw new RangeError('"size" argument must not be negative')
4736 }
4737}
4738
4739function alloc (size, fill, encoding) {
4740 assertSize(size)
4741 if (size <= 0) {
4742 return createBuffer(size)
4743 }
4744 if (fill !== undefined) {
4745 // Only pay attention to encoding if it's a string. This
4746 // prevents accidentally sending in a number that would
4747 // be interpretted as a start offset.
4748 return typeof encoding === 'string'
4749 ? createBuffer(size).fill(fill, encoding)
4750 : createBuffer(size).fill(fill)
4751 }
4752 return createBuffer(size)
4753}
4754
4755/**
4756 * Creates a new filled Buffer instance.
4757 * alloc(size[, fill[, encoding]])
4758 **/
4759Buffer.alloc = function (size, fill, encoding) {
4760 return alloc(size, fill, encoding)
4761}
4762
4763function allocUnsafe (size) {
4764 assertSize(size)
4765 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4766}
4767
4768/**
4769 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4770 * */
4771Buffer.allocUnsafe = function (size) {
4772 return allocUnsafe(size)
4773}
4774/**
4775 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4776 */
4777Buffer.allocUnsafeSlow = function (size) {
4778 return allocUnsafe(size)
4779}
4780
4781function fromString (string, encoding) {
4782 if (typeof encoding !== 'string' || encoding === '') {
4783 encoding = 'utf8'
4784 }
4785
4786 if (!Buffer.isEncoding(encoding)) {
4787 throw new TypeError('"encoding" must be a valid string encoding')
4788 }
4789
4790 var length = byteLength(string, encoding) | 0
4791 var buf = createBuffer(length)
4792
4793 var actual = buf.write(string, encoding)
4794
4795 if (actual !== length) {
4796 // Writing a hex string, for example, that contains invalid characters will
4797 // cause everything after the first invalid character to be ignored. (e.g.
4798 // 'abxxcd' will be treated as 'ab')
4799 buf = buf.slice(0, actual)
4800 }
4801
4802 return buf
4803}
4804
4805function fromArrayLike (array) {
4806 var length = array.length < 0 ? 0 : checked(array.length) | 0
4807 var buf = createBuffer(length)
4808 for (var i = 0; i < length; i += 1) {
4809 buf[i] = array[i] & 255
4810 }
4811 return buf
4812}
4813
4814function fromArrayBuffer (array, byteOffset, length) {
4815 if (byteOffset < 0 || array.byteLength < byteOffset) {
4816 throw new RangeError('\'offset\' is out of bounds')
4817 }
4818
4819 if (array.byteLength < byteOffset + (length || 0)) {
4820 throw new RangeError('\'length\' is out of bounds')
4821 }
4822
4823 var buf
4824 if (byteOffset === undefined && length === undefined) {
4825 buf = new Uint8Array(array)
4826 } else if (length === undefined) {
4827 buf = new Uint8Array(array, byteOffset)
4828 } else {
4829 buf = new Uint8Array(array, byteOffset, length)
4830 }
4831
4832 // Return an augmented `Uint8Array` instance
4833 buf.__proto__ = Buffer.prototype
4834 return buf
4835}
4836
4837function fromObject (obj) {
4838 if (Buffer.isBuffer(obj)) {
4839 var len = checked(obj.length) | 0
4840 var buf = createBuffer(len)
4841
4842 if (buf.length === 0) {
4843 return buf
4844 }
4845
4846 obj.copy(buf, 0, 0, len)
4847 return buf
4848 }
4849
4850 if (obj) {
4851 if (isArrayBufferView(obj) || 'length' in obj) {
4852 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4853 return createBuffer(0)
4854 }
4855 return fromArrayLike(obj)
4856 }
4857
4858 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4859 return fromArrayLike(obj.data)
4860 }
4861 }
4862
4863 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4864}
4865
4866function checked (length) {
4867 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4868 // length is NaN (which is otherwise coerced to zero.)
4869 if (length >= K_MAX_LENGTH) {
4870 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4871 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4872 }
4873 return length | 0
4874}
4875
4876function SlowBuffer (length) {
4877 if (+length != length) { // eslint-disable-line eqeqeq
4878 length = 0
4879 }
4880 return Buffer.alloc(+length)
4881}
4882
4883Buffer.isBuffer = function isBuffer (b) {
4884 return b != null && b._isBuffer === true
4885}
4886
4887Buffer.compare = function compare (a, b) {
4888 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4889 throw new TypeError('Arguments must be Buffers')
4890 }
4891
4892 if (a === b) return 0
4893
4894 var x = a.length
4895 var y = b.length
4896
4897 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4898 if (a[i] !== b[i]) {
4899 x = a[i]
4900 y = b[i]
4901 break
4902 }
4903 }
4904
4905 if (x < y) return -1
4906 if (y < x) return 1
4907 return 0
4908}
4909
4910Buffer.isEncoding = function isEncoding (encoding) {
4911 switch (String(encoding).toLowerCase()) {
4912 case 'hex':
4913 case 'utf8':
4914 case 'utf-8':
4915 case 'ascii':
4916 case 'latin1':
4917 case 'binary':
4918 case 'base64':
4919 case 'ucs2':
4920 case 'ucs-2':
4921 case 'utf16le':
4922 case 'utf-16le':
4923 return true
4924 default:
4925 return false
4926 }
4927}
4928
4929Buffer.concat = function concat (list, length) {
4930 if (!Array.isArray(list)) {
4931 throw new TypeError('"list" argument must be an Array of Buffers')
4932 }
4933
4934 if (list.length === 0) {
4935 return Buffer.alloc(0)
4936 }
4937
4938 var i
4939 if (length === undefined) {
4940 length = 0
4941 for (i = 0; i < list.length; ++i) {
4942 length += list[i].length
4943 }
4944 }
4945
4946 var buffer = Buffer.allocUnsafe(length)
4947 var pos = 0
4948 for (i = 0; i < list.length; ++i) {
4949 var buf = list[i]
4950 if (!Buffer.isBuffer(buf)) {
4951 throw new TypeError('"list" argument must be an Array of Buffers')
4952 }
4953 buf.copy(buffer, pos)
4954 pos += buf.length
4955 }
4956 return buffer
4957}
4958
4959function byteLength (string, encoding) {
4960 if (Buffer.isBuffer(string)) {
4961 return string.length
4962 }
4963 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
4964 return string.byteLength
4965 }
4966 if (typeof string !== 'string') {
4967 string = '' + string
4968 }
4969
4970 var len = string.length
4971 if (len === 0) return 0
4972
4973 // Use a for loop to avoid recursion
4974 var loweredCase = false
4975 for (;;) {
4976 switch (encoding) {
4977 case 'ascii':
4978 case 'latin1':
4979 case 'binary':
4980 return len
4981 case 'utf8':
4982 case 'utf-8':
4983 case undefined:
4984 return utf8ToBytes(string).length
4985 case 'ucs2':
4986 case 'ucs-2':
4987 case 'utf16le':
4988 case 'utf-16le':
4989 return len * 2
4990 case 'hex':
4991 return len >>> 1
4992 case 'base64':
4993 return base64ToBytes(string).length
4994 default:
4995 if (loweredCase) return utf8ToBytes(string).length // assume utf8
4996 encoding = ('' + encoding).toLowerCase()
4997 loweredCase = true
4998 }
4999 }
5000}
5001Buffer.byteLength = byteLength
5002
5003function slowToString (encoding, start, end) {
5004 var loweredCase = false
5005
5006 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5007 // property of a typed array.
5008
5009 // This behaves neither like String nor Uint8Array in that we set start/end
5010 // to their upper/lower bounds if the value passed is out of range.
5011 // undefined is handled specially as per ECMA-262 6th Edition,
5012 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5013 if (start === undefined || start < 0) {
5014 start = 0
5015 }
5016 // Return early if start > this.length. Done here to prevent potential uint32
5017 // coercion fail below.
5018 if (start > this.length) {
5019 return ''
5020 }
5021
5022 if (end === undefined || end > this.length) {
5023 end = this.length
5024 }
5025
5026 if (end <= 0) {
5027 return ''
5028 }
5029
5030 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5031 end >>>= 0
5032 start >>>= 0
5033
5034 if (end <= start) {
5035 return ''
5036 }
5037
5038 if (!encoding) encoding = 'utf8'
5039
5040 while (true) {
5041 switch (encoding) {
5042 case 'hex':
5043 return hexSlice(this, start, end)
5044
5045 case 'utf8':
5046 case 'utf-8':
5047 return utf8Slice(this, start, end)
5048
5049 case 'ascii':
5050 return asciiSlice(this, start, end)
5051
5052 case 'latin1':
5053 case 'binary':
5054 return latin1Slice(this, start, end)
5055
5056 case 'base64':
5057 return base64Slice(this, start, end)
5058
5059 case 'ucs2':
5060 case 'ucs-2':
5061 case 'utf16le':
5062 case 'utf-16le':
5063 return utf16leSlice(this, start, end)
5064
5065 default:
5066 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5067 encoding = (encoding + '').toLowerCase()
5068 loweredCase = true
5069 }
5070 }
5071}
5072
5073// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5074// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5075// reliably in a browserify context because there could be multiple different
5076// copies of the 'buffer' package in use. This method works even for Buffer
5077// instances that were created from another copy of the `buffer` package.
5078// See: https://github.com/feross/buffer/issues/154
5079Buffer.prototype._isBuffer = true
5080
5081function swap (b, n, m) {
5082 var i = b[n]
5083 b[n] = b[m]
5084 b[m] = i
5085}
5086
5087Buffer.prototype.swap16 = function swap16 () {
5088 var len = this.length
5089 if (len % 2 !== 0) {
5090 throw new RangeError('Buffer size must be a multiple of 16-bits')
5091 }
5092 for (var i = 0; i < len; i += 2) {
5093 swap(this, i, i + 1)
5094 }
5095 return this
5096}
5097
5098Buffer.prototype.swap32 = function swap32 () {
5099 var len = this.length
5100 if (len % 4 !== 0) {
5101 throw new RangeError('Buffer size must be a multiple of 32-bits')
5102 }
5103 for (var i = 0; i < len; i += 4) {
5104 swap(this, i, i + 3)
5105 swap(this, i + 1, i + 2)
5106 }
5107 return this
5108}
5109
5110Buffer.prototype.swap64 = function swap64 () {
5111 var len = this.length
5112 if (len % 8 !== 0) {
5113 throw new RangeError('Buffer size must be a multiple of 64-bits')
5114 }
5115 for (var i = 0; i < len; i += 8) {
5116 swap(this, i, i + 7)
5117 swap(this, i + 1, i + 6)
5118 swap(this, i + 2, i + 5)
5119 swap(this, i + 3, i + 4)
5120 }
5121 return this
5122}
5123
5124Buffer.prototype.toString = function toString () {
5125 var length = this.length
5126 if (length === 0) return ''
5127 if (arguments.length === 0) return utf8Slice(this, 0, length)
5128 return slowToString.apply(this, arguments)
5129}
5130
5131Buffer.prototype.equals = function equals (b) {
5132 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5133 if (this === b) return true
5134 return Buffer.compare(this, b) === 0
5135}
5136
5137Buffer.prototype.inspect = function inspect () {
5138 var str = ''
5139 var max = exports.INSPECT_MAX_BYTES
5140 if (this.length > 0) {
5141 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5142 if (this.length > max) str += ' ... '
5143 }
5144 return '<Buffer ' + str + '>'
5145}
5146
5147Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5148 if (!Buffer.isBuffer(target)) {
5149 throw new TypeError('Argument must be a Buffer')
5150 }
5151
5152 if (start === undefined) {
5153 start = 0
5154 }
5155 if (end === undefined) {
5156 end = target ? target.length : 0
5157 }
5158 if (thisStart === undefined) {
5159 thisStart = 0
5160 }
5161 if (thisEnd === undefined) {
5162 thisEnd = this.length
5163 }
5164
5165 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5166 throw new RangeError('out of range index')
5167 }
5168
5169 if (thisStart >= thisEnd && start >= end) {
5170 return 0
5171 }
5172 if (thisStart >= thisEnd) {
5173 return -1
5174 }
5175 if (start >= end) {
5176 return 1
5177 }
5178
5179 start >>>= 0
5180 end >>>= 0
5181 thisStart >>>= 0
5182 thisEnd >>>= 0
5183
5184 if (this === target) return 0
5185
5186 var x = thisEnd - thisStart
5187 var y = end - start
5188 var len = Math.min(x, y)
5189
5190 var thisCopy = this.slice(thisStart, thisEnd)
5191 var targetCopy = target.slice(start, end)
5192
5193 for (var i = 0; i < len; ++i) {
5194 if (thisCopy[i] !== targetCopy[i]) {
5195 x = thisCopy[i]
5196 y = targetCopy[i]
5197 break
5198 }
5199 }
5200
5201 if (x < y) return -1
5202 if (y < x) return 1
5203 return 0
5204}
5205
5206// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5207// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5208//
5209// Arguments:
5210// - buffer - a Buffer to search
5211// - val - a string, Buffer, or number
5212// - byteOffset - an index into `buffer`; will be clamped to an int32
5213// - encoding - an optional encoding, relevant is val is a string
5214// - dir - true for indexOf, false for lastIndexOf
5215function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5216 // Empty buffer means no match
5217 if (buffer.length === 0) return -1
5218
5219 // Normalize byteOffset
5220 if (typeof byteOffset === 'string') {
5221 encoding = byteOffset
5222 byteOffset = 0
5223 } else if (byteOffset > 0x7fffffff) {
5224 byteOffset = 0x7fffffff
5225 } else if (byteOffset < -0x80000000) {
5226 byteOffset = -0x80000000
5227 }
5228 byteOffset = +byteOffset // Coerce to Number.
5229 if (numberIsNaN(byteOffset)) {
5230 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5231 byteOffset = dir ? 0 : (buffer.length - 1)
5232 }
5233
5234 // Normalize byteOffset: negative offsets start from the end of the buffer
5235 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5236 if (byteOffset >= buffer.length) {
5237 if (dir) return -1
5238 else byteOffset = buffer.length - 1
5239 } else if (byteOffset < 0) {
5240 if (dir) byteOffset = 0
5241 else return -1
5242 }
5243
5244 // Normalize val
5245 if (typeof val === 'string') {
5246 val = Buffer.from(val, encoding)
5247 }
5248
5249 // Finally, search either indexOf (if dir is true) or lastIndexOf
5250 if (Buffer.isBuffer(val)) {
5251 // Special case: looking for empty string/buffer always fails
5252 if (val.length === 0) {
5253 return -1
5254 }
5255 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5256 } else if (typeof val === 'number') {
5257 val = val & 0xFF // Search for a byte value [0-255]
5258 if (typeof Uint8Array.prototype.indexOf === 'function') {
5259 if (dir) {
5260 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5261 } else {
5262 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5263 }
5264 }
5265 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5266 }
5267
5268 throw new TypeError('val must be string, number or Buffer')
5269}
5270
5271function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5272 var indexSize = 1
5273 var arrLength = arr.length
5274 var valLength = val.length
5275
5276 if (encoding !== undefined) {
5277 encoding = String(encoding).toLowerCase()
5278 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5279 encoding === 'utf16le' || encoding === 'utf-16le') {
5280 if (arr.length < 2 || val.length < 2) {
5281 return -1
5282 }
5283 indexSize = 2
5284 arrLength /= 2
5285 valLength /= 2
5286 byteOffset /= 2
5287 }
5288 }
5289
5290 function read (buf, i) {
5291 if (indexSize === 1) {
5292 return buf[i]
5293 } else {
5294 return buf.readUInt16BE(i * indexSize)
5295 }
5296 }
5297
5298 var i
5299 if (dir) {
5300 var foundIndex = -1
5301 for (i = byteOffset; i < arrLength; i++) {
5302 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5303 if (foundIndex === -1) foundIndex = i
5304 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5305 } else {
5306 if (foundIndex !== -1) i -= i - foundIndex
5307 foundIndex = -1
5308 }
5309 }
5310 } else {
5311 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5312 for (i = byteOffset; i >= 0; i--) {
5313 var found = true
5314 for (var j = 0; j < valLength; j++) {
5315 if (read(arr, i + j) !== read(val, j)) {
5316 found = false
5317 break
5318 }
5319 }
5320 if (found) return i
5321 }
5322 }
5323
5324 return -1
5325}
5326
5327Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5328 return this.indexOf(val, byteOffset, encoding) !== -1
5329}
5330
5331Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5332 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5333}
5334
5335Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5336 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5337}
5338
5339function hexWrite (buf, string, offset, length) {
5340 offset = Number(offset) || 0
5341 var remaining = buf.length - offset
5342 if (!length) {
5343 length = remaining
5344 } else {
5345 length = Number(length)
5346 if (length > remaining) {
5347 length = remaining
5348 }
5349 }
5350
5351 // must be an even number of digits
5352 var strLen = string.length
5353 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5354
5355 if (length > strLen / 2) {
5356 length = strLen / 2
5357 }
5358 for (var i = 0; i < length; ++i) {
5359 var parsed = parseInt(string.substr(i * 2, 2), 16)
5360 if (numberIsNaN(parsed)) return i
5361 buf[offset + i] = parsed
5362 }
5363 return i
5364}
5365
5366function utf8Write (buf, string, offset, length) {
5367 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5368}
5369
5370function asciiWrite (buf, string, offset, length) {
5371 return blitBuffer(asciiToBytes(string), buf, offset, length)
5372}
5373
5374function latin1Write (buf, string, offset, length) {
5375 return asciiWrite(buf, string, offset, length)
5376}
5377
5378function base64Write (buf, string, offset, length) {
5379 return blitBuffer(base64ToBytes(string), buf, offset, length)
5380}
5381
5382function ucs2Write (buf, string, offset, length) {
5383 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5384}
5385
5386Buffer.prototype.write = function write (string, offset, length, encoding) {
5387 // Buffer#write(string)
5388 if (offset === undefined) {
5389 encoding = 'utf8'
5390 length = this.length
5391 offset = 0
5392 // Buffer#write(string, encoding)
5393 } else if (length === undefined && typeof offset === 'string') {
5394 encoding = offset
5395 length = this.length
5396 offset = 0
5397 // Buffer#write(string, offset[, length][, encoding])
5398 } else if (isFinite(offset)) {
5399 offset = offset >>> 0
5400 if (isFinite(length)) {
5401 length = length >>> 0
5402 if (encoding === undefined) encoding = 'utf8'
5403 } else {
5404 encoding = length
5405 length = undefined
5406 }
5407 } else {
5408 throw new Error(
5409 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5410 )
5411 }
5412
5413 var remaining = this.length - offset
5414 if (length === undefined || length > remaining) length = remaining
5415
5416 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5417 throw new RangeError('Attempt to write outside buffer bounds')
5418 }
5419
5420 if (!encoding) encoding = 'utf8'
5421
5422 var loweredCase = false
5423 for (;;) {
5424 switch (encoding) {
5425 case 'hex':
5426 return hexWrite(this, string, offset, length)
5427
5428 case 'utf8':
5429 case 'utf-8':
5430 return utf8Write(this, string, offset, length)
5431
5432 case 'ascii':
5433 return asciiWrite(this, string, offset, length)
5434
5435 case 'latin1':
5436 case 'binary':
5437 return latin1Write(this, string, offset, length)
5438
5439 case 'base64':
5440 // Warning: maxLength not taken into account in base64Write
5441 return base64Write(this, string, offset, length)
5442
5443 case 'ucs2':
5444 case 'ucs-2':
5445 case 'utf16le':
5446 case 'utf-16le':
5447 return ucs2Write(this, string, offset, length)
5448
5449 default:
5450 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5451 encoding = ('' + encoding).toLowerCase()
5452 loweredCase = true
5453 }
5454 }
5455}
5456
5457Buffer.prototype.toJSON = function toJSON () {
5458 return {
5459 type: 'Buffer',
5460 data: Array.prototype.slice.call(this._arr || this, 0)
5461 }
5462}
5463
5464function base64Slice (buf, start, end) {
5465 if (start === 0 && end === buf.length) {
5466 return base64.fromByteArray(buf)
5467 } else {
5468 return base64.fromByteArray(buf.slice(start, end))
5469 }
5470}
5471
5472function utf8Slice (buf, start, end) {
5473 end = Math.min(buf.length, end)
5474 var res = []
5475
5476 var i = start
5477 while (i < end) {
5478 var firstByte = buf[i]
5479 var codePoint = null
5480 var bytesPerSequence = (firstByte > 0xEF) ? 4
5481 : (firstByte > 0xDF) ? 3
5482 : (firstByte > 0xBF) ? 2
5483 : 1
5484
5485 if (i + bytesPerSequence <= end) {
5486 var secondByte, thirdByte, fourthByte, tempCodePoint
5487
5488 switch (bytesPerSequence) {
5489 case 1:
5490 if (firstByte < 0x80) {
5491 codePoint = firstByte
5492 }
5493 break
5494 case 2:
5495 secondByte = buf[i + 1]
5496 if ((secondByte & 0xC0) === 0x80) {
5497 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5498 if (tempCodePoint > 0x7F) {
5499 codePoint = tempCodePoint
5500 }
5501 }
5502 break
5503 case 3:
5504 secondByte = buf[i + 1]
5505 thirdByte = buf[i + 2]
5506 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5507 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5508 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5509 codePoint = tempCodePoint
5510 }
5511 }
5512 break
5513 case 4:
5514 secondByte = buf[i + 1]
5515 thirdByte = buf[i + 2]
5516 fourthByte = buf[i + 3]
5517 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5518 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5519 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5520 codePoint = tempCodePoint
5521 }
5522 }
5523 }
5524 }
5525
5526 if (codePoint === null) {
5527 // we did not generate a valid codePoint so insert a
5528 // replacement char (U+FFFD) and advance only 1 byte
5529 codePoint = 0xFFFD
5530 bytesPerSequence = 1
5531 } else if (codePoint > 0xFFFF) {
5532 // encode to utf16 (surrogate pair dance)
5533 codePoint -= 0x10000
5534 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5535 codePoint = 0xDC00 | codePoint & 0x3FF
5536 }
5537
5538 res.push(codePoint)
5539 i += bytesPerSequence
5540 }
5541
5542 return decodeCodePointsArray(res)
5543}
5544
5545// Based on http://stackoverflow.com/a/22747272/680742, the browser with
5546// the lowest limit is Chrome, with 0x10000 args.
5547// We go 1 magnitude less, for safety
5548var MAX_ARGUMENTS_LENGTH = 0x1000
5549
5550function decodeCodePointsArray (codePoints) {
5551 var len = codePoints.length
5552 if (len <= MAX_ARGUMENTS_LENGTH) {
5553 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5554 }
5555
5556 // Decode in chunks to avoid "call stack size exceeded".
5557 var res = ''
5558 var i = 0
5559 while (i < len) {
5560 res += String.fromCharCode.apply(
5561 String,
5562 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5563 )
5564 }
5565 return res
5566}
5567
5568function asciiSlice (buf, start, end) {
5569 var ret = ''
5570 end = Math.min(buf.length, end)
5571
5572 for (var i = start; i < end; ++i) {
5573 ret += String.fromCharCode(buf[i] & 0x7F)
5574 }
5575 return ret
5576}
5577
5578function latin1Slice (buf, start, end) {
5579 var ret = ''
5580 end = Math.min(buf.length, end)
5581
5582 for (var i = start; i < end; ++i) {
5583 ret += String.fromCharCode(buf[i])
5584 }
5585 return ret
5586}
5587
5588function hexSlice (buf, start, end) {
5589 var len = buf.length
5590
5591 if (!start || start < 0) start = 0
5592 if (!end || end < 0 || end > len) end = len
5593
5594 var out = ''
5595 for (var i = start; i < end; ++i) {
5596 out += toHex(buf[i])
5597 }
5598 return out
5599}
5600
5601function utf16leSlice (buf, start, end) {
5602 var bytes = buf.slice(start, end)
5603 var res = ''
5604 for (var i = 0; i < bytes.length; i += 2) {
5605 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5606 }
5607 return res
5608}
5609
5610Buffer.prototype.slice = function slice (start, end) {
5611 var len = this.length
5612 start = ~~start
5613 end = end === undefined ? len : ~~end
5614
5615 if (start < 0) {
5616 start += len
5617 if (start < 0) start = 0
5618 } else if (start > len) {
5619 start = len
5620 }
5621
5622 if (end < 0) {
5623 end += len
5624 if (end < 0) end = 0
5625 } else if (end > len) {
5626 end = len
5627 }
5628
5629 if (end < start) end = start
5630
5631 var newBuf = this.subarray(start, end)
5632 // Return an augmented `Uint8Array` instance
5633 newBuf.__proto__ = Buffer.prototype
5634 return newBuf
5635}
5636
5637/*
5638 * Need to make sure that buffer isn't trying to write out of bounds.
5639 */
5640function checkOffset (offset, ext, length) {
5641 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5642 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5643}
5644
5645Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5646 offset = offset >>> 0
5647 byteLength = byteLength >>> 0
5648 if (!noAssert) checkOffset(offset, byteLength, this.length)
5649
5650 var val = this[offset]
5651 var mul = 1
5652 var i = 0
5653 while (++i < byteLength && (mul *= 0x100)) {
5654 val += this[offset + i] * mul
5655 }
5656
5657 return val
5658}
5659
5660Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5661 offset = offset >>> 0
5662 byteLength = byteLength >>> 0
5663 if (!noAssert) {
5664 checkOffset(offset, byteLength, this.length)
5665 }
5666
5667 var val = this[offset + --byteLength]
5668 var mul = 1
5669 while (byteLength > 0 && (mul *= 0x100)) {
5670 val += this[offset + --byteLength] * mul
5671 }
5672
5673 return val
5674}
5675
5676Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5677 offset = offset >>> 0
5678 if (!noAssert) checkOffset(offset, 1, this.length)
5679 return this[offset]
5680}
5681
5682Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5683 offset = offset >>> 0
5684 if (!noAssert) checkOffset(offset, 2, this.length)
5685 return this[offset] | (this[offset + 1] << 8)
5686}
5687
5688Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5689 offset = offset >>> 0
5690 if (!noAssert) checkOffset(offset, 2, this.length)
5691 return (this[offset] << 8) | this[offset + 1]
5692}
5693
5694Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5695 offset = offset >>> 0
5696 if (!noAssert) checkOffset(offset, 4, this.length)
5697
5698 return ((this[offset]) |
5699 (this[offset + 1] << 8) |
5700 (this[offset + 2] << 16)) +
5701 (this[offset + 3] * 0x1000000)
5702}
5703
5704Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5705 offset = offset >>> 0
5706 if (!noAssert) checkOffset(offset, 4, this.length)
5707
5708 return (this[offset] * 0x1000000) +
5709 ((this[offset + 1] << 16) |
5710 (this[offset + 2] << 8) |
5711 this[offset + 3])
5712}
5713
5714Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5715 offset = offset >>> 0
5716 byteLength = byteLength >>> 0
5717 if (!noAssert) checkOffset(offset, byteLength, this.length)
5718
5719 var val = this[offset]
5720 var mul = 1
5721 var i = 0
5722 while (++i < byteLength && (mul *= 0x100)) {
5723 val += this[offset + i] * mul
5724 }
5725 mul *= 0x80
5726
5727 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5728
5729 return val
5730}
5731
5732Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5733 offset = offset >>> 0
5734 byteLength = byteLength >>> 0
5735 if (!noAssert) checkOffset(offset, byteLength, this.length)
5736
5737 var i = byteLength
5738 var mul = 1
5739 var val = this[offset + --i]
5740 while (i > 0 && (mul *= 0x100)) {
5741 val += this[offset + --i] * mul
5742 }
5743 mul *= 0x80
5744
5745 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5746
5747 return val
5748}
5749
5750Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5751 offset = offset >>> 0
5752 if (!noAssert) checkOffset(offset, 1, this.length)
5753 if (!(this[offset] & 0x80)) return (this[offset])
5754 return ((0xff - this[offset] + 1) * -1)
5755}
5756
5757Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5758 offset = offset >>> 0
5759 if (!noAssert) checkOffset(offset, 2, this.length)
5760 var val = this[offset] | (this[offset + 1] << 8)
5761 return (val & 0x8000) ? val | 0xFFFF0000 : val
5762}
5763
5764Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5765 offset = offset >>> 0
5766 if (!noAssert) checkOffset(offset, 2, this.length)
5767 var val = this[offset + 1] | (this[offset] << 8)
5768 return (val & 0x8000) ? val | 0xFFFF0000 : val
5769}
5770
5771Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5772 offset = offset >>> 0
5773 if (!noAssert) checkOffset(offset, 4, this.length)
5774
5775 return (this[offset]) |
5776 (this[offset + 1] << 8) |
5777 (this[offset + 2] << 16) |
5778 (this[offset + 3] << 24)
5779}
5780
5781Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5782 offset = offset >>> 0
5783 if (!noAssert) checkOffset(offset, 4, this.length)
5784
5785 return (this[offset] << 24) |
5786 (this[offset + 1] << 16) |
5787 (this[offset + 2] << 8) |
5788 (this[offset + 3])
5789}
5790
5791Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 4, this.length)
5794 return ieee754.read(this, offset, true, 23, 4)
5795}
5796
5797Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 4, this.length)
5800 return ieee754.read(this, offset, false, 23, 4)
5801}
5802
5803Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 8, this.length)
5806 return ieee754.read(this, offset, true, 52, 8)
5807}
5808
5809Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5810 offset = offset >>> 0
5811 if (!noAssert) checkOffset(offset, 8, this.length)
5812 return ieee754.read(this, offset, false, 52, 8)
5813}
5814
5815function checkInt (buf, value, offset, ext, max, min) {
5816 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5817 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5818 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5819}
5820
5821Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5822 value = +value
5823 offset = offset >>> 0
5824 byteLength = byteLength >>> 0
5825 if (!noAssert) {
5826 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5827 checkInt(this, value, offset, byteLength, maxBytes, 0)
5828 }
5829
5830 var mul = 1
5831 var i = 0
5832 this[offset] = value & 0xFF
5833 while (++i < byteLength && (mul *= 0x100)) {
5834 this[offset + i] = (value / mul) & 0xFF
5835 }
5836
5837 return offset + byteLength
5838}
5839
5840Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5841 value = +value
5842 offset = offset >>> 0
5843 byteLength = byteLength >>> 0
5844 if (!noAssert) {
5845 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5846 checkInt(this, value, offset, byteLength, maxBytes, 0)
5847 }
5848
5849 var i = byteLength - 1
5850 var mul = 1
5851 this[offset + i] = value & 0xFF
5852 while (--i >= 0 && (mul *= 0x100)) {
5853 this[offset + i] = (value / mul) & 0xFF
5854 }
5855
5856 return offset + byteLength
5857}
5858
5859Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5860 value = +value
5861 offset = offset >>> 0
5862 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5863 this[offset] = (value & 0xff)
5864 return offset + 1
5865}
5866
5867Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5868 value = +value
5869 offset = offset >>> 0
5870 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5871 this[offset] = (value & 0xff)
5872 this[offset + 1] = (value >>> 8)
5873 return offset + 2
5874}
5875
5876Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5877 value = +value
5878 offset = offset >>> 0
5879 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5880 this[offset] = (value >>> 8)
5881 this[offset + 1] = (value & 0xff)
5882 return offset + 2
5883}
5884
5885Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5886 value = +value
5887 offset = offset >>> 0
5888 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5889 this[offset + 3] = (value >>> 24)
5890 this[offset + 2] = (value >>> 16)
5891 this[offset + 1] = (value >>> 8)
5892 this[offset] = (value & 0xff)
5893 return offset + 4
5894}
5895
5896Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5897 value = +value
5898 offset = offset >>> 0
5899 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5900 this[offset] = (value >>> 24)
5901 this[offset + 1] = (value >>> 16)
5902 this[offset + 2] = (value >>> 8)
5903 this[offset + 3] = (value & 0xff)
5904 return offset + 4
5905}
5906
5907Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
5908 value = +value
5909 offset = offset >>> 0
5910 if (!noAssert) {
5911 var limit = Math.pow(2, (8 * byteLength) - 1)
5912
5913 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5914 }
5915
5916 var i = 0
5917 var mul = 1
5918 var sub = 0
5919 this[offset] = value & 0xFF
5920 while (++i < byteLength && (mul *= 0x100)) {
5921 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
5922 sub = 1
5923 }
5924 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5925 }
5926
5927 return offset + byteLength
5928}
5929
5930Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
5931 value = +value
5932 offset = offset >>> 0
5933 if (!noAssert) {
5934 var limit = Math.pow(2, (8 * byteLength) - 1)
5935
5936 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5937 }
5938
5939 var i = byteLength - 1
5940 var mul = 1
5941 var sub = 0
5942 this[offset + i] = value & 0xFF
5943 while (--i >= 0 && (mul *= 0x100)) {
5944 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
5945 sub = 1
5946 }
5947 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5948 }
5949
5950 return offset + byteLength
5951}
5952
5953Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
5954 value = +value
5955 offset = offset >>> 0
5956 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
5957 if (value < 0) value = 0xff + value + 1
5958 this[offset] = (value & 0xff)
5959 return offset + 1
5960}
5961
5962Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
5963 value = +value
5964 offset = offset >>> 0
5965 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5966 this[offset] = (value & 0xff)
5967 this[offset + 1] = (value >>> 8)
5968 return offset + 2
5969}
5970
5971Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
5972 value = +value
5973 offset = offset >>> 0
5974 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5975 this[offset] = (value >>> 8)
5976 this[offset + 1] = (value & 0xff)
5977 return offset + 2
5978}
5979
5980Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
5981 value = +value
5982 offset = offset >>> 0
5983 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5984 this[offset] = (value & 0xff)
5985 this[offset + 1] = (value >>> 8)
5986 this[offset + 2] = (value >>> 16)
5987 this[offset + 3] = (value >>> 24)
5988 return offset + 4
5989}
5990
5991Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
5992 value = +value
5993 offset = offset >>> 0
5994 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5995 if (value < 0) value = 0xffffffff + value + 1
5996 this[offset] = (value >>> 24)
5997 this[offset + 1] = (value >>> 16)
5998 this[offset + 2] = (value >>> 8)
5999 this[offset + 3] = (value & 0xff)
6000 return offset + 4
6001}
6002
6003function checkIEEE754 (buf, value, offset, ext, max, min) {
6004 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6005 if (offset < 0) throw new RangeError('Index out of range')
6006}
6007
6008function writeFloat (buf, value, offset, littleEndian, noAssert) {
6009 value = +value
6010 offset = offset >>> 0
6011 if (!noAssert) {
6012 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6013 }
6014 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6015 return offset + 4
6016}
6017
6018Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6019 return writeFloat(this, value, offset, true, noAssert)
6020}
6021
6022Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6023 return writeFloat(this, value, offset, false, noAssert)
6024}
6025
6026function writeDouble (buf, value, offset, littleEndian, noAssert) {
6027 value = +value
6028 offset = offset >>> 0
6029 if (!noAssert) {
6030 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6031 }
6032 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6033 return offset + 8
6034}
6035
6036Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6037 return writeDouble(this, value, offset, true, noAssert)
6038}
6039
6040Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6041 return writeDouble(this, value, offset, false, noAssert)
6042}
6043
6044// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6045Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6046 if (!start) start = 0
6047 if (!end && end !== 0) end = this.length
6048 if (targetStart >= target.length) targetStart = target.length
6049 if (!targetStart) targetStart = 0
6050 if (end > 0 && end < start) end = start
6051
6052 // Copy 0 bytes; we're done
6053 if (end === start) return 0
6054 if (target.length === 0 || this.length === 0) return 0
6055
6056 // Fatal error conditions
6057 if (targetStart < 0) {
6058 throw new RangeError('targetStart out of bounds')
6059 }
6060 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6061 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6062
6063 // Are we oob?
6064 if (end > this.length) end = this.length
6065 if (target.length - targetStart < end - start) {
6066 end = target.length - targetStart + start
6067 }
6068
6069 var len = end - start
6070 var i
6071
6072 if (this === target && start < targetStart && targetStart < end) {
6073 // descending copy from end
6074 for (i = len - 1; i >= 0; --i) {
6075 target[i + targetStart] = this[i + start]
6076 }
6077 } else if (len < 1000) {
6078 // ascending copy from start
6079 for (i = 0; i < len; ++i) {
6080 target[i + targetStart] = this[i + start]
6081 }
6082 } else {
6083 Uint8Array.prototype.set.call(
6084 target,
6085 this.subarray(start, start + len),
6086 targetStart
6087 )
6088 }
6089
6090 return len
6091}
6092
6093// Usage:
6094// buffer.fill(number[, offset[, end]])
6095// buffer.fill(buffer[, offset[, end]])
6096// buffer.fill(string[, offset[, end]][, encoding])
6097Buffer.prototype.fill = function fill (val, start, end, encoding) {
6098 // Handle string cases:
6099 if (typeof val === 'string') {
6100 if (typeof start === 'string') {
6101 encoding = start
6102 start = 0
6103 end = this.length
6104 } else if (typeof end === 'string') {
6105 encoding = end
6106 end = this.length
6107 }
6108 if (val.length === 1) {
6109 var code = val.charCodeAt(0)
6110 if (code < 256) {
6111 val = code
6112 }
6113 }
6114 if (encoding !== undefined && typeof encoding !== 'string') {
6115 throw new TypeError('encoding must be a string')
6116 }
6117 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6118 throw new TypeError('Unknown encoding: ' + encoding)
6119 }
6120 } else if (typeof val === 'number') {
6121 val = val & 255
6122 }
6123
6124 // Invalid ranges are not set to a default, so can range check early.
6125 if (start < 0 || this.length < start || this.length < end) {
6126 throw new RangeError('Out of range index')
6127 }
6128
6129 if (end <= start) {
6130 return this
6131 }
6132
6133 start = start >>> 0
6134 end = end === undefined ? this.length : end >>> 0
6135
6136 if (!val) val = 0
6137
6138 var i
6139 if (typeof val === 'number') {
6140 for (i = start; i < end; ++i) {
6141 this[i] = val
6142 }
6143 } else {
6144 var bytes = Buffer.isBuffer(val)
6145 ? val
6146 : new Buffer(val, encoding)
6147 var len = bytes.length
6148 for (i = 0; i < end - start; ++i) {
6149 this[i + start] = bytes[i % len]
6150 }
6151 }
6152
6153 return this
6154}
6155
6156// HELPER FUNCTIONS
6157// ================
6158
6159var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6160
6161function base64clean (str) {
6162 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6163 str = str.trim().replace(INVALID_BASE64_RE, '')
6164 // Node converts strings with length < 2 to ''
6165 if (str.length < 2) return ''
6166 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6167 while (str.length % 4 !== 0) {
6168 str = str + '='
6169 }
6170 return str
6171}
6172
6173function toHex (n) {
6174 if (n < 16) return '0' + n.toString(16)
6175 return n.toString(16)
6176}
6177
6178function utf8ToBytes (string, units) {
6179 units = units || Infinity
6180 var codePoint
6181 var length = string.length
6182 var leadSurrogate = null
6183 var bytes = []
6184
6185 for (var i = 0; i < length; ++i) {
6186 codePoint = string.charCodeAt(i)
6187
6188 // is surrogate component
6189 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6190 // last char was a lead
6191 if (!leadSurrogate) {
6192 // no lead yet
6193 if (codePoint > 0xDBFF) {
6194 // unexpected trail
6195 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6196 continue
6197 } else if (i + 1 === length) {
6198 // unpaired lead
6199 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6200 continue
6201 }
6202
6203 // valid lead
6204 leadSurrogate = codePoint
6205
6206 continue
6207 }
6208
6209 // 2 leads in a row
6210 if (codePoint < 0xDC00) {
6211 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6212 leadSurrogate = codePoint
6213 continue
6214 }
6215
6216 // valid surrogate pair
6217 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6218 } else if (leadSurrogate) {
6219 // valid bmp char, but last char was a lead
6220 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6221 }
6222
6223 leadSurrogate = null
6224
6225 // encode utf8
6226 if (codePoint < 0x80) {
6227 if ((units -= 1) < 0) break
6228 bytes.push(codePoint)
6229 } else if (codePoint < 0x800) {
6230 if ((units -= 2) < 0) break
6231 bytes.push(
6232 codePoint >> 0x6 | 0xC0,
6233 codePoint & 0x3F | 0x80
6234 )
6235 } else if (codePoint < 0x10000) {
6236 if ((units -= 3) < 0) break
6237 bytes.push(
6238 codePoint >> 0xC | 0xE0,
6239 codePoint >> 0x6 & 0x3F | 0x80,
6240 codePoint & 0x3F | 0x80
6241 )
6242 } else if (codePoint < 0x110000) {
6243 if ((units -= 4) < 0) break
6244 bytes.push(
6245 codePoint >> 0x12 | 0xF0,
6246 codePoint >> 0xC & 0x3F | 0x80,
6247 codePoint >> 0x6 & 0x3F | 0x80,
6248 codePoint & 0x3F | 0x80
6249 )
6250 } else {
6251 throw new Error('Invalid code point')
6252 }
6253 }
6254
6255 return bytes
6256}
6257
6258function asciiToBytes (str) {
6259 var byteArray = []
6260 for (var i = 0; i < str.length; ++i) {
6261 // Node's code seems to be doing this and not & 0x7F..
6262 byteArray.push(str.charCodeAt(i) & 0xFF)
6263 }
6264 return byteArray
6265}
6266
6267function utf16leToBytes (str, units) {
6268 var c, hi, lo
6269 var byteArray = []
6270 for (var i = 0; i < str.length; ++i) {
6271 if ((units -= 2) < 0) break
6272
6273 c = str.charCodeAt(i)
6274 hi = c >> 8
6275 lo = c % 256
6276 byteArray.push(lo)
6277 byteArray.push(hi)
6278 }
6279
6280 return byteArray
6281}
6282
6283function base64ToBytes (str) {
6284 return base64.toByteArray(base64clean(str))
6285}
6286
6287function blitBuffer (src, dst, offset, length) {
6288 for (var i = 0; i < length; ++i) {
6289 if ((i + offset >= dst.length) || (i >= src.length)) break
6290 dst[i + offset] = src[i]
6291 }
6292 return i
6293}
6294
6295// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6296function isArrayBufferView (obj) {
6297 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6298}
6299
6300function numberIsNaN (obj) {
6301 return obj !== obj // eslint-disable-line no-self-compare
6302}
6303
6304},{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6305exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6306 var e, m
6307 var eLen = nBytes * 8 - mLen - 1
6308 var eMax = (1 << eLen) - 1
6309 var eBias = eMax >> 1
6310 var nBits = -7
6311 var i = isLE ? (nBytes - 1) : 0
6312 var d = isLE ? -1 : 1
6313 var s = buffer[offset + i]
6314
6315 i += d
6316
6317 e = s & ((1 << (-nBits)) - 1)
6318 s >>= (-nBits)
6319 nBits += eLen
6320 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6321
6322 m = e & ((1 << (-nBits)) - 1)
6323 e >>= (-nBits)
6324 nBits += mLen
6325 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6326
6327 if (e === 0) {
6328 e = 1 - eBias
6329 } else if (e === eMax) {
6330 return m ? NaN : ((s ? -1 : 1) * Infinity)
6331 } else {
6332 m = m + Math.pow(2, mLen)
6333 e = e - eBias
6334 }
6335 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6336}
6337
6338exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6339 var e, m, c
6340 var eLen = nBytes * 8 - mLen - 1
6341 var eMax = (1 << eLen) - 1
6342 var eBias = eMax >> 1
6343 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6344 var i = isLE ? 0 : (nBytes - 1)
6345 var d = isLE ? 1 : -1
6346 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6347
6348 value = Math.abs(value)
6349
6350 if (isNaN(value) || value === Infinity) {
6351 m = isNaN(value) ? 1 : 0
6352 e = eMax
6353 } else {
6354 e = Math.floor(Math.log(value) / Math.LN2)
6355 if (value * (c = Math.pow(2, -e)) < 1) {
6356 e--
6357 c *= 2
6358 }
6359 if (e + eBias >= 1) {
6360 value += rt / c
6361 } else {
6362 value += rt * Math.pow(2, 1 - eBias)
6363 }
6364 if (value * c >= 2) {
6365 e++
6366 c /= 2
6367 }
6368
6369 if (e + eBias >= eMax) {
6370 m = 0
6371 e = eMax
6372 } else if (e + eBias >= 1) {
6373 m = (value * c - 1) * Math.pow(2, mLen)
6374 e = e + eBias
6375 } else {
6376 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6377 e = 0
6378 }
6379 }
6380
6381 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6382
6383 e = (e << mLen) | m
6384 eLen += mLen
6385 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6386
6387 buffer[offset + i - d] |= s * 128
6388}
6389
6390},{}],4:[function(require,module,exports){
6391window.basex = require('base-x')
6392},{"base-x":5}],5:[function(require,module,exports){
6393// base-x encoding
6394// Forked from https://github.com/cryptocoinjs/bs58
6395// Originally written by Mike Hearn for BitcoinJ
6396// Copyright (c) 2011 Google Inc
6397// Ported to JavaScript by Stefan Thomas
6398// Merged Buffer refactorings from base58-native by Stephen Pair
6399// Copyright (c) 2013 BitPay Inc
6400
6401var Buffer = require('safe-buffer').Buffer
6402
6403module.exports = function base (ALPHABET) {
6404 var ALPHABET_MAP = {}
6405 var BASE = ALPHABET.length
6406 var LEADER = ALPHABET.charAt(0)
6407
6408 // pre-compute lookup table
6409 for (var z = 0; z < ALPHABET.length; z++) {
6410 var x = ALPHABET.charAt(z)
6411
6412 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6413 ALPHABET_MAP[x] = z
6414 }
6415
6416 function encode (source) {
6417 if (source.length === 0) return ''
6418
6419 var digits = [0]
6420 for (var i = 0; i < source.length; ++i) {
6421 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6422 carry += digits[j] << 8
6423 digits[j] = carry % BASE
6424 carry = (carry / BASE) | 0
6425 }
6426
6427 while (carry > 0) {
6428 digits.push(carry % BASE)
6429 carry = (carry / BASE) | 0
6430 }
6431 }
6432
6433 var string = ''
6434
6435 // deal with leading zeros
6436 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6437 // convert digits to a string
6438 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6439
6440 return string
6441 }
6442
6443 function decodeUnsafe (string) {
6444 if (string.length === 0) return Buffer.allocUnsafe(0)
6445
6446 var bytes = [0]
6447 for (var i = 0; i < string.length; i++) {
6448 var value = ALPHABET_MAP[string[i]]
6449 if (value === undefined) return
6450
6451 for (var j = 0, carry = value; j < bytes.length; ++j) {
6452 carry += bytes[j] * BASE
6453 bytes[j] = carry & 0xff
6454 carry >>= 8
6455 }
6456
6457 while (carry > 0) {
6458 bytes.push(carry & 0xff)
6459 carry >>= 8
6460 }
6461 }
6462
6463 // deal with leading zeros
6464 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6465 bytes.push(0)
6466 }
6467
6468 return Buffer.from(bytes.reverse())
6469 }
6470
6471 function decode (string) {
6472 var buffer = decodeUnsafe(string)
6473 if (buffer) return buffer
6474
6475 throw new Error('Non-base' + BASE + ' character')
6476 }
6477
6478 return {
6479 encode: encode,
6480 decodeUnsafe: decodeUnsafe,
6481 decode: decode
6482 }
6483}
6484
6485},{"safe-buffer":6}],6:[function(require,module,exports){
6486module.exports = require('buffer')
6487
6488},{"buffer":2}]},{},[4])(4)
6489});</script>
6e0f24b1
IC
6490 <script>(function (root) {
6491 "use strict";
6492
6493/***** unorm.js *****/
6494
6495/*
6496 * UnicodeNormalizer 1.0.0
6497 * Copyright (c) 2008 Matsuza
6498 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6499 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6500 * $Rev: 13309 $
6501 */
6502
6503 var DEFAULT_FEATURE = [null, 0, {}];
6504 var CACHE_THRESHOLD = 10;
6505 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6506 var NCount = VCount * TCount; // 588
6507 var SCount = LCount * NCount; // 11172
6508
6509 var UChar = function(cp, feature){
6510 this.codepoint = cp;
6511 this.feature = feature;
6512 };
6513
6514 // Strategies
6515 var cache = {};
6516 var cacheCounter = [];
6517 for (var i = 0; i <= 0xFF; ++i){
6518 cacheCounter[i] = 0;
6519 }
6520
6521 function fromCache(next, cp, needFeature){
6522 var ret = cache[cp];
6523 if(!ret){
6524 ret = next(cp, needFeature);
6525 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6526 cache[cp] = ret;
6527 }
6528 }
6529 return ret;
6530 }
6531
6532 function fromData(next, cp, needFeature){
6533 var hash = cp & 0xFF00;
6534 var dunit = UChar.udata[hash] || {};
6535 var f = dunit[cp];
6536 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6537 }
6538 function fromCpOnly(next, cp, needFeature){
6539 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6540 }
6541 function fromRuleBasedJamo(next, cp, needFeature){
6542 var j;
6543 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6544 return next(cp, needFeature);
6545 }
6546 if(LBase <= cp && cp < LBase + LCount){
6547 var c = {};
6548 var base = (cp - LBase) * VCount;
6549 for (j = 0; j < VCount; ++j){
6550 c[VBase + j] = SBase + TCount * (j + base);
6551 }
6552 return new UChar(cp, [,,c]);
6553 }
6554
6555 var SIndex = cp - SBase;
6556 var TIndex = SIndex % TCount;
6557 var feature = [];
6558 if(TIndex !== 0){
6559 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6560 } else {
6561 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6562 feature[2] = {};
6563 for (j = 1; j < TCount; ++j){
6564 feature[2][TBase + j] = cp + j;
6565 }
6566 }
6567 return new UChar(cp, feature);
6568 }
6569 function fromCpFilter(next, cp, needFeature){
6570 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6571 }
6572
6573 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6574
6575 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6576 return function (cp, needFeature) {
6577 return strategy(next, cp, needFeature);
6578 };
6579 }, null);
6580
6581 UChar.isHighSurrogate = function(cp){
6582 return cp >= 0xD800 && cp <= 0xDBFF;
6583 };
6584 UChar.isLowSurrogate = function(cp){
6585 return cp >= 0xDC00 && cp <= 0xDFFF;
6586 };
6587
6588 UChar.prototype.prepFeature = function(){
6589 if(!this.feature){
6590 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6591 }
6592 };
6593
6594 UChar.prototype.toString = function(){
6595 if(this.codepoint < 0x10000){
6596 return String.fromCharCode(this.codepoint);
6597 } else {
6598 var x = this.codepoint - 0x10000;
6599 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6600 }
6601 };
6602
6603 UChar.prototype.getDecomp = function(){
6604 this.prepFeature();
6605 return this.feature[0] || null;
6606 };
6607
6608 UChar.prototype.isCompatibility = function(){
6609 this.prepFeature();
6610 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6611 };
6612 UChar.prototype.isExclude = function(){
6613 this.prepFeature();
6614 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6615 };
6616 UChar.prototype.getCanonicalClass = function(){
6617 this.prepFeature();
6618 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6619 };
6620 UChar.prototype.getComposite = function(following){
6621 this.prepFeature();
6622 if(!this.feature[2]){
6623 return null;
6624 }
6625 var cp = this.feature[2][following.codepoint];
6626 return cp ? UChar.fromCharCode(cp) : null;
6627 };
6628
6629 var UCharIterator = function(str){
6630 this.str = str;
6631 this.cursor = 0;
6632 };
6633 UCharIterator.prototype.next = function(){
6634 if(!!this.str && this.cursor < this.str.length){
6635 var cp = this.str.charCodeAt(this.cursor++);
6636 var d;
6637 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6638 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6639 ++this.cursor;
6640 }
6641 return UChar.fromCharCode(cp);
6642 } else {
6643 this.str = null;
6644 return null;
6645 }
6646 };
6647
6648 var RecursDecompIterator = function(it, cano){
6649 this.it = it;
6650 this.canonical = cano;
6651 this.resBuf = [];
6652 };
6653
6654 RecursDecompIterator.prototype.next = function(){
6655 function recursiveDecomp(cano, uchar){
6656 var decomp = uchar.getDecomp();
6657 if(!!decomp && !(cano && uchar.isCompatibility())){
6658 var ret = [];
6659 for(var i = 0; i < decomp.length; ++i){
6660 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6661 ret = ret.concat(a);
6662 }
6663 return ret;
6664 } else {
6665 return [uchar];
6666 }
6667 }
6668 if(this.resBuf.length === 0){
6669 var uchar = this.it.next();
6670 if(!uchar){
6671 return null;
6672 }
6673 this.resBuf = recursiveDecomp(this.canonical, uchar);
6674 }
6675 return this.resBuf.shift();
6676 };
6677
6678 var DecompIterator = function(it){
6679 this.it = it;
6680 this.resBuf = [];
6681 };
6682
6683 DecompIterator.prototype.next = function(){
6684 var cc;
6685 if(this.resBuf.length === 0){
6686 do{
6687 var uchar = this.it.next();
6688 if(!uchar){
6689 break;
6690 }
6691 cc = uchar.getCanonicalClass();
6692 var inspt = this.resBuf.length;
6693 if(cc !== 0){
6694 for(; inspt > 0; --inspt){
6695 var uchar2 = this.resBuf[inspt - 1];
6696 var cc2 = uchar2.getCanonicalClass();
6697 if(cc2 <= cc){
6698 break;
6699 }
6700 }
6701 }
6702 this.resBuf.splice(inspt, 0, uchar);
6703 } while(cc !== 0);
6704 }
6705 return this.resBuf.shift();
6706 };
6707
6708 var CompIterator = function(it){
6709 this.it = it;
6710 this.procBuf = [];
6711 this.resBuf = [];
6712 this.lastClass = null;
6713 };
6714
6715 CompIterator.prototype.next = function(){
6716 while(this.resBuf.length === 0){
6717 var uchar = this.it.next();
6718 if(!uchar){
6719 this.resBuf = this.procBuf;
6720 this.procBuf = [];
6721 break;
6722 }
6723 if(this.procBuf.length === 0){
6724 this.lastClass = uchar.getCanonicalClass();
6725 this.procBuf.push(uchar);
6726 } else {
6727 var starter = this.procBuf[0];
6728 var composite = starter.getComposite(uchar);
6729 var cc = uchar.getCanonicalClass();
6730 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6731 this.procBuf[0] = composite;
6732 } else {
6733 if(cc === 0){
6734 this.resBuf = this.procBuf;
6735 this.procBuf = [];
6736 }
6737 this.lastClass = cc;
6738 this.procBuf.push(uchar);
6739 }
6740 }
6741 }
6742 return this.resBuf.shift();
6743 };
6744
6745 var createIterator = function(mode, str){
6746 switch(mode){
6747 case "NFD":
6748 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6749 case "NFKD":
6750 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6751 case "NFC":
6752 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6753 case "NFKC":
6754 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6755 }
6756 throw mode + " is invalid";
6757 };
6758 var normalize = function(mode, str){
6759 var it = createIterator(mode, str);
6760 var ret = "";
6761 var uchar;
6762 while(!!(uchar = it.next())){
6763 ret += uchar.toString();
6764 }
6765 return ret;
6766 };
6767
6768 /* API functions */
6769 function nfd(str){
6770 return normalize("NFD", str);
6771 }
6772
6773 function nfkd(str){
6774 return normalize("NFKD", str);
6775 }
6776
6777 function nfc(str){
6778 return normalize("NFC", str);
6779 }
6780
6781 function nfkc(str){
6782 return normalize("NFKC", str);
6783 }
6784
6785/* Unicode data */
6786UChar.udata={
67870:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6788256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6789512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6790768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
67911024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
67921280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
67931536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
67941792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
67952048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
67962304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
67972560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
67982816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
67993072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
68003328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
68013584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
68023840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
68034096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
68044352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
68054608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
68064864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
68075120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
68085376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
68095632:{71231:[,9],71350:[,9],71351:[,7]},
68105888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
68116144:{6313:[,228]},
68126400:{6457:[,222],6458:[,230],6459:[,220]},
68136656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
68146912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
68157168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
68167424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
68177680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
68187936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
68198192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
68208448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
68218704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
68228960:{9001:[[12296]],9002:[[12297]]},
68239216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
682410752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
682511264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
682611520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
682711776:{11935:[[27597],256],12019:[[40863],256]},
682812032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
682912288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
683012544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
683112800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
683213056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
683327136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
683427392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
683542496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
683642752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
683743008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
683843264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
683943520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
684043776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
684148128:{113822:[,1]},
684253504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
684353760:{119362:[,230],119363:[,230],119364:[,230]},
684454272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
684554528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
684654784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
684755040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
684859392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
684960928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
685061696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
685161952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
685263488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
685363744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
685464000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
685564256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
685664512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
685764768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
685865024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
685965280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6860
6861};
6862
6863 /***** Module to export */
6864 var unorm = {
6865 nfc: nfc,
6866 nfd: nfd,
6867 nfkc: nfkc,
6868 nfkd: nfkd
6869 };
6870
6871 /*globals module:true,define:true*/
6872
6873 // CommonJS
6874 if (typeof module === "object") {
6875 module.exports = unorm;
6876
6877 // AMD
6878 } else if (typeof define === "function" && define.amd) {
6879 define("unorm", function () {
6880 return unorm;
6881 });
6882
6883 // Global
6884 } else {
6885 root.unorm = unorm;
6886 }
6887
6888 /***** Export as shim for String::normalize method *****/
6889 /*
6890 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6891
6892 21.1.3.12 String.prototype.normalize(form="NFC")
6893 When the normalize method is called with one argument form, the following steps are taken:
6894
6895 1. Let O be CheckObjectCoercible(this value).
6896 2. Let S be ToString(O).
6897 3. ReturnIfAbrupt(S).
6898 4. If form is not provided or undefined let form be "NFC".
6899 5. Let f be ToString(form).
6900 6. ReturnIfAbrupt(f).
6901 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6902 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
6903 9. Return ns.
6904
6905 The length property of the normalize method is 0.
6906
6907 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
6908 */
6909 unorm.shimApplied = false;
6910
6911 if (!String.prototype.normalize) {
6912 String.prototype.normalize = function(form) {
6913 var str = "" + this;
6914 form = form === undefined ? "NFC" : form;
6915
6916 if (form === "NFC") {
6917 return unorm.nfc(str);
6918 } else if (form === "NFD") {
6919 return unorm.nfd(str);
6920 } else if (form === "NFKC") {
6921 return unorm.nfkc(str);
6922 } else if (form === "NFKD") {
6923 return unorm.nfkd(str);
6924 } else {
6925 throw new RangeError("Invalid normalization form: " + form);
6926 }
6927 };
6928
6929 unorm.shimApplied = true;
6930 }
6931}(this));
8b095871
IC
6932</script>
6933 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
6934!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
6935},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
6936},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
6937</script>
6938 <script>/*!
6939 * Bootstrap v3.2.0 (http://getbootstrap.com)
6940 * Copyright 2011-2014 Twitter, Inc.
6941 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6942 */
6943if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);</script>
6944 <script>(function() {
6945 'use strict';
6946
6947 /**
6948 * Extend an Object with another Object's properties.
6949 *
6950 * The source objects are specified as additional arguments.
6951 *
6952 * @param dst Object the object to extend.
6953 *
6954 * @return Object the final object.
6955 */
6956 var _extend = function(dst) {
6957 var sources = Array.prototype.slice.call(arguments, 1);
6958 for (var i=0; i<sources.length; ++i) {
6959 var src = sources[i];
6960 for (var p in src) {
6961 if (src.hasOwnProperty(p)) dst[p] = src[p];
6962 }
6963 }
6964 return dst;
6965 };
6966
6967
6968 /**
6969 * Defer execution of given function.
6970 * @param {Function} func
6971 */
6972 var _defer = function(func) {
6973 if (typeof setImmediate === 'function') {
6974 return setImmediate(func);
6975 } else {
6976 return setTimeout(func, 0);
6977 }
6978 };
6979
6980 /**
6981 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
6982 */
6983 var Levenshtein = {
6984 /**
6985 * Calculate levenshtein distance of the two strings.
6986 *
6987 * @param str1 String the first string.
6988 * @param str2 String the second string.
6989 * @return Integer the levenshtein distance (0 and above).
6990 */
6991 get: function(str1, str2) {
6992 // base cases
6993 if (str1 === str2) return 0;
6994 if (str1.length === 0) return str2.length;
6995 if (str2.length === 0) return str1.length;
6996
6997 // two rows
6998 var prevRow = new Array(str2.length + 1),
6999 curCol, nextCol, i, j, tmp;
7000
7001 // initialise previous row
7002 for (i=0; i<prevRow.length; ++i) {
7003 prevRow[i] = i;
7004 }
7005
7006 // calculate current row distance from previous row
7007 for (i=0; i<str1.length; ++i) {
7008 nextCol = i + 1;
7009
7010 for (j=0; j<str2.length; ++j) {
7011 curCol = nextCol;
7012
7013 // substution
7014 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7015 // insertion
7016 tmp = curCol + 1;
7017 if (nextCol > tmp) {
7018 nextCol = tmp;
7019 }
7020 // deletion
7021 tmp = prevRow[j + 1] + 1;
7022 if (nextCol > tmp) {
7023 nextCol = tmp;
7024 }
7025
7026 // copy current col value into previous (in preparation for next iteration)
7027 prevRow[j] = curCol;
7028 }
7029
7030 // copy last col value into previous (in preparation for next iteration)
7031 prevRow[j] = nextCol;
7032 }
7033
7034 return nextCol;
7035 },
7036
7037 /**
7038 * Asynchronously calculate levenshtein distance of the two strings.
7039 *
7040 * @param str1 String the first string.
7041 * @param str2 String the second string.
7042 * @param cb Function callback function with signature: function(Error err, int distance)
7043 * @param [options] Object additional options.
7044 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7045 */
7046 getAsync: function(str1, str2, cb, options) {
7047 options = _extend({}, {
7048 progress: null
7049 }, options);
7050
7051 // base cases
7052 if (str1 === str2) return cb(null, 0);
7053 if (str1.length === 0) return cb(null, str2.length);
7054 if (str2.length === 0) return cb(null, str1.length);
7055
7056 // two rows
7057 var prevRow = new Array(str2.length + 1),
7058 curCol, nextCol,
7059 i, j, tmp,
7060 startTime, currentTime;
7061
7062 // initialise previous row
7063 for (i=0; i<prevRow.length; ++i) {
7064 prevRow[i] = i;
7065 }
7066
7067 nextCol = 1;
7068 i = 0;
7069 j = -1;
7070
7071 var __calculate = function() {
7072 // reset timer
7073 startTime = new Date().valueOf();
7074 currentTime = startTime;
7075
7076 // keep going until one second has elapsed
7077 while (currentTime - startTime < 1000) {
7078 // reached end of current row?
7079 if (str2.length <= (++j)) {
7080 // copy current into previous (in preparation for next iteration)
7081 prevRow[j] = nextCol;
7082
7083 // if already done all chars
7084 if (str1.length <= (++i)) {
7085 return cb(null, nextCol);
7086 }
7087 // else if we have more left to do
7088 else {
7089 nextCol = i + 1;
7090 j = 0;
7091 }
7092 }
7093
7094 // calculation
7095 curCol = nextCol;
7096
7097 // substution
7098 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7099 // insertion
7100 tmp = curCol + 1;
7101 if (nextCol > tmp) {
7102 nextCol = tmp;
7103 }
7104 // deletion
7105 tmp = prevRow[j + 1] + 1;
7106 if (nextCol > tmp) {
7107 nextCol = tmp;
7108 }
7109
7110 // copy current into previous (in preparation for next iteration)
7111 prevRow[j] = curCol;
7112
7113 // get current time
7114 currentTime = new Date().valueOf();
7115 }
7116
7117 // send a progress update?
7118 if (null !== options.progress) {
7119 try {
7120 options.progress.call(null, (i * 100.0/ str1.length));
7121 } catch (err) {
7122 return cb('Progress callback: ' + err.toString());
7123 }
7124 }
7125
7126 // next iteration
7127 _defer(__calculate);
7128 };
7129
7130 __calculate();
7131 }
7132
7133 };
7134
7135 // amd
7136 if (typeof define !== "undefined" && define !== null && define.amd) {
7137 define(function() {
7138 return Levenshtein;
7139 });
7140 }
7141 // commonjs
7142 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7143 module.exports = Levenshtein;
7144 }
7145 // web worker
7146 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7147 self.Levenshtein = Levenshtein;
7148 }
7149 // browser main thread
7150 else if (typeof window !== "undefined" && window !== null) {
7151 window.Levenshtein = Levenshtein;
7152 }
7153}());
7154
7155</script>
7156 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
7157write: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;
7158for(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-
71597,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]=
71600<=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},
7161setupTimingPattern: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=
7162j.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-
7163b-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,
7164c),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=
71650,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7166(d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
716778,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)-
7168j.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:"+
7169a);}},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:"+
7170a);}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+
71712)&&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),
7172LOG_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>
7173this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7174[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7175116],[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,
717643,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,
71773,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,
717855,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,
717945,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7180(a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7181correctLevel: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),
7182j=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",
7183d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7184</script>
7185 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoin = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
7186// (public) Constructor
7187function BigInteger(a, b, c) {
7188 if (!(this instanceof BigInteger))
7189 return new BigInteger(a, b, c)
7190
7191 if (a != null) {
7192 if ("number" == typeof a) this.fromNumber(a, b, c)
7193 else if (b == null && "string" != typeof a) this.fromString(a, 256)
7194 else this.fromString(a, b)
7195 }
7196}
7197
7198var proto = BigInteger.prototype
7199
7200// duck-typed isBigInteger
7201proto.__bigi = require('../package.json').version
7202BigInteger.isBigInteger = function (obj, check_ver) {
7203 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
7204}
7205
7206// Bits per digit
7207var dbits
7208
7209// am: Compute w_j += (x*this_i), propagate carries,
7210// c is initial carry, returns final carry.
7211// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
7212// We need to select the fastest one that works in this environment.
7213
7214// am1: use a single mult and divide to get the high bits,
7215// max digit bits should be 26 because
7216// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
7217function am1(i, x, w, j, c, n) {
7218 while (--n >= 0) {
7219 var v = x * this[i++] + w[j] + c
7220 c = Math.floor(v / 0x4000000)
7221 w[j++] = v & 0x3ffffff
7222 }
7223 return c
7224}
7225// am2 avoids a big mult-and-extract completely.
7226// Max digit bits should be <= 30 because we do bitwise ops
7227// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
7228function am2(i, x, w, j, c, n) {
7229 var xl = x & 0x7fff,
7230 xh = x >> 15
7231 while (--n >= 0) {
7232 var l = this[i] & 0x7fff
7233 var h = this[i++] >> 15
7234 var m = xh * l + h * xl
7235 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
7236 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
7237 w[j++] = l & 0x3fffffff
7238 }
7239 return c
7240}
7241// Alternately, set max digit bits to 28 since some
7242// browsers slow down when dealing with 32-bit numbers.
7243function am3(i, x, w, j, c, n) {
7244 var xl = x & 0x3fff,
7245 xh = x >> 14
7246 while (--n >= 0) {
7247 var l = this[i] & 0x3fff
7248 var h = this[i++] >> 14
7249 var m = xh * l + h * xl
7250 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
7251 c = (l >> 28) + (m >> 14) + xh * h
7252 w[j++] = l & 0xfffffff
7253 }
7254 return c
7255}
7256
7257// wtf?
7258BigInteger.prototype.am = am1
7259dbits = 26
7260
7261BigInteger.prototype.DB = dbits
7262BigInteger.prototype.DM = ((1 << dbits) - 1)
7263var DV = BigInteger.prototype.DV = (1 << dbits)
7264
7265var BI_FP = 52
7266BigInteger.prototype.FV = Math.pow(2, BI_FP)
7267BigInteger.prototype.F1 = BI_FP - dbits
7268BigInteger.prototype.F2 = 2 * dbits - BI_FP
7269
7270// Digit conversions
7271var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
7272var BI_RC = new Array()
7273var rr, vv
7274rr = "0".charCodeAt(0)
7275for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
7276rr = "a".charCodeAt(0)
7277for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7278rr = "A".charCodeAt(0)
7279for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7280
7281function int2char(n) {
7282 return BI_RM.charAt(n)
7283}
7284
7285function intAt(s, i) {
7286 var c = BI_RC[s.charCodeAt(i)]
7287 return (c == null) ? -1 : c
7288}
7289
7290// (protected) copy this to r
7291function bnpCopyTo(r) {
7292 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
7293 r.t = this.t
7294 r.s = this.s
7295}
7296
7297// (protected) set from integer value x, -DV <= x < DV
7298function bnpFromInt(x) {
7299 this.t = 1
7300 this.s = (x < 0) ? -1 : 0
7301 if (x > 0) this[0] = x
7302 else if (x < -1) this[0] = x + DV
7303 else this.t = 0
7304}
7305
7306// return bigint initialized to value
7307function nbv(i) {
7308 var r = new BigInteger()
7309 r.fromInt(i)
7310 return r
7311}
7312
7313// (protected) set from string and radix
7314function bnpFromString(s, b) {
7315 var self = this
7316
7317 var k
7318 if (b == 16) k = 4
7319 else if (b == 8) k = 3
7320 else if (b == 256) k = 8; // byte array
7321 else if (b == 2) k = 1
7322 else if (b == 32) k = 5
7323 else if (b == 4) k = 2
7324 else {
7325 self.fromRadix(s, b)
7326 return
7327 }
7328 self.t = 0
7329 self.s = 0
7330 var i = s.length,
7331 mi = false,
7332 sh = 0
7333 while (--i >= 0) {
7334 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
7335 if (x < 0) {
7336 if (s.charAt(i) == "-") mi = true
7337 continue
7338 }
7339 mi = false
7340 if (sh == 0)
7341 self[self.t++] = x
7342 else if (sh + k > self.DB) {
7343 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
7344 self[self.t++] = (x >> (self.DB - sh))
7345 } else
7346 self[self.t - 1] |= x << sh
7347 sh += k
7348 if (sh >= self.DB) sh -= self.DB
7349 }
7350 if (k == 8 && (s[0] & 0x80) != 0) {
7351 self.s = -1
7352 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
7353 }
7354 self.clamp()
7355 if (mi) BigInteger.ZERO.subTo(self, self)
7356}
7357
7358// (protected) clamp off excess high words
7359function bnpClamp() {
7360 var c = this.s & this.DM
7361 while (this.t > 0 && this[this.t - 1] == c)--this.t
7362}
7363
7364// (public) return string representation in given radix
7365function bnToString(b) {
7366 var self = this
7367 if (self.s < 0) return "-" + self.negate()
7368 .toString(b)
7369 var k
7370 if (b == 16) k = 4
7371 else if (b == 8) k = 3
7372 else if (b == 2) k = 1
7373 else if (b == 32) k = 5
7374 else if (b == 4) k = 2
7375 else return self.toRadix(b)
7376 var km = (1 << k) - 1,
7377 d, m = false,
7378 r = "",
7379 i = self.t
7380 var p = self.DB - (i * self.DB) % k
7381 if (i-- > 0) {
7382 if (p < self.DB && (d = self[i] >> p) > 0) {
7383 m = true
7384 r = int2char(d)
7385 }
7386 while (i >= 0) {
7387 if (p < k) {
7388 d = (self[i] & ((1 << p) - 1)) << (k - p)
7389 d |= self[--i] >> (p += self.DB - k)
7390 } else {
7391 d = (self[i] >> (p -= k)) & km
7392 if (p <= 0) {
7393 p += self.DB
7394 --i
7395 }
7396 }
7397 if (d > 0) m = true
7398 if (m) r += int2char(d)
7399 }
7400 }
7401 return m ? r : "0"
7402}
7403
7404// (public) -this
7405function bnNegate() {
7406 var r = new BigInteger()
7407 BigInteger.ZERO.subTo(this, r)
7408 return r
7409}
7410
7411// (public) |this|
7412function bnAbs() {
7413 return (this.s < 0) ? this.negate() : this
7414}
7415
7416// (public) return + if this > a, - if this < a, 0 if equal
7417function bnCompareTo(a) {
7418 var r = this.s - a.s
ab78acc6
IC
7419 if (r != 0) return r
7420 var i = this.t
7421 r = i - a.t
7422 if (r != 0) return (this.s < 0) ? -r : r
7423 while (--i >= 0)
7424 if ((r = this[i] - a[i]) != 0) return r
7425 return 0
7426}
3af2954a 7427
8b095871
IC
7428// returns bit length of the integer x
7429function nbits(x) {
7430 var r = 1,
7431 t
7432 if ((t = x >>> 16) != 0) {
7433 x = t
7434 r += 16
7435 }
7436 if ((t = x >> 8) != 0) {
7437 x = t
7438 r += 8
7439 }
7440 if ((t = x >> 4) != 0) {
7441 x = t
7442 r += 4
7443 }
7444 if ((t = x >> 2) != 0) {
7445 x = t
7446 r += 2
7447 }
7448 if ((t = x >> 1) != 0) {
7449 x = t
7450 r += 1
7451 }
7452 return r
7453}
7454
7455// (public) return the number of bits in "this"
7456function bnBitLength() {
7457 if (this.t <= 0) return 0
7458 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
7459}
7460
7461// (public) return the number of bytes in "this"
7462function bnByteLength() {
7463 return this.bitLength() >> 3
7464}
7465
7466// (protected) r = this << n*DB
7467function bnpDLShiftTo(n, r) {
7468 var i
7469 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
7470 for (i = n - 1; i >= 0; --i) r[i] = 0
7471 r.t = this.t + n
7472 r.s = this.s
7473}
7474
7475// (protected) r = this >> n*DB
7476function bnpDRShiftTo(n, r) {
7477 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
7478 r.t = Math.max(this.t - n, 0)
7479 r.s = this.s
7480}
7481
7482// (protected) r = this << n
7483function bnpLShiftTo(n, r) {
7484 var self = this
7485 var bs = n % self.DB
7486 var cbs = self.DB - bs
7487 var bm = (1 << cbs) - 1
7488 var ds = Math.floor(n / self.DB),
7489 c = (self.s << bs) & self.DM,
7490 i
7491 for (i = self.t - 1; i >= 0; --i) {
7492 r[i + ds + 1] = (self[i] >> cbs) | c
7493 c = (self[i] & bm) << bs
7494 }
7495 for (i = ds - 1; i >= 0; --i) r[i] = 0
7496 r[ds] = c
7497 r.t = self.t + ds + 1
7498 r.s = self.s
7499 r.clamp()
7500}
7501
7502// (protected) r = this >> n
7503function bnpRShiftTo(n, r) {
7504 var self = this
7505 r.s = self.s
7506 var ds = Math.floor(n / self.DB)
7507 if (ds >= self.t) {
7508 r.t = 0
7509 return
7510 }
7511 var bs = n % self.DB
7512 var cbs = self.DB - bs
7513 var bm = (1 << bs) - 1
7514 r[0] = self[ds] >> bs
7515 for (var i = ds + 1; i < self.t; ++i) {
7516 r[i - ds - 1] |= (self[i] & bm) << cbs
7517 r[i - ds] = self[i] >> bs
7518 }
7519 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
7520 r.t = self.t - ds
7521 r.clamp()
7522}
7523
7524// (protected) r = this - a
7525function bnpSubTo(a, r) {
7526 var self = this
7527 var i = 0,
7528 c = 0,
7529 m = Math.min(a.t, self.t)
7530 while (i < m) {
7531 c += self[i] - a[i]
7532 r[i++] = c & self.DM
7533 c >>= self.DB
7534 }
7535 if (a.t < self.t) {
7536 c -= a.s
7537 while (i < self.t) {
7538 c += self[i]
7539 r[i++] = c & self.DM
7540 c >>= self.DB
7541 }
7542 c += self.s
7543 } else {
7544 c += self.s
7545 while (i < a.t) {
7546 c -= a[i]
7547 r[i++] = c & self.DM
7548 c >>= self.DB
7549 }
7550 c -= a.s
7551 }
7552 r.s = (c < 0) ? -1 : 0
7553 if (c < -1) r[i++] = self.DV + c
7554 else if (c > 0) r[i++] = c
7555 r.t = i
7556 r.clamp()
7557}
7558
7559// (protected) r = this * a, r != this,a (HAC 14.12)
7560// "this" should be the larger one if appropriate.
7561function bnpMultiplyTo(a, r) {
7562 var x = this.abs(),
7563 y = a.abs()
7564 var i = x.t
7565 r.t = i + y.t
7566 while (--i >= 0) r[i] = 0
7567 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
7568 r.s = 0
7569 r.clamp()
7570 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
7571}
7572
7573// (protected) r = this^2, r != this (HAC 14.16)
7574function bnpSquareTo(r) {
7575 var x = this.abs()
7576 var i = r.t = 2 * x.t
7577 while (--i >= 0) r[i] = 0
7578 for (i = 0; i < x.t - 1; ++i) {
7579 var c = x.am(i, x[i], r, 2 * i, 0, 1)
7580 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
7581 r[i + x.t] -= x.DV
7582 r[i + x.t + 1] = 1
7583 }
7584 }
7585 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
7586 r.s = 0
7587 r.clamp()
7588}
7589
7590// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
7591// r != q, this != m. q or r may be null.
7592function bnpDivRemTo(m, q, r) {
7593 var self = this
7594 var pm = m.abs()
7595 if (pm.t <= 0) return
7596 var pt = self.abs()
7597 if (pt.t < pm.t) {
7598 if (q != null) q.fromInt(0)
7599 if (r != null) self.copyTo(r)
7600 return
7601 }
7602 if (r == null) r = new BigInteger()
7603 var y = new BigInteger(),
7604 ts = self.s,
7605 ms = m.s
7606 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
7607 if (nsh > 0) {
7608 pm.lShiftTo(nsh, y)
7609 pt.lShiftTo(nsh, r)
7610 } else {
7611 pm.copyTo(y)
7612 pt.copyTo(r)
7613 }
7614 var ys = y.t
7615 var y0 = y[ys - 1]
7616 if (y0 == 0) return
7617 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
7618 var d1 = self.FV / yt,
7619 d2 = (1 << self.F1) / yt,
7620 e = 1 << self.F2
7621 var i = r.t,
7622 j = i - ys,
7623 t = (q == null) ? new BigInteger() : q
7624 y.dlShiftTo(j, t)
7625 if (r.compareTo(t) >= 0) {
7626 r[r.t++] = 1
7627 r.subTo(t, r)
7628 }
7629 BigInteger.ONE.dlShiftTo(ys, t)
7630 t.subTo(y, y); // "negative" y so we can replace sub with am later
7631 while (y.t < ys) y[y.t++] = 0
7632 while (--j >= 0) {
7633 // Estimate quotient digit
7634 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
7635 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
7636 y.dlShiftTo(j, t)
7637 r.subTo(t, r)
7638 while (r[i] < --qd) r.subTo(t, r)
7639 }
7640 }
7641 if (q != null) {
7642 r.drShiftTo(ys, q)
7643 if (ts != ms) BigInteger.ZERO.subTo(q, q)
7644 }
7645 r.t = ys
7646 r.clamp()
7647 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
7648 if (ts < 0) BigInteger.ZERO.subTo(r, r)
7649}
7650
7651// (public) this mod a
7652function bnMod(a) {
7653 var r = new BigInteger()
7654 this.abs()
7655 .divRemTo(a, null, r)
7656 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
7657 return r
7658}
7659
7660// Modular reduction using "classic" algorithm
7661function Classic(m) {
7662 this.m = m
7663}
7664
7665function cConvert(x) {
7666 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
7667 else return x
7668}
7669
7670function cRevert(x) {
7671 return x
7672}
7673
7674function cReduce(x) {
7675 x.divRemTo(this.m, null, x)
7676}
7677
7678function cMulTo(x, y, r) {
7679 x.multiplyTo(y, r)
7680 this.reduce(r)
7681}
7682
7683function cSqrTo(x, r) {
7684 x.squareTo(r)
7685 this.reduce(r)
7686}
7687
7688Classic.prototype.convert = cConvert
7689Classic.prototype.revert = cRevert
7690Classic.prototype.reduce = cReduce
7691Classic.prototype.mulTo = cMulTo
7692Classic.prototype.sqrTo = cSqrTo
7693
7694// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
7695// justification:
7696// xy == 1 (mod m)
7697// xy = 1+km
7698// xy(2-xy) = (1+km)(1-km)
7699// x[y(2-xy)] = 1-k^2m^2
7700// x[y(2-xy)] == 1 (mod m^2)
7701// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
7702// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
7703// JS multiply "overflows" differently from C/C++, so care is needed here.
7704function bnpInvDigit() {
7705 if (this.t < 1) return 0
7706 var x = this[0]
7707 if ((x & 1) == 0) return 0
7708 var y = x & 3; // y == 1/x mod 2^2
7709 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
7710 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
7711 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
7712 // last step - calculate inverse mod DV directly
7713 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
7714 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
7715 // we really want the negative inverse, and -DV < y < DV
7716 return (y > 0) ? this.DV - y : -y
7717}
7718
7719// Montgomery reduction
7720function Montgomery(m) {
7721 this.m = m
7722 this.mp = m.invDigit()
7723 this.mpl = this.mp & 0x7fff
7724 this.mph = this.mp >> 15
7725 this.um = (1 << (m.DB - 15)) - 1
7726 this.mt2 = 2 * m.t
7727}
7728
7729// xR mod m
7730function montConvert(x) {
7731 var r = new BigInteger()
7732 x.abs()
7733 .dlShiftTo(this.m.t, r)
7734 r.divRemTo(this.m, null, r)
7735 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
7736 return r
7737}
7738
7739// x/R mod m
7740function montRevert(x) {
7741 var r = new BigInteger()
7742 x.copyTo(r)
7743 this.reduce(r)
7744 return r
7745}
7746
7747// x = x/R mod m (HAC 14.32)
7748function montReduce(x) {
7749 while (x.t <= this.mt2) // pad x so am has enough room later
7750 x[x.t++] = 0
7751 for (var i = 0; i < this.m.t; ++i) {
7752 // faster way of calculating u0 = x[i]*mp mod DV
7753 var j = x[i] & 0x7fff
7754 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
7755 // use am to combine the multiply-shift-add into one call
7756 j = i + this.m.t
7757 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
7758 // propagate carry
7759 while (x[j] >= x.DV) {
7760 x[j] -= x.DV
7761 x[++j]++
7762 }
7763 }
7764 x.clamp()
7765 x.drShiftTo(this.m.t, x)
7766 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
7767}
7768
7769// r = "x^2/R mod m"; x != r
7770function montSqrTo(x, r) {
7771 x.squareTo(r)
7772 this.reduce(r)
7773}
7774
7775// r = "xy/R mod m"; x,y != r
7776function montMulTo(x, y, r) {
7777 x.multiplyTo(y, r)
7778 this.reduce(r)
7779}
7780
7781Montgomery.prototype.convert = montConvert
7782Montgomery.prototype.revert = montRevert
7783Montgomery.prototype.reduce = montReduce
7784Montgomery.prototype.mulTo = montMulTo
7785Montgomery.prototype.sqrTo = montSqrTo
7786
7787// (protected) true iff this is even
7788function bnpIsEven() {
7789 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
7790}
7791
7792// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
7793function bnpExp(e, z) {
7794 if (e > 0xffffffff || e < 1) return BigInteger.ONE
7795 var r = new BigInteger(),
7796 r2 = new BigInteger(),
7797 g = z.convert(this),
7798 i = nbits(e) - 1
7799 g.copyTo(r)
7800 while (--i >= 0) {
7801 z.sqrTo(r, r2)
7802 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
7803 else {
7804 var t = r
7805 r = r2
7806 r2 = t
7807 }
7808 }
7809 return z.revert(r)
7810}
7811
7812// (public) this^e % m, 0 <= e < 2^32
7813function bnModPowInt(e, m) {
7814 var z
7815 if (e < 256 || m.isEven()) z = new Classic(m)
7816 else z = new Montgomery(m)
7817 return this.exp(e, z)
7818}
7819
7820// protected
7821proto.copyTo = bnpCopyTo
7822proto.fromInt = bnpFromInt
7823proto.fromString = bnpFromString
7824proto.clamp = bnpClamp
7825proto.dlShiftTo = bnpDLShiftTo
7826proto.drShiftTo = bnpDRShiftTo
7827proto.lShiftTo = bnpLShiftTo
7828proto.rShiftTo = bnpRShiftTo
7829proto.subTo = bnpSubTo
7830proto.multiplyTo = bnpMultiplyTo
7831proto.squareTo = bnpSquareTo
7832proto.divRemTo = bnpDivRemTo
7833proto.invDigit = bnpInvDigit
7834proto.isEven = bnpIsEven
7835proto.exp = bnpExp
7836
7837// public
7838proto.toString = bnToString
7839proto.negate = bnNegate
7840proto.abs = bnAbs
7841proto.compareTo = bnCompareTo
7842proto.bitLength = bnBitLength
7843proto.byteLength = bnByteLength
7844proto.mod = bnMod
7845proto.modPowInt = bnModPowInt
7846
7847// (public)
7848function bnClone() {
7849 var r = new BigInteger()
7850 this.copyTo(r)
7851 return r
7852}
7853
7854// (public) return value as integer
7855function bnIntValue() {
7856 if (this.s < 0) {
7857 if (this.t == 1) return this[0] - this.DV
7858 else if (this.t == 0) return -1
7859 } else if (this.t == 1) return this[0]
7860 else if (this.t == 0) return 0
7861 // assumes 16 < DB < 32
7862 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
7863}
7864
7865// (public) return value as byte
7866function bnByteValue() {
7867 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
7868}
7869
7870// (public) return value as short (assumes DB>=16)
7871function bnShortValue() {
7872 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
7873}
7874
7875// (protected) return x s.t. r^x < DV
7876function bnpChunkSize(r) {
7877 return Math.floor(Math.LN2 * this.DB / Math.log(r))
7878}
7879
7880// (public) 0 if this == 0, 1 if this > 0
7881function bnSigNum() {
7882 if (this.s < 0) return -1
7883 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
7884 else return 1
7885}
7886
7887// (protected) convert to radix string
7888function bnpToRadix(b) {
7889 if (b == null) b = 10
7890 if (this.signum() == 0 || b < 2 || b > 36) return "0"
7891 var cs = this.chunkSize(b)
7892 var a = Math.pow(b, cs)
7893 var d = nbv(a),
7894 y = new BigInteger(),
7895 z = new BigInteger(),
7896 r = ""
7897 this.divRemTo(d, y, z)
7898 while (y.signum() > 0) {
7899 r = (a + z.intValue())
7900 .toString(b)
7901 .substr(1) + r
7902 y.divRemTo(d, y, z)
7903 }
7904 return z.intValue()
7905 .toString(b) + r
7906}
7907
7908// (protected) convert from radix string
7909function bnpFromRadix(s, b) {
7910 var self = this
7911 self.fromInt(0)
7912 if (b == null) b = 10
7913 var cs = self.chunkSize(b)
7914 var d = Math.pow(b, cs),
7915 mi = false,
7916 j = 0,
7917 w = 0
7918 for (var i = 0; i < s.length; ++i) {
7919 var x = intAt(s, i)
7920 if (x < 0) {
7921 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
7922 continue
7923 }
7924 w = b * w + x
7925 if (++j >= cs) {
7926 self.dMultiply(d)
7927 self.dAddOffset(w, 0)
7928 j = 0
7929 w = 0
7930 }
7931 }
7932 if (j > 0) {
7933 self.dMultiply(Math.pow(b, j))
7934 self.dAddOffset(w, 0)
7935 }
7936 if (mi) BigInteger.ZERO.subTo(self, self)
7937}
7938
7939// (protected) alternate constructor
7940function bnpFromNumber(a, b, c) {
7941 var self = this
7942 if ("number" == typeof b) {
7943 // new BigInteger(int,int,RNG)
7944 if (a < 2) self.fromInt(1)
7945 else {
7946 self.fromNumber(a, c)
7947 if (!self.testBit(a - 1)) // force MSB set
7948 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
7949 if (self.isEven()) self.dAddOffset(1, 0); // force odd
7950 while (!self.isProbablePrime(b)) {
7951 self.dAddOffset(2, 0)
7952 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
7953 }
7954 }
7955 } else {
7956 // new BigInteger(int,RNG)
7957 var x = new Array(),
7958 t = a & 7
7959 x.length = (a >> 3) + 1
7960 b.nextBytes(x)
7961 if (t > 0) x[0] &= ((1 << t) - 1)
7962 else x[0] = 0
7963 self.fromString(x, 256)
7964 }
7965}
7966
7967// (public) convert to bigendian byte array
7968function bnToByteArray() {
7969 var self = this
7970 var i = self.t,
7971 r = new Array()
7972 r[0] = self.s
7973 var p = self.DB - (i * self.DB) % 8,
7974 d, k = 0
7975 if (i-- > 0) {
7976 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
7977 r[k++] = d | (self.s << (self.DB - p))
7978 while (i >= 0) {
7979 if (p < 8) {
7980 d = (self[i] & ((1 << p) - 1)) << (8 - p)
7981 d |= self[--i] >> (p += self.DB - 8)
7982 } else {
7983 d = (self[i] >> (p -= 8)) & 0xff
7984 if (p <= 0) {
7985 p += self.DB
7986 --i
7987 }
7988 }
7989 if ((d & 0x80) != 0) d |= -256
7990 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
7991 if (k > 0 || d != self.s) r[k++] = d
7992 }
7993 }
7994 return r
7995}
7996
7997function bnEquals(a) {
7998 return (this.compareTo(a) == 0)
7999}
8000
8001function bnMin(a) {
8002 return (this.compareTo(a) < 0) ? this : a
8003}
8004
8005function bnMax(a) {
8006 return (this.compareTo(a) > 0) ? this : a
8007}
8008
8009// (protected) r = this op a (bitwise)
8010function bnpBitwiseTo(a, op, r) {
8011 var self = this
8012 var i, f, m = Math.min(a.t, self.t)
8013 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
8014 if (a.t < self.t) {
8015 f = a.s & self.DM
8016 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
8017 r.t = self.t
8018 } else {
8019 f = self.s & self.DM
8020 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
8021 r.t = a.t
8022 }
8023 r.s = op(self.s, a.s)
8024 r.clamp()
8025}
8026
8027// (public) this & a
8028function op_and(x, y) {
8029 return x & y
8030}
8031
8032function bnAnd(a) {
8033 var r = new BigInteger()
8034 this.bitwiseTo(a, op_and, r)
8035 return r
8036}
8037
8038// (public) this | a
8039function op_or(x, y) {
8040 return x | y
8041}
8042
8043function bnOr(a) {
8044 var r = new BigInteger()
8045 this.bitwiseTo(a, op_or, r)
8046 return r
8047}
8048
8049// (public) this ^ a
8050function op_xor(x, y) {
8051 return x ^ y
8052}
8053
8054function bnXor(a) {
8055 var r = new BigInteger()
8056 this.bitwiseTo(a, op_xor, r)
8057 return r
8058}
8059
8060// (public) this & ~a
8061function op_andnot(x, y) {
8062 return x & ~y
8063}
8064
8065function bnAndNot(a) {
8066 var r = new BigInteger()
8067 this.bitwiseTo(a, op_andnot, r)
8068 return r
8069}
8070
8071// (public) ~this
8072function bnNot() {
8073 var r = new BigInteger()
8074 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
8075 r.t = this.t
8076 r.s = ~this.s
8077 return r
8078}
8079
8080// (public) this << n
8081function bnShiftLeft(n) {
8082 var r = new BigInteger()
8083 if (n < 0) this.rShiftTo(-n, r)
8084 else this.lShiftTo(n, r)
8085 return r
8086}
8087
8088// (public) this >> n
8089function bnShiftRight(n) {
8090 var r = new BigInteger()
8091 if (n < 0) this.lShiftTo(-n, r)
8092 else this.rShiftTo(n, r)
8093 return r
8094}
8095
8096// return index of lowest 1-bit in x, x < 2^31
8097function lbit(x) {
8098 if (x == 0) return -1
8099 var r = 0
8100 if ((x & 0xffff) == 0) {
8101 x >>= 16
8102 r += 16
8103 }
8104 if ((x & 0xff) == 0) {
8105 x >>= 8
8106 r += 8
8107 }
8108 if ((x & 0xf) == 0) {
8109 x >>= 4
8110 r += 4
8111 }
8112 if ((x & 3) == 0) {
8113 x >>= 2
8114 r += 2
8115 }
8116 if ((x & 1) == 0)++r
8117 return r
8118}
8119
8120// (public) returns index of lowest 1-bit (or -1 if none)
8121function bnGetLowestSetBit() {
8122 for (var i = 0; i < this.t; ++i)
8123 if (this[i] != 0) return i * this.DB + lbit(this[i])
8124 if (this.s < 0) return this.t * this.DB
8125 return -1
8126}
8127
8128// return number of 1 bits in x
8129function cbit(x) {
8130 var r = 0
8131 while (x != 0) {
8132 x &= x - 1
8133 ++r
8134 }
8135 return r
8136}
8137
8138// (public) return number of set bits
8139function bnBitCount() {
8140 var r = 0,
8141 x = this.s & this.DM
8142 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
8143 return r
8144}
8145
8146// (public) true iff nth bit is set
8147function bnTestBit(n) {
8148 var j = Math.floor(n / this.DB)
8149 if (j >= this.t) return (this.s != 0)
8150 return ((this[j] & (1 << (n % this.DB))) != 0)
8151}
8152
8153// (protected) this op (1<<n)
8154function bnpChangeBit(n, op) {
8155 var r = BigInteger.ONE.shiftLeft(n)
8156 this.bitwiseTo(r, op, r)
8157 return r
8158}
8159
8160// (public) this | (1<<n)
8161function bnSetBit(n) {
8162 return this.changeBit(n, op_or)
8163}
8164
8165// (public) this & ~(1<<n)
8166function bnClearBit(n) {
8167 return this.changeBit(n, op_andnot)
8168}
8169
8170// (public) this ^ (1<<n)
8171function bnFlipBit(n) {
8172 return this.changeBit(n, op_xor)
8173}
8174
8175// (protected) r = this + a
8176function bnpAddTo(a, r) {
8177 var self = this
8178
8179 var i = 0,
8180 c = 0,
8181 m = Math.min(a.t, self.t)
8182 while (i < m) {
8183 c += self[i] + a[i]
8184 r[i++] = c & self.DM
8185 c >>= self.DB
8186 }
8187 if (a.t < self.t) {
8188 c += a.s
8189 while (i < self.t) {
8190 c += self[i]
8191 r[i++] = c & self.DM
8192 c >>= self.DB
8193 }
8194 c += self.s
8195 } else {
8196 c += self.s
8197 while (i < a.t) {
8198 c += a[i]
8199 r[i++] = c & self.DM
8200 c >>= self.DB
8201 }
8202 c += a.s
8203 }
8204 r.s = (c < 0) ? -1 : 0
8205 if (c > 0) r[i++] = c
8206 else if (c < -1) r[i++] = self.DV + c
8207 r.t = i
8208 r.clamp()
8209}
8210
8211// (public) this + a
8212function bnAdd(a) {
8213 var r = new BigInteger()
8214 this.addTo(a, r)
8215 return r
8216}
8217
8218// (public) this - a
8219function bnSubtract(a) {
8220 var r = new BigInteger()
8221 this.subTo(a, r)
8222 return r
8223}
8224
8225// (public) this * a
8226function bnMultiply(a) {
8227 var r = new BigInteger()
8228 this.multiplyTo(a, r)
8229 return r
8230}
8231
8232// (public) this^2
8233function bnSquare() {
8234 var r = new BigInteger()
8235 this.squareTo(r)
8236 return r
8237}
8238
8239// (public) this / a
8240function bnDivide(a) {
8241 var r = new BigInteger()
8242 this.divRemTo(a, r, null)
8243 return r
8244}
8245
8246// (public) this % a
8247function bnRemainder(a) {
8248 var r = new BigInteger()
8249 this.divRemTo(a, null, r)
8250 return r
8251}
8252
8253// (public) [this/a,this%a]
8254function bnDivideAndRemainder(a) {
8255 var q = new BigInteger(),
8256 r = new BigInteger()
8257 this.divRemTo(a, q, r)
8258 return new Array(q, r)
8259}
8260
8261// (protected) this *= n, this >= 0, 1 < n < DV
8262function bnpDMultiply(n) {
8263 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
8264 ++this.t
8265 this.clamp()
8266}
8267
8268// (protected) this += n << w words, this >= 0
8269function bnpDAddOffset(n, w) {
8270 if (n == 0) return
8271 while (this.t <= w) this[this.t++] = 0
8272 this[w] += n
8273 while (this[w] >= this.DV) {
8274 this[w] -= this.DV
8275 if (++w >= this.t) this[this.t++] = 0
8276 ++this[w]
8277 }
8278}
8279
8280// A "null" reducer
8281function NullExp() {}
8282
8283function nNop(x) {
8284 return x
8285}
8286
8287function nMulTo(x, y, r) {
8288 x.multiplyTo(y, r)
8289}
8290
8291function nSqrTo(x, r) {
8292 x.squareTo(r)
8293}
8294
8295NullExp.prototype.convert = nNop
8296NullExp.prototype.revert = nNop
8297NullExp.prototype.mulTo = nMulTo
8298NullExp.prototype.sqrTo = nSqrTo
8299
8300// (public) this^e
8301function bnPow(e) {
8302 return this.exp(e, new NullExp())
8303}
8304
8305// (protected) r = lower n words of "this * a", a.t <= n
8306// "this" should be the larger one if appropriate.
8307function bnpMultiplyLowerTo(a, n, r) {
8308 var i = Math.min(this.t + a.t, n)
8309 r.s = 0; // assumes a,this >= 0
8310 r.t = i
8311 while (i > 0) r[--i] = 0
8312 var j
8313 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
8314 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
8315 r.clamp()
8316}
8317
8318// (protected) r = "this * a" without lower n words, n > 0
8319// "this" should be the larger one if appropriate.
8320function bnpMultiplyUpperTo(a, n, r) {
8321 --n
8322 var i = r.t = this.t + a.t - n
8323 r.s = 0; // assumes a,this >= 0
8324 while (--i >= 0) r[i] = 0
8325 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
8326 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
8327 r.clamp()
8328 r.drShiftTo(1, r)
8329}
8330
8331// Barrett modular reduction
8332function Barrett(m) {
8333 // setup Barrett
8334 this.r2 = new BigInteger()
8335 this.q3 = new BigInteger()
8336 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
8337 this.mu = this.r2.divide(m)
8338 this.m = m
8339}
8340
8341function barrettConvert(x) {
8342 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
8343 else if (x.compareTo(this.m) < 0) return x
8344 else {
8345 var r = new BigInteger()
8346 x.copyTo(r)
8347 this.reduce(r)
8348 return r
8349 }
8350}
8351
8352function barrettRevert(x) {
8353 return x
8354}
8355
8356// x = x mod m (HAC 14.42)
8357function barrettReduce(x) {
8358 var self = this
8359 x.drShiftTo(self.m.t - 1, self.r2)
8360 if (x.t > self.m.t + 1) {
8361 x.t = self.m.t + 1
8362 x.clamp()
8363 }
8364 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
8365 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
8366 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
8367 x.subTo(self.r2, x)
8368 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
8369}
8370
8371// r = x^2 mod m; x != r
8372function barrettSqrTo(x, r) {
8373 x.squareTo(r)
8374 this.reduce(r)
8375}
8376
8377// r = x*y mod m; x,y != r
8378function barrettMulTo(x, y, r) {
8379 x.multiplyTo(y, r)
8380 this.reduce(r)
8381}
8382
8383Barrett.prototype.convert = barrettConvert
8384Barrett.prototype.revert = barrettRevert
8385Barrett.prototype.reduce = barrettReduce
8386Barrett.prototype.mulTo = barrettMulTo
8387Barrett.prototype.sqrTo = barrettSqrTo
8388
8389// (public) this^e % m (HAC 14.85)
8390function bnModPow(e, m) {
8391 var i = e.bitLength(),
8392 k, r = nbv(1),
8393 z
8394 if (i <= 0) return r
8395 else if (i < 18) k = 1
8396 else if (i < 48) k = 3
8397 else if (i < 144) k = 4
8398 else if (i < 768) k = 5
8399 else k = 6
8400 if (i < 8)
8401 z = new Classic(m)
8402 else if (m.isEven())
8403 z = new Barrett(m)
8404 else
8405 z = new Montgomery(m)
8406
8407 // precomputation
8408 var g = new Array(),
8409 n = 3,
8410 k1 = k - 1,
8411 km = (1 << k) - 1
8412 g[1] = z.convert(this)
8413 if (k > 1) {
8414 var g2 = new BigInteger()
8415 z.sqrTo(g[1], g2)
8416 while (n <= km) {
8417 g[n] = new BigInteger()
8418 z.mulTo(g2, g[n - 2], g[n])
8419 n += 2
8420 }
8421 }
8422
8423 var j = e.t - 1,
8424 w, is1 = true,
8425 r2 = new BigInteger(),
8426 t
8427 i = nbits(e[j]) - 1
8428 while (j >= 0) {
8429 if (i >= k1) w = (e[j] >> (i - k1)) & km
8430 else {
8431 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
8432 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8433 }
8434
8435 n = k
8436 while ((w & 1) == 0) {
8437 w >>= 1
8438 --n
8439 }
8440 if ((i -= n) < 0) {
8441 i += this.DB
8442 --j
8443 }
8444 if (is1) { // ret == 1, don't bother squaring or multiplying it
8445 g[w].copyTo(r)
8446 is1 = false
8447 } else {
8448 while (n > 1) {
8449 z.sqrTo(r, r2)
8450 z.sqrTo(r2, r)
8451 n -= 2
8452 }
8453 if (n > 0) z.sqrTo(r, r2)
8454 else {
8455 t = r
8456 r = r2
8457 r2 = t
8458 }
8459 z.mulTo(r2, g[w], r)
8460 }
8461
8462 while (j >= 0 && (e[j] & (1 << i)) == 0) {
8463 z.sqrTo(r, r2)
8464 t = r
8465 r = r2
8466 r2 = t
8467 if (--i < 0) {
8468 i = this.DB - 1
8469 --j
8470 }
8471 }
8472 }
8473 return z.revert(r)
8474}
8475
8476// (public) gcd(this,a) (HAC 14.54)
8477function bnGCD(a) {
8478 var x = (this.s < 0) ? this.negate() : this.clone()
8479 var y = (a.s < 0) ? a.negate() : a.clone()
8480 if (x.compareTo(y) < 0) {
8481 var t = x
8482 x = y
8483 y = t
8484 }
8485 var i = x.getLowestSetBit(),
8486 g = y.getLowestSetBit()
8487 if (g < 0) return x
8488 if (i < g) g = i
8489 if (g > 0) {
8490 x.rShiftTo(g, x)
8491 y.rShiftTo(g, y)
8492 }
8493 while (x.signum() > 0) {
8494 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
8495 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
8496 if (x.compareTo(y) >= 0) {
8497 x.subTo(y, x)
8498 x.rShiftTo(1, x)
8499 } else {
8500 y.subTo(x, y)
8501 y.rShiftTo(1, y)
8502 }
8503 }
8504 if (g > 0) y.lShiftTo(g, y)
8505 return y
8506}
8507
8508// (protected) this % n, n < 2^26
8509function bnpModInt(n) {
8510 if (n <= 0) return 0
8511 var d = this.DV % n,
8512 r = (this.s < 0) ? n - 1 : 0
8513 if (this.t > 0)
8514 if (d == 0) r = this[0] % n
8515 else
8516 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
8517 return r
8518}
8519
8520// (public) 1/this % m (HAC 14.61)
8521function bnModInverse(m) {
8522 var ac = m.isEven()
8523 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
8524 var u = m.clone(),
8525 v = this.clone()
8526 var a = nbv(1),
8527 b = nbv(0),
8528 c = nbv(0),
8529 d = nbv(1)
8530 while (u.signum() != 0) {
8531 while (u.isEven()) {
8532 u.rShiftTo(1, u)
8533 if (ac) {
8534 if (!a.isEven() || !b.isEven()) {
8535 a.addTo(this, a)
8536 b.subTo(m, b)
8537 }
8538 a.rShiftTo(1, a)
8539 } else if (!b.isEven()) b.subTo(m, b)
8540 b.rShiftTo(1, b)
8541 }
8542 while (v.isEven()) {
8543 v.rShiftTo(1, v)
8544 if (ac) {
8545 if (!c.isEven() || !d.isEven()) {
8546 c.addTo(this, c)
8547 d.subTo(m, d)
8548 }
8549 c.rShiftTo(1, c)
8550 } else if (!d.isEven()) d.subTo(m, d)
8551 d.rShiftTo(1, d)
8552 }
8553 if (u.compareTo(v) >= 0) {
8554 u.subTo(v, u)
8555 if (ac) a.subTo(c, a)
8556 b.subTo(d, b)
8557 } else {
8558 v.subTo(u, v)
8559 if (ac) c.subTo(a, c)
8560 d.subTo(b, d)
8561 }
8562 }
8563 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
8564 if (d.compareTo(m) >= 0) return d.subtract(m)
8565 if (d.signum() < 0) d.addTo(m, d)
8566 else return d
8567 if (d.signum() < 0) return d.add(m)
8568 else return d
8569}
8570
8571var lowprimes = [
8572 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
8573 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
8574 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
8575 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
8576 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
8577 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
8578 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
8579 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
8580 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
8581 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
8582 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
8583]
8584
8585var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8586
8587// (public) test primality with certainty >= 1-.5^t
8588function bnIsProbablePrime(t) {
8589 var i, x = this.abs()
8590 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
8591 for (i = 0; i < lowprimes.length; ++i)
8592 if (x[0] == lowprimes[i]) return true
8593 return false
8594 }
8595 if (x.isEven()) return false
8596 i = 1
8597 while (i < lowprimes.length) {
8598 var m = lowprimes[i],
8599 j = i + 1
8600 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
8601 m = x.modInt(m)
8602 while (i < j) if (m % lowprimes[i++] == 0) return false
8603 }
8604 return x.millerRabin(t)
8605}
8606
8607// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
8608function bnpMillerRabin(t) {
8609 var n1 = this.subtract(BigInteger.ONE)
8610 var k = n1.getLowestSetBit()
8611 if (k <= 0) return false
8612 var r = n1.shiftRight(k)
8613 t = (t + 1) >> 1
8614 if (t > lowprimes.length) t = lowprimes.length
8615 var a = new BigInteger(null)
8616 var j, bases = []
8617 for (var i = 0; i < t; ++i) {
8618 for (;;) {
8619 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
8620 if (bases.indexOf(j) == -1) break
8621 }
8622 bases.push(j)
8623 a.fromInt(j)
8624 var y = a.modPow(r, this)
8625 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
8626 var j = 1
8627 while (j++ < k && y.compareTo(n1) != 0) {
8628 y = y.modPowInt(2, this)
8629 if (y.compareTo(BigInteger.ONE) == 0) return false
8630 }
8631 if (y.compareTo(n1) != 0) return false
8632 }
8633 }
8634 return true
8635}
8636
8637// protected
8638proto.chunkSize = bnpChunkSize
8639proto.toRadix = bnpToRadix
8640proto.fromRadix = bnpFromRadix
8641proto.fromNumber = bnpFromNumber
8642proto.bitwiseTo = bnpBitwiseTo
8643proto.changeBit = bnpChangeBit
8644proto.addTo = bnpAddTo
8645proto.dMultiply = bnpDMultiply
8646proto.dAddOffset = bnpDAddOffset
8647proto.multiplyLowerTo = bnpMultiplyLowerTo
8648proto.multiplyUpperTo = bnpMultiplyUpperTo
8649proto.modInt = bnpModInt
8650proto.millerRabin = bnpMillerRabin
8651
8652// public
8653proto.clone = bnClone
8654proto.intValue = bnIntValue
8655proto.byteValue = bnByteValue
8656proto.shortValue = bnShortValue
8657proto.signum = bnSigNum
8658proto.toByteArray = bnToByteArray
8659proto.equals = bnEquals
8660proto.min = bnMin
8661proto.max = bnMax
8662proto.and = bnAnd
8663proto.or = bnOr
8664proto.xor = bnXor
8665proto.andNot = bnAndNot
8666proto.not = bnNot
8667proto.shiftLeft = bnShiftLeft
8668proto.shiftRight = bnShiftRight
8669proto.getLowestSetBit = bnGetLowestSetBit
8670proto.bitCount = bnBitCount
8671proto.testBit = bnTestBit
8672proto.setBit = bnSetBit
8673proto.clearBit = bnClearBit
8674proto.flipBit = bnFlipBit
8675proto.add = bnAdd
8676proto.subtract = bnSubtract
8677proto.multiply = bnMultiply
8678proto.divide = bnDivide
8679proto.remainder = bnRemainder
8680proto.divideAndRemainder = bnDivideAndRemainder
8681proto.modPow = bnModPow
8682proto.modInverse = bnModInverse
8683proto.pow = bnPow
8684proto.gcd = bnGCD
8685proto.isProbablePrime = bnIsProbablePrime
8686
8687// JSBN-specific extension
8688proto.square = bnSquare
8689
8690// constants
8691BigInteger.ZERO = nbv(0)
8692BigInteger.ONE = nbv(1)
8693BigInteger.valueOf = nbv
8694
8695module.exports = BigInteger
8696
8697},{"../package.json":4}],2:[function(require,module,exports){
8698(function (Buffer){
8699// FIXME: Kind of a weird way to throw exceptions, consider removing
8700var assert = require('assert')
8701var BigInteger = require('./bigi')
8702
8703/**
8704 * Turns a byte array into a big integer.
8705 *
8706 * This function will interpret a byte array as a big integer in big
8707 * endian notation.
8708 */
8709BigInteger.fromByteArrayUnsigned = function(byteArray) {
8710 // BigInteger expects a DER integer conformant byte array
8711 if (byteArray[0] & 0x80) {
8712 return new BigInteger([0].concat(byteArray))
8713 }
8714
8715 return new BigInteger(byteArray)
8716}
8717
8718/**
8719 * Returns a byte array representation of the big integer.
8720 *
8721 * This returns the absolute of the contained value in big endian
8722 * form. A value of zero results in an empty array.
8723 */
8724BigInteger.prototype.toByteArrayUnsigned = function() {
8725 var byteArray = this.toByteArray()
8726 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
8727}
8728
8729BigInteger.fromDERInteger = function(byteArray) {
8730 return new BigInteger(byteArray)
8731}
8732
8733/*
8734 * Converts BigInteger to a DER integer representation.
8735 *
8736 * The format for this value uses the most significant bit as a sign
8737 * bit. If the most significant bit is already set and the integer is
8738 * positive, a 0x00 is prepended.
8739 *
8740 * Examples:
8741 *
8742 * 0 => 0x00
8743 * 1 => 0x01
8744 * -1 => 0xff
8745 * 127 => 0x7f
8746 * -127 => 0x81
8747 * 128 => 0x0080
8748 * -128 => 0x80
8749 * 255 => 0x00ff
8750 * -255 => 0xff01
8751 * 16300 => 0x3fac
8752 * -16300 => 0xc054
8753 * 62300 => 0x00f35c
8754 * -62300 => 0xff0ca4
8755*/
8756BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8757
8758BigInteger.fromBuffer = function(buffer) {
8759 // BigInteger expects a DER integer conformant byte array
8760 if (buffer[0] & 0x80) {
8761 var byteArray = Array.prototype.slice.call(buffer)
8762
8763 return new BigInteger([0].concat(byteArray))
8764 }
8765
8766 return new BigInteger(buffer)
8767}
8768
8769BigInteger.fromHex = function(hex) {
8770 if (hex === '') return BigInteger.ZERO
8771
8772 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
8773 assert.equal(hex.length % 2, 0, 'Incomplete hex')
8774 return new BigInteger(hex, 16)
8775}
8776
8777BigInteger.prototype.toBuffer = function(size) {
8778 var byteArray = this.toByteArrayUnsigned()
8779 var zeros = []
8780
8781 var padding = size - byteArray.length
8782 while (zeros.length < padding) zeros.push(0)
8783
8784 return new Buffer(zeros.concat(byteArray))
8785}
8786
8787BigInteger.prototype.toHex = function(size) {
8788 return this.toBuffer(size).toString('hex')
8789}
8790
8791}).call(this,require("buffer").Buffer)
8792},{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
8793var BigInteger = require('./bigi')
8794
8795//addons
8796require('./convert')
8797
8798module.exports = BigInteger
8799},{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
8800module.exports={
8801 "name": "bigi",
8802 "version": "1.4.0",
8803 "description": "Big integers.",
8804 "keywords": [
8805 "cryptography",
8806 "math",
8807 "bitcoin",
8808 "arbitrary",
8809 "precision",
8810 "arithmetic",
8811 "big",
8812 "integer",
8813 "int",
8814 "number",
8815 "biginteger",
8816 "bigint",
8817 "bignumber",
8818 "decimal",
8819 "float"
8820 ],
8821 "devDependencies": {
8822 "mocha": "^1.20.1",
8823 "jshint": "^2.5.1",
8824 "coveralls": "^2.10.0",
8825 "istanbul": "^0.2.11"
8826 },
8827 "repository": {
8828 "url": "https://github.com/cryptocoinjs/bigi",
8829 "type": "git"
8830 },
8831 "main": "./lib/index.js",
8832 "scripts": {
8833 "test": "_mocha -- test/*.js",
8834 "jshint": "jshint --config jshint.json lib/*.js ; true",
8835 "unit": "mocha",
8836 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
8837 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
8838 },
8839 "dependencies": {},
8840 "testling": {
8841 "files": "test/*.js",
8842 "harness": "mocha",
8843 "browsers": [
8844 "ie/9..latest",
8845 "firefox/latest",
8846 "chrome/latest",
8847 "safari/6.0..latest",
8848 "iphone/6.0..latest",
8849 "android-browser/4.2..latest"
8850 ]
8851 },
8852 "bugs": {
8853 "url": "https://github.com/cryptocoinjs/bigi/issues"
8854 },
8855 "homepage": "https://github.com/cryptocoinjs/bigi",
8856 "_id": "bigi@1.4.0",
8857 "dist": {
8858 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8859 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8860 },
8861 "_from": "bigi@^1.4.0",
8862 "_npmVersion": "1.4.3",
8863 "_npmUser": {
8864 "name": "jp",
8865 "email": "jprichardson@gmail.com"
8866 },
8867 "maintainers": [
8868 {
8869 "name": "jp",
8870 "email": "jprichardson@gmail.com"
8871 },
8872 {
8873 "name": "midnightlightning",
8874 "email": "boydb@midnightdesign.ws"
8875 },
8876 {
8877 "name": "sidazhang",
8878 "email": "sidazhang89@gmail.com"
8879 },
8880 {
8881 "name": "nadav",
8882 "email": "npm@shesek.info"
8883 }
8884 ],
8885 "directories": {},
8886 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8887 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8888}
8889
8890},{}],5:[function(require,module,exports){
8891// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
8892//
8893// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
8894//
8895// Originally from narwhal.js (http://narwhaljs.org)
8896// Copyright (c) 2009 Thomas Robinson <280north.com>
8897//
8898// Permission is hereby granted, free of charge, to any person obtaining a copy
8899// of this software and associated documentation files (the 'Software'), to
8900// deal in the Software without restriction, including without limitation the
8901// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8902// sell copies of the Software, and to permit persons to whom the Software is
8903// furnished to do so, subject to the following conditions:
8904//
8905// The above copyright notice and this permission notice shall be included in
8906// all copies or substantial portions of the Software.
8907//
8908// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8909// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8910// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8911// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
8912// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
8913// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8914
8915// when used in node, this will actually load the util module we depend on
8916// versus loading the builtin util module as happens otherwise
8917// this is a bug in node module loading as far as I am concerned
8918var util = require('util/');
8919
8920var pSlice = Array.prototype.slice;
8921var hasOwn = Object.prototype.hasOwnProperty;
8922
8923// 1. The assert module provides functions that throw
8924// AssertionError's when particular conditions are not met. The
8925// assert module must conform to the following interface.
8926
8927var assert = module.exports = ok;
8928
8929// 2. The AssertionError is defined in assert.
8930// new assert.AssertionError({ message: message,
8931// actual: actual,
8932// expected: expected })
8933
8934assert.AssertionError = function AssertionError(options) {
8935 this.name = 'AssertionError';
8936 this.actual = options.actual;
8937 this.expected = options.expected;
8938 this.operator = options.operator;
8939 if (options.message) {
8940 this.message = options.message;
8941 this.generatedMessage = false;
8942 } else {
8943 this.message = getMessage(this);
8944 this.generatedMessage = true;
8945 }
8946 var stackStartFunction = options.stackStartFunction || fail;
8947
8948 if (Error.captureStackTrace) {
8949 Error.captureStackTrace(this, stackStartFunction);
8950 }
8951 else {
8952 // non v8 browsers so we can have a stacktrace
8953 var err = new Error();
8954 if (err.stack) {
8955 var out = err.stack;
8956
8957 // try to strip useless frames
8958 var fn_name = stackStartFunction.name;
8959 var idx = out.indexOf('\n' + fn_name);
8960 if (idx >= 0) {
8961 // once we have located the function frame
8962 // we need to strip out everything before it (and its line)
8963 var next_line = out.indexOf('\n', idx + 1);
8964 out = out.substring(next_line + 1);
8965 }
8966
8967 this.stack = out;
8968 }
8969 }
8970};
8971
8972// assert.AssertionError instanceof Error
8973util.inherits(assert.AssertionError, Error);
8974
8975function replacer(key, value) {
8976 if (util.isUndefined(value)) {
8977 return '' + value;
8978 }
8979 if (util.isNumber(value) && !isFinite(value)) {
8980 return value.toString();
8981 }
8982 if (util.isFunction(value) || util.isRegExp(value)) {
8983 return value.toString();
8984 }
8985 return value;
8986}
8987
8988function truncate(s, n) {
8989 if (util.isString(s)) {
8990 return s.length < n ? s : s.slice(0, n);
8991 } else {
8992 return s;
8993 }
8994}
8995
8996function getMessage(self) {
8997 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
8998 self.operator + ' ' +
8999 truncate(JSON.stringify(self.expected, replacer), 128);
9000}
9001
9002// At present only the three keys mentioned above are used and
9003// understood by the spec. Implementations or sub modules can pass
9004// other keys to the AssertionError's constructor - they will be
9005// ignored.
9006
9007// 3. All of the following functions must throw an AssertionError
9008// when a corresponding condition is not met, with a message that
9009// may be undefined if not provided. All assertion methods provide
9010// both the actual and expected values to the assertion error for
9011// display purposes.
9012
9013function fail(actual, expected, message, operator, stackStartFunction) {
9014 throw new assert.AssertionError({
9015 message: message,
9016 actual: actual,
9017 expected: expected,
9018 operator: operator,
9019 stackStartFunction: stackStartFunction
9020 });
9021}
9022
9023// EXTENSION! allows for well behaved errors defined elsewhere.
9024assert.fail = fail;
9025
9026// 4. Pure assertion tests whether a value is truthy, as determined
9027// by !!guard.
9028// assert.ok(guard, message_opt);
9029// This statement is equivalent to assert.equal(true, !!guard,
9030// message_opt);. To test strictly for the value true, use
9031// assert.strictEqual(true, guard, message_opt);.
9032
9033function ok(value, message) {
9034 if (!value) fail(value, true, message, '==', assert.ok);
9035}
9036assert.ok = ok;
9037
9038// 5. The equality assertion tests shallow, coercive equality with
9039// ==.
9040// assert.equal(actual, expected, message_opt);
9041
9042assert.equal = function equal(actual, expected, message) {
9043 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
9044};
9045
9046// 6. The non-equality assertion tests for whether two objects are not equal
9047// with != assert.notEqual(actual, expected, message_opt);
9048
9049assert.notEqual = function notEqual(actual, expected, message) {
9050 if (actual == expected) {
9051 fail(actual, expected, message, '!=', assert.notEqual);
9052 }
9053};
9054
9055// 7. The equivalence assertion tests a deep equality relation.
9056// assert.deepEqual(actual, expected, message_opt);
9057
9058assert.deepEqual = function deepEqual(actual, expected, message) {
9059 if (!_deepEqual(actual, expected)) {
9060 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
9061 }
9062};
9063
9064function _deepEqual(actual, expected) {
9065 // 7.1. All identical values are equivalent, as determined by ===.
9066 if (actual === expected) {
9067 return true;
9068
9069 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
9070 if (actual.length != expected.length) return false;
9071
9072 for (var i = 0; i < actual.length; i++) {
9073 if (actual[i] !== expected[i]) return false;
9074 }
9075
9076 return true;
9077
9078 // 7.2. If the expected value is a Date object, the actual value is
9079 // equivalent if it is also a Date object that refers to the same time.
9080 } else if (util.isDate(actual) && util.isDate(expected)) {
9081 return actual.getTime() === expected.getTime();
9082
9083 // 7.3 If the expected value is a RegExp object, the actual value is
9084 // equivalent if it is also a RegExp object with the same source and
9085 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
9086 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
9087 return actual.source === expected.source &&
9088 actual.global === expected.global &&
9089 actual.multiline === expected.multiline &&
9090 actual.lastIndex === expected.lastIndex &&
9091 actual.ignoreCase === expected.ignoreCase;
9092
9093 // 7.4. Other pairs that do not both pass typeof value == 'object',
9094 // equivalence is determined by ==.
9095 } else if (!util.isObject(actual) && !util.isObject(expected)) {
9096 return actual == expected;
9097
9098 // 7.5 For all other Object pairs, including Array objects, equivalence is
9099 // determined by having the same number of owned properties (as verified
9100 // with Object.prototype.hasOwnProperty.call), the same set of keys
9101 // (although not necessarily the same order), equivalent values for every
9102 // corresponding key, and an identical 'prototype' property. Note: this
9103 // accounts for both named and indexed properties on Arrays.
9104 } else {
9105 return objEquiv(actual, expected);
9106 }
9107}
9108
9109function isArguments(object) {
9110 return Object.prototype.toString.call(object) == '[object Arguments]';
9111}
9112
9113function objEquiv(a, b) {
9114 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
9115 return false;
9116 // an identical 'prototype' property.
9117 if (a.prototype !== b.prototype) return false;
9118 // if one is a primitive, the other must be same
9119 if (util.isPrimitive(a) || util.isPrimitive(b)) {
9120 return a === b;
9121 }
9122 var aIsArgs = isArguments(a),
9123 bIsArgs = isArguments(b);
9124 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
9125 return false;
9126 if (aIsArgs) {
9127 a = pSlice.call(a);
9128 b = pSlice.call(b);
9129 return _deepEqual(a, b);
9130 }
9131 var ka = objectKeys(a),
9132 kb = objectKeys(b),
9133 key, i;
9134 // having the same number of owned properties (keys incorporates
9135 // hasOwnProperty)
9136 if (ka.length != kb.length)
9137 return false;
9138 //the same set of keys (although not necessarily the same order),
9139 ka.sort();
9140 kb.sort();
9141 //~~~cheap key test
9142 for (i = ka.length - 1; i >= 0; i--) {
9143 if (ka[i] != kb[i])
9144 return false;
9145 }
9146 //equivalent values for every corresponding key, and
9147 //~~~possibly expensive deep test
9148 for (i = ka.length - 1; i >= 0; i--) {
9149 key = ka[i];
9150 if (!_deepEqual(a[key], b[key])) return false;
9151 }
9152 return true;
9153}
9154
9155// 8. The non-equivalence assertion tests for any deep inequality.
9156// assert.notDeepEqual(actual, expected, message_opt);
9157
9158assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
9159 if (_deepEqual(actual, expected)) {
9160 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
9161 }
9162};
9163
9164// 9. The strict equality assertion tests strict equality, as determined by ===.
9165// assert.strictEqual(actual, expected, message_opt);
9166
9167assert.strictEqual = function strictEqual(actual, expected, message) {
9168 if (actual !== expected) {
9169 fail(actual, expected, message, '===', assert.strictEqual);
9170 }
9171};
9172
9173// 10. The strict non-equality assertion tests for strict inequality, as
9174// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
9175
9176assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
9177 if (actual === expected) {
9178 fail(actual, expected, message, '!==', assert.notStrictEqual);
9179 }
9180};
9181
9182function expectedException(actual, expected) {
9183 if (!actual || !expected) {
9184 return false;
9185 }
9186
9187 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
9188 return expected.test(actual);
9189 } else if (actual instanceof expected) {
9190 return true;
9191 } else if (expected.call({}, actual) === true) {
9192 return true;
9193 }
9194
9195 return false;
9196}
9197
9198function _throws(shouldThrow, block, expected, message) {
9199 var actual;
9200
9201 if (util.isString(expected)) {
9202 message = expected;
9203 expected = null;
9204 }
9205
9206 try {
9207 block();
9208 } catch (e) {
9209 actual = e;
9210 }
9211
9212 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
9213 (message ? ' ' + message : '.');
9214
9215 if (shouldThrow && !actual) {
9216 fail(actual, expected, 'Missing expected exception' + message);
9217 }
9218
9219 if (!shouldThrow && expectedException(actual, expected)) {
9220 fail(actual, expected, 'Got unwanted exception' + message);
9221 }
9222
9223 if ((shouldThrow && actual && expected &&
9224 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
9225 throw actual;
9226 }
9227}
9228
9229// 11. Expected to throw an error:
9230// assert.throws(block, Error_opt, message_opt);
9231
9232assert.throws = function(block, /*optional*/error, /*optional*/message) {
9233 _throws.apply(this, [true].concat(pSlice.call(arguments)));
9234};
9235
9236// EXTENSION! This is annoying to write outside this module.
9237assert.doesNotThrow = function(block, /*optional*/message) {
9238 _throws.apply(this, [false].concat(pSlice.call(arguments)));
9239};
9240
9241assert.ifError = function(err) { if (err) {throw err;}};
9242
9243var objectKeys = Object.keys || function (obj) {
9244 var keys = [];
9245 for (var key in obj) {
9246 if (hasOwn.call(obj, key)) keys.push(key);
9247 }
9248 return keys;
9249};
9250
9251},{"util/":29}],6:[function(require,module,exports){
9252
9253},{}],7:[function(require,module,exports){
9254/*!
9255 * The buffer module from node.js, for the browser.
9256 *
9257 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
9258 * @license MIT
9259 */
9260
9261var base64 = require('base64-js')
9262var ieee754 = require('ieee754')
9263var isArray = require('is-array')
9264
9265exports.Buffer = Buffer
9266exports.SlowBuffer = SlowBuffer
9267exports.INSPECT_MAX_BYTES = 50
9268Buffer.poolSize = 8192 // not used by this implementation
9269
9270var rootParent = {}
9271
9272/**
9273 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9274 * === true Use Uint8Array implementation (fastest)
9275 * === false Use Object implementation (most compatible, even IE6)
9276 *
9277 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9278 * Opera 11.6+, iOS 4.2+.
9279 *
9280 * Due to various browser bugs, sometimes the Object implementation will be used even
9281 * when the browser supports typed arrays.
9282 *
9283 * Note:
9284 *
9285 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9286 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9287 *
9288 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
9289 * on objects.
9290 *
9291 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9292 *
9293 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9294 * incorrect length in some situations.
9295
9296 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9297 * get the Object implementation, which is slower but behaves correctly.
9298 */
9299Buffer.TYPED_ARRAY_SUPPORT = (function () {
9300 function Bar () {}
9301 try {
9302 var arr = new Uint8Array(1)
9303 arr.foo = function () { return 42 }
9304 arr.constructor = Bar
9305 return arr.foo() === 42 && // typed array instances can be augmented
9306 arr.constructor === Bar && // constructor can be set
9307 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9308 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9309 } catch (e) {
9310 return false
9311 }
9312})()
9313
9314function kMaxLength () {
9315 return Buffer.TYPED_ARRAY_SUPPORT
9316 ? 0x7fffffff
9317 : 0x3fffffff
9318}
9319
9320/**
9321 * Class: Buffer
9322 * =============
9323 *
9324 * The Buffer constructor returns instances of `Uint8Array` that are augmented
9325 * with function properties for all the node `Buffer` API functions. We use
9326 * `Uint8Array` so that square bracket notation works as expected -- it returns
9327 * a single octet.
9328 *
9329 * By augmenting the instances, we can avoid modifying the `Uint8Array`
9330 * prototype.
9331 */
9332function Buffer (arg) {
9333 if (!(this instanceof Buffer)) {
9334 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
9335 if (arguments.length > 1) return new Buffer(arg, arguments[1])
9336 return new Buffer(arg)
9337 }
9338
9339 this.length = 0
9340 this.parent = undefined
9341
9342 // Common case.
9343 if (typeof arg === 'number') {
9344 return fromNumber(this, arg)
9345 }
9346
9347 // Slightly less common case.
9348 if (typeof arg === 'string') {
9349 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
9350 }
9351
9352 // Unusual.
9353 return fromObject(this, arg)
9354}
9355
9356function fromNumber (that, length) {
9357 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
9358 if (!Buffer.TYPED_ARRAY_SUPPORT) {
9359 for (var i = 0; i < length; i++) {
9360 that[i] = 0
9361 }
9362 }
9363 return that
9364}
9365
9366function fromString (that, string, encoding) {
9367 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
9368
9369 // Assumption: byteLength() return value is always < kMaxLength.
9370 var length = byteLength(string, encoding) | 0
9371 that = allocate(that, length)
9372
9373 that.write(string, encoding)
9374 return that
9375}
9376
9377function fromObject (that, object) {
9378 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
9379
9380 if (isArray(object)) return fromArray(that, object)
9381
9382 if (object == null) {
9383 throw new TypeError('must start with number, buffer, array or string')
9384 }
9385
9386 if (typeof ArrayBuffer !== 'undefined') {
9387 if (object.buffer instanceof ArrayBuffer) {
9388 return fromTypedArray(that, object)
9389 }
9390 if (object instanceof ArrayBuffer) {
9391 return fromArrayBuffer(that, object)
9392 }
9393 }
9394
9395 if (object.length) return fromArrayLike(that, object)
9396
9397 return fromJsonObject(that, object)
9398}
9399
9400function fromBuffer (that, buffer) {
9401 var length = checked(buffer.length) | 0
9402 that = allocate(that, length)
9403 buffer.copy(that, 0, 0, length)
9404 return that
9405}
9406
9407function fromArray (that, array) {
9408 var length = checked(array.length) | 0
9409 that = allocate(that, length)
9410 for (var i = 0; i < length; i += 1) {
9411 that[i] = array[i] & 255
9412 }
9413 return that
9414}
9415
9416// Duplicate of fromArray() to keep fromArray() monomorphic.
9417function fromTypedArray (that, array) {
9418 var length = checked(array.length) | 0
9419 that = allocate(that, length)
9420 // Truncating the elements is probably not what people expect from typed
9421 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
9422 // of the old Buffer constructor.
9423 for (var i = 0; i < length; i += 1) {
9424 that[i] = array[i] & 255
9425 }
9426 return that
9427}
9428
9429function fromArrayBuffer (that, array) {
9430 if (Buffer.TYPED_ARRAY_SUPPORT) {
9431 // Return an augmented `Uint8Array` instance, for best performance
9432 array.byteLength
9433 that = Buffer._augment(new Uint8Array(array))
9434 } else {
9435 // Fallback: Return an object instance of the Buffer class
9436 that = fromTypedArray(that, new Uint8Array(array))
9437 }
9438 return that
9439}
9440
9441function fromArrayLike (that, array) {
9442 var length = checked(array.length) | 0
9443 that = allocate(that, length)
9444 for (var i = 0; i < length; i += 1) {
9445 that[i] = array[i] & 255
9446 }
9447 return that
9448}
9449
9450// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
9451// Returns a zero-length buffer for inputs that don't conform to the spec.
9452function fromJsonObject (that, object) {
9453 var array
9454 var length = 0
9455
9456 if (object.type === 'Buffer' && isArray(object.data)) {
9457 array = object.data
9458 length = checked(array.length) | 0
9459 }
9460 that = allocate(that, length)
9461
9462 for (var i = 0; i < length; i += 1) {
9463 that[i] = array[i] & 255
9464 }
9465 return that
9466}
9467
9468function allocate (that, length) {
9469 if (Buffer.TYPED_ARRAY_SUPPORT) {
9470 // Return an augmented `Uint8Array` instance, for best performance
9471 that = Buffer._augment(new Uint8Array(length))
9472 } else {
9473 // Fallback: Return an object instance of the Buffer class
9474 that.length = length
9475 that._isBuffer = true
9476 }
9477
9478 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
9479 if (fromPool) that.parent = rootParent
9480
9481 return that
9482}
9483
9484function checked (length) {
9485 // Note: cannot use `length < kMaxLength` here because that fails when
9486 // length is NaN (which is otherwise coerced to zero.)
9487 if (length >= kMaxLength()) {
9488 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9489 'size: 0x' + kMaxLength().toString(16) + ' bytes')
9490 }
9491 return length | 0
9492}
9493
9494function SlowBuffer (subject, encoding) {
9495 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
9496
9497 var buf = new Buffer(subject, encoding)
9498 delete buf.parent
9499 return buf
9500}
9501
9502Buffer.isBuffer = function isBuffer (b) {
9503 return !!(b != null && b._isBuffer)
9504}
9505
9506Buffer.compare = function compare (a, b) {
9507 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9508 throw new TypeError('Arguments must be Buffers')
9509 }
9510
9511 if (a === b) return 0
9512
9513 var x = a.length
9514 var y = b.length
9515
9516 var i = 0
9517 var len = Math.min(x, y)
9518 while (i < len) {
9519 if (a[i] !== b[i]) break
9520
9521 ++i
9522 }
9523
9524 if (i !== len) {
9525 x = a[i]
9526 y = b[i]
9527 }
9528
9529 if (x < y) return -1
9530 if (y < x) return 1
9531 return 0
9532}
9533
9534Buffer.isEncoding = function isEncoding (encoding) {
9535 switch (String(encoding).toLowerCase()) {
9536 case 'hex':
9537 case 'utf8':
9538 case 'utf-8':
9539 case 'ascii':
9540 case 'binary':
9541 case 'base64':
9542 case 'raw':
9543 case 'ucs2':
9544 case 'ucs-2':
9545 case 'utf16le':
9546 case 'utf-16le':
9547 return true
9548 default:
9549 return false
9550 }
9551}
9552
9553Buffer.concat = function concat (list, length) {
9554 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
9555
9556 if (list.length === 0) {
9557 return new Buffer(0)
9558 }
9559
9560 var i
9561 if (length === undefined) {
9562 length = 0
9563 for (i = 0; i < list.length; i++) {
9564 length += list[i].length
9565 }
9566 }
9567
9568 var buf = new Buffer(length)
9569 var pos = 0
9570 for (i = 0; i < list.length; i++) {
9571 var item = list[i]
9572 item.copy(buf, pos)
9573 pos += item.length
9574 }
9575 return buf
9576}
9577
9578function byteLength (string, encoding) {
9579 if (typeof string !== 'string') string = '' + string
9580
9581 var len = string.length
9582 if (len === 0) return 0
9583
9584 // Use a for loop to avoid recursion
9585 var loweredCase = false
9586 for (;;) {
9587 switch (encoding) {
9588 case 'ascii':
9589 case 'binary':
9590 // Deprecated
9591 case 'raw':
9592 case 'raws':
9593 return len
9594 case 'utf8':
9595 case 'utf-8':
9596 return utf8ToBytes(string).length
9597 case 'ucs2':
9598 case 'ucs-2':
9599 case 'utf16le':
9600 case 'utf-16le':
9601 return len * 2
9602 case 'hex':
9603 return len >>> 1
9604 case 'base64':
9605 return base64ToBytes(string).length
9606 default:
9607 if (loweredCase) return utf8ToBytes(string).length // assume utf8
9608 encoding = ('' + encoding).toLowerCase()
9609 loweredCase = true
9610 }
9611 }
9612}
9613Buffer.byteLength = byteLength
9614
9615// pre-set for values that may exist in the future
9616Buffer.prototype.length = undefined
9617Buffer.prototype.parent = undefined
9618
9619function slowToString (encoding, start, end) {
9620 var loweredCase = false
9621
9622 start = start | 0
9623 end = end === undefined || end === Infinity ? this.length : end | 0
9624
9625 if (!encoding) encoding = 'utf8'
9626 if (start < 0) start = 0
9627 if (end > this.length) end = this.length
9628 if (end <= start) return ''
9629
9630 while (true) {
9631 switch (encoding) {
9632 case 'hex':
9633 return hexSlice(this, start, end)
9634
9635 case 'utf8':
9636 case 'utf-8':
9637 return utf8Slice(this, start, end)
9638
9639 case 'ascii':
9640 return asciiSlice(this, start, end)
9641
9642 case 'binary':
9643 return binarySlice(this, start, end)
9644
9645 case 'base64':
9646 return base64Slice(this, start, end)
9647
9648 case 'ucs2':
9649 case 'ucs-2':
9650 case 'utf16le':
9651 case 'utf-16le':
9652 return utf16leSlice(this, start, end)
9653
9654 default:
9655 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9656 encoding = (encoding + '').toLowerCase()
9657 loweredCase = true
9658 }
9659 }
9660}
9661
9662Buffer.prototype.toString = function toString () {
9663 var length = this.length | 0
9664 if (length === 0) return ''
9665 if (arguments.length === 0) return utf8Slice(this, 0, length)
9666 return slowToString.apply(this, arguments)
9667}
9668
9669Buffer.prototype.equals = function equals (b) {
9670 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9671 if (this === b) return true
9672 return Buffer.compare(this, b) === 0
9673}
9674
9675Buffer.prototype.inspect = function inspect () {
9676 var str = ''
9677 var max = exports.INSPECT_MAX_BYTES
9678 if (this.length > 0) {
9679 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
9680 if (this.length > max) str += ' ... '
9681 }
9682 return '<Buffer ' + str + '>'
9683}
9684
9685Buffer.prototype.compare = function compare (b) {
9686 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9687 if (this === b) return 0
9688 return Buffer.compare(this, b)
9689}
9690
9691Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
9692 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
9693 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
9694 byteOffset >>= 0
9695
9696 if (this.length === 0) return -1
9697 if (byteOffset >= this.length) return -1
9698
9699 // Negative offsets start from the end of the buffer
9700 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
9701
9702 if (typeof val === 'string') {
9703 if (val.length === 0) return -1 // special case: looking for empty string always fails
9704 return String.prototype.indexOf.call(this, val, byteOffset)
9705 }
9706 if (Buffer.isBuffer(val)) {
9707 return arrayIndexOf(this, val, byteOffset)
9708 }
9709 if (typeof val === 'number') {
9710 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
9711 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
9712 }
9713 return arrayIndexOf(this, [ val ], byteOffset)
9714 }
9715
9716 function arrayIndexOf (arr, val, byteOffset) {
9717 var foundIndex = -1
9718 for (var i = 0; byteOffset + i < arr.length; i++) {
9719 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
9720 if (foundIndex === -1) foundIndex = i
9721 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
9722 } else {
9723 foundIndex = -1
9724 }
9725 }
9726 return -1
9727 }
9728
9729 throw new TypeError('val must be string, number or Buffer')
9730}
9731
9732// `get` is deprecated
9733Buffer.prototype.get = function get (offset) {
9734 console.log('.get() is deprecated. Access using array indexes instead.')
9735 return this.readUInt8(offset)
9736}
9737
9738// `set` is deprecated
9739Buffer.prototype.set = function set (v, offset) {
9740 console.log('.set() is deprecated. Access using array indexes instead.')
9741 return this.writeUInt8(v, offset)
9742}
9743
9744function hexWrite (buf, string, offset, length) {
9745 offset = Number(offset) || 0
9746 var remaining = buf.length - offset
9747 if (!length) {
9748 length = remaining
9749 } else {
9750 length = Number(length)
9751 if (length > remaining) {
9752 length = remaining
9753 }
9754 }
9755
9756 // must be an even number of digits
9757 var strLen = string.length
9758 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
9759
9760 if (length > strLen / 2) {
9761 length = strLen / 2
9762 }
9763 for (var i = 0; i < length; i++) {
9764 var parsed = parseInt(string.substr(i * 2, 2), 16)
9765 if (isNaN(parsed)) throw new Error('Invalid hex string')
9766 buf[offset + i] = parsed
9767 }
9768 return i
9769}
9770
9771function utf8Write (buf, string, offset, length) {
9772 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
9773}
9774
9775function asciiWrite (buf, string, offset, length) {
9776 return blitBuffer(asciiToBytes(string), buf, offset, length)
9777}
9778
9779function binaryWrite (buf, string, offset, length) {
9780 return asciiWrite(buf, string, offset, length)
9781}
9782
9783function base64Write (buf, string, offset, length) {
9784 return blitBuffer(base64ToBytes(string), buf, offset, length)
9785}
9786
9787function ucs2Write (buf, string, offset, length) {
9788 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
9789}
9790
9791Buffer.prototype.write = function write (string, offset, length, encoding) {
9792 // Buffer#write(string)
9793 if (offset === undefined) {
9794 encoding = 'utf8'
9795 length = this.length
9796 offset = 0
9797 // Buffer#write(string, encoding)
9798 } else if (length === undefined && typeof offset === 'string') {
9799 encoding = offset
9800 length = this.length
9801 offset = 0
9802 // Buffer#write(string, offset[, length][, encoding])
9803 } else if (isFinite(offset)) {
9804 offset = offset | 0
9805 if (isFinite(length)) {
9806 length = length | 0
9807 if (encoding === undefined) encoding = 'utf8'
9808 } else {
9809 encoding = length
9810 length = undefined
9811 }
9812 // legacy write(string, encoding, offset, length) - remove in v0.13
9813 } else {
9814 var swap = encoding
9815 encoding = offset
9816 offset = length | 0
9817 length = swap
9818 }
9819
9820 var remaining = this.length - offset
9821 if (length === undefined || length > remaining) length = remaining
9822
9823 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
9824 throw new RangeError('attempt to write outside buffer bounds')
9825 }
9826
9827 if (!encoding) encoding = 'utf8'
9828
9829 var loweredCase = false
9830 for (;;) {
9831 switch (encoding) {
9832 case 'hex':
9833 return hexWrite(this, string, offset, length)
9834
9835 case 'utf8':
9836 case 'utf-8':
9837 return utf8Write(this, string, offset, length)
9838
9839 case 'ascii':
9840 return asciiWrite(this, string, offset, length)
9841
9842 case 'binary':
9843 return binaryWrite(this, string, offset, length)
9844
9845 case 'base64':
9846 // Warning: maxLength not taken into account in base64Write
9847 return base64Write(this, string, offset, length)
9848
9849 case 'ucs2':
9850 case 'ucs-2':
9851 case 'utf16le':
9852 case 'utf-16le':
9853 return ucs2Write(this, string, offset, length)
9854
9855 default:
9856 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9857 encoding = ('' + encoding).toLowerCase()
9858 loweredCase = true
9859 }
9860 }
9861}
9862
9863Buffer.prototype.toJSON = function toJSON () {
9864 return {
9865 type: 'Buffer',
9866 data: Array.prototype.slice.call(this._arr || this, 0)
9867 }
9868}
9869
9870function base64Slice (buf, start, end) {
9871 if (start === 0 && end === buf.length) {
9872 return base64.fromByteArray(buf)
9873 } else {
9874 return base64.fromByteArray(buf.slice(start, end))
9875 }
9876}
9877
9878function utf8Slice (buf, start, end) {
9879 end = Math.min(buf.length, end)
9880 var firstByte
9881 var secondByte
9882 var thirdByte
9883 var fourthByte
9884 var bytesPerSequence
9885 var tempCodePoint
9886 var codePoint
9887 var res = []
9888 var i = start
9889
9890 for (; i < end; i += bytesPerSequence) {
9891 firstByte = buf[i]
9892 codePoint = 0xFFFD
9893
9894 if (firstByte > 0xEF) {
9895 bytesPerSequence = 4
9896 } else if (firstByte > 0xDF) {
9897 bytesPerSequence = 3
9898 } else if (firstByte > 0xBF) {
9899 bytesPerSequence = 2
9900 } else {
9901 bytesPerSequence = 1
9902 }
9903
9904 if (i + bytesPerSequence <= end) {
9905 switch (bytesPerSequence) {
9906 case 1:
9907 if (firstByte < 0x80) {
9908 codePoint = firstByte
9909 }
9910 break
9911 case 2:
9912 secondByte = buf[i + 1]
9913 if ((secondByte & 0xC0) === 0x80) {
9914 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
9915 if (tempCodePoint > 0x7F) {
9916 codePoint = tempCodePoint
9917 }
9918 }
9919 break
9920 case 3:
9921 secondByte = buf[i + 1]
9922 thirdByte = buf[i + 2]
9923 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
9924 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
9925 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
9926 codePoint = tempCodePoint
9927 }
9928 }
9929 break
9930 case 4:
9931 secondByte = buf[i + 1]
9932 thirdByte = buf[i + 2]
9933 fourthByte = buf[i + 3]
9934 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
9935 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
9936 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
9937 codePoint = tempCodePoint
9938 }
9939 }
9940 }
9941 }
9942
9943 if (codePoint === 0xFFFD) {
9944 // we generated an invalid codePoint so make sure to only advance by 1 byte
9945 bytesPerSequence = 1
9946 } else if (codePoint > 0xFFFF) {
9947 // encode to utf16 (surrogate pair dance)
9948 codePoint -= 0x10000
9949 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
9950 codePoint = 0xDC00 | codePoint & 0x3FF
9951 }
9952
9953 res.push(codePoint)
9954 }
9955
9956 return String.fromCharCode.apply(String, res)
9957}
9958
9959function asciiSlice (buf, start, end) {
9960 var ret = ''
9961 end = Math.min(buf.length, end)
9962
9963 for (var i = start; i < end; i++) {
9964 ret += String.fromCharCode(buf[i] & 0x7F)
9965 }
9966 return ret
9967}
9968
9969function binarySlice (buf, start, end) {
9970 var ret = ''
9971 end = Math.min(buf.length, end)
9972
9973 for (var i = start; i < end; i++) {
9974 ret += String.fromCharCode(buf[i])
9975 }
9976 return ret
9977}
9978
9979function hexSlice (buf, start, end) {
9980 var len = buf.length
9981
9982 if (!start || start < 0) start = 0
9983 if (!end || end < 0 || end > len) end = len
9984
9985 var out = ''
9986 for (var i = start; i < end; i++) {
9987 out += toHex(buf[i])
9988 }
9989 return out
9990}
9991
9992function utf16leSlice (buf, start, end) {
9993 var bytes = buf.slice(start, end)
9994 var res = ''
9995 for (var i = 0; i < bytes.length; i += 2) {
9996 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
9997 }
9998 return res
9999}
10000
10001Buffer.prototype.slice = function slice (start, end) {
10002 var len = this.length
10003 start = ~~start
10004 end = end === undefined ? len : ~~end
10005
10006 if (start < 0) {
10007 start += len
10008 if (start < 0) start = 0
10009 } else if (start > len) {
10010 start = len
10011 }
10012
10013 if (end < 0) {
10014 end += len
10015 if (end < 0) end = 0
10016 } else if (end > len) {
10017 end = len
10018 }
10019
10020 if (end < start) end = start
10021
10022 var newBuf
10023 if (Buffer.TYPED_ARRAY_SUPPORT) {
10024 newBuf = Buffer._augment(this.subarray(start, end))
10025 } else {
10026 var sliceLen = end - start
10027 newBuf = new Buffer(sliceLen, undefined)
10028 for (var i = 0; i < sliceLen; i++) {
10029 newBuf[i] = this[i + start]
10030 }
10031 }
10032
10033 if (newBuf.length) newBuf.parent = this.parent || this
10034
10035 return newBuf
10036}
10037
10038/*
10039 * Need to make sure that buffer isn't trying to write out of bounds.
10040 */
10041function checkOffset (offset, ext, length) {
10042 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10043 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10044}
10045
10046Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10047 offset = offset | 0
10048 byteLength = byteLength | 0
10049 if (!noAssert) checkOffset(offset, byteLength, this.length)
10050
10051 var val = this[offset]
10052 var mul = 1
10053 var i = 0
10054 while (++i < byteLength && (mul *= 0x100)) {
10055 val += this[offset + i] * mul
10056 }
10057
10058 return val
10059}
10060
10061Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10062 offset = offset | 0
10063 byteLength = byteLength | 0
10064 if (!noAssert) {
10065 checkOffset(offset, byteLength, this.length)
10066 }
10067
10068 var val = this[offset + --byteLength]
10069 var mul = 1
10070 while (byteLength > 0 && (mul *= 0x100)) {
10071 val += this[offset + --byteLength] * mul
10072 }
10073
10074 return val
10075}
10076
10077Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10078 if (!noAssert) checkOffset(offset, 1, this.length)
10079 return this[offset]
10080}
10081
10082Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10083 if (!noAssert) checkOffset(offset, 2, this.length)
10084 return this[offset] | (this[offset + 1] << 8)
10085}
10086
10087Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10088 if (!noAssert) checkOffset(offset, 2, this.length)
10089 return (this[offset] << 8) | this[offset + 1]
10090}
10091
10092Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10093 if (!noAssert) checkOffset(offset, 4, this.length)
10094
10095 return ((this[offset]) |
10096 (this[offset + 1] << 8) |
10097 (this[offset + 2] << 16)) +
10098 (this[offset + 3] * 0x1000000)
10099}
10100
10101Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10102 if (!noAssert) checkOffset(offset, 4, this.length)
10103
10104 return (this[offset] * 0x1000000) +
10105 ((this[offset + 1] << 16) |
10106 (this[offset + 2] << 8) |
10107 this[offset + 3])
10108}
10109
10110Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10111 offset = offset | 0
10112 byteLength = byteLength | 0
10113 if (!noAssert) checkOffset(offset, byteLength, this.length)
10114
10115 var val = this[offset]
10116 var mul = 1
10117 var i = 0
10118 while (++i < byteLength && (mul *= 0x100)) {
10119 val += this[offset + i] * mul
10120 }
10121 mul *= 0x80
10122
10123 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10124
10125 return val
10126}
10127
10128Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10129 offset = offset | 0
10130 byteLength = byteLength | 0
10131 if (!noAssert) checkOffset(offset, byteLength, this.length)
10132
10133 var i = byteLength
10134 var mul = 1
10135 var val = this[offset + --i]
10136 while (i > 0 && (mul *= 0x100)) {
10137 val += this[offset + --i] * mul
10138 }
10139 mul *= 0x80
10140
10141 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10142
10143 return val
10144}
10145
10146Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10147 if (!noAssert) checkOffset(offset, 1, this.length)
10148 if (!(this[offset] & 0x80)) return (this[offset])
10149 return ((0xff - this[offset] + 1) * -1)
10150}
10151
10152Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10153 if (!noAssert) checkOffset(offset, 2, this.length)
10154 var val = this[offset] | (this[offset + 1] << 8)
10155 return (val & 0x8000) ? val | 0xFFFF0000 : val
10156}
10157
10158Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10159 if (!noAssert) checkOffset(offset, 2, this.length)
10160 var val = this[offset + 1] | (this[offset] << 8)
10161 return (val & 0x8000) ? val | 0xFFFF0000 : val
10162}
10163
10164Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10165 if (!noAssert) checkOffset(offset, 4, this.length)
10166
10167 return (this[offset]) |
10168 (this[offset + 1] << 8) |
10169 (this[offset + 2] << 16) |
10170 (this[offset + 3] << 24)
10171}
10172
10173Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10174 if (!noAssert) checkOffset(offset, 4, this.length)
10175
10176 return (this[offset] << 24) |
10177 (this[offset + 1] << 16) |
10178 (this[offset + 2] << 8) |
10179 (this[offset + 3])
10180}
10181
10182Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10183 if (!noAssert) checkOffset(offset, 4, this.length)
10184 return ieee754.read(this, offset, true, 23, 4)
10185}
10186
10187Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10188 if (!noAssert) checkOffset(offset, 4, this.length)
10189 return ieee754.read(this, offset, false, 23, 4)
10190}
10191
10192Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10193 if (!noAssert) checkOffset(offset, 8, this.length)
10194 return ieee754.read(this, offset, true, 52, 8)
10195}
10196
10197Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10198 if (!noAssert) checkOffset(offset, 8, this.length)
10199 return ieee754.read(this, offset, false, 52, 8)
10200}
10201
10202function checkInt (buf, value, offset, ext, max, min) {
10203 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
10204 if (value > max || value < min) throw new RangeError('value is out of bounds')
10205 if (offset + ext > buf.length) throw new RangeError('index out of range')
10206}
10207
10208Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10209 value = +value
10210 offset = offset | 0
10211 byteLength = byteLength | 0
10212 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10213
10214 var mul = 1
10215 var i = 0
10216 this[offset] = value & 0xFF
10217 while (++i < byteLength && (mul *= 0x100)) {
10218 this[offset + i] = (value / mul) & 0xFF
10219 }
10220
10221 return offset + byteLength
10222}
10223
10224Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10225 value = +value
10226 offset = offset | 0
10227 byteLength = byteLength | 0
10228 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10229
10230 var i = byteLength - 1
10231 var mul = 1
10232 this[offset + i] = value & 0xFF
10233 while (--i >= 0 && (mul *= 0x100)) {
10234 this[offset + i] = (value / mul) & 0xFF
10235 }
10236
10237 return offset + byteLength
10238}
10239
10240Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10241 value = +value
10242 offset = offset | 0
10243 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10244 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10245 this[offset] = value
10246 return offset + 1
10247}
10248
10249function objectWriteUInt16 (buf, value, offset, littleEndian) {
10250 if (value < 0) value = 0xffff + value + 1
10251 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
10252 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10253 (littleEndian ? i : 1 - i) * 8
10254 }
10255}
10256
10257Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10258 value = +value
10259 offset = offset | 0
10260 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10261 if (Buffer.TYPED_ARRAY_SUPPORT) {
10262 this[offset] = value
10263 this[offset + 1] = (value >>> 8)
10264 } else {
10265 objectWriteUInt16(this, value, offset, true)
10266 }
10267 return offset + 2
10268}
10269
10270Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10271 value = +value
10272 offset = offset | 0
10273 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10274 if (Buffer.TYPED_ARRAY_SUPPORT) {
10275 this[offset] = (value >>> 8)
10276 this[offset + 1] = value
10277 } else {
10278 objectWriteUInt16(this, value, offset, false)
10279 }
10280 return offset + 2
10281}
10282
10283function objectWriteUInt32 (buf, value, offset, littleEndian) {
10284 if (value < 0) value = 0xffffffff + value + 1
10285 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
10286 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10287 }
10288}
10289
10290Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10291 value = +value
10292 offset = offset | 0
10293 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10294 if (Buffer.TYPED_ARRAY_SUPPORT) {
10295 this[offset + 3] = (value >>> 24)
10296 this[offset + 2] = (value >>> 16)
10297 this[offset + 1] = (value >>> 8)
10298 this[offset] = value
10299 } else {
10300 objectWriteUInt32(this, value, offset, true)
10301 }
10302 return offset + 4
10303}
10304
10305Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10306 value = +value
10307 offset = offset | 0
10308 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10309 if (Buffer.TYPED_ARRAY_SUPPORT) {
10310 this[offset] = (value >>> 24)
10311 this[offset + 1] = (value >>> 16)
10312 this[offset + 2] = (value >>> 8)
10313 this[offset + 3] = value
10314 } else {
10315 objectWriteUInt32(this, value, offset, false)
10316 }
10317 return offset + 4
10318}
10319
10320Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10321 value = +value
10322 offset = offset | 0
10323 if (!noAssert) {
10324 var limit = Math.pow(2, 8 * byteLength - 1)
10325
10326 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10327 }
10328
10329 var i = 0
10330 var mul = 1
10331 var sub = value < 0 ? 1 : 0
10332 this[offset] = value & 0xFF
10333 while (++i < byteLength && (mul *= 0x100)) {
10334 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10335 }
10336
10337 return offset + byteLength
10338}
10339
10340Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10341 value = +value
10342 offset = offset | 0
10343 if (!noAssert) {
10344 var limit = Math.pow(2, 8 * byteLength - 1)
10345
10346 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10347 }
10348
10349 var i = byteLength - 1
10350 var mul = 1
10351 var sub = value < 0 ? 1 : 0
10352 this[offset + i] = value & 0xFF
10353 while (--i >= 0 && (mul *= 0x100)) {
10354 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10355 }
10356
10357 return offset + byteLength
10358}
10359
10360Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10361 value = +value
10362 offset = offset | 0
10363 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10364 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10365 if (value < 0) value = 0xff + value + 1
10366 this[offset] = value
10367 return offset + 1
10368}
10369
10370Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10371 value = +value
10372 offset = offset | 0
10373 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10374 if (Buffer.TYPED_ARRAY_SUPPORT) {
10375 this[offset] = value
10376 this[offset + 1] = (value >>> 8)
10377 } else {
10378 objectWriteUInt16(this, value, offset, true)
10379 }
10380 return offset + 2
10381}
10382
10383Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10384 value = +value
10385 offset = offset | 0
10386 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10387 if (Buffer.TYPED_ARRAY_SUPPORT) {
10388 this[offset] = (value >>> 8)
10389 this[offset + 1] = value
10390 } else {
10391 objectWriteUInt16(this, value, offset, false)
10392 }
10393 return offset + 2
10394}
10395
10396Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10397 value = +value
10398 offset = offset | 0
10399 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10400 if (Buffer.TYPED_ARRAY_SUPPORT) {
10401 this[offset] = value
10402 this[offset + 1] = (value >>> 8)
10403 this[offset + 2] = (value >>> 16)
10404 this[offset + 3] = (value >>> 24)
10405 } else {
10406 objectWriteUInt32(this, value, offset, true)
10407 }
10408 return offset + 4
10409}
10410
10411Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10412 value = +value
10413 offset = offset | 0
10414 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10415 if (value < 0) value = 0xffffffff + value + 1
10416 if (Buffer.TYPED_ARRAY_SUPPORT) {
10417 this[offset] = (value >>> 24)
10418 this[offset + 1] = (value >>> 16)
10419 this[offset + 2] = (value >>> 8)
10420 this[offset + 3] = value
10421 } else {
10422 objectWriteUInt32(this, value, offset, false)
10423 }
10424 return offset + 4
10425}
10426
10427function checkIEEE754 (buf, value, offset, ext, max, min) {
10428 if (value > max || value < min) throw new RangeError('value is out of bounds')
10429 if (offset + ext > buf.length) throw new RangeError('index out of range')
10430 if (offset < 0) throw new RangeError('index out of range')
10431}
10432
10433function writeFloat (buf, value, offset, littleEndian, noAssert) {
10434 if (!noAssert) {
10435 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10436 }
10437 ieee754.write(buf, value, offset, littleEndian, 23, 4)
10438 return offset + 4
10439}
10440
10441Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10442 return writeFloat(this, value, offset, true, noAssert)
10443}
10444
10445Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
10446 return writeFloat(this, value, offset, false, noAssert)
10447}
10448
10449function writeDouble (buf, value, offset, littleEndian, noAssert) {
10450 if (!noAssert) {
10451 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
10452 }
10453 ieee754.write(buf, value, offset, littleEndian, 52, 8)
10454 return offset + 8
10455}
10456
10457Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
10458 return writeDouble(this, value, offset, true, noAssert)
10459}
10460
10461Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
10462 return writeDouble(this, value, offset, false, noAssert)
10463}
10464
10465// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
10466Buffer.prototype.copy = function copy (target, targetStart, start, end) {
10467 if (!start) start = 0
10468 if (!end && end !== 0) end = this.length
10469 if (targetStart >= target.length) targetStart = target.length
10470 if (!targetStart) targetStart = 0
10471 if (end > 0 && end < start) end = start
10472
10473 // Copy 0 bytes; we're done
10474 if (end === start) return 0
10475 if (target.length === 0 || this.length === 0) return 0
10476
10477 // Fatal error conditions
10478 if (targetStart < 0) {
10479 throw new RangeError('targetStart out of bounds')
10480 }
10481 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
10482 if (end < 0) throw new RangeError('sourceEnd out of bounds')
10483
10484 // Are we oob?
10485 if (end > this.length) end = this.length
10486 if (target.length - targetStart < end - start) {
10487 end = target.length - targetStart + start
10488 }
10489
10490 var len = end - start
10491 var i
10492
10493 if (this === target && start < targetStart && targetStart < end) {
10494 // descending copy from end
10495 for (i = len - 1; i >= 0; i--) {
10496 target[i + targetStart] = this[i + start]
10497 }
10498 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
10499 // ascending copy from start
10500 for (i = 0; i < len; i++) {
10501 target[i + targetStart] = this[i + start]
10502 }
10503 } else {
10504 target._set(this.subarray(start, start + len), targetStart)
10505 }
10506
10507 return len
10508}
10509
10510// fill(value, start=0, end=buffer.length)
10511Buffer.prototype.fill = function fill (value, start, end) {
10512 if (!value) value = 0
10513 if (!start) start = 0
10514 if (!end) end = this.length
10515
10516 if (end < start) throw new RangeError('end < start')
10517
10518 // Fill 0 bytes; we're done
10519 if (end === start) return
10520 if (this.length === 0) return
10521
10522 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
10523 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
10524
10525 var i
10526 if (typeof value === 'number') {
10527 for (i = start; i < end; i++) {
10528 this[i] = value
10529 }
10530 } else {
10531 var bytes = utf8ToBytes(value.toString())
10532 var len = bytes.length
10533 for (i = start; i < end; i++) {
10534 this[i] = bytes[i % len]
10535 }
10536 }
10537
10538 return this
10539}
10540
10541/**
10542 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
10543 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
10544 */
10545Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
10546 if (typeof Uint8Array !== 'undefined') {
10547 if (Buffer.TYPED_ARRAY_SUPPORT) {
10548 return (new Buffer(this)).buffer
10549 } else {
10550 var buf = new Uint8Array(this.length)
10551 for (var i = 0, len = buf.length; i < len; i += 1) {
10552 buf[i] = this[i]
10553 }
10554 return buf.buffer
10555 }
10556 } else {
10557 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
10558 }
10559}
10560
10561// HELPER FUNCTIONS
10562// ================
10563
10564var BP = Buffer.prototype
10565
10566/**
10567 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
10568 */
10569Buffer._augment = function _augment (arr) {
10570 arr.constructor = Buffer
10571 arr._isBuffer = true
10572
10573 // save reference to original Uint8Array set method before overwriting
10574 arr._set = arr.set
10575
10576 // deprecated
10577 arr.get = BP.get
10578 arr.set = BP.set
10579
10580 arr.write = BP.write
10581 arr.toString = BP.toString
10582 arr.toLocaleString = BP.toString
10583 arr.toJSON = BP.toJSON
10584 arr.equals = BP.equals
10585 arr.compare = BP.compare
10586 arr.indexOf = BP.indexOf
10587 arr.copy = BP.copy
10588 arr.slice = BP.slice
10589 arr.readUIntLE = BP.readUIntLE
10590 arr.readUIntBE = BP.readUIntBE
10591 arr.readUInt8 = BP.readUInt8
10592 arr.readUInt16LE = BP.readUInt16LE
10593 arr.readUInt16BE = BP.readUInt16BE
10594 arr.readUInt32LE = BP.readUInt32LE
10595 arr.readUInt32BE = BP.readUInt32BE
10596 arr.readIntLE = BP.readIntLE
10597 arr.readIntBE = BP.readIntBE
10598 arr.readInt8 = BP.readInt8
10599 arr.readInt16LE = BP.readInt16LE
10600 arr.readInt16BE = BP.readInt16BE
10601 arr.readInt32LE = BP.readInt32LE
10602 arr.readInt32BE = BP.readInt32BE
10603 arr.readFloatLE = BP.readFloatLE
10604 arr.readFloatBE = BP.readFloatBE
10605 arr.readDoubleLE = BP.readDoubleLE
10606 arr.readDoubleBE = BP.readDoubleBE
10607 arr.writeUInt8 = BP.writeUInt8
10608 arr.writeUIntLE = BP.writeUIntLE
10609 arr.writeUIntBE = BP.writeUIntBE
10610 arr.writeUInt16LE = BP.writeUInt16LE
10611 arr.writeUInt16BE = BP.writeUInt16BE
10612 arr.writeUInt32LE = BP.writeUInt32LE
10613 arr.writeUInt32BE = BP.writeUInt32BE
10614 arr.writeIntLE = BP.writeIntLE
10615 arr.writeIntBE = BP.writeIntBE
10616 arr.writeInt8 = BP.writeInt8
10617 arr.writeInt16LE = BP.writeInt16LE
10618 arr.writeInt16BE = BP.writeInt16BE
10619 arr.writeInt32LE = BP.writeInt32LE
10620 arr.writeInt32BE = BP.writeInt32BE
10621 arr.writeFloatLE = BP.writeFloatLE
10622 arr.writeFloatBE = BP.writeFloatBE
10623 arr.writeDoubleLE = BP.writeDoubleLE
10624 arr.writeDoubleBE = BP.writeDoubleBE
10625 arr.fill = BP.fill
10626 arr.inspect = BP.inspect
10627 arr.toArrayBuffer = BP.toArrayBuffer
10628
10629 return arr
10630}
10631
10632var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
10633
10634function base64clean (str) {
10635 // Node strips out invalid characters like \n and \t from the string, base64-js does not
10636 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
10637 // Node converts strings with length < 2 to ''
10638 if (str.length < 2) return ''
10639 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
10640 while (str.length % 4 !== 0) {
10641 str = str + '='
10642 }
10643 return str
10644}
10645
10646function stringtrim (str) {
10647 if (str.trim) return str.trim()
10648 return str.replace(/^\s+|\s+$/g, '')
10649}
10650
10651function toHex (n) {
10652 if (n < 16) return '0' + n.toString(16)
10653 return n.toString(16)
10654}
10655
10656function utf8ToBytes (string, units) {
10657 units = units || Infinity
10658 var codePoint
10659 var length = string.length
10660 var leadSurrogate = null
10661 var bytes = []
10662
10663 for (var i = 0; i < length; i++) {
10664 codePoint = string.charCodeAt(i)
10665
10666 // is surrogate component
10667 if (codePoint > 0xD7FF && codePoint < 0xE000) {
10668 // last char was a lead
10669 if (!leadSurrogate) {
10670 // no lead yet
10671 if (codePoint > 0xDBFF) {
10672 // unexpected trail
10673 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10674 continue
10675
10676 } else if (i + 1 === length) {
10677 // unpaired lead
10678 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10679 continue
10680 }
10681
10682 // valid lead
10683 leadSurrogate = codePoint
10684
10685 continue
10686 }
10687
10688 // 2 leads in a row
10689 if (codePoint < 0xDC00) {
10690 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10691 leadSurrogate = codePoint
10692 continue
10693 }
10694
10695 // valid surrogate pair
10696 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
10697
10698 } else if (leadSurrogate) {
10699 // valid bmp char, but last char was a lead
10700 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10701 }
10702
10703 leadSurrogate = null
10704
10705 // encode utf8
10706 if (codePoint < 0x80) {
10707 if ((units -= 1) < 0) break
10708 bytes.push(codePoint)
10709 } else if (codePoint < 0x800) {
10710 if ((units -= 2) < 0) break
10711 bytes.push(
10712 codePoint >> 0x6 | 0xC0,
10713 codePoint & 0x3F | 0x80
10714 )
10715 } else if (codePoint < 0x10000) {
10716 if ((units -= 3) < 0) break
10717 bytes.push(
10718 codePoint >> 0xC | 0xE0,
10719 codePoint >> 0x6 & 0x3F | 0x80,
10720 codePoint & 0x3F | 0x80
10721 )
10722 } else if (codePoint < 0x110000) {
10723 if ((units -= 4) < 0) break
10724 bytes.push(
10725 codePoint >> 0x12 | 0xF0,
10726 codePoint >> 0xC & 0x3F | 0x80,
10727 codePoint >> 0x6 & 0x3F | 0x80,
10728 codePoint & 0x3F | 0x80
10729 )
10730 } else {
10731 throw new Error('Invalid code point')
10732 }
10733 }
10734
10735 return bytes
10736}
10737
10738function asciiToBytes (str) {
10739 var byteArray = []
10740 for (var i = 0; i < str.length; i++) {
10741 // Node's code seems to be doing this and not & 0x7F..
10742 byteArray.push(str.charCodeAt(i) & 0xFF)
10743 }
10744 return byteArray
10745}
10746
10747function utf16leToBytes (str, units) {
10748 var c, hi, lo
10749 var byteArray = []
10750 for (var i = 0; i < str.length; i++) {
10751 if ((units -= 2) < 0) break
10752
10753 c = str.charCodeAt(i)
10754 hi = c >> 8
10755 lo = c % 256
10756 byteArray.push(lo)
10757 byteArray.push(hi)
10758 }
10759
10760 return byteArray
10761}
10762
10763function base64ToBytes (str) {
10764 return base64.toByteArray(base64clean(str))
10765}
10766
10767function blitBuffer (src, dst, offset, length) {
10768 for (var i = 0; i < length; i++) {
10769 if ((i + offset >= dst.length) || (i >= src.length)) break
10770 dst[i + offset] = src[i]
10771 }
10772 return i
10773}
10774
10775},{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
10776var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10777
10778;(function (exports) {
10779 'use strict';
10780
10781 var Arr = (typeof Uint8Array !== 'undefined')
10782 ? Uint8Array
10783 : Array
10784
10785 var PLUS = '+'.charCodeAt(0)
10786 var SLASH = '/'.charCodeAt(0)
10787 var NUMBER = '0'.charCodeAt(0)
10788 var LOWER = 'a'.charCodeAt(0)
10789 var UPPER = 'A'.charCodeAt(0)
10790 var PLUS_URL_SAFE = '-'.charCodeAt(0)
10791 var SLASH_URL_SAFE = '_'.charCodeAt(0)
10792
10793 function decode (elt) {
10794 var code = elt.charCodeAt(0)
10795 if (code === PLUS ||
10796 code === PLUS_URL_SAFE)
10797 return 62 // '+'
10798 if (code === SLASH ||
10799 code === SLASH_URL_SAFE)
10800 return 63 // '/'
10801 if (code < NUMBER)
10802 return -1 //no match
10803 if (code < NUMBER + 10)
10804 return code - NUMBER + 26 + 26
10805 if (code < UPPER + 26)
10806 return code - UPPER
10807 if (code < LOWER + 26)
10808 return code - LOWER + 26
10809 }
10810
10811 function b64ToByteArray (b64) {
10812 var i, j, l, tmp, placeHolders, arr
10813
10814 if (b64.length % 4 > 0) {
10815 throw new Error('Invalid string. Length must be a multiple of 4')
10816 }
10817
10818 // the number of equal signs (place holders)
10819 // if there are two placeholders, than the two characters before it
10820 // represent one byte
10821 // if there is only one, then the three characters before it represent 2 bytes
10822 // this is just a cheap hack to not do indexOf twice
10823 var len = b64.length
10824 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
10825
10826 // base64 is 4/3 + up to two characters of the original data
10827 arr = new Arr(b64.length * 3 / 4 - placeHolders)
10828
10829 // if there are placeholders, only get up to the last complete 4 chars
10830 l = placeHolders > 0 ? b64.length - 4 : b64.length
10831
10832 var L = 0
10833
10834 function push (v) {
10835 arr[L++] = v
10836 }
10837
10838 for (i = 0, j = 0; i < l; i += 4, j += 3) {
10839 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
10840 push((tmp & 0xFF0000) >> 16)
10841 push((tmp & 0xFF00) >> 8)
10842 push(tmp & 0xFF)
10843 }
10844
10845 if (placeHolders === 2) {
10846 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
10847 push(tmp & 0xFF)
10848 } else if (placeHolders === 1) {
10849 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
10850 push((tmp >> 8) & 0xFF)
10851 push(tmp & 0xFF)
10852 }
10853
10854 return arr
10855 }
10856
10857 function uint8ToBase64 (uint8) {
10858 var i,
10859 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
10860 output = "",
10861 temp, length
10862
10863 function encode (num) {
10864 return lookup.charAt(num)
10865 }
10866
10867 function tripletToBase64 (num) {
10868 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
10869 }
10870
10871 // go through the array every three bytes, we'll deal with trailing stuff later
10872 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
10873 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
10874 output += tripletToBase64(temp)
10875 }
10876
10877 // pad the end with zeros, but make sure to not forget the extra bytes
10878 switch (extraBytes) {
10879 case 1:
10880 temp = uint8[uint8.length - 1]
10881 output += encode(temp >> 2)
10882 output += encode((temp << 4) & 0x3F)
10883 output += '=='
10884 break
10885 case 2:
10886 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
10887 output += encode(temp >> 10)
10888 output += encode((temp >> 4) & 0x3F)
10889 output += encode((temp << 2) & 0x3F)
10890 output += '='
10891 break
10892 }
10893
10894 return output
10895 }
10896
10897 exports.toByteArray = b64ToByteArray
10898 exports.fromByteArray = uint8ToBase64
10899}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
10900
10901},{}],9:[function(require,module,exports){
10902exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10903 var e, m
10904 var eLen = nBytes * 8 - mLen - 1
10905 var eMax = (1 << eLen) - 1
10906 var eBias = eMax >> 1
10907 var nBits = -7
10908 var i = isLE ? (nBytes - 1) : 0
10909 var d = isLE ? -1 : 1
10910 var s = buffer[offset + i]
10911
10912 i += d
10913
10914 e = s & ((1 << (-nBits)) - 1)
10915 s >>= (-nBits)
10916 nBits += eLen
10917 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10918
10919 m = e & ((1 << (-nBits)) - 1)
10920 e >>= (-nBits)
10921 nBits += mLen
10922 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10923
10924 if (e === 0) {
10925 e = 1 - eBias
10926 } else if (e === eMax) {
10927 return m ? NaN : ((s ? -1 : 1) * Infinity)
10928 } else {
10929 m = m + Math.pow(2, mLen)
10930 e = e - eBias
10931 }
10932 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10933}
10934
10935exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10936 var e, m, c
10937 var eLen = nBytes * 8 - mLen - 1
10938 var eMax = (1 << eLen) - 1
10939 var eBias = eMax >> 1
10940 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10941 var i = isLE ? 0 : (nBytes - 1)
10942 var d = isLE ? 1 : -1
10943 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10944
10945 value = Math.abs(value)
10946
10947 if (isNaN(value) || value === Infinity) {
10948 m = isNaN(value) ? 1 : 0
10949 e = eMax
10950 } else {
10951 e = Math.floor(Math.log(value) / Math.LN2)
10952 if (value * (c = Math.pow(2, -e)) < 1) {
10953 e--
10954 c *= 2
10955 }
10956 if (e + eBias >= 1) {
10957 value += rt / c
10958 } else {
10959 value += rt * Math.pow(2, 1 - eBias)
10960 }
10961 if (value * c >= 2) {
10962 e++
10963 c /= 2
10964 }
10965
10966 if (e + eBias >= eMax) {
10967 m = 0
10968 e = eMax
10969 } else if (e + eBias >= 1) {
10970 m = (value * c - 1) * Math.pow(2, mLen)
10971 e = e + eBias
10972 } else {
10973 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10974 e = 0
10975 }
10976 }
10977
10978 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10979
10980 e = (e << mLen) | m
10981 eLen += mLen
10982 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10983
10984 buffer[offset + i - d] |= s * 128
10985}
10986
10987},{}],10:[function(require,module,exports){
10988
10989/**
10990 * isArray
10991 */
10992
10993var isArray = Array.isArray;
10994
10995/**
10996 * toString
10997 */
10998
10999var str = Object.prototype.toString;
11000
11001/**
11002 * Whether or not the given `val`
11003 * is an array.
11004 *
11005 * example:
11006 *
11007 * isArray([]);
11008 * // > true
11009 * isArray(arguments);
11010 * // > false
11011 * isArray('');
11012 * // > false
11013 *
11014 * @param {mixed} val
11015 * @return {bool}
11016 */
11017
11018module.exports = isArray || function (val) {
11019 return !! val && '[object Array]' == str.call(val);
11020};
11021
11022},{}],11:[function(require,module,exports){
11023// Copyright Joyent, Inc. and other Node contributors.
11024//
11025// Permission is hereby granted, free of charge, to any person obtaining a
11026// copy of this software and associated documentation files (the
11027// "Software"), to deal in the Software without restriction, including
11028// without limitation the rights to use, copy, modify, merge, publish,
11029// distribute, sublicense, and/or sell copies of the Software, and to permit
11030// persons to whom the Software is furnished to do so, subject to the
11031// following conditions:
11032//
11033// The above copyright notice and this permission notice shall be included
11034// in all copies or substantial portions of the Software.
11035//
11036// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11037// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11038// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11039// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11040// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11041// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11042// USE OR OTHER DEALINGS IN THE SOFTWARE.
11043
11044function EventEmitter() {
11045 this._events = this._events || {};
11046 this._maxListeners = this._maxListeners || undefined;
11047}
11048module.exports = EventEmitter;
11049
11050// Backwards-compat with node 0.10.x
11051EventEmitter.EventEmitter = EventEmitter;
11052
11053EventEmitter.prototype._events = undefined;
11054EventEmitter.prototype._maxListeners = undefined;
11055
11056// By default EventEmitters will print a warning if more than 10 listeners are
11057// added to it. This is a useful default which helps finding memory leaks.
11058EventEmitter.defaultMaxListeners = 10;
11059
11060// Obviously not all Emitters should be limited to 10. This function allows
11061// that to be increased. Set to zero for unlimited.
11062EventEmitter.prototype.setMaxListeners = function(n) {
11063 if (!isNumber(n) || n < 0 || isNaN(n))
11064 throw TypeError('n must be a positive number');
11065 this._maxListeners = n;
11066 return this;
11067};
11068
11069EventEmitter.prototype.emit = function(type) {
11070 var er, handler, len, args, i, listeners;
11071
11072 if (!this._events)
11073 this._events = {};
11074
11075 // If there is no 'error' event listener then throw.
11076 if (type === 'error') {
11077 if (!this._events.error ||
11078 (isObject(this._events.error) && !this._events.error.length)) {
11079 er = arguments[1];
11080 if (er instanceof Error) {
11081 throw er; // Unhandled 'error' event
11082 }
11083 throw TypeError('Uncaught, unspecified "error" event.');
11084 }
11085 }
11086
11087 handler = this._events[type];
11088
11089 if (isUndefined(handler))
11090 return false;
11091
11092 if (isFunction(handler)) {
11093 switch (arguments.length) {
11094 // fast cases
11095 case 1:
11096 handler.call(this);
11097 break;
11098 case 2:
11099 handler.call(this, arguments[1]);
11100 break;
11101 case 3:
11102 handler.call(this, arguments[1], arguments[2]);
11103 break;
11104 // slower
11105 default:
11106 len = arguments.length;
11107 args = new Array(len - 1);
11108 for (i = 1; i < len; i++)
11109 args[i - 1] = arguments[i];
11110 handler.apply(this, args);
11111 }
11112 } else if (isObject(handler)) {
11113 len = arguments.length;
11114 args = new Array(len - 1);
11115 for (i = 1; i < len; i++)
11116 args[i - 1] = arguments[i];
11117
11118 listeners = handler.slice();
11119 len = listeners.length;
11120 for (i = 0; i < len; i++)
11121 listeners[i].apply(this, args);
11122 }
11123
11124 return true;
11125};
11126
11127EventEmitter.prototype.addListener = function(type, listener) {
11128 var m;
11129
11130 if (!isFunction(listener))
11131 throw TypeError('listener must be a function');
11132
11133 if (!this._events)
11134 this._events = {};
11135
11136 // To avoid recursion in the case that type === "newListener"! Before
11137 // adding it to the listeners, first emit "newListener".
11138 if (this._events.newListener)
11139 this.emit('newListener', type,
11140 isFunction(listener.listener) ?
11141 listener.listener : listener);
11142
11143 if (!this._events[type])
11144 // Optimize the case of one listener. Don't need the extra array object.
11145 this._events[type] = listener;
11146 else if (isObject(this._events[type]))
11147 // If we've already got an array, just append.
11148 this._events[type].push(listener);
11149 else
11150 // Adding the second element, need to change to array.
11151 this._events[type] = [this._events[type], listener];
11152
11153 // Check for listener leak
11154 if (isObject(this._events[type]) && !this._events[type].warned) {
11155 var m;
11156 if (!isUndefined(this._maxListeners)) {
11157 m = this._maxListeners;
11158 } else {
11159 m = EventEmitter.defaultMaxListeners;
11160 }
11161
11162 if (m && m > 0 && this._events[type].length > m) {
11163 this._events[type].warned = true;
11164 console.error('(node) warning: possible EventEmitter memory ' +
11165 'leak detected. %d listeners added. ' +
11166 'Use emitter.setMaxListeners() to increase limit.',
11167 this._events[type].length);
11168 if (typeof console.trace === 'function') {
11169 // not supported in IE 10
11170 console.trace();
11171 }
11172 }
11173 }
11174
11175 return this;
11176};
11177
11178EventEmitter.prototype.on = EventEmitter.prototype.addListener;
11179
11180EventEmitter.prototype.once = function(type, listener) {
11181 if (!isFunction(listener))
11182 throw TypeError('listener must be a function');
11183
11184 var fired = false;
11185
11186 function g() {
11187 this.removeListener(type, g);
11188
11189 if (!fired) {
11190 fired = true;
11191 listener.apply(this, arguments);
11192 }
11193 }
11194
11195 g.listener = listener;
11196 this.on(type, g);
11197
11198 return this;
11199};
11200
11201// emits a 'removeListener' event iff the listener was removed
11202EventEmitter.prototype.removeListener = function(type, listener) {
11203 var list, position, length, i;
11204
11205 if (!isFunction(listener))
11206 throw TypeError('listener must be a function');
11207
11208 if (!this._events || !this._events[type])
11209 return this;
11210
11211 list = this._events[type];
11212 length = list.length;
11213 position = -1;
11214
11215 if (list === listener ||
11216 (isFunction(list.listener) && list.listener === listener)) {
11217 delete this._events[type];
11218 if (this._events.removeListener)
11219 this.emit('removeListener', type, listener);
11220
11221 } else if (isObject(list)) {
11222 for (i = length; i-- > 0;) {
11223 if (list[i] === listener ||
11224 (list[i].listener && list[i].listener === listener)) {
11225 position = i;
11226 break;
11227 }
11228 }
11229
11230 if (position < 0)
11231 return this;
11232
11233 if (list.length === 1) {
11234 list.length = 0;
11235 delete this._events[type];
11236 } else {
11237 list.splice(position, 1);
11238 }
11239
11240 if (this._events.removeListener)
11241 this.emit('removeListener', type, listener);
11242 }
11243
11244 return this;
11245};
11246
11247EventEmitter.prototype.removeAllListeners = function(type) {
11248 var key, listeners;
11249
11250 if (!this._events)
11251 return this;
11252
11253 // not listening for removeListener, no need to emit
11254 if (!this._events.removeListener) {
11255 if (arguments.length === 0)
11256 this._events = {};
11257 else if (this._events[type])
11258 delete this._events[type];
11259 return this;
11260 }
11261
11262 // emit removeListener for all listeners on all events
11263 if (arguments.length === 0) {
11264 for (key in this._events) {
11265 if (key === 'removeListener') continue;
11266 this.removeAllListeners(key);
11267 }
11268 this.removeAllListeners('removeListener');
11269 this._events = {};
11270 return this;
11271 }
11272
11273 listeners = this._events[type];
11274
11275 if (isFunction(listeners)) {
11276 this.removeListener(type, listeners);
11277 } else {
11278 // LIFO order
11279 while (listeners.length)
11280 this.removeListener(type, listeners[listeners.length - 1]);
11281 }
11282 delete this._events[type];
11283
11284 return this;
11285};
11286
11287EventEmitter.prototype.listeners = function(type) {
11288 var ret;
11289 if (!this._events || !this._events[type])
11290 ret = [];
11291 else if (isFunction(this._events[type]))
11292 ret = [this._events[type]];
11293 else
11294 ret = this._events[type].slice();
11295 return ret;
11296};
11297
11298EventEmitter.listenerCount = function(emitter, type) {
11299 var ret;
11300 if (!emitter._events || !emitter._events[type])
11301 ret = 0;
11302 else if (isFunction(emitter._events[type]))
11303 ret = 1;
11304 else
11305 ret = emitter._events[type].length;
11306 return ret;
11307};
11308
11309function isFunction(arg) {
11310 return typeof arg === 'function';
11311}
11312
11313function isNumber(arg) {
11314 return typeof arg === 'number';
11315}
11316
11317function isObject(arg) {
11318 return typeof arg === 'object' && arg !== null;
11319}
11320
11321function isUndefined(arg) {
11322 return arg === void 0;
11323}
11324
11325},{}],12:[function(require,module,exports){
11326if (typeof Object.create === 'function') {
11327 // implementation from standard node.js 'util' module
11328 module.exports = function inherits(ctor, superCtor) {
11329 ctor.super_ = superCtor
11330 ctor.prototype = Object.create(superCtor.prototype, {
11331 constructor: {
11332 value: ctor,
11333 enumerable: false,
11334 writable: true,
11335 configurable: true
11336 }
11337 });
11338 };
11339} else {
11340 // old school shim for old browsers
11341 module.exports = function inherits(ctor, superCtor) {
11342 ctor.super_ = superCtor
11343 var TempCtor = function () {}
11344 TempCtor.prototype = superCtor.prototype
11345 ctor.prototype = new TempCtor()
11346 ctor.prototype.constructor = ctor
11347 }
11348}
11349
11350},{}],13:[function(require,module,exports){
11351module.exports = Array.isArray || function (arr) {
11352 return Object.prototype.toString.call(arr) == '[object Array]';
11353};
11354
11355},{}],14:[function(require,module,exports){
11356// shim for using process in browser
11357
11358var process = module.exports = {};
11359var queue = [];
11360var draining = false;
11361var currentQueue;
11362var queueIndex = -1;
11363
11364function cleanUpNextTick() {
11365 draining = false;
11366 if (currentQueue.length) {
11367 queue = currentQueue.concat(queue);
11368 } else {
11369 queueIndex = -1;
11370 }
11371 if (queue.length) {
11372 drainQueue();
11373 }
11374}
11375
11376function drainQueue() {
11377 if (draining) {
11378 return;
11379 }
11380 var timeout = setTimeout(cleanUpNextTick);
11381 draining = true;
11382
11383 var len = queue.length;
11384 while(len) {
11385 currentQueue = queue;
11386 queue = [];
11387 while (++queueIndex < len) {
11388 currentQueue[queueIndex].run();
11389 }
11390 queueIndex = -1;
11391 len = queue.length;
11392 }
11393 currentQueue = null;
11394 draining = false;
11395 clearTimeout(timeout);
11396}
11397
11398process.nextTick = function (fun) {
11399 var args = new Array(arguments.length - 1);
11400 if (arguments.length > 1) {
11401 for (var i = 1; i < arguments.length; i++) {
11402 args[i - 1] = arguments[i];
11403 }
11404 }
11405 queue.push(new Item(fun, args));
11406 if (queue.length === 1 && !draining) {
11407 setTimeout(drainQueue, 0);
11408 }
11409};
11410
11411// v8 likes predictible objects
11412function Item(fun, array) {
11413 this.fun = fun;
11414 this.array = array;
11415}
11416Item.prototype.run = function () {
11417 this.fun.apply(null, this.array);
11418};
11419process.title = 'browser';
11420process.browser = true;
11421process.env = {};
11422process.argv = [];
11423process.version = ''; // empty string to avoid regexp issues
11424process.versions = {};
11425
11426function noop() {}
11427
11428process.on = noop;
11429process.addListener = noop;
11430process.once = noop;
11431process.off = noop;
11432process.removeListener = noop;
11433process.removeAllListeners = noop;
11434process.emit = noop;
11435
11436process.binding = function (name) {
11437 throw new Error('process.binding is not supported');
11438};
11439
11440// TODO(shtylman)
11441process.cwd = function () { return '/' };
11442process.chdir = function (dir) {
11443 throw new Error('process.chdir is not supported');
11444};
11445process.umask = function() { return 0; };
11446
11447},{}],15:[function(require,module,exports){
11448module.exports = require("./lib/_stream_duplex.js")
11449
11450},{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
11451(function (process){
11452// Copyright Joyent, Inc. and other Node contributors.
11453//
11454// Permission is hereby granted, free of charge, to any person obtaining a
11455// copy of this software and associated documentation files (the
11456// "Software"), to deal in the Software without restriction, including
11457// without limitation the rights to use, copy, modify, merge, publish,
11458// distribute, sublicense, and/or sell copies of the Software, and to permit
11459// persons to whom the Software is furnished to do so, subject to the
11460// following conditions:
11461//
11462// The above copyright notice and this permission notice shall be included
11463// in all copies or substantial portions of the Software.
11464//
11465// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11466// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11467// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11468// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11469// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11470// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11471// USE OR OTHER DEALINGS IN THE SOFTWARE.
11472
11473// a duplex stream is just a stream that is both readable and writable.
11474// Since JS doesn't have multiple prototypal inheritance, this class
11475// prototypally inherits from Readable, and then parasitically from
11476// Writable.
11477
11478module.exports = Duplex;
11479
11480/*<replacement>*/
11481var objectKeys = Object.keys || function (obj) {
11482 var keys = [];
11483 for (var key in obj) keys.push(key);
11484 return keys;
11485}
11486/*</replacement>*/
11487
11488
11489/*<replacement>*/
11490var util = require('core-util-is');
11491util.inherits = require('inherits');
11492/*</replacement>*/
11493
11494var Readable = require('./_stream_readable');
11495var Writable = require('./_stream_writable');
11496
11497util.inherits(Duplex, Readable);
11498
11499forEach(objectKeys(Writable.prototype), function(method) {
11500 if (!Duplex.prototype[method])
11501 Duplex.prototype[method] = Writable.prototype[method];
11502});
11503
11504function Duplex(options) {
11505 if (!(this instanceof Duplex))
11506 return new Duplex(options);
11507
11508 Readable.call(this, options);
11509 Writable.call(this, options);
11510
11511 if (options && options.readable === false)
11512 this.readable = false;
11513
11514 if (options && options.writable === false)
11515 this.writable = false;
11516
11517 this.allowHalfOpen = true;
11518 if (options && options.allowHalfOpen === false)
11519 this.allowHalfOpen = false;
11520
11521 this.once('end', onend);
11522}
11523
11524// the no-half-open enforcer
11525function onend() {
11526 // if we allow half-open state, or if the writable side ended,
11527 // then we're ok.
11528 if (this.allowHalfOpen || this._writableState.ended)
11529 return;
11530
11531 // no more data can be written.
11532 // But allow more writes to happen in this tick.
11533 process.nextTick(this.end.bind(this));
11534}
11535
11536function forEach (xs, f) {
11537 for (var i = 0, l = xs.length; i < l; i++) {
11538 f(xs[i], i);
11539 }
11540}
11541
11542}).call(this,require('_process'))
11543},{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
11544// Copyright Joyent, Inc. and other Node contributors.
11545//
11546// Permission is hereby granted, free of charge, to any person obtaining a
11547// copy of this software and associated documentation files (the
11548// "Software"), to deal in the Software without restriction, including
11549// without limitation the rights to use, copy, modify, merge, publish,
11550// distribute, sublicense, and/or sell copies of the Software, and to permit
11551// persons to whom the Software is furnished to do so, subject to the
11552// following conditions:
11553//
11554// The above copyright notice and this permission notice shall be included
11555// in all copies or substantial portions of the Software.
11556//
11557// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11558// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11559// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11560// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11561// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11562// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11563// USE OR OTHER DEALINGS IN THE SOFTWARE.
11564
11565// a passthrough stream.
11566// basically just the most minimal sort of Transform stream.
11567// Every written chunk gets output as-is.
11568
11569module.exports = PassThrough;
11570
11571var Transform = require('./_stream_transform');
11572
11573/*<replacement>*/
11574var util = require('core-util-is');
11575util.inherits = require('inherits');
11576/*</replacement>*/
11577
11578util.inherits(PassThrough, Transform);
11579
11580function PassThrough(options) {
11581 if (!(this instanceof PassThrough))
11582 return new PassThrough(options);
11583
11584 Transform.call(this, options);
11585}
11586
11587PassThrough.prototype._transform = function(chunk, encoding, cb) {
11588 cb(null, chunk);
11589};
11590
11591},{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
11592(function (process){
11593// Copyright Joyent, Inc. and other Node contributors.
11594//
11595// Permission is hereby granted, free of charge, to any person obtaining a
11596// copy of this software and associated documentation files (the
11597// "Software"), to deal in the Software without restriction, including
11598// without limitation the rights to use, copy, modify, merge, publish,
11599// distribute, sublicense, and/or sell copies of the Software, and to permit
11600// persons to whom the Software is furnished to do so, subject to the
11601// following conditions:
11602//
11603// The above copyright notice and this permission notice shall be included
11604// in all copies or substantial portions of the Software.
11605//
11606// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11607// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11608// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11609// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11610// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11611// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11612// USE OR OTHER DEALINGS IN THE SOFTWARE.
11613
11614module.exports = Readable;
11615
11616/*<replacement>*/
11617var isArray = require('isarray');
11618/*</replacement>*/
11619
11620
11621/*<replacement>*/
11622var Buffer = require('buffer').Buffer;
11623/*</replacement>*/
11624
11625Readable.ReadableState = ReadableState;
11626
11627var EE = require('events').EventEmitter;
11628
11629/*<replacement>*/
11630if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
11631 return emitter.listeners(type).length;
11632};
11633/*</replacement>*/
11634
11635var Stream = require('stream');
11636
11637/*<replacement>*/
11638var util = require('core-util-is');
11639util.inherits = require('inherits');
11640/*</replacement>*/
11641
11642var StringDecoder;
11643
11644
11645/*<replacement>*/
11646var debug = require('util');
11647if (debug && debug.debuglog) {
11648 debug = debug.debuglog('stream');
11649} else {
11650 debug = function () {};
11651}
11652/*</replacement>*/
11653
11654
11655util.inherits(Readable, Stream);
11656
11657function ReadableState(options, stream) {
11658 var Duplex = require('./_stream_duplex');
11659
11660 options = options || {};
11661
11662 // the point at which it stops calling _read() to fill the buffer
11663 // Note: 0 is a valid value, means "don't call _read preemptively ever"
11664 var hwm = options.highWaterMark;
11665 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
11666 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
11667
11668 // cast to ints.
11669 this.highWaterMark = ~~this.highWaterMark;
11670
11671 this.buffer = [];
11672 this.length = 0;
11673 this.pipes = null;
11674 this.pipesCount = 0;
11675 this.flowing = null;
11676 this.ended = false;
11677 this.endEmitted = false;
11678 this.reading = false;
11679
11680 // a flag to be able to tell if the onwrite cb is called immediately,
11681 // or on a later tick. We set this to true at first, because any
11682 // actions that shouldn't happen until "later" should generally also
11683 // not happen before the first write call.
11684 this.sync = true;
11685
11686 // whenever we return null, then we set a flag to say
11687 // that we're awaiting a 'readable' event emission.
11688 this.needReadable = false;
11689 this.emittedReadable = false;
11690 this.readableListening = false;
11691
11692
11693 // object stream flag. Used to make read(n) ignore n and to
11694 // make all the buffer merging and length checks go away
11695 this.objectMode = !!options.objectMode;
11696
11697 if (stream instanceof Duplex)
11698 this.objectMode = this.objectMode || !!options.readableObjectMode;
11699
11700 // Crypto is kind of old and crusty. Historically, its default string
11701 // encoding is 'binary' so we have to make this configurable.
11702 // Everything else in the universe uses 'utf8', though.
11703 this.defaultEncoding = options.defaultEncoding || 'utf8';
11704
11705 // when piping, we only care about 'readable' events that happen
11706 // after read()ing all the bytes and not getting any pushback.
11707 this.ranOut = false;
11708
11709 // the number of writers that are awaiting a drain event in .pipe()s
11710 this.awaitDrain = 0;
11711
11712 // if true, a maybeReadMore has been scheduled
11713 this.readingMore = false;
11714
11715 this.decoder = null;
11716 this.encoding = null;
11717 if (options.encoding) {
11718 if (!StringDecoder)
11719 StringDecoder = require('string_decoder/').StringDecoder;
11720 this.decoder = new StringDecoder(options.encoding);
11721 this.encoding = options.encoding;
11722 }
11723}
11724
11725function Readable(options) {
11726 var Duplex = require('./_stream_duplex');
11727
11728 if (!(this instanceof Readable))
11729 return new Readable(options);
11730
11731 this._readableState = new ReadableState(options, this);
11732
11733 // legacy
11734 this.readable = true;
11735
11736 Stream.call(this);
11737}
11738
11739// Manually shove something into the read() buffer.
11740// This returns true if the highWaterMark has not been hit yet,
11741// similar to how Writable.write() returns true if you should
11742// write() some more.
11743Readable.prototype.push = function(chunk, encoding) {
11744 var state = this._readableState;
11745
11746 if (util.isString(chunk) && !state.objectMode) {
11747 encoding = encoding || state.defaultEncoding;
11748 if (encoding !== state.encoding) {
11749 chunk = new Buffer(chunk, encoding);
11750 encoding = '';
11751 }
11752 }
11753
11754 return readableAddChunk(this, state, chunk, encoding, false);
11755};
11756
11757// Unshift should *always* be something directly out of read()
11758Readable.prototype.unshift = function(chunk) {
11759 var state = this._readableState;
11760 return readableAddChunk(this, state, chunk, '', true);
11761};
11762
11763function readableAddChunk(stream, state, chunk, encoding, addToFront) {
11764 var er = chunkInvalid(state, chunk);
11765 if (er) {
11766 stream.emit('error', er);
11767 } else if (util.isNullOrUndefined(chunk)) {
11768 state.reading = false;
11769 if (!state.ended)
11770 onEofChunk(stream, state);
11771 } else if (state.objectMode || chunk && chunk.length > 0) {
11772 if (state.ended && !addToFront) {
11773 var e = new Error('stream.push() after EOF');
11774 stream.emit('error', e);
11775 } else if (state.endEmitted && addToFront) {
11776 var e = new Error('stream.unshift() after end event');
11777 stream.emit('error', e);
11778 } else {
11779 if (state.decoder && !addToFront && !encoding)
11780 chunk = state.decoder.write(chunk);
11781
11782 if (!addToFront)
11783 state.reading = false;
11784
11785 // if we want the data now, just emit it.
11786 if (state.flowing && state.length === 0 && !state.sync) {
11787 stream.emit('data', chunk);
11788 stream.read(0);
11789 } else {
11790 // update the buffer info.
11791 state.length += state.objectMode ? 1 : chunk.length;
11792 if (addToFront)
11793 state.buffer.unshift(chunk);
11794 else
11795 state.buffer.push(chunk);
11796
11797 if (state.needReadable)
11798 emitReadable(stream);
11799 }
11800
11801 maybeReadMore(stream, state);
11802 }
11803 } else if (!addToFront) {
11804 state.reading = false;
11805 }
11806
11807 return needMoreData(state);
11808}
11809
11810
11811
11812// if it's past the high water mark, we can push in some more.
11813// Also, if we have no data yet, we can stand some
11814// more bytes. This is to work around cases where hwm=0,
11815// such as the repl. Also, if the push() triggered a
11816// readable event, and the user called read(largeNumber) such that
11817// needReadable was set, then we ought to push more, so that another
11818// 'readable' event will be triggered.
11819function needMoreData(state) {
11820 return !state.ended &&
11821 (state.needReadable ||
11822 state.length < state.highWaterMark ||
11823 state.length === 0);
11824}
11825
11826// backwards compatibility.
11827Readable.prototype.setEncoding = function(enc) {
11828 if (!StringDecoder)
11829 StringDecoder = require('string_decoder/').StringDecoder;
11830 this._readableState.decoder = new StringDecoder(enc);
11831 this._readableState.encoding = enc;
11832 return this;
11833};
11834
11835// Don't raise the hwm > 128MB
11836var MAX_HWM = 0x800000;
11837function roundUpToNextPowerOf2(n) {
11838 if (n >= MAX_HWM) {
11839 n = MAX_HWM;
11840 } else {
11841 // Get the next highest power of 2
11842 n--;
11843 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
11844 n++;
11845 }
11846 return n;
11847}
11848
11849function howMuchToRead(n, state) {
11850 if (state.length === 0 && state.ended)
11851 return 0;
11852
11853 if (state.objectMode)
11854 return n === 0 ? 0 : 1;
11855
11856 if (isNaN(n) || util.isNull(n)) {
11857 // only flow one buffer at a time
11858 if (state.flowing && state.buffer.length)
11859 return state.buffer[0].length;
11860 else
11861 return state.length;
11862 }
11863
11864 if (n <= 0)
11865 return 0;
11866
11867 // If we're asking for more than the target buffer level,
11868 // then raise the water mark. Bump up to the next highest
11869 // power of 2, to prevent increasing it excessively in tiny
11870 // amounts.
11871 if (n > state.highWaterMark)
11872 state.highWaterMark = roundUpToNextPowerOf2(n);
11873
11874 // don't have that much. return null, unless we've ended.
11875 if (n > state.length) {
11876 if (!state.ended) {
11877 state.needReadable = true;
11878 return 0;
11879 } else
11880 return state.length;
11881 }
11882
11883 return n;
11884}
11885
11886// you can override either this method, or the async _read(n) below.
11887Readable.prototype.read = function(n) {
11888 debug('read', n);
11889 var state = this._readableState;
11890 var nOrig = n;
11891
11892 if (!util.isNumber(n) || n > 0)
11893 state.emittedReadable = false;
11894
11895 // if we're doing read(0) to trigger a readable event, but we
11896 // already have a bunch of data in the buffer, then just trigger
11897 // the 'readable' event and move on.
11898 if (n === 0 &&
11899 state.needReadable &&
11900 (state.length >= state.highWaterMark || state.ended)) {
11901 debug('read: emitReadable', state.length, state.ended);
11902 if (state.length === 0 && state.ended)
11903 endReadable(this);
11904 else
11905 emitReadable(this);
11906 return null;
11907 }
11908
11909 n = howMuchToRead(n, state);
11910
11911 // if we've ended, and we're now clear, then finish it up.
11912 if (n === 0 && state.ended) {
11913 if (state.length === 0)
11914 endReadable(this);
11915 return null;
11916 }
11917
11918 // All the actual chunk generation logic needs to be
11919 // *below* the call to _read. The reason is that in certain
11920 // synthetic stream cases, such as passthrough streams, _read
11921 // may be a completely synchronous operation which may change
11922 // the state of the read buffer, providing enough data when
11923 // before there was *not* enough.
11924 //
11925 // So, the steps are:
11926 // 1. Figure out what the state of things will be after we do
11927 // a read from the buffer.
11928 //
11929 // 2. If that resulting state will trigger a _read, then call _read.
11930 // Note that this may be asynchronous, or synchronous. Yes, it is
11931 // deeply ugly to write APIs this way, but that still doesn't mean
11932 // that the Readable class should behave improperly, as streams are
11933 // designed to be sync/async agnostic.
11934 // Take note if the _read call is sync or async (ie, if the read call
11935 // has returned yet), so that we know whether or not it's safe to emit
11936 // 'readable' etc.
11937 //
11938 // 3. Actually pull the requested chunks out of the buffer and return.
11939
11940 // if we need a readable event, then we need to do some reading.
11941 var doRead = state.needReadable;
11942 debug('need readable', doRead);
11943
11944 // if we currently have less than the highWaterMark, then also read some
11945 if (state.length === 0 || state.length - n < state.highWaterMark) {
11946 doRead = true;
11947 debug('length less than watermark', doRead);
11948 }
11949
11950 // however, if we've ended, then there's no point, and if we're already
11951 // reading, then it's unnecessary.
11952 if (state.ended || state.reading) {
11953 doRead = false;
11954 debug('reading or ended', doRead);
11955 }
11956
11957 if (doRead) {
11958 debug('do read');
11959 state.reading = true;
11960 state.sync = true;
11961 // if the length is currently zero, then we *need* a readable event.
11962 if (state.length === 0)
11963 state.needReadable = true;
11964 // call internal read method
11965 this._read(state.highWaterMark);
11966 state.sync = false;
11967 }
11968
11969 // If _read pushed data synchronously, then `reading` will be false,
11970 // and we need to re-evaluate how much data we can return to the user.
11971 if (doRead && !state.reading)
11972 n = howMuchToRead(nOrig, state);
11973
11974 var ret;
11975 if (n > 0)
11976 ret = fromList(n, state);
11977 else
11978 ret = null;
11979
11980 if (util.isNull(ret)) {
11981 state.needReadable = true;
11982 n = 0;
11983 }
11984
11985 state.length -= n;
11986
11987 // If we have nothing in the buffer, then we want to know
11988 // as soon as we *do* get something into the buffer.
11989 if (state.length === 0 && !state.ended)
11990 state.needReadable = true;
11991
11992 // If we tried to read() past the EOF, then emit end on the next tick.
11993 if (nOrig !== n && state.ended && state.length === 0)
11994 endReadable(this);
11995
11996 if (!util.isNull(ret))
11997 this.emit('data', ret);
11998
11999 return ret;
12000};
12001
12002function chunkInvalid(state, chunk) {
12003 var er = null;
12004 if (!util.isBuffer(chunk) &&
12005 !util.isString(chunk) &&
12006 !util.isNullOrUndefined(chunk) &&
12007 !state.objectMode) {
12008 er = new TypeError('Invalid non-string/buffer chunk');
12009 }
12010 return er;
12011}
12012
12013
12014function onEofChunk(stream, state) {
12015 if (state.decoder && !state.ended) {
12016 var chunk = state.decoder.end();
12017 if (chunk && chunk.length) {
12018 state.buffer.push(chunk);
12019 state.length += state.objectMode ? 1 : chunk.length;
12020 }
12021 }
12022 state.ended = true;
12023
12024 // emit 'readable' now to make sure it gets picked up.
12025 emitReadable(stream);
12026}
12027
12028// Don't emit readable right away in sync mode, because this can trigger
12029// another read() call => stack overflow. This way, it might trigger
12030// a nextTick recursion warning, but that's not so bad.
12031function emitReadable(stream) {
12032 var state = stream._readableState;
12033 state.needReadable = false;
12034 if (!state.emittedReadable) {
12035 debug('emitReadable', state.flowing);
12036 state.emittedReadable = true;
12037 if (state.sync)
12038 process.nextTick(function() {
12039 emitReadable_(stream);
12040 });
12041 else
12042 emitReadable_(stream);
12043 }
12044}
12045
12046function emitReadable_(stream) {
12047 debug('emit readable');
12048 stream.emit('readable');
12049 flow(stream);
12050}
12051
12052
12053// at this point, the user has presumably seen the 'readable' event,
12054// and called read() to consume some data. that may have triggered
12055// in turn another _read(n) call, in which case reading = true if
12056// it's in progress.
12057// However, if we're not ended, or reading, and the length < hwm,
12058// then go ahead and try to read some more preemptively.
12059function maybeReadMore(stream, state) {
12060 if (!state.readingMore) {
12061 state.readingMore = true;
12062 process.nextTick(function() {
12063 maybeReadMore_(stream, state);
12064 });
12065 }
12066}
12067
12068function maybeReadMore_(stream, state) {
12069 var len = state.length;
12070 while (!state.reading && !state.flowing && !state.ended &&
12071 state.length < state.highWaterMark) {
12072 debug('maybeReadMore read 0');
12073 stream.read(0);
12074 if (len === state.length)
12075 // didn't get any data, stop spinning.
12076 break;
12077 else
12078 len = state.length;
12079 }
12080 state.readingMore = false;
12081}
12082
12083// abstract method. to be overridden in specific implementation classes.
12084// call cb(er, data) where data is <= n in length.
12085// for virtual (non-string, non-buffer) streams, "length" is somewhat
12086// arbitrary, and perhaps not very meaningful.
12087Readable.prototype._read = function(n) {
12088 this.emit('error', new Error('not implemented'));
12089};
12090
12091Readable.prototype.pipe = function(dest, pipeOpts) {
12092 var src = this;
12093 var state = this._readableState;
12094
12095 switch (state.pipesCount) {
12096 case 0:
12097 state.pipes = dest;
12098 break;
12099 case 1:
12100 state.pipes = [state.pipes, dest];
12101 break;
12102 default:
12103 state.pipes.push(dest);
12104 break;
12105 }
12106 state.pipesCount += 1;
12107 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
12108
12109 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
12110 dest !== process.stdout &&
12111 dest !== process.stderr;
12112
12113 var endFn = doEnd ? onend : cleanup;
12114 if (state.endEmitted)
12115 process.nextTick(endFn);
12116 else
12117 src.once('end', endFn);
12118
12119 dest.on('unpipe', onunpipe);
12120 function onunpipe(readable) {
12121 debug('onunpipe');
12122 if (readable === src) {
12123 cleanup();
12124 }
12125 }
12126
12127 function onend() {
12128 debug('onend');
12129 dest.end();
12130 }
12131
12132 // when the dest drains, it reduces the awaitDrain counter
12133 // on the source. This would be more elegant with a .once()
12134 // handler in flow(), but adding and removing repeatedly is
12135 // too slow.
12136 var ondrain = pipeOnDrain(src);
12137 dest.on('drain', ondrain);
12138
12139 function cleanup() {
12140 debug('cleanup');
12141 // cleanup event handlers once the pipe is broken
12142 dest.removeListener('close', onclose);
12143 dest.removeListener('finish', onfinish);
12144 dest.removeListener('drain', ondrain);
12145 dest.removeListener('error', onerror);
12146 dest.removeListener('unpipe', onunpipe);
12147 src.removeListener('end', onend);
12148 src.removeListener('end', cleanup);
12149 src.removeListener('data', ondata);
12150
12151 // if the reader is waiting for a drain event from this
12152 // specific writer, then it would cause it to never start
12153 // flowing again.
12154 // So, if this is awaiting a drain, then we just call it now.
12155 // If we don't know, then assume that we are waiting for one.
12156 if (state.awaitDrain &&
12157 (!dest._writableState || dest._writableState.needDrain))
12158 ondrain();
12159 }
12160
12161 src.on('data', ondata);
12162 function ondata(chunk) {
12163 debug('ondata');
12164 var ret = dest.write(chunk);
12165 if (false === ret) {
12166 debug('false write response, pause',
12167 src._readableState.awaitDrain);
12168 src._readableState.awaitDrain++;
12169 src.pause();
12170 }
12171 }
12172
12173 // if the dest has an error, then stop piping into it.
12174 // however, don't suppress the throwing behavior for this.
12175 function onerror(er) {
12176 debug('onerror', er);
12177 unpipe();
12178 dest.removeListener('error', onerror);
12179 if (EE.listenerCount(dest, 'error') === 0)
12180 dest.emit('error', er);
12181 }
12182 // This is a brutally ugly hack to make sure that our error handler
12183 // is attached before any userland ones. NEVER DO THIS.
12184 if (!dest._events || !dest._events.error)
12185 dest.on('error', onerror);
12186 else if (isArray(dest._events.error))
12187 dest._events.error.unshift(onerror);
12188 else
12189 dest._events.error = [onerror, dest._events.error];
12190
12191
12192
12193 // Both close and finish should trigger unpipe, but only once.
12194 function onclose() {
12195 dest.removeListener('finish', onfinish);
12196 unpipe();
12197 }
12198 dest.once('close', onclose);
12199 function onfinish() {
12200 debug('onfinish');
12201 dest.removeListener('close', onclose);
12202 unpipe();
12203 }
12204 dest.once('finish', onfinish);
12205
12206 function unpipe() {
12207 debug('unpipe');
12208 src.unpipe(dest);
12209 }
12210
12211 // tell the dest that it's being piped to
12212 dest.emit('pipe', src);
12213
12214 // start the flow if it hasn't been started already.
12215 if (!state.flowing) {
12216 debug('pipe resume');
12217 src.resume();
12218 }
12219
12220 return dest;
12221};
12222
12223function pipeOnDrain(src) {
12224 return function() {
12225 var state = src._readableState;
12226 debug('pipeOnDrain', state.awaitDrain);
12227 if (state.awaitDrain)
12228 state.awaitDrain--;
12229 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
12230 state.flowing = true;
12231 flow(src);
12232 }
12233 };
12234}
12235
12236
12237Readable.prototype.unpipe = function(dest) {
12238 var state = this._readableState;
12239
12240 // if we're not piping anywhere, then do nothing.
12241 if (state.pipesCount === 0)
12242 return this;
12243
12244 // just one destination. most common case.
12245 if (state.pipesCount === 1) {
12246 // passed in one, but it's not the right one.
12247 if (dest && dest !== state.pipes)
12248 return this;
12249
12250 if (!dest)
12251 dest = state.pipes;
12252
12253 // got a match.
12254 state.pipes = null;
12255 state.pipesCount = 0;
12256 state.flowing = false;
12257 if (dest)
12258 dest.emit('unpipe', this);
12259 return this;
12260 }
12261
12262 // slow case. multiple pipe destinations.
12263
12264 if (!dest) {
12265 // remove all.
12266 var dests = state.pipes;
12267 var len = state.pipesCount;
12268 state.pipes = null;
12269 state.pipesCount = 0;
12270 state.flowing = false;
12271
12272 for (var i = 0; i < len; i++)
12273 dests[i].emit('unpipe', this);
12274 return this;
12275 }
12276
12277 // try to find the right one.
12278 var i = indexOf(state.pipes, dest);
12279 if (i === -1)
12280 return this;
12281
12282 state.pipes.splice(i, 1);
12283 state.pipesCount -= 1;
12284 if (state.pipesCount === 1)
12285 state.pipes = state.pipes[0];
12286
12287 dest.emit('unpipe', this);
12288
12289 return this;
12290};
12291
12292// set up data events if they are asked for
12293// Ensure readable listeners eventually get something
12294Readable.prototype.on = function(ev, fn) {
12295 var res = Stream.prototype.on.call(this, ev, fn);
12296
12297 // If listening to data, and it has not explicitly been paused,
12298 // then call resume to start the flow of data on the next tick.
12299 if (ev === 'data' && false !== this._readableState.flowing) {
12300 this.resume();
12301 }
12302
12303 if (ev === 'readable' && this.readable) {
12304 var state = this._readableState;
12305 if (!state.readableListening) {
12306 state.readableListening = true;
12307 state.emittedReadable = false;
12308 state.needReadable = true;
12309 if (!state.reading) {
12310 var self = this;
12311 process.nextTick(function() {
12312 debug('readable nexttick read 0');
12313 self.read(0);
12314 });
12315 } else if (state.length) {
12316 emitReadable(this, state);
12317 }
12318 }
12319 }
12320
12321 return res;
12322};
12323Readable.prototype.addListener = Readable.prototype.on;
12324
12325// pause() and resume() are remnants of the legacy readable stream API
12326// If the user uses them, then switch into old mode.
12327Readable.prototype.resume = function() {
12328 var state = this._readableState;
12329 if (!state.flowing) {
12330 debug('resume');
12331 state.flowing = true;
12332 if (!state.reading) {
12333 debug('resume read 0');
12334 this.read(0);
12335 }
12336 resume(this, state);
12337 }
12338 return this;
12339};
12340
12341function resume(stream, state) {
12342 if (!state.resumeScheduled) {
12343 state.resumeScheduled = true;
12344 process.nextTick(function() {
12345 resume_(stream, state);
12346 });
12347 }
12348}
12349
12350function resume_(stream, state) {
12351 state.resumeScheduled = false;
12352 stream.emit('resume');
12353 flow(stream);
12354 if (state.flowing && !state.reading)
12355 stream.read(0);
12356}
12357
12358Readable.prototype.pause = function() {
12359 debug('call pause flowing=%j', this._readableState.flowing);
12360 if (false !== this._readableState.flowing) {
12361 debug('pause');
12362 this._readableState.flowing = false;
12363 this.emit('pause');
12364 }
12365 return this;
12366};
12367
12368function flow(stream) {
12369 var state = stream._readableState;
12370 debug('flow', state.flowing);
12371 if (state.flowing) {
12372 do {
12373 var chunk = stream.read();
12374 } while (null !== chunk && state.flowing);
12375 }
12376}
12377
12378// wrap an old-style stream as the async data source.
12379// This is *not* part of the readable stream interface.
12380// It is an ugly unfortunate mess of history.
12381Readable.prototype.wrap = function(stream) {
12382 var state = this._readableState;
12383 var paused = false;
12384
12385 var self = this;
12386 stream.on('end', function() {
12387 debug('wrapped end');
12388 if (state.decoder && !state.ended) {
12389 var chunk = state.decoder.end();
12390 if (chunk && chunk.length)
12391 self.push(chunk);
12392 }
12393
12394 self.push(null);
12395 });
12396
12397 stream.on('data', function(chunk) {
12398 debug('wrapped data');
12399 if (state.decoder)
12400 chunk = state.decoder.write(chunk);
12401 if (!chunk || !state.objectMode && !chunk.length)
12402 return;
12403
12404 var ret = self.push(chunk);
12405 if (!ret) {
12406 paused = true;
12407 stream.pause();
12408 }
12409 });
12410
12411 // proxy all the other methods.
12412 // important when wrapping filters and duplexes.
12413 for (var i in stream) {
12414 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
12415 this[i] = function(method) { return function() {
12416 return stream[method].apply(stream, arguments);
12417 }}(i);
12418 }
12419 }
12420
12421 // proxy certain important events.
12422 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
12423 forEach(events, function(ev) {
12424 stream.on(ev, self.emit.bind(self, ev));
12425 });
12426
12427 // when we try to consume some more bytes, simply unpause the
12428 // underlying stream.
12429 self._read = function(n) {
12430 debug('wrapped _read', n);
12431 if (paused) {
12432 paused = false;
12433 stream.resume();
12434 }
12435 };
12436
12437 return self;
12438};
12439
12440
12441
12442// exposed for testing purposes only.
12443Readable._fromList = fromList;
12444
12445// Pluck off n bytes from an array of buffers.
12446// Length is the combined lengths of all the buffers in the list.
12447function fromList(n, state) {
12448 var list = state.buffer;
12449 var length = state.length;
12450 var stringMode = !!state.decoder;
12451 var objectMode = !!state.objectMode;
12452 var ret;
12453
12454 // nothing in the list, definitely empty.
12455 if (list.length === 0)
12456 return null;
12457
12458 if (length === 0)
12459 ret = null;
12460 else if (objectMode)
12461 ret = list.shift();
12462 else if (!n || n >= length) {
12463 // read it all, truncate the array.
12464 if (stringMode)
12465 ret = list.join('');
12466 else
12467 ret = Buffer.concat(list, length);
12468 list.length = 0;
12469 } else {
12470 // read just some of it.
12471 if (n < list[0].length) {
12472 // just take a part of the first list item.
12473 // slice is the same for buffers and strings.
12474 var buf = list[0];
12475 ret = buf.slice(0, n);
12476 list[0] = buf.slice(n);
12477 } else if (n === list[0].length) {
12478 // first list is a perfect match
12479 ret = list.shift();
12480 } else {
12481 // complex case.
12482 // we have enough to cover it, but it spans past the first buffer.
12483 if (stringMode)
12484 ret = '';
12485 else
12486 ret = new Buffer(n);
12487
12488 var c = 0;
12489 for (var i = 0, l = list.length; i < l && c < n; i++) {
12490 var buf = list[0];
12491 var cpy = Math.min(n - c, buf.length);
12492
12493 if (stringMode)
12494 ret += buf.slice(0, cpy);
12495 else
12496 buf.copy(ret, c, 0, cpy);
12497
12498 if (cpy < buf.length)
12499 list[0] = buf.slice(cpy);
12500 else
12501 list.shift();
12502
12503 c += cpy;
12504 }
12505 }
12506 }
12507
12508 return ret;
12509}
12510
12511function endReadable(stream) {
12512 var state = stream._readableState;
12513
12514 // If we get here before consuming all the bytes, then that is a
12515 // bug in node. Should never happen.
12516 if (state.length > 0)
12517 throw new Error('endReadable called on non-empty stream');
12518
12519 if (!state.endEmitted) {
12520 state.ended = true;
12521 process.nextTick(function() {
12522 // Check that we didn't get one last unshift.
12523 if (!state.endEmitted && state.length === 0) {
12524 state.endEmitted = true;
12525 stream.readable = false;
12526 stream.emit('end');
12527 }
12528 });
12529 }
12530}
12531
12532function forEach (xs, f) {
12533 for (var i = 0, l = xs.length; i < l; i++) {
12534 f(xs[i], i);
12535 }
12536}
12537
12538function indexOf (xs, x) {
12539 for (var i = 0, l = xs.length; i < l; i++) {
12540 if (xs[i] === x) return i;
12541 }
12542 return -1;
12543}
12544
12545}).call(this,require('_process'))
12546},{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"events":11,"inherits":12,"isarray":13,"stream":26,"string_decoder/":27,"util":6}],19:[function(require,module,exports){
12547// Copyright Joyent, Inc. and other Node contributors.
12548//
12549// Permission is hereby granted, free of charge, to any person obtaining a
12550// copy of this software and associated documentation files (the
12551// "Software"), to deal in the Software without restriction, including
12552// without limitation the rights to use, copy, modify, merge, publish,
12553// distribute, sublicense, and/or sell copies of the Software, and to permit
12554// persons to whom the Software is furnished to do so, subject to the
12555// following conditions:
12556//
12557// The above copyright notice and this permission notice shall be included
12558// in all copies or substantial portions of the Software.
12559//
12560// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12561// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12562// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12563// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12564// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12565// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12566// USE OR OTHER DEALINGS IN THE SOFTWARE.
12567
12568
12569// a transform stream is a readable/writable stream where you do
12570// something with the data. Sometimes it's called a "filter",
12571// but that's not a great name for it, since that implies a thing where
12572// some bits pass through, and others are simply ignored. (That would
12573// be a valid example of a transform, of course.)
12574//
12575// While the output is causally related to the input, it's not a
12576// necessarily symmetric or synchronous transformation. For example,
12577// a zlib stream might take multiple plain-text writes(), and then
12578// emit a single compressed chunk some time in the future.
12579//
12580// Here's how this works:
12581//
12582// The Transform stream has all the aspects of the readable and writable
12583// stream classes. When you write(chunk), that calls _write(chunk,cb)
12584// internally, and returns false if there's a lot of pending writes
12585// buffered up. When you call read(), that calls _read(n) until
12586// there's enough pending readable data buffered up.
12587//
12588// In a transform stream, the written data is placed in a buffer. When
12589// _read(n) is called, it transforms the queued up data, calling the
12590// buffered _write cb's as it consumes chunks. If consuming a single
12591// written chunk would result in multiple output chunks, then the first
12592// outputted bit calls the readcb, and subsequent chunks just go into
12593// the read buffer, and will cause it to emit 'readable' if necessary.
12594//
12595// This way, back-pressure is actually determined by the reading side,
12596// since _read has to be called to start processing a new chunk. However,
12597// a pathological inflate type of transform can cause excessive buffering
12598// here. For example, imagine a stream where every byte of input is
12599// interpreted as an integer from 0-255, and then results in that many
12600// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
12601// 1kb of data being output. In this case, you could write a very small
12602// amount of input, and end up with a very large amount of output. In
12603// such a pathological inflating mechanism, there'd be no way to tell
12604// the system to stop doing the transform. A single 4MB write could
12605// cause the system to run out of memory.
12606//
12607// However, even in such a pathological case, only a single written chunk
12608// would be consumed, and then the rest would wait (un-transformed) until
12609// the results of the previous transformed chunk were consumed.
12610
12611module.exports = Transform;
12612
12613var Duplex = require('./_stream_duplex');
12614
12615/*<replacement>*/
12616var util = require('core-util-is');
12617util.inherits = require('inherits');
12618/*</replacement>*/
12619
12620util.inherits(Transform, Duplex);
12621
12622
12623function TransformState(options, stream) {
12624 this.afterTransform = function(er, data) {
12625 return afterTransform(stream, er, data);
12626 };
12627
12628 this.needTransform = false;
12629 this.transforming = false;
12630 this.writecb = null;
12631 this.writechunk = null;
12632}
12633
12634function afterTransform(stream, er, data) {
12635 var ts = stream._transformState;
12636 ts.transforming = false;
12637
12638 var cb = ts.writecb;
12639
12640 if (!cb)
12641 return stream.emit('error', new Error('no writecb in Transform class'));
12642
12643 ts.writechunk = null;
12644 ts.writecb = null;
12645
12646 if (!util.isNullOrUndefined(data))
12647 stream.push(data);
12648
12649 if (cb)
12650 cb(er);
12651
12652 var rs = stream._readableState;
12653 rs.reading = false;
12654 if (rs.needReadable || rs.length < rs.highWaterMark) {
12655 stream._read(rs.highWaterMark);
12656 }
12657}
12658
12659
12660function Transform(options) {
12661 if (!(this instanceof Transform))
12662 return new Transform(options);
12663
12664 Duplex.call(this, options);
12665
12666 this._transformState = new TransformState(options, this);
12667
12668 // when the writable side finishes, then flush out anything remaining.
12669 var stream = this;
12670
12671 // start out asking for a readable event once data is transformed.
12672 this._readableState.needReadable = true;
12673
12674 // we have implemented the _read method, and done the other things
12675 // that Readable wants before the first _read call, so unset the
12676 // sync guard flag.
12677 this._readableState.sync = false;
12678
12679 this.once('prefinish', function() {
12680 if (util.isFunction(this._flush))
12681 this._flush(function(er) {
12682 done(stream, er);
12683 });
12684 else
12685 done(stream);
12686 });
12687}
12688
12689Transform.prototype.push = function(chunk, encoding) {
12690 this._transformState.needTransform = false;
12691 return Duplex.prototype.push.call(this, chunk, encoding);
12692};
12693
12694// This is the part where you do stuff!
12695// override this function in implementation classes.
12696// 'chunk' is an input chunk.
12697//
12698// Call `push(newChunk)` to pass along transformed output
12699// to the readable side. You may call 'push' zero or more times.
12700//
12701// Call `cb(err)` when you are done with this chunk. If you pass
12702// an error, then that'll put the hurt on the whole operation. If you
12703// never call cb(), then you'll never get another chunk.
12704Transform.prototype._transform = function(chunk, encoding, cb) {
12705 throw new Error('not implemented');
12706};
12707
12708Transform.prototype._write = function(chunk, encoding, cb) {
12709 var ts = this._transformState;
12710 ts.writecb = cb;
12711 ts.writechunk = chunk;
12712 ts.writeencoding = encoding;
12713 if (!ts.transforming) {
12714 var rs = this._readableState;
12715 if (ts.needTransform ||
12716 rs.needReadable ||
12717 rs.length < rs.highWaterMark)
12718 this._read(rs.highWaterMark);
12719 }
12720};
12721
12722// Doesn't matter what the args are here.
12723// _transform does all the work.
12724// That we got here means that the readable side wants more data.
12725Transform.prototype._read = function(n) {
12726 var ts = this._transformState;
12727
12728 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
12729 ts.transforming = true;
12730 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
12731 } else {
12732 // mark that we need a transform, so that any data that comes in
12733 // will get processed, now that we've asked for it.
12734 ts.needTransform = true;
12735 }
12736};
12737
12738
12739function done(stream, er) {
12740 if (er)
12741 return stream.emit('error', er);
12742
12743 // if there's nothing in the write buffer, then that means
12744 // that nothing more will ever be provided
12745 var ws = stream._writableState;
12746 var ts = stream._transformState;
12747
12748 if (ws.length)
12749 throw new Error('calling transform done when ws.length != 0');
12750
12751 if (ts.transforming)
12752 throw new Error('calling transform done when still transforming');
12753
12754 return stream.push(null);
12755}
12756
12757},{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
12758(function (process){
12759// Copyright Joyent, Inc. and other Node contributors.
12760//
12761// Permission is hereby granted, free of charge, to any person obtaining a
12762// copy of this software and associated documentation files (the
12763// "Software"), to deal in the Software without restriction, including
12764// without limitation the rights to use, copy, modify, merge, publish,
12765// distribute, sublicense, and/or sell copies of the Software, and to permit
12766// persons to whom the Software is furnished to do so, subject to the
12767// following conditions:
12768//
12769// The above copyright notice and this permission notice shall be included
12770// in all copies or substantial portions of the Software.
12771//
12772// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12773// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12774// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12775// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12776// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12777// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12778// USE OR OTHER DEALINGS IN THE SOFTWARE.
12779
12780// A bit simpler than readable streams.
12781// Implement an async ._write(chunk, cb), and it'll handle all
12782// the drain event emission and buffering.
12783
12784module.exports = Writable;
12785
12786/*<replacement>*/
12787var Buffer = require('buffer').Buffer;
12788/*</replacement>*/
12789
12790Writable.WritableState = WritableState;
12791
12792
12793/*<replacement>*/
12794var util = require('core-util-is');
12795util.inherits = require('inherits');
12796/*</replacement>*/
12797
12798var Stream = require('stream');
12799
12800util.inherits(Writable, Stream);
12801
12802function WriteReq(chunk, encoding, cb) {
12803 this.chunk = chunk;
12804 this.encoding = encoding;
12805 this.callback = cb;
12806}
12807
12808function WritableState(options, stream) {
12809 var Duplex = require('./_stream_duplex');
12810
12811 options = options || {};
12812
12813 // the point at which write() starts returning false
12814 // Note: 0 is a valid value, means that we always return false if
12815 // the entire buffer is not flushed immediately on write()
12816 var hwm = options.highWaterMark;
12817 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
12818 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
12819
12820 // object stream flag to indicate whether or not this stream
12821 // contains buffers or objects.
12822 this.objectMode = !!options.objectMode;
12823
12824 if (stream instanceof Duplex)
12825 this.objectMode = this.objectMode || !!options.writableObjectMode;
12826
12827 // cast to ints.
12828 this.highWaterMark = ~~this.highWaterMark;
12829
12830 this.needDrain = false;
12831 // at the start of calling end()
12832 this.ending = false;
12833 // when end() has been called, and returned
12834 this.ended = false;
12835 // when 'finish' is emitted
12836 this.finished = false;
12837
12838 // should we decode strings into buffers before passing to _write?
12839 // this is here so that some node-core streams can optimize string
12840 // handling at a lower level.
12841 var noDecode = options.decodeStrings === false;
12842 this.decodeStrings = !noDecode;
12843
12844 // Crypto is kind of old and crusty. Historically, its default string
12845 // encoding is 'binary' so we have to make this configurable.
12846 // Everything else in the universe uses 'utf8', though.
12847 this.defaultEncoding = options.defaultEncoding || 'utf8';
12848
12849 // not an actual buffer we keep track of, but a measurement
12850 // of how much we're waiting to get pushed to some underlying
12851 // socket or file.
12852 this.length = 0;
12853
12854 // a flag to see when we're in the middle of a write.
12855 this.writing = false;
12856
12857 // when true all writes will be buffered until .uncork() call
12858 this.corked = 0;
12859
12860 // a flag to be able to tell if the onwrite cb is called immediately,
12861 // or on a later tick. We set this to true at first, because any
12862 // actions that shouldn't happen until "later" should generally also
12863 // not happen before the first write call.
12864 this.sync = true;
12865
12866 // a flag to know if we're processing previously buffered items, which
12867 // may call the _write() callback in the same tick, so that we don't
12868 // end up in an overlapped onwrite situation.
12869 this.bufferProcessing = false;
12870
12871 // the callback that's passed to _write(chunk,cb)
12872 this.onwrite = function(er) {
12873 onwrite(stream, er);
12874 };
12875
12876 // the callback that the user supplies to write(chunk,encoding,cb)
12877 this.writecb = null;
12878
12879 // the amount that is being written when _write is called.
12880 this.writelen = 0;
12881
12882 this.buffer = [];
12883
12884 // number of pending user-supplied write callbacks
12885 // this must be 0 before 'finish' can be emitted
12886 this.pendingcb = 0;
12887
12888 // emit prefinish if the only thing we're waiting for is _write cbs
12889 // This is relevant for synchronous Transform streams
12890 this.prefinished = false;
12891
12892 // True if the error was already emitted and should not be thrown again
12893 this.errorEmitted = false;
12894}
12895
12896function Writable(options) {
12897 var Duplex = require('./_stream_duplex');
12898
12899 // Writable ctor is applied to Duplexes, though they're not
12900 // instanceof Writable, they're instanceof Readable.
12901 if (!(this instanceof Writable) && !(this instanceof Duplex))
12902 return new Writable(options);
12903
12904 this._writableState = new WritableState(options, this);
12905
12906 // legacy.
12907 this.writable = true;
12908
12909 Stream.call(this);
12910}
12911
12912// Otherwise people can pipe Writable streams, which is just wrong.
12913Writable.prototype.pipe = function() {
12914 this.emit('error', new Error('Cannot pipe. Not readable.'));
12915};
12916
12917
12918function writeAfterEnd(stream, state, cb) {
12919 var er = new Error('write after end');
12920 // TODO: defer error events consistently everywhere, not just the cb
12921 stream.emit('error', er);
12922 process.nextTick(function() {
12923 cb(er);
12924 });
12925}
12926
12927// If we get something that is not a buffer, string, null, or undefined,
12928// and we're not in objectMode, then that's an error.
12929// Otherwise stream chunks are all considered to be of length=1, and the
12930// watermarks determine how many objects to keep in the buffer, rather than
12931// how many bytes or characters.
12932function validChunk(stream, state, chunk, cb) {
12933 var valid = true;
12934 if (!util.isBuffer(chunk) &&
12935 !util.isString(chunk) &&
12936 !util.isNullOrUndefined(chunk) &&
12937 !state.objectMode) {
12938 var er = new TypeError('Invalid non-string/buffer chunk');
12939 stream.emit('error', er);
12940 process.nextTick(function() {
12941 cb(er);
12942 });
12943 valid = false;
12944 }
12945 return valid;
12946}
12947
12948Writable.prototype.write = function(chunk, encoding, cb) {
12949 var state = this._writableState;
12950 var ret = false;
12951
12952 if (util.isFunction(encoding)) {
12953 cb = encoding;
12954 encoding = null;
12955 }
12956
12957 if (util.isBuffer(chunk))
12958 encoding = 'buffer';
12959 else if (!encoding)
12960 encoding = state.defaultEncoding;
12961
12962 if (!util.isFunction(cb))
12963 cb = function() {};
12964
12965 if (state.ended)
12966 writeAfterEnd(this, state, cb);
12967 else if (validChunk(this, state, chunk, cb)) {
12968 state.pendingcb++;
12969 ret = writeOrBuffer(this, state, chunk, encoding, cb);
12970 }
12971
12972 return ret;
12973};
12974
12975Writable.prototype.cork = function() {
12976 var state = this._writableState;
12977
12978 state.corked++;
12979};
12980
12981Writable.prototype.uncork = function() {
12982 var state = this._writableState;
12983
12984 if (state.corked) {
12985 state.corked--;
12986
12987 if (!state.writing &&
12988 !state.corked &&
12989 !state.finished &&
12990 !state.bufferProcessing &&
12991 state.buffer.length)
12992 clearBuffer(this, state);
12993 }
12994};
12995
12996function decodeChunk(state, chunk, encoding) {
12997 if (!state.objectMode &&
12998 state.decodeStrings !== false &&
12999 util.isString(chunk)) {
13000 chunk = new Buffer(chunk, encoding);
13001 }
13002 return chunk;
13003}
13004
13005// if we're already writing something, then just put this
13006// in the queue, and wait our turn. Otherwise, call _write
13007// If we return false, then we need a drain event, so set that flag.
13008function writeOrBuffer(stream, state, chunk, encoding, cb) {
13009 chunk = decodeChunk(state, chunk, encoding);
13010 if (util.isBuffer(chunk))
13011 encoding = 'buffer';
13012 var len = state.objectMode ? 1 : chunk.length;
13013
13014 state.length += len;
13015
13016 var ret = state.length < state.highWaterMark;
13017 // we must ensure that previous needDrain will not be reset to false.
13018 if (!ret)
13019 state.needDrain = true;
13020
13021 if (state.writing || state.corked)
13022 state.buffer.push(new WriteReq(chunk, encoding, cb));
13023 else
13024 doWrite(stream, state, false, len, chunk, encoding, cb);
13025
13026 return ret;
13027}
13028
13029function doWrite(stream, state, writev, len, chunk, encoding, cb) {
13030 state.writelen = len;
13031 state.writecb = cb;
13032 state.writing = true;
13033 state.sync = true;
13034 if (writev)
13035 stream._writev(chunk, state.onwrite);
13036 else
13037 stream._write(chunk, encoding, state.onwrite);
13038 state.sync = false;
13039}
13040
13041function onwriteError(stream, state, sync, er, cb) {
13042 if (sync)
13043 process.nextTick(function() {
13044 state.pendingcb--;
13045 cb(er);
13046 });
13047 else {
13048 state.pendingcb--;
13049 cb(er);
13050 }
13051
13052 stream._writableState.errorEmitted = true;
13053 stream.emit('error', er);
13054}
13055
13056function onwriteStateUpdate(state) {
13057 state.writing = false;
13058 state.writecb = null;
13059 state.length -= state.writelen;
13060 state.writelen = 0;
13061}
13062
13063function onwrite(stream, er) {
13064 var state = stream._writableState;
13065 var sync = state.sync;
13066 var cb = state.writecb;
13067
13068 onwriteStateUpdate(state);
13069
13070 if (er)
13071 onwriteError(stream, state, sync, er, cb);
13072 else {
13073 // Check if we're actually ready to finish, but don't emit yet
13074 var finished = needFinish(stream, state);
13075
13076 if (!finished &&
13077 !state.corked &&
13078 !state.bufferProcessing &&
13079 state.buffer.length) {
13080 clearBuffer(stream, state);
13081 }
13082
13083 if (sync) {
13084 process.nextTick(function() {
13085 afterWrite(stream, state, finished, cb);
13086 });
13087 } else {
13088 afterWrite(stream, state, finished, cb);
13089 }
13090 }
13091}
13092
13093function afterWrite(stream, state, finished, cb) {
13094 if (!finished)
13095 onwriteDrain(stream, state);
13096 state.pendingcb--;
13097 cb();
13098 finishMaybe(stream, state);
13099}
13100
13101// Must force callback to be called on nextTick, so that we don't
13102// emit 'drain' before the write() consumer gets the 'false' return
13103// value, and has a chance to attach a 'drain' listener.
13104function onwriteDrain(stream, state) {
13105 if (state.length === 0 && state.needDrain) {
13106 state.needDrain = false;
13107 stream.emit('drain');
13108 }
13109}
13110
13111
13112// if there's something in the buffer waiting, then process it
13113function clearBuffer(stream, state) {
13114 state.bufferProcessing = true;
13115
13116 if (stream._writev && state.buffer.length > 1) {
13117 // Fast case, write everything using _writev()
13118 var cbs = [];
13119 for (var c = 0; c < state.buffer.length; c++)
13120 cbs.push(state.buffer[c].callback);
13121
13122 // count the one we are adding, as well.
13123 // TODO(isaacs) clean this up
13124 state.pendingcb++;
13125 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
13126 for (var i = 0; i < cbs.length; i++) {
13127 state.pendingcb--;
13128 cbs[i](err);
13129 }
13130 });
13131
13132 // Clear buffer
13133 state.buffer = [];
13134 } else {
13135 // Slow case, write chunks one-by-one
13136 for (var c = 0; c < state.buffer.length; c++) {
13137 var entry = state.buffer[c];
13138 var chunk = entry.chunk;
13139 var encoding = entry.encoding;
13140 var cb = entry.callback;
13141 var len = state.objectMode ? 1 : chunk.length;
13142
13143 doWrite(stream, state, false, len, chunk, encoding, cb);
13144
13145 // if we didn't call the onwrite immediately, then
13146 // it means that we need to wait until it does.
13147 // also, that means that the chunk and cb are currently
13148 // being processed, so move the buffer counter past them.
13149 if (state.writing) {
13150 c++;
13151 break;
13152 }
13153 }
13154
13155 if (c < state.buffer.length)
13156 state.buffer = state.buffer.slice(c);
13157 else
13158 state.buffer.length = 0;
13159 }
13160
13161 state.bufferProcessing = false;
13162}
13163
13164Writable.prototype._write = function(chunk, encoding, cb) {
13165 cb(new Error('not implemented'));
13166
13167};
13168
13169Writable.prototype._writev = null;
13170
13171Writable.prototype.end = function(chunk, encoding, cb) {
13172 var state = this._writableState;
13173
13174 if (util.isFunction(chunk)) {
13175 cb = chunk;
13176 chunk = null;
13177 encoding = null;
13178 } else if (util.isFunction(encoding)) {
13179 cb = encoding;
13180 encoding = null;
13181 }
13182
13183 if (!util.isNullOrUndefined(chunk))
13184 this.write(chunk, encoding);
13185
13186 // .end() fully uncorks
13187 if (state.corked) {
13188 state.corked = 1;
13189 this.uncork();
13190 }
13191
13192 // ignore unnecessary end() calls.
13193 if (!state.ending && !state.finished)
13194 endWritable(this, state, cb);
13195};
13196
13197
13198function needFinish(stream, state) {
13199 return (state.ending &&
13200 state.length === 0 &&
13201 !state.finished &&
13202 !state.writing);
13203}
13204
13205function prefinish(stream, state) {
13206 if (!state.prefinished) {
13207 state.prefinished = true;
13208 stream.emit('prefinish');
13209 }
13210}
13211
13212function finishMaybe(stream, state) {
13213 var need = needFinish(stream, state);
13214 if (need) {
13215 if (state.pendingcb === 0) {
13216 prefinish(stream, state);
13217 state.finished = true;
13218 stream.emit('finish');
13219 } else
13220 prefinish(stream, state);
13221 }
13222 return need;
13223}
13224
13225function endWritable(stream, state, cb) {
13226 state.ending = true;
13227 finishMaybe(stream, state);
13228 if (cb) {
13229 if (state.finished)
13230 process.nextTick(cb);
13231 else
13232 stream.once('finish', cb);
13233 }
13234 state.ended = true;
13235}
13236
13237}).call(this,require('_process'))
13238},{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
13239(function (Buffer){
13240// Copyright Joyent, Inc. and other Node contributors.
13241//
13242// Permission is hereby granted, free of charge, to any person obtaining a
13243// copy of this software and associated documentation files (the
13244// "Software"), to deal in the Software without restriction, including
13245// without limitation the rights to use, copy, modify, merge, publish,
13246// distribute, sublicense, and/or sell copies of the Software, and to permit
13247// persons to whom the Software is furnished to do so, subject to the
13248// following conditions:
13249//
13250// The above copyright notice and this permission notice shall be included
13251// in all copies or substantial portions of the Software.
13252//
13253// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13254// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13255// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13256// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13257// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13258// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13259// USE OR OTHER DEALINGS IN THE SOFTWARE.
13260
13261// NOTE: These type checking functions intentionally don't use `instanceof`
13262// because it is fragile and can be easily faked with `Object.create()`.
13263function isArray(ar) {
13264 return Array.isArray(ar);
13265}
13266exports.isArray = isArray;
13267
13268function isBoolean(arg) {
13269 return typeof arg === 'boolean';
13270}
13271exports.isBoolean = isBoolean;
13272
13273function isNull(arg) {
13274 return arg === null;
13275}
13276exports.isNull = isNull;
13277
13278function isNullOrUndefined(arg) {
13279 return arg == null;
13280}
13281exports.isNullOrUndefined = isNullOrUndefined;
13282
13283function isNumber(arg) {
13284 return typeof arg === 'number';
13285}
13286exports.isNumber = isNumber;
13287
13288function isString(arg) {
13289 return typeof arg === 'string';
13290}
13291exports.isString = isString;
13292
13293function isSymbol(arg) {
13294 return typeof arg === 'symbol';
13295}
13296exports.isSymbol = isSymbol;
13297
13298function isUndefined(arg) {
13299 return arg === void 0;
13300}
13301exports.isUndefined = isUndefined;
13302
13303function isRegExp(re) {
13304 return isObject(re) && objectToString(re) === '[object RegExp]';
13305}
13306exports.isRegExp = isRegExp;
13307
13308function isObject(arg) {
13309 return typeof arg === 'object' && arg !== null;
13310}
13311exports.isObject = isObject;
13312
13313function isDate(d) {
13314 return isObject(d) && objectToString(d) === '[object Date]';
13315}
13316exports.isDate = isDate;
13317
13318function isError(e) {
13319 return isObject(e) &&
13320 (objectToString(e) === '[object Error]' || e instanceof Error);
13321}
13322exports.isError = isError;
13323
13324function isFunction(arg) {
13325 return typeof arg === 'function';
13326}
13327exports.isFunction = isFunction;
13328
13329function isPrimitive(arg) {
13330 return arg === null ||
13331 typeof arg === 'boolean' ||
13332 typeof arg === 'number' ||
13333 typeof arg === 'string' ||
13334 typeof arg === 'symbol' || // ES6 symbol
13335 typeof arg === 'undefined';
13336}
13337exports.isPrimitive = isPrimitive;
13338
13339function isBuffer(arg) {
13340 return Buffer.isBuffer(arg);
13341}
13342exports.isBuffer = isBuffer;
13343
13344function objectToString(o) {
13345 return Object.prototype.toString.call(o);
13346}
13347}).call(this,require("buffer").Buffer)
13348},{"buffer":7}],22:[function(require,module,exports){
13349module.exports = require("./lib/_stream_passthrough.js")
13350
13351},{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
13352exports = module.exports = require('./lib/_stream_readable.js');
13353exports.Stream = require('stream');
13354exports.Readable = exports;
13355exports.Writable = require('./lib/_stream_writable.js');
13356exports.Duplex = require('./lib/_stream_duplex.js');
13357exports.Transform = require('./lib/_stream_transform.js');
13358exports.PassThrough = require('./lib/_stream_passthrough.js');
13359
13360},{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"stream":26}],24:[function(require,module,exports){
13361module.exports = require("./lib/_stream_transform.js")
13362
13363},{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
13364module.exports = require("./lib/_stream_writable.js")
13365
13366},{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
13367// Copyright Joyent, Inc. and other Node contributors.
13368//
13369// Permission is hereby granted, free of charge, to any person obtaining a
13370// copy of this software and associated documentation files (the
13371// "Software"), to deal in the Software without restriction, including
13372// without limitation the rights to use, copy, modify, merge, publish,
13373// distribute, sublicense, and/or sell copies of the Software, and to permit
13374// persons to whom the Software is furnished to do so, subject to the
13375// following conditions:
13376//
13377// The above copyright notice and this permission notice shall be included
13378// in all copies or substantial portions of the Software.
13379//
13380// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13381// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13382// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13383// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13384// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13385// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13386// USE OR OTHER DEALINGS IN THE SOFTWARE.
13387
13388module.exports = Stream;
13389
13390var EE = require('events').EventEmitter;
13391var inherits = require('inherits');
13392
13393inherits(Stream, EE);
13394Stream.Readable = require('readable-stream/readable.js');
13395Stream.Writable = require('readable-stream/writable.js');
13396Stream.Duplex = require('readable-stream/duplex.js');
13397Stream.Transform = require('readable-stream/transform.js');
13398Stream.PassThrough = require('readable-stream/passthrough.js');
13399
13400// Backwards-compat with node 0.4.x
13401Stream.Stream = Stream;
13402
13403
13404
13405// old-style streams. Note that the pipe method (the only relevant
13406// part of this class) is overridden in the Readable class.
13407
13408function Stream() {
13409 EE.call(this);
13410}
13411
13412Stream.prototype.pipe = function(dest, options) {
13413 var source = this;
13414
13415 function ondata(chunk) {
13416 if (dest.writable) {
13417 if (false === dest.write(chunk) && source.pause) {
13418 source.pause();
13419 }
13420 }
13421 }
13422
13423 source.on('data', ondata);
13424
13425 function ondrain() {
13426 if (source.readable && source.resume) {
13427 source.resume();
13428 }
13429 }
13430
13431 dest.on('drain', ondrain);
13432
13433 // If the 'end' option is not supplied, dest.end() will be called when
13434 // source gets the 'end' or 'close' events. Only dest.end() once.
13435 if (!dest._isStdio && (!options || options.end !== false)) {
13436 source.on('end', onend);
13437 source.on('close', onclose);
13438 }
13439
13440 var didOnEnd = false;
13441 function onend() {
13442 if (didOnEnd) return;
13443 didOnEnd = true;
13444
13445 dest.end();
13446 }
13447
13448
13449 function onclose() {
13450 if (didOnEnd) return;
13451 didOnEnd = true;
13452
13453 if (typeof dest.destroy === 'function') dest.destroy();
13454 }
13455
13456 // don't leave dangling pipes when there are errors.
13457 function onerror(er) {
13458 cleanup();
13459 if (EE.listenerCount(this, 'error') === 0) {
13460 throw er; // Unhandled stream error in pipe.
13461 }
13462 }
13463
13464 source.on('error', onerror);
13465 dest.on('error', onerror);
13466
13467 // remove all the event listeners that were added.
13468 function cleanup() {
13469 source.removeListener('data', ondata);
13470 dest.removeListener('drain', ondrain);
13471
13472 source.removeListener('end', onend);
13473 source.removeListener('close', onclose);
13474
13475 source.removeListener('error', onerror);
13476 dest.removeListener('error', onerror);
13477
13478 source.removeListener('end', cleanup);
13479 source.removeListener('close', cleanup);
13480
13481 dest.removeListener('close', cleanup);
13482 }
13483
13484 source.on('end', cleanup);
13485 source.on('close', cleanup);
13486
13487 dest.on('close', cleanup);
13488
13489 dest.emit('pipe', source);
13490
13491 // Allow for unix-like usage: A.pipe(B).pipe(C)
13492 return dest;
13493};
13494
13495},{"events":11,"inherits":12,"readable-stream/duplex.js":15,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],27:[function(require,module,exports){
13496// Copyright Joyent, Inc. and other Node contributors.
13497//
13498// Permission is hereby granted, free of charge, to any person obtaining a
13499// copy of this software and associated documentation files (the
13500// "Software"), to deal in the Software without restriction, including
13501// without limitation the rights to use, copy, modify, merge, publish,
13502// distribute, sublicense, and/or sell copies of the Software, and to permit
13503// persons to whom the Software is furnished to do so, subject to the
13504// following conditions:
13505//
13506// The above copyright notice and this permission notice shall be included
13507// in all copies or substantial portions of the Software.
13508//
13509// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13510// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13511// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13512// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13513// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13514// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13515// USE OR OTHER DEALINGS IN THE SOFTWARE.
13516
13517var Buffer = require('buffer').Buffer;
13518
13519var isBufferEncoding = Buffer.isEncoding
13520 || function(encoding) {
13521 switch (encoding && encoding.toLowerCase()) {
13522 case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
13523 default: return false;
13524 }
13525 }
13526
13527
13528function assertEncoding(encoding) {
13529 if (encoding && !isBufferEncoding(encoding)) {
13530 throw new Error('Unknown encoding: ' + encoding);
13531 }
13532}
13533
13534// StringDecoder provides an interface for efficiently splitting a series of
13535// buffers into a series of JS strings without breaking apart multi-byte
13536// characters. CESU-8 is handled as part of the UTF-8 encoding.
13537//
13538// @TODO Handling all encodings inside a single object makes it very difficult
13539// to reason about this code, so it should be split up in the future.
13540// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
13541// points as used by CESU-8.
13542var StringDecoder = exports.StringDecoder = function(encoding) {
13543 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
13544 assertEncoding(encoding);
13545 switch (this.encoding) {
13546 case 'utf8':
13547 // CESU-8 represents each of Surrogate Pair by 3-bytes
13548 this.surrogateSize = 3;
13549 break;
13550 case 'ucs2':
13551 case 'utf16le':
13552 // UTF-16 represents each of Surrogate Pair by 2-bytes
13553 this.surrogateSize = 2;
13554 this.detectIncompleteChar = utf16DetectIncompleteChar;
13555 break;
13556 case 'base64':
13557 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
13558 this.surrogateSize = 3;
13559 this.detectIncompleteChar = base64DetectIncompleteChar;
13560 break;
13561 default:
13562 this.write = passThroughWrite;
13563 return;
13564 }
13565
13566 // Enough space to store all bytes of a single character. UTF-8 needs 4
13567 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
13568 this.charBuffer = new Buffer(6);
13569 // Number of bytes received for the current incomplete multi-byte character.
13570 this.charReceived = 0;
13571 // Number of bytes expected for the current incomplete multi-byte character.
13572 this.charLength = 0;
13573};
13574
13575
13576// write decodes the given buffer and returns it as JS string that is
13577// guaranteed to not contain any partial multi-byte characters. Any partial
13578// character found at the end of the buffer is buffered up, and will be
13579// returned when calling write again with the remaining bytes.
13580//
13581// Note: Converting a Buffer containing an orphan surrogate to a String
13582// currently works, but converting a String to a Buffer (via `new Buffer`, or
13583// Buffer#write) will replace incomplete surrogates with the unicode
13584// replacement character. See https://codereview.chromium.org/121173009/ .
13585StringDecoder.prototype.write = function(buffer) {
13586 var charStr = '';
13587 // if our last write ended with an incomplete multibyte character
13588 while (this.charLength) {
13589 // determine how many remaining bytes this buffer has to offer for this char
13590 var available = (buffer.length >= this.charLength - this.charReceived) ?
13591 this.charLength - this.charReceived :
13592 buffer.length;
13593
13594 // add the new bytes to the char buffer
13595 buffer.copy(this.charBuffer, this.charReceived, 0, available);
13596 this.charReceived += available;
13597
13598 if (this.charReceived < this.charLength) {
13599 // still not enough chars in this buffer? wait for more ...
13600 return '';
13601 }
13602
13603 // remove bytes belonging to the current character from the buffer
13604 buffer = buffer.slice(available, buffer.length);
13605
13606 // get the character that was split
13607 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
13608
13609 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13610 var charCode = charStr.charCodeAt(charStr.length - 1);
13611 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13612 this.charLength += this.surrogateSize;
13613 charStr = '';
13614 continue;
13615 }
13616 this.charReceived = this.charLength = 0;
13617
13618 // if there are no more bytes in this buffer, just emit our char
13619 if (buffer.length === 0) {
13620 return charStr;
13621 }
13622 break;
13623 }
13624
13625 // determine and set charLength / charReceived
13626 this.detectIncompleteChar(buffer);
13627
13628 var end = buffer.length;
13629 if (this.charLength) {
13630 // buffer the incomplete character bytes we got
13631 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
13632 end -= this.charReceived;
13633 }
13634
13635 charStr += buffer.toString(this.encoding, 0, end);
13636
13637 var end = charStr.length - 1;
13638 var charCode = charStr.charCodeAt(end);
13639 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13640 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13641 var size = this.surrogateSize;
13642 this.charLength += size;
13643 this.charReceived += size;
13644 this.charBuffer.copy(this.charBuffer, size, 0, size);
13645 buffer.copy(this.charBuffer, 0, 0, size);
13646 return charStr.substring(0, end);
13647 }
13648
13649 // or just emit the charStr
13650 return charStr;
13651};
13652
13653// detectIncompleteChar determines if there is an incomplete UTF-8 character at
13654// the end of the given buffer. If so, it sets this.charLength to the byte
13655// length that character, and sets this.charReceived to the number of bytes
13656// that are available for this character.
13657StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13658 // determine how many bytes we have to check at the end of this buffer
13659 var i = (buffer.length >= 3) ? 3 : buffer.length;
13660
13661 // Figure out if one of the last i bytes of our buffer announces an
13662 // incomplete char.
13663 for (; i > 0; i--) {
13664 var c = buffer[buffer.length - i];
13665
13666 // See http://en.wikipedia.org/wiki/UTF-8#Description
13667
13668 // 110XXXXX
13669 if (i == 1 && c >> 5 == 0x06) {
13670 this.charLength = 2;
13671 break;
13672 }
13673
13674 // 1110XXXX
13675 if (i <= 2 && c >> 4 == 0x0E) {
13676 this.charLength = 3;
13677 break;
13678 }
13679
13680 // 11110XXX
13681 if (i <= 3 && c >> 3 == 0x1E) {
13682 this.charLength = 4;
13683 break;
13684 }
13685 }
13686 this.charReceived = i;
13687};
13688
13689StringDecoder.prototype.end = function(buffer) {
13690 var res = '';
13691 if (buffer && buffer.length)
13692 res = this.write(buffer);
13693
13694 if (this.charReceived) {
13695 var cr = this.charReceived;
13696 var buf = this.charBuffer;
13697 var enc = this.encoding;
13698 res += buf.slice(0, cr).toString(enc);
13699 }
13700
13701 return res;
13702};
13703
13704function passThroughWrite(buffer) {
13705 return buffer.toString(this.encoding);
13706}
13707
13708function utf16DetectIncompleteChar(buffer) {
13709 this.charReceived = buffer.length % 2;
13710 this.charLength = this.charReceived ? 2 : 0;
13711}
13712
13713function base64DetectIncompleteChar(buffer) {
13714 this.charReceived = buffer.length % 3;
13715 this.charLength = this.charReceived ? 3 : 0;
13716}
13717
13718},{"buffer":7}],28:[function(require,module,exports){
13719module.exports = function isBuffer(arg) {
13720 return arg && typeof arg === 'object'
13721 && typeof arg.copy === 'function'
13722 && typeof arg.fill === 'function'
13723 && typeof arg.readUInt8 === 'function';
13724}
13725},{}],29:[function(require,module,exports){
13726(function (process,global){
13727// Copyright Joyent, Inc. and other Node contributors.
13728//
13729// Permission is hereby granted, free of charge, to any person obtaining a
13730// copy of this software and associated documentation files (the
13731// "Software"), to deal in the Software without restriction, including
13732// without limitation the rights to use, copy, modify, merge, publish,
13733// distribute, sublicense, and/or sell copies of the Software, and to permit
13734// persons to whom the Software is furnished to do so, subject to the
13735// following conditions:
13736//
13737// The above copyright notice and this permission notice shall be included
13738// in all copies or substantial portions of the Software.
13739//
13740// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13741// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13742// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13743// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13744// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13745// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13746// USE OR OTHER DEALINGS IN THE SOFTWARE.
13747
13748var formatRegExp = /%[sdj%]/g;
13749exports.format = function(f) {
13750 if (!isString(f)) {
13751 var objects = [];
13752 for (var i = 0; i < arguments.length; i++) {
13753 objects.push(inspect(arguments[i]));
13754 }
13755 return objects.join(' ');
13756 }
13757
13758 var i = 1;
13759 var args = arguments;
13760 var len = args.length;
13761 var str = String(f).replace(formatRegExp, function(x) {
13762 if (x === '%%') return '%';
13763 if (i >= len) return x;
13764 switch (x) {
13765 case '%s': return String(args[i++]);
13766 case '%d': return Number(args[i++]);
13767 case '%j':
13768 try {
13769 return JSON.stringify(args[i++]);
13770 } catch (_) {
13771 return '[Circular]';
13772 }
13773 default:
13774 return x;
13775 }
13776 });
13777 for (var x = args[i]; i < len; x = args[++i]) {
13778 if (isNull(x) || !isObject(x)) {
13779 str += ' ' + x;
13780 } else {
13781 str += ' ' + inspect(x);
13782 }
13783 }
13784 return str;
13785};
13786
13787
13788// Mark that a method should not be used.
13789// Returns a modified function which warns once by default.
13790// If --no-deprecation is set, then it is a no-op.
13791exports.deprecate = function(fn, msg) {
13792 // Allow for deprecating things in the process of starting up.
13793 if (isUndefined(global.process)) {
13794 return function() {
13795 return exports.deprecate(fn, msg).apply(this, arguments);
13796 };
13797 }
13798
13799 if (process.noDeprecation === true) {
13800 return fn;
13801 }
13802
13803 var warned = false;
13804 function deprecated() {
13805 if (!warned) {
13806 if (process.throwDeprecation) {
13807 throw new Error(msg);
13808 } else if (process.traceDeprecation) {
13809 console.trace(msg);
13810 } else {
13811 console.error(msg);
13812 }
13813 warned = true;
13814 }
13815 return fn.apply(this, arguments);
13816 }
13817
13818 return deprecated;
13819};
13820
13821
13822var debugs = {};
13823var debugEnviron;
13824exports.debuglog = function(set) {
13825 if (isUndefined(debugEnviron))
13826 debugEnviron = process.env.NODE_DEBUG || '';
13827 set = set.toUpperCase();
13828 if (!debugs[set]) {
13829 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13830 var pid = process.pid;
13831 debugs[set] = function() {
13832 var msg = exports.format.apply(exports, arguments);
13833 console.error('%s %d: %s', set, pid, msg);
13834 };
13835 } else {
13836 debugs[set] = function() {};
13837 }
13838 }
13839 return debugs[set];
13840};
13841
13842
13843/**
13844 * Echos the value of a value. Trys to print the value out
13845 * in the best way possible given the different types.
13846 *
13847 * @param {Object} obj The object to print out.
13848 * @param {Object} opts Optional options object that alters the output.
13849 */
13850/* legacy: obj, showHidden, depth, colors*/
13851function inspect(obj, opts) {
13852 // default options
13853 var ctx = {
13854 seen: [],
13855 stylize: stylizeNoColor
13856 };
13857 // legacy...
13858 if (arguments.length >= 3) ctx.depth = arguments[2];
13859 if (arguments.length >= 4) ctx.colors = arguments[3];
13860 if (isBoolean(opts)) {
13861 // legacy...
13862 ctx.showHidden = opts;
13863 } else if (opts) {
13864 // got an "options" object
13865 exports._extend(ctx, opts);
13866 }
13867 // set default options
13868 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13869 if (isUndefined(ctx.depth)) ctx.depth = 2;
13870 if (isUndefined(ctx.colors)) ctx.colors = false;
13871 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13872 if (ctx.colors) ctx.stylize = stylizeWithColor;
13873 return formatValue(ctx, obj, ctx.depth);
13874}
13875exports.inspect = inspect;
13876
13877
13878// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13879inspect.colors = {
13880 'bold' : [1, 22],
13881 'italic' : [3, 23],
13882 'underline' : [4, 24],
13883 'inverse' : [7, 27],
13884 'white' : [37, 39],
13885 'grey' : [90, 39],
13886 'black' : [30, 39],
13887 'blue' : [34, 39],
13888 'cyan' : [36, 39],
13889 'green' : [32, 39],
13890 'magenta' : [35, 39],
13891 'red' : [31, 39],
13892 'yellow' : [33, 39]
13893};
13894
13895// Don't use 'blue' not visible on cmd.exe
13896inspect.styles = {
13897 'special': 'cyan',
13898 'number': 'yellow',
13899 'boolean': 'yellow',
13900 'undefined': 'grey',
13901 'null': 'bold',
13902 'string': 'green',
13903 'date': 'magenta',
13904 // "name": intentionally not styling
13905 'regexp': 'red'
13906};
13907
13908
13909function stylizeWithColor(str, styleType) {
13910 var style = inspect.styles[styleType];
13911
13912 if (style) {
13913 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13914 '\u001b[' + inspect.colors[style][1] + 'm';
13915 } else {
13916 return str;
13917 }
13918}
13919
13920
13921function stylizeNoColor(str, styleType) {
13922 return str;
13923}
13924
13925
13926function arrayToHash(array) {
13927 var hash = {};
13928
13929 array.forEach(function(val, idx) {
13930 hash[val] = true;
13931 });
13932
13933 return hash;
13934}
13935
13936
13937function formatValue(ctx, value, recurseTimes) {
13938 // Provide a hook for user-specified inspect functions.
13939 // Check that value is an object with an inspect function on it
13940 if (ctx.customInspect &&
13941 value &&
13942 isFunction(value.inspect) &&
13943 // Filter out the util module, it's inspect function is special
13944 value.inspect !== exports.inspect &&
13945 // Also filter out any prototype objects using the circular check.
13946 !(value.constructor && value.constructor.prototype === value)) {
13947 var ret = value.inspect(recurseTimes, ctx);
13948 if (!isString(ret)) {
13949 ret = formatValue(ctx, ret, recurseTimes);
13950 }
13951 return ret;
13952 }
13953
13954 // Primitive types cannot have properties
13955 var primitive = formatPrimitive(ctx, value);
13956 if (primitive) {
13957 return primitive;
13958 }
13959
13960 // Look up the keys of the object.
13961 var keys = Object.keys(value);
13962 var visibleKeys = arrayToHash(keys);
13963
13964 if (ctx.showHidden) {
13965 keys = Object.getOwnPropertyNames(value);
13966 }
13967
13968 // IE doesn't make error fields non-enumerable
13969 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13970 if (isError(value)
13971 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13972 return formatError(value);
13973 }
13974
13975 // Some type of object without properties can be shortcutted.
13976 if (keys.length === 0) {
13977 if (isFunction(value)) {
13978 var name = value.name ? ': ' + value.name : '';
13979 return ctx.stylize('[Function' + name + ']', 'special');
13980 }
13981 if (isRegExp(value)) {
13982 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13983 }
13984 if (isDate(value)) {
13985 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13986 }
13987 if (isError(value)) {
13988 return formatError(value);
13989 }
13990 }
13991
13992 var base = '', array = false, braces = ['{', '}'];
13993
13994 // Make Array say that they are Array
13995 if (isArray(value)) {
13996 array = true;
13997 braces = ['[', ']'];
13998 }
13999
14000 // Make functions say that they are functions
14001 if (isFunction(value)) {
14002 var n = value.name ? ': ' + value.name : '';
14003 base = ' [Function' + n + ']';
14004 }
14005
14006 // Make RegExps say that they are RegExps
14007 if (isRegExp(value)) {
14008 base = ' ' + RegExp.prototype.toString.call(value);
14009 }
14010
14011 // Make dates with properties first say the date
14012 if (isDate(value)) {
14013 base = ' ' + Date.prototype.toUTCString.call(value);
14014 }
14015
14016 // Make error with message first say the error
14017 if (isError(value)) {
14018 base = ' ' + formatError(value);
14019 }
14020
14021 if (keys.length === 0 && (!array || value.length == 0)) {
14022 return braces[0] + base + braces[1];
14023 }
14024
14025 if (recurseTimes < 0) {
14026 if (isRegExp(value)) {
14027 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
14028 } else {
14029 return ctx.stylize('[Object]', 'special');
14030 }
14031 }
14032
14033 ctx.seen.push(value);
14034
14035 var output;
14036 if (array) {
14037 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
14038 } else {
14039 output = keys.map(function(key) {
14040 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
14041 });
14042 }
14043
14044 ctx.seen.pop();
14045
14046 return reduceToSingleString(output, base, braces);
14047}
14048
14049
14050function formatPrimitive(ctx, value) {
14051 if (isUndefined(value))
14052 return ctx.stylize('undefined', 'undefined');
14053 if (isString(value)) {
14054 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
14055 .replace(/'/g, "\\'")
14056 .replace(/\\"/g, '"') + '\'';
14057 return ctx.stylize(simple, 'string');
14058 }
14059 if (isNumber(value))
14060 return ctx.stylize('' + value, 'number');
14061 if (isBoolean(value))
14062 return ctx.stylize('' + value, 'boolean');
14063 // For some reason typeof null is "object", so special case here.
14064 if (isNull(value))
14065 return ctx.stylize('null', 'null');
14066}
14067
14068
14069function formatError(value) {
14070 return '[' + Error.prototype.toString.call(value) + ']';
14071}
14072
14073
14074function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
14075 var output = [];
14076 for (var i = 0, l = value.length; i < l; ++i) {
14077 if (hasOwnProperty(value, String(i))) {
14078 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14079 String(i), true));
14080 } else {
14081 output.push('');
14082 }
14083 }
14084 keys.forEach(function(key) {
14085 if (!key.match(/^\d+$/)) {
14086 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14087 key, true));
14088 }
14089 });
14090 return output;
14091}
14092
14093
14094function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
14095 var name, str, desc;
14096 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
14097 if (desc.get) {
14098 if (desc.set) {
14099 str = ctx.stylize('[Getter/Setter]', 'special');
14100 } else {
14101 str = ctx.stylize('[Getter]', 'special');
14102 }
14103 } else {
14104 if (desc.set) {
14105 str = ctx.stylize('[Setter]', 'special');
14106 }
14107 }
14108 if (!hasOwnProperty(visibleKeys, key)) {
14109 name = '[' + key + ']';
14110 }
14111 if (!str) {
14112 if (ctx.seen.indexOf(desc.value) < 0) {
14113 if (isNull(recurseTimes)) {
14114 str = formatValue(ctx, desc.value, null);
14115 } else {
14116 str = formatValue(ctx, desc.value, recurseTimes - 1);
14117 }
14118 if (str.indexOf('\n') > -1) {
14119 if (array) {
14120 str = str.split('\n').map(function(line) {
14121 return ' ' + line;
14122 }).join('\n').substr(2);
14123 } else {
14124 str = '\n' + str.split('\n').map(function(line) {
14125 return ' ' + line;
14126 }).join('\n');
14127 }
14128 }
14129 } else {
14130 str = ctx.stylize('[Circular]', 'special');
14131 }
14132 }
14133 if (isUndefined(name)) {
14134 if (array && key.match(/^\d+$/)) {
14135 return str;
14136 }
14137 name = JSON.stringify('' + key);
14138 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
14139 name = name.substr(1, name.length - 2);
14140 name = ctx.stylize(name, 'name');
14141 } else {
14142 name = name.replace(/'/g, "\\'")
14143 .replace(/\\"/g, '"')
14144 .replace(/(^"|"$)/g, "'");
14145 name = ctx.stylize(name, 'string');
14146 }
14147 }
14148
14149 return name + ': ' + str;
14150}
14151
14152
14153function reduceToSingleString(output, base, braces) {
14154 var numLinesEst = 0;
14155 var length = output.reduce(function(prev, cur) {
14156 numLinesEst++;
14157 if (cur.indexOf('\n') >= 0) numLinesEst++;
14158 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
14159 }, 0);
14160
14161 if (length > 60) {
14162 return braces[0] +
14163 (base === '' ? '' : base + '\n ') +
14164 ' ' +
14165 output.join(',\n ') +
14166 ' ' +
14167 braces[1];
14168 }
14169
14170 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
14171}
14172
14173
14174// NOTE: These type checking functions intentionally don't use `instanceof`
14175// because it is fragile and can be easily faked with `Object.create()`.
14176function isArray(ar) {
14177 return Array.isArray(ar);
14178}
14179exports.isArray = isArray;
14180
14181function isBoolean(arg) {
14182 return typeof arg === 'boolean';
14183}
14184exports.isBoolean = isBoolean;
14185
14186function isNull(arg) {
14187 return arg === null;
14188}
14189exports.isNull = isNull;
14190
14191function isNullOrUndefined(arg) {
14192 return arg == null;
14193}
14194exports.isNullOrUndefined = isNullOrUndefined;
14195
14196function isNumber(arg) {
14197 return typeof arg === 'number';
14198}
14199exports.isNumber = isNumber;
14200
14201function isString(arg) {
14202 return typeof arg === 'string';
14203}
14204exports.isString = isString;
14205
14206function isSymbol(arg) {
14207 return typeof arg === 'symbol';
14208}
14209exports.isSymbol = isSymbol;
14210
14211function isUndefined(arg) {
14212 return arg === void 0;
14213}
14214exports.isUndefined = isUndefined;
14215
14216function isRegExp(re) {
14217 return isObject(re) && objectToString(re) === '[object RegExp]';
14218}
14219exports.isRegExp = isRegExp;
14220
14221function isObject(arg) {
14222 return typeof arg === 'object' && arg !== null;
14223}
14224exports.isObject = isObject;
14225
14226function isDate(d) {
14227 return isObject(d) && objectToString(d) === '[object Date]';
14228}
14229exports.isDate = isDate;
14230
14231function isError(e) {
14232 return isObject(e) &&
14233 (objectToString(e) === '[object Error]' || e instanceof Error);
14234}
14235exports.isError = isError;
14236
14237function isFunction(arg) {
14238 return typeof arg === 'function';
14239}
14240exports.isFunction = isFunction;
14241
14242function isPrimitive(arg) {
14243 return arg === null ||
14244 typeof arg === 'boolean' ||
14245 typeof arg === 'number' ||
14246 typeof arg === 'string' ||
14247 typeof arg === 'symbol' || // ES6 symbol
14248 typeof arg === 'undefined';
14249}
14250exports.isPrimitive = isPrimitive;
14251
14252exports.isBuffer = require('./support/isBuffer');
14253
14254function objectToString(o) {
14255 return Object.prototype.toString.call(o);
14256}
14257
14258
14259function pad(n) {
14260 return n < 10 ? '0' + n.toString(10) : n.toString(10);
14261}
14262
14263
14264var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
14265 'Oct', 'Nov', 'Dec'];
14266
14267// 26 Feb 16:19:34
14268function timestamp() {
14269 var d = new Date();
14270 var time = [pad(d.getHours()),
14271 pad(d.getMinutes()),
14272 pad(d.getSeconds())].join(':');
14273 return [d.getDate(), months[d.getMonth()], time].join(' ');
14274}
14275
14276
14277// log is just a thin wrapper to console.log that prepends a timestamp
14278exports.log = function() {
14279 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
14280};
14281
14282
14283/**
14284 * Inherit the prototype methods from one constructor into another.
14285 *
14286 * The Function.prototype.inherits from lang.js rewritten as a standalone
14287 * function (not on Function.prototype). NOTE: If this file is to be loaded
14288 * during bootstrapping this function needs to be rewritten using some native
14289 * functions as prototype setup using normal JavaScript does not work as
14290 * expected during bootstrapping (see mirror.js in r114903).
14291 *
14292 * @param {function} ctor Constructor function which needs to inherit the
14293 * prototype.
14294 * @param {function} superCtor Constructor function to inherit prototype from.
14295 */
14296exports.inherits = require('inherits');
14297
14298exports._extend = function(origin, add) {
14299 // Don't do anything if add isn't an object
14300 if (!add || !isObject(add)) return origin;
14301
14302 var keys = Object.keys(add);
14303 var i = keys.length;
14304 while (i--) {
14305 origin[keys[i]] = add[keys[i]];
14306 }
14307 return origin;
14308};
14309
14310function hasOwnProperty(obj, prop) {
14311 return Object.prototype.hasOwnProperty.call(obj, prop);
14312}
14313
14314}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14315},{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
14316// Base58 encoding/decoding
14317// Originally written by Mike Hearn for BitcoinJ
14318// Copyright (c) 2011 Google Inc
14319// Ported to JavaScript by Stefan Thomas
14320// Merged Buffer refactorings from base58-native by Stephen Pair
14321// Copyright (c) 2013 BitPay Inc
14322
14323var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
14324var ALPHABET_MAP = {}
14325for(var i = 0; i < ALPHABET.length; i++) {
14326 ALPHABET_MAP[ALPHABET.charAt(i)] = i
14327}
14328var BASE = 58
14329
14330function encode(buffer) {
14331 if (buffer.length === 0) return ''
14332
14333 var i, j, digits = [0]
14334 for (i = 0; i < buffer.length; i++) {
14335 for (j = 0; j < digits.length; j++) digits[j] <<= 8
14336
14337 digits[0] += buffer[i]
14338
14339 var carry = 0
14340 for (j = 0; j < digits.length; ++j) {
14341 digits[j] += carry
14342
14343 carry = (digits[j] / BASE) | 0
14344 digits[j] %= BASE
14345 }
14346
14347 while (carry) {
14348 digits.push(carry % BASE)
14349
14350 carry = (carry / BASE) | 0
14351 }
14352 }
14353
14354 // deal with leading zeros
14355 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
14356
14357 // convert digits to a string
14358 var stringOutput = ""
14359 for (var i = digits.length - 1; i >= 0; i--) {
14360 stringOutput = stringOutput + ALPHABET[digits[i]]
14361 }
14362 return stringOutput
14363}
14364
14365function decode(string) {
14366 if (string.length === 0) return []
14367
14368 var i, j, bytes = [0]
14369 for (i = 0; i < string.length; i++) {
14370 var c = string[i]
14371 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
14372
14373 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
14374 bytes[0] += ALPHABET_MAP[c]
14375
14376 var carry = 0
14377 for (j = 0; j < bytes.length; ++j) {
14378 bytes[j] += carry
14379
14380 carry = bytes[j] >> 8
14381 bytes[j] &= 0xff
14382 }
14383
14384 while (carry) {
14385 bytes.push(carry & 0xff)
14386
14387 carry >>= 8
14388 }
14389 }
14390
14391 // deal with leading zeros
14392 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
14393
14394 return bytes.reverse()
14395}
14396
14397module.exports = {
14398 encode: encode,
14399 decode: decode
14400}
14401
14402},{}],31:[function(require,module,exports){
14403(function (Buffer){
14404'use strict'
14405
14406var base58 = require('bs58')
14407var createHash = require('create-hash')
14408
14409// SHA256(SHA256(buffer))
14410function sha256x2 (buffer) {
14411 buffer = createHash('sha256').update(buffer).digest()
14412 return createHash('sha256').update(buffer).digest()
14413}
14414
14415// Encode a buffer as a base58-check encoded string
14416function encode (payload) {
14417 var checksum = sha256x2(payload).slice(0, 4)
14418
14419 return base58.encode(Buffer.concat([
14420 payload,
14421 checksum
14422 ]))
14423}
14424
14425// Decode a base58-check encoded string to a buffer
14426function decode (string) {
14427 var buffer = new Buffer(base58.decode(string))
14428
14429 var payload = buffer.slice(0, -4)
14430 var checksum = buffer.slice(-4)
14431 var newChecksum = sha256x2(payload).slice(0, 4)
14432
14433 for (var i = 0; i < newChecksum.length; ++i) {
14434 if (newChecksum[i] === checksum[i]) continue
14435
14436 throw new Error('Invalid checksum')
14437 }
14438
14439 return payload
14440}
14441
14442module.exports = {
14443 encode: encode,
14444 decode: decode
14445}
14446
14447}).call(this,require("buffer").Buffer)
14448},{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
14449(function (Buffer){
14450'use strict';
14451var inherits = require('inherits')
14452var md5 = require('./md5')
14453var rmd160 = require('ripemd160')
14454var sha = require('sha.js')
14455
14456var Transform = require('stream').Transform
14457
14458function HashNoConstructor(hash) {
14459 Transform.call(this)
14460
14461 this._hash = hash
14462 this.buffers = []
14463}
14464
14465inherits(HashNoConstructor, Transform)
14466
14467HashNoConstructor.prototype._transform = function (data, _, next) {
14468 this.buffers.push(data)
14469
14470 next()
14471}
14472
14473HashNoConstructor.prototype._flush = function (next) {
14474 this.push(this.digest())
14475 next()
14476}
14477
14478HashNoConstructor.prototype.update = function (data, enc) {
14479 if (typeof data === 'string') {
14480 data = new Buffer(data, enc)
14481 }
14482
14483 this.buffers.push(data)
14484 return this
14485}
14486
14487HashNoConstructor.prototype.digest = function (enc) {
14488 var buf = Buffer.concat(this.buffers)
14489 var r = this._hash(buf)
14490 this.buffers = null
14491
14492 return enc ? r.toString(enc) : r
14493}
14494
14495function Hash(hash) {
14496 Transform.call(this)
14497
14498 this._hash = hash
14499}
14500
14501inherits(Hash, Transform)
14502
14503Hash.prototype._transform = function (data, enc, next) {
14504 if (enc) data = new Buffer(data, enc)
14505
14506 this._hash.update(data)
14507
14508 next()
14509}
14510
14511Hash.prototype._flush = function (next) {
14512 this.push(this._hash.digest())
14513 this._hash = null
14514
14515 next()
14516}
14517
14518Hash.prototype.update = function (data, enc) {
14519 if (typeof data === 'string') {
14520 data = new Buffer(data, enc)
14521 }
14522
14523 this._hash.update(data)
14524 return this
14525}
14526
14527Hash.prototype.digest = function (enc) {
14528 var outData = this._hash.digest()
14529
14530 return enc ? outData.toString(enc) : outData
14531}
14532
14533module.exports = function createHash (alg) {
14534 if ('md5' === alg) return new HashNoConstructor(md5)
14535 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
14536
14537 return new Hash(sha(alg))
14538}
14539
14540}).call(this,require("buffer").Buffer)
14541},{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
14542(function (Buffer){
14543'use strict';
14544var intSize = 4;
14545var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
14546var chrsz = 8;
14547
14548function toArray(buf, bigEndian) {
14549 if ((buf.length % intSize) !== 0) {
14550 var len = buf.length + (intSize - (buf.length % intSize));
14551 buf = Buffer.concat([buf, zeroBuffer], len);
14552 }
14553
14554 var arr = [];
14555 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
14556 for (var i = 0; i < buf.length; i += intSize) {
14557 arr.push(fn.call(buf, i));
14558 }
14559 return arr;
14560}
14561
14562function toBuffer(arr, size, bigEndian) {
14563 var buf = new Buffer(size);
14564 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
14565 for (var i = 0; i < arr.length; i++) {
14566 fn.call(buf, arr[i], i * 4, true);
14567 }
14568 return buf;
14569}
14570
14571function hash(buf, fn, hashSize, bigEndian) {
14572 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
14573 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
14574 return toBuffer(arr, hashSize, bigEndian);
14575}
14576exports.hash = hash;
14577}).call(this,require("buffer").Buffer)
14578},{"buffer":7}],34:[function(require,module,exports){
14579'use strict';
14580/*
14581 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14582 * Digest Algorithm, as defined in RFC 1321.
14583 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
14584 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14585 * Distributed under the BSD License
14586 * See http://pajhome.org.uk/crypt/md5 for more info.
14587 */
14588
14589var helpers = require('./helpers');
14590
14591/*
14592 * Calculate the MD5 of an array of little-endian words, and a bit length
14593 */
14594function core_md5(x, len)
14595{
14596 /* append padding */
14597 x[len >> 5] |= 0x80 << ((len) % 32);
14598 x[(((len + 64) >>> 9) << 4) + 14] = len;
14599
14600 var a = 1732584193;
14601 var b = -271733879;
14602 var c = -1732584194;
14603 var d = 271733878;
14604
14605 for(var i = 0; i < x.length; i += 16)
14606 {
14607 var olda = a;
14608 var oldb = b;
14609 var oldc = c;
14610 var oldd = d;
14611
14612 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
14613 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
14614 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
14615 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
14616 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
14617 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
14618 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
14619 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
14620 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
14621 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
14622 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
14623 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
14624 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
14625 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
14626 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
14627 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
14628
14629 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
14630 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
14631 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
14632 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
14633 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
14634 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
14635 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
14636 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
14637 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
14638 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
14639 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
14640 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
14641 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
14642 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
14643 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
14644 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
14645
14646 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
14647 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
14648 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
14649 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
14650 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
14651 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
14652 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
14653 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
14654 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
14655 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
14656 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
14657 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
14658 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
14659 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
14660 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
14661 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
14662
14663 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
14664 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
14665 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
14666 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
14667 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
14668 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
14669 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
14670 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
14671 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
14672 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
14673 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
14674 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
14675 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
14676 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
14677 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
14678 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
14679
14680 a = safe_add(a, olda);
14681 b = safe_add(b, oldb);
14682 c = safe_add(c, oldc);
14683 d = safe_add(d, oldd);
14684 }
14685 return Array(a, b, c, d);
14686
14687}
14688
14689/*
14690 * These functions implement the four basic operations the algorithm uses.
14691 */
14692function md5_cmn(q, a, b, x, s, t)
14693{
14694 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
14695}
14696function md5_ff(a, b, c, d, x, s, t)
14697{
14698 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
14699}
14700function md5_gg(a, b, c, d, x, s, t)
14701{
14702 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
14703}
14704function md5_hh(a, b, c, d, x, s, t)
14705{
14706 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
14707}
14708function md5_ii(a, b, c, d, x, s, t)
14709{
14710 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
14711}
14712
14713/*
14714 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14715 * to work around bugs in some JS interpreters.
14716 */
14717function safe_add(x, y)
14718{
14719 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14720 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14721 return (msw << 16) | (lsw & 0xFFFF);
14722}
14723
14724/*
14725 * Bitwise rotate a 32-bit number to the left.
14726 */
14727function bit_rol(num, cnt)
14728{
14729 return (num << cnt) | (num >>> (32 - cnt));
14730}
14731
14732module.exports = function md5(buf) {
14733 return helpers.hash(buf, core_md5, 16);
14734};
14735},{"./helpers":33}],35:[function(require,module,exports){
14736arguments[4][12][0].apply(exports,arguments)
14737},{"dup":12}],36:[function(require,module,exports){
14738(function (Buffer){
14739/*
14740CryptoJS v3.1.2
14741code.google.com/p/crypto-js
14742(c) 2009-2013 by Jeff Mott. All rights reserved.
14743code.google.com/p/crypto-js/wiki/License
14744*/
14745/** @preserve
14746(c) 2012 by Cédric Mesnil. All rights reserved.
14747
14748Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
14749
14750 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
14751 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
14752
14753THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14754*/
14755
14756// constants table
14757var zl = [
14758 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14759 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
14760 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
14761 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
14762 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
14763]
14764
14765var zr = [
14766 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
14767 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
14768 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
14769 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
14770 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
14771]
14772
14773var sl = [
14774 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
14775 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
14776 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
14777 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
14778 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
14779]
14780
14781var sr = [
14782 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
14783 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
14784 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
14785 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
14786 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
14787]
14788
14789var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
14790var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
14791
14792function bytesToWords (bytes) {
14793 var words = []
14794 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
14795 words[b >>> 5] |= bytes[i] << (24 - b % 32)
14796 }
14797 return words
14798}
14799
14800function wordsToBytes (words) {
14801 var bytes = []
14802 for (var b = 0; b < words.length * 32; b += 8) {
14803 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
14804 }
14805 return bytes
14806}
14807
14808function processBlock (H, M, offset) {
14809 // swap endian
14810 for (var i = 0; i < 16; i++) {
14811 var offset_i = offset + i
14812 var M_offset_i = M[offset_i]
14813
14814 // Swap
14815 M[offset_i] = (
14816 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
14817 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
14818 )
14819 }
14820
14821 // Working variables
14822 var al, bl, cl, dl, el
14823 var ar, br, cr, dr, er
14824
14825 ar = al = H[0]
14826 br = bl = H[1]
14827 cr = cl = H[2]
14828 dr = dl = H[3]
14829 er = el = H[4]
14830
14831 // computation
14832 var t
14833 for (i = 0; i < 80; i += 1) {
14834 t = (al + M[offset + zl[i]]) | 0
14835 if (i < 16) {
14836 t += f1(bl, cl, dl) + hl[0]
14837 } else if (i < 32) {
14838 t += f2(bl, cl, dl) + hl[1]
14839 } else if (i < 48) {
14840 t += f3(bl, cl, dl) + hl[2]
14841 } else if (i < 64) {
14842 t += f4(bl, cl, dl) + hl[3]
14843 } else {// if (i<80) {
14844 t += f5(bl, cl, dl) + hl[4]
14845 }
14846 t = t | 0
14847 t = rotl(t, sl[i])
14848 t = (t + el) | 0
14849 al = el
14850 el = dl
14851 dl = rotl(cl, 10)
14852 cl = bl
14853 bl = t
14854
14855 t = (ar + M[offset + zr[i]]) | 0
14856 if (i < 16) {
14857 t += f5(br, cr, dr) + hr[0]
14858 } else if (i < 32) {
14859 t += f4(br, cr, dr) + hr[1]
14860 } else if (i < 48) {
14861 t += f3(br, cr, dr) + hr[2]
14862 } else if (i < 64) {
14863 t += f2(br, cr, dr) + hr[3]
14864 } else {// if (i<80) {
14865 t += f1(br, cr, dr) + hr[4]
14866 }
14867
14868 t = t | 0
14869 t = rotl(t, sr[i])
14870 t = (t + er) | 0
14871 ar = er
14872 er = dr
14873 dr = rotl(cr, 10)
14874 cr = br
14875 br = t
14876 }
14877
14878 // intermediate hash value
14879 t = (H[1] + cl + dr) | 0
14880 H[1] = (H[2] + dl + er) | 0
14881 H[2] = (H[3] + el + ar) | 0
14882 H[3] = (H[4] + al + br) | 0
14883 H[4] = (H[0] + bl + cr) | 0
14884 H[0] = t
14885}
14886
14887function f1 (x, y, z) {
14888 return ((x) ^ (y) ^ (z))
14889}
14890
14891function f2 (x, y, z) {
14892 return (((x) & (y)) | ((~x) & (z)))
14893}
14894
14895function f3 (x, y, z) {
14896 return (((x) | (~(y))) ^ (z))
14897}
14898
14899function f4 (x, y, z) {
14900 return (((x) & (z)) | ((y) & (~(z))))
14901}
14902
14903function f5 (x, y, z) {
14904 return ((x) ^ ((y) | (~(z))))
14905}
14906
14907function rotl (x, n) {
14908 return (x << n) | (x >>> (32 - n))
14909}
14910
14911function ripemd160 (message) {
14912 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
14913
14914 if (typeof message === 'string') {
14915 message = new Buffer(message, 'utf8')
14916 }
14917
14918 var m = bytesToWords(message)
14919
14920 var nBitsLeft = message.length * 8
14921 var nBitsTotal = message.length * 8
14922
14923 // Add padding
14924 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
14925 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
14926 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
14927 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
14928 )
14929
14930 for (var i = 0; i < m.length; i += 16) {
14931 processBlock(H, m, i)
14932 }
14933
14934 // swap endian
14935 for (i = 0; i < 5; i++) {
14936 // shortcut
14937 var H_i = H[i]
14938
14939 // Swap
14940 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
14941 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
14942 }
14943
14944 var digestbytes = wordsToBytes(H)
14945 return new Buffer(digestbytes)
14946}
14947
14948module.exports = ripemd160
14949
14950}).call(this,require("buffer").Buffer)
14951},{"buffer":7}],37:[function(require,module,exports){
14952(function (Buffer){
14953// prototype class for hash functions
14954function Hash (blockSize, finalSize) {
14955 this._block = new Buffer(blockSize)
14956 this._finalSize = finalSize
14957 this._blockSize = blockSize
14958 this._len = 0
14959 this._s = 0
14960}
14961
14962Hash.prototype.update = function (data, enc) {
14963 if (typeof data === 'string') {
14964 enc = enc || 'utf8'
14965 data = new Buffer(data, enc)
14966 }
14967
14968 var l = this._len += data.length
14969 var s = this._s || 0
14970 var f = 0
14971 var buffer = this._block
14972
14973 while (s < l) {
14974 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
14975 var ch = (t - f)
14976
14977 for (var i = 0; i < ch; i++) {
14978 buffer[(s % this._blockSize) + i] = data[i + f]
14979 }
14980
14981 s += ch
14982 f += ch
14983
14984 if ((s % this._blockSize) === 0) {
14985 this._update(buffer)
14986 }
14987 }
14988 this._s = s
14989
14990 return this
14991}
14992
14993Hash.prototype.digest = function (enc) {
14994 // Suppose the length of the message M, in bits, is l
14995 var l = this._len * 8
14996
14997 // Append the bit 1 to the end of the message
14998 this._block[this._len % this._blockSize] = 0x80
14999
15000 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
15001 this._block.fill(0, this._len % this._blockSize + 1)
15002
15003 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
15004 this._update(this._block)
15005 this._block.fill(0)
15006 }
15007
15008 // to this append the block which is equal to the number l written in binary
15009 // TODO: handle case where l is > Math.pow(2, 29)
15010 this._block.writeInt32BE(l, this._blockSize - 4)
15011
15012 var hash = this._update(this._block) || this._hash()
15013
15014 return enc ? hash.toString(enc) : hash
15015}
15016
15017Hash.prototype._update = function () {
15018 throw new Error('_update must be implemented by subclass')
15019}
15020
15021module.exports = Hash
15022
15023}).call(this,require("buffer").Buffer)
15024},{"buffer":7}],38:[function(require,module,exports){
15025var exports = module.exports = function SHA (algorithm) {
15026 algorithm = algorithm.toLowerCase()
15027
15028 var Algorithm = exports[algorithm]
15029 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
15030
15031 return new Algorithm()
15032}
15033
15034exports.sha = require('./sha')
15035exports.sha1 = require('./sha1')
15036exports.sha224 = require('./sha224')
15037exports.sha256 = require('./sha256')
15038exports.sha384 = require('./sha384')
15039exports.sha512 = require('./sha512')
15040
15041},{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
15042(function (Buffer){
15043/*
15044 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
15045 * in FIPS PUB 180-1
15046 * This source code is derived from sha1.js of the same repository.
15047 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
15048 * operation was added.
15049 */
15050
15051var inherits = require('inherits')
15052var Hash = require('./hash')
15053
15054var W = new Array(80)
15055
15056function Sha () {
15057 this.init()
15058 this._w = W
15059
15060 Hash.call(this, 64, 56)
15061}
15062
15063inherits(Sha, Hash)
15064
15065Sha.prototype.init = function () {
15066 this._a = 0x67452301 | 0
15067 this._b = 0xefcdab89 | 0
15068 this._c = 0x98badcfe | 0
15069 this._d = 0x10325476 | 0
15070 this._e = 0xc3d2e1f0 | 0
15071
15072 return this
15073}
15074
15075/*
15076 * Bitwise rotate a 32-bit number to the left.
15077 */
15078function rol (num, cnt) {
15079 return (num << cnt) | (num >>> (32 - cnt))
15080}
15081
15082Sha.prototype._update = function (M) {
15083 var W = this._w
15084
15085 var a = this._a
15086 var b = this._b
15087 var c = this._c
15088 var d = this._d
15089 var e = this._e
15090
15091 var j = 0, k
15092
15093 /*
15094 * SHA-1 has a bitwise rotate left operation. But, SHA is not
15095 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15096 */
15097 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
15098 function loop (w, f) {
15099 W[j] = w
15100
15101 var t = rol(a, 5) + f + e + w + k
15102
15103 e = d
15104 d = c
15105 c = rol(b, 30)
15106 b = a
15107 a = t
15108 j++
15109 }
15110
15111 k = 1518500249
15112 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15113 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15114 k = 1859775393
15115 while (j < 40) loop(calcW(), b ^ c ^ d)
15116 k = -1894007588
15117 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15118 k = -899497514
15119 while (j < 80) loop(calcW(), b ^ c ^ d)
15120
15121 this._a = (a + this._a) | 0
15122 this._b = (b + this._b) | 0
15123 this._c = (c + this._c) | 0
15124 this._d = (d + this._d) | 0
15125 this._e = (e + this._e) | 0
15126}
15127
15128Sha.prototype._hash = function () {
15129 var H = new Buffer(20)
15130
15131 H.writeInt32BE(this._a | 0, 0)
15132 H.writeInt32BE(this._b | 0, 4)
15133 H.writeInt32BE(this._c | 0, 8)
15134 H.writeInt32BE(this._d | 0, 12)
15135 H.writeInt32BE(this._e | 0, 16)
15136
15137 return H
15138}
15139
15140module.exports = Sha
15141
15142
15143}).call(this,require("buffer").Buffer)
15144},{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
15145(function (Buffer){
15146/*
15147 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
15148 * in FIPS PUB 180-1
15149 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
15150 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15151 * Distributed under the BSD License
15152 * See http://pajhome.org.uk/crypt/md5 for details.
15153 */
15154
15155var inherits = require('inherits')
15156var Hash = require('./hash')
15157
15158var W = new Array(80)
15159
15160function Sha1 () {
15161 this.init()
15162 this._w = W
15163
15164 Hash.call(this, 64, 56)
15165}
15166
15167inherits(Sha1, Hash)
15168
15169Sha1.prototype.init = function () {
15170 this._a = 0x67452301 | 0
15171 this._b = 0xefcdab89 | 0
15172 this._c = 0x98badcfe | 0
15173 this._d = 0x10325476 | 0
15174 this._e = 0xc3d2e1f0 | 0
15175
15176 return this
15177}
15178
15179/*
15180 * Bitwise rotate a 32-bit number to the left.
15181 */
15182function rol (num, cnt) {
15183 return (num << cnt) | (num >>> (32 - cnt))
15184}
15185
15186Sha1.prototype._update = function (M) {
15187 var W = this._w
15188
15189 var a = this._a
15190 var b = this._b
15191 var c = this._c
15192 var d = this._d
15193 var e = this._e
15194
15195 var j = 0, k
15196
15197 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15198 function loop (w, f) {
15199 W[j] = w
15200
15201 var t = rol(a, 5) + f + e + w + k
15202
15203 e = d
15204 d = c
15205 c = rol(b, 30)
15206 b = a
15207 a = t
15208 j++
15209 }
15210
15211 k = 1518500249
15212 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15213 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15214 k = 1859775393
15215 while (j < 40) loop(calcW(), b ^ c ^ d)
15216 k = -1894007588
15217 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15218 k = -899497514
15219 while (j < 80) loop(calcW(), b ^ c ^ d)
15220
15221 this._a = (a + this._a) | 0
15222 this._b = (b + this._b) | 0
15223 this._c = (c + this._c) | 0
15224 this._d = (d + this._d) | 0
15225 this._e = (e + this._e) | 0
15226}
15227
15228Sha1.prototype._hash = function () {
15229 var H = new Buffer(20)
15230
15231 H.writeInt32BE(this._a | 0, 0)
15232 H.writeInt32BE(this._b | 0, 4)
15233 H.writeInt32BE(this._c | 0, 8)
15234 H.writeInt32BE(this._d | 0, 12)
15235 H.writeInt32BE(this._e | 0, 16)
15236
15237 return H
15238}
15239
15240module.exports = Sha1
15241
15242}).call(this,require("buffer").Buffer)
15243},{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
15244(function (Buffer){
15245/**
15246 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15247 * in FIPS 180-2
15248 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15249 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15250 *
15251 */
15252
15253var inherits = require('inherits')
15254var Sha256 = require('./sha256')
15255var Hash = require('./hash')
15256
15257var W = new Array(64)
15258
15259function Sha224 () {
15260 this.init()
15261
15262 this._w = W // new Array(64)
15263
15264 Hash.call(this, 64, 56)
15265}
15266
15267inherits(Sha224, Sha256)
15268
15269Sha224.prototype.init = function () {
15270 this._a = 0xc1059ed8 | 0
15271 this._b = 0x367cd507 | 0
15272 this._c = 0x3070dd17 | 0
15273 this._d = 0xf70e5939 | 0
15274 this._e = 0xffc00b31 | 0
15275 this._f = 0x68581511 | 0
15276 this._g = 0x64f98fa7 | 0
15277 this._h = 0xbefa4fa4 | 0
15278
15279 return this
15280}
15281
15282Sha224.prototype._hash = function () {
15283 var H = new Buffer(28)
15284
15285 H.writeInt32BE(this._a, 0)
15286 H.writeInt32BE(this._b, 4)
15287 H.writeInt32BE(this._c, 8)
15288 H.writeInt32BE(this._d, 12)
15289 H.writeInt32BE(this._e, 16)
15290 H.writeInt32BE(this._f, 20)
15291 H.writeInt32BE(this._g, 24)
15292
15293 return H
15294}
15295
15296module.exports = Sha224
15297
15298}).call(this,require("buffer").Buffer)
15299},{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
15300(function (Buffer){
15301/**
15302 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15303 * in FIPS 180-2
15304 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15305 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15306 *
15307 */
15308
15309var inherits = require('inherits')
15310var Hash = require('./hash')
15311
15312var K = [
15313 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
15314 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
15315 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
15316 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
15317 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
15318 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
15319 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
15320 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
15321 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
15322 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
15323 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
15324 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
15325 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
15326 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
15327 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
15328 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
15329]
15330
15331var W = new Array(64)
15332
15333function Sha256 () {
15334 this.init()
15335
15336 this._w = W // new Array(64)
15337
15338 Hash.call(this, 64, 56)
15339}
15340
15341inherits(Sha256, Hash)
15342
15343Sha256.prototype.init = function () {
15344 this._a = 0x6a09e667 | 0
15345 this._b = 0xbb67ae85 | 0
15346 this._c = 0x3c6ef372 | 0
15347 this._d = 0xa54ff53a | 0
15348 this._e = 0x510e527f | 0
15349 this._f = 0x9b05688c | 0
15350 this._g = 0x1f83d9ab | 0
15351 this._h = 0x5be0cd19 | 0
15352
15353 return this
15354}
15355
15356function S (X, n) {
15357 return (X >>> n) | (X << (32 - n))
15358}
15359
15360function R (X, n) {
15361 return (X >>> n)
15362}
15363
15364function Ch (x, y, z) {
15365 return ((x & y) ^ ((~x) & z))
15366}
15367
15368function Maj (x, y, z) {
15369 return ((x & y) ^ (x & z) ^ (y & z))
15370}
15371
15372function Sigma0256 (x) {
15373 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
15374}
15375
15376function Sigma1256 (x) {
15377 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
15378}
15379
15380function Gamma0256 (x) {
15381 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
15382}
15383
15384function Gamma1256 (x) {
15385 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
15386}
15387
15388Sha256.prototype._update = function (M) {
15389 var W = this._w
15390
15391 var a = this._a | 0
15392 var b = this._b | 0
15393 var c = this._c | 0
15394 var d = this._d | 0
15395 var e = this._e | 0
15396 var f = this._f | 0
15397 var g = this._g | 0
15398 var h = this._h | 0
15399
15400 var j = 0
15401
15402 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
15403 function loop (w) {
15404 W[j] = w
15405
15406 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
15407 var T2 = Sigma0256(a) + Maj(a, b, c)
15408
15409 h = g
15410 g = f
15411 f = e
15412 e = d + T1
15413 d = c
15414 c = b
15415 b = a
15416 a = T1 + T2
15417
15418 j++
15419 }
15420
15421 while (j < 16) loop(M.readInt32BE(j * 4))
15422 while (j < 64) loop(calcW())
15423
15424 this._a = (a + this._a) | 0
15425 this._b = (b + this._b) | 0
15426 this._c = (c + this._c) | 0
15427 this._d = (d + this._d) | 0
15428 this._e = (e + this._e) | 0
15429 this._f = (f + this._f) | 0
15430 this._g = (g + this._g) | 0
15431 this._h = (h + this._h) | 0
15432}
15433
15434Sha256.prototype._hash = function () {
15435 var H = new Buffer(32)
15436
15437 H.writeInt32BE(this._a, 0)
15438 H.writeInt32BE(this._b, 4)
15439 H.writeInt32BE(this._c, 8)
15440 H.writeInt32BE(this._d, 12)
15441 H.writeInt32BE(this._e, 16)
15442 H.writeInt32BE(this._f, 20)
15443 H.writeInt32BE(this._g, 24)
15444 H.writeInt32BE(this._h, 28)
15445
15446 return H
15447}
15448
15449module.exports = Sha256
15450
15451}).call(this,require("buffer").Buffer)
15452},{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
15453(function (Buffer){
15454var inherits = require('inherits')
15455var SHA512 = require('./sha512')
15456var Hash = require('./hash')
15457
15458var W = new Array(160)
15459
15460function Sha384 () {
15461 this.init()
15462 this._w = W
15463
15464 Hash.call(this, 128, 112)
15465}
15466
15467inherits(Sha384, SHA512)
15468
15469Sha384.prototype.init = function () {
15470 this._a = 0xcbbb9d5d | 0
15471 this._b = 0x629a292a | 0
15472 this._c = 0x9159015a | 0
15473 this._d = 0x152fecd8 | 0
15474 this._e = 0x67332667 | 0
15475 this._f = 0x8eb44a87 | 0
15476 this._g = 0xdb0c2e0d | 0
15477 this._h = 0x47b5481d | 0
15478
15479 this._al = 0xc1059ed8 | 0
15480 this._bl = 0x367cd507 | 0
15481 this._cl = 0x3070dd17 | 0
15482 this._dl = 0xf70e5939 | 0
15483 this._el = 0xffc00b31 | 0
15484 this._fl = 0x68581511 | 0
15485 this._gl = 0x64f98fa7 | 0
15486 this._hl = 0xbefa4fa4 | 0
15487
15488 return this
15489}
15490
15491Sha384.prototype._hash = function () {
15492 var H = new Buffer(48)
15493
15494 function writeInt64BE (h, l, offset) {
15495 H.writeInt32BE(h, offset)
15496 H.writeInt32BE(l, offset + 4)
15497 }
15498
15499 writeInt64BE(this._a, this._al, 0)
15500 writeInt64BE(this._b, this._bl, 8)
15501 writeInt64BE(this._c, this._cl, 16)
15502 writeInt64BE(this._d, this._dl, 24)
15503 writeInt64BE(this._e, this._el, 32)
15504 writeInt64BE(this._f, this._fl, 40)
15505
15506 return H
15507}
15508
15509module.exports = Sha384
15510
15511}).call(this,require("buffer").Buffer)
15512},{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
15513(function (Buffer){
15514var inherits = require('inherits')
15515var Hash = require('./hash')
15516
15517var K = [
15518 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
15519 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
15520 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
15521 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
15522 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
15523 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
15524 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
15525 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
15526 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
15527 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
15528 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
15529 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
15530 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
15531 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
15532 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
15533 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
15534 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
15535 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
15536 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
15537 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
15538 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
15539 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
15540 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
15541 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
15542 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
15543 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
15544 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
15545 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
15546 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
15547 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
15548 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
15549 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
15550 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
15551 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
15552 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
15553 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
15554 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
15555 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
15556 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
15557 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
15558]
15559
15560var W = new Array(160)
15561
15562function Sha512 () {
15563 this.init()
15564 this._w = W
15565
15566 Hash.call(this, 128, 112)
15567}
15568
15569inherits(Sha512, Hash)
15570
15571Sha512.prototype.init = function () {
15572 this._a = 0x6a09e667 | 0
15573 this._b = 0xbb67ae85 | 0
15574 this._c = 0x3c6ef372 | 0
15575 this._d = 0xa54ff53a | 0
15576 this._e = 0x510e527f | 0
15577 this._f = 0x9b05688c | 0
15578 this._g = 0x1f83d9ab | 0
15579 this._h = 0x5be0cd19 | 0
15580
15581 this._al = 0xf3bcc908 | 0
15582 this._bl = 0x84caa73b | 0
15583 this._cl = 0xfe94f82b | 0
15584 this._dl = 0x5f1d36f1 | 0
15585 this._el = 0xade682d1 | 0
15586 this._fl = 0x2b3e6c1f | 0
15587 this._gl = 0xfb41bd6b | 0
15588 this._hl = 0x137e2179 | 0
15589
15590 return this
15591}
15592
15593function S (X, Xl, n) {
15594 return (X >>> n) | (Xl << (32 - n))
15595}
15596
15597function Ch (x, y, z) {
15598 return ((x & y) ^ ((~x) & z))
15599}
15600
15601function Maj (x, y, z) {
15602 return ((x & y) ^ (x & z) ^ (y & z))
15603}
15604
15605Sha512.prototype._update = function (M) {
15606 var W = this._w
15607
15608 var a = this._a | 0
15609 var b = this._b | 0
15610 var c = this._c | 0
15611 var d = this._d | 0
15612 var e = this._e | 0
15613 var f = this._f | 0
15614 var g = this._g | 0
15615 var h = this._h | 0
15616
15617 var al = this._al | 0
15618 var bl = this._bl | 0
15619 var cl = this._cl | 0
15620 var dl = this._dl | 0
15621 var el = this._el | 0
15622 var fl = this._fl | 0
15623 var gl = this._gl | 0
15624 var hl = this._hl | 0
15625
15626 var i = 0, j = 0
15627 var Wi, Wil
15628 function calcW () {
15629 var x = W[j - 15 * 2]
15630 var xl = W[j - 15 * 2 + 1]
15631 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
15632 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
15633
15634 x = W[j - 2 * 2]
15635 xl = W[j - 2 * 2 + 1]
15636 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
15637 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
15638
15639 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
15640 var Wi7 = W[j - 7 * 2]
15641 var Wi7l = W[j - 7 * 2 + 1]
15642
15643 var Wi16 = W[j - 16 * 2]
15644 var Wi16l = W[j - 16 * 2 + 1]
15645
15646 Wil = gamma0l + Wi7l
15647 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
15648 Wil = Wil + gamma1l
15649 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
15650 Wil = Wil + Wi16l
15651 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
15652 }
15653
15654 function loop () {
15655 W[j] = Wi
15656 W[j + 1] = Wil
15657
15658 var maj = Maj(a, b, c)
15659 var majl = Maj(al, bl, cl)
15660
15661 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
15662 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
15663 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
15664 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
15665
15666 // t1 = h + sigma1 + ch + K[i] + W[i]
15667 var Ki = K[j]
15668 var Kil = K[j + 1]
15669
15670 var ch = Ch(e, f, g)
15671 var chl = Ch(el, fl, gl)
15672
15673 var t1l = hl + sigma1l
15674 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
15675 t1l = t1l + chl
15676 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
15677 t1l = t1l + Kil
15678 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
15679 t1l = t1l + Wil
15680 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
15681
15682 // t2 = sigma0 + maj
15683 var t2l = sigma0l + majl
15684 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
15685
15686 h = g
15687 hl = gl
15688 g = f
15689 gl = fl
15690 f = e
15691 fl = el
15692 el = (dl + t1l) | 0
15693 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15694 d = c
15695 dl = cl
15696 c = b
15697 cl = bl
15698 b = a
15699 bl = al
15700 al = (t1l + t2l) | 0
15701 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
15702
15703 i++
15704 j += 2
15705 }
15706
15707 while (i < 16) {
15708 Wi = M.readInt32BE(j * 4)
15709 Wil = M.readInt32BE(j * 4 + 4)
15710
15711 loop()
15712 }
15713
15714 while (i < 80) {
15715 calcW()
15716 loop()
15717 }
15718
15719 this._al = (this._al + al) | 0
15720 this._bl = (this._bl + bl) | 0
15721 this._cl = (this._cl + cl) | 0
15722 this._dl = (this._dl + dl) | 0
15723 this._el = (this._el + el) | 0
15724 this._fl = (this._fl + fl) | 0
15725 this._gl = (this._gl + gl) | 0
15726 this._hl = (this._hl + hl) | 0
15727
15728 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
15729 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
15730 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
15731 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15732 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
15733 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
15734 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
15735 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
15736}
15737
15738Sha512.prototype._hash = function () {
15739 var H = new Buffer(64)
15740
15741 function writeInt64BE (h, l, offset) {
15742 H.writeInt32BE(h, offset)
15743 H.writeInt32BE(l, offset + 4)
15744 }
15745
15746 writeInt64BE(this._a, this._al, 0)
15747 writeInt64BE(this._b, this._bl, 8)
15748 writeInt64BE(this._c, this._cl, 16)
15749 writeInt64BE(this._d, this._dl, 24)
15750 writeInt64BE(this._e, this._el, 32)
15751 writeInt64BE(this._f, this._fl, 40)
15752 writeInt64BE(this._g, this._gl, 48)
15753 writeInt64BE(this._h, this._hl, 56)
15754
15755 return H
15756}
15757
15758module.exports = Sha512
15759
15760}).call(this,require("buffer").Buffer)
15761},{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
15762(function (Buffer){
15763'use strict';
15764var createHash = require('create-hash/browser');
15765var inherits = require('inherits')
15766
15767var Transform = require('stream').Transform
15768
15769var ZEROS = new Buffer(128)
15770ZEROS.fill(0)
15771
15772function Hmac(alg, key) {
15773 Transform.call(this)
15774
15775 if (typeof key === 'string') {
15776 key = new Buffer(key)
15777 }
15778
15779 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
15780
15781 this._alg = alg
15782 this._key = key
15783
15784 if (key.length > blocksize) {
15785 key = createHash(alg).update(key).digest()
15786
15787 } else if (key.length < blocksize) {
15788 key = Buffer.concat([key, ZEROS], blocksize)
15789 }
15790
15791 var ipad = this._ipad = new Buffer(blocksize)
15792 var opad = this._opad = new Buffer(blocksize)
15793
15794 for (var i = 0; i < blocksize; i++) {
15795 ipad[i] = key[i] ^ 0x36
15796 opad[i] = key[i] ^ 0x5C
15797 }
15798
15799 this._hash = createHash(alg).update(ipad)
15800}
15801
15802inherits(Hmac, Transform)
15803
15804Hmac.prototype.update = function (data, enc) {
15805 this._hash.update(data, enc)
15806
15807 return this
15808}
15809
15810Hmac.prototype._transform = function (data, _, next) {
15811 this._hash.update(data)
15812
15813 next()
15814}
15815
15816Hmac.prototype._flush = function (next) {
15817 this.push(this.digest())
15818
15819 next()
15820}
15821
15822Hmac.prototype.digest = function (enc) {
15823 var h = this._hash.digest()
15824
15825 return createHash(this._alg).update(this._opad).update(h).digest(enc)
15826}
15827
15828module.exports = function createHmac(alg, key) {
15829 return new Hmac(alg, key)
15830}
15831
15832}).call(this,require("buffer").Buffer)
15833},{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
15834arguments[4][12][0].apply(exports,arguments)
15835},{"dup":12}],47:[function(require,module,exports){
15836var assert = require('assert')
15837var BigInteger = require('bigi')
15838
15839var Point = require('./point')
15840
15841function Curve(p, a, b, Gx, Gy, n, h) {
15842 this.p = p
15843 this.a = a
15844 this.b = b
15845 this.G = Point.fromAffine(this, Gx, Gy)
15846 this.n = n
15847 this.h = h
15848
15849 this.infinity = new Point(this, null, null, BigInteger.ZERO)
15850
15851 // result caching
15852 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
15853}
15854
15855Curve.prototype.pointFromX = function(isOdd, x) {
15856 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
15857 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
15858
15859 var y = beta
15860 if (beta.isEven() ^ !isOdd) {
15861 y = this.p.subtract(y) // -y % p
15862 }
15863
15864 return Point.fromAffine(this, x, y)
15865}
15866
15867Curve.prototype.isInfinity = function(Q) {
15868 if (Q === this.infinity) return true
15869
15870 return Q.z.signum() === 0 && Q.y.signum() !== 0
15871}
15872
15873Curve.prototype.isOnCurve = function(Q) {
15874 if (this.isInfinity(Q)) return true
15875
15876 var x = Q.affineX
15877 var y = Q.affineY
15878 var a = this.a
15879 var b = this.b
15880 var p = this.p
15881
15882 // Check that xQ and yQ are integers in the interval [0, p - 1]
15883 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
15884 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
15885
15886 // and check that y^2 = x^3 + ax + b (mod p)
15887 var lhs = y.square().mod(p)
15888 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
15889 return lhs.equals(rhs)
15890}
15891
15892/**
15893 * Validate an elliptic curve point.
15894 *
15895 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
15896 */
15897Curve.prototype.validate = function(Q) {
15898 // Check Q != O
15899 assert(!this.isInfinity(Q), 'Point is at infinity')
15900 assert(this.isOnCurve(Q), 'Point is not on the curve')
15901
15902 // Check nQ = O (where Q is a scalar multiple of G)
15903 var nQ = Q.multiply(this.n)
15904 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
15905
15906 return true
15907}
15908
15909module.exports = Curve
15910
15911},{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
15912module.exports={
15913 "secp128r1": {
15914 "p": "fffffffdffffffffffffffffffffffff",
15915 "a": "fffffffdfffffffffffffffffffffffc",
15916 "b": "e87579c11079f43dd824993c2cee5ed3",
15917 "n": "fffffffe0000000075a30d1b9038a115",
15918 "h": "01",
15919 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
15920 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
15921 },
15922 "secp160k1": {
15923 "p": "fffffffffffffffffffffffffffffffeffffac73",
15924 "a": "00",
15925 "b": "07",
15926 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
15927 "h": "01",
15928 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
15929 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
15930 },
15931 "secp160r1": {
15932 "p": "ffffffffffffffffffffffffffffffff7fffffff",
15933 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
15934 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
15935 "n": "0100000000000000000001f4c8f927aed3ca752257",
15936 "h": "01",
15937 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
15938 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
15939 },
15940 "secp192k1": {
15941 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
15942 "a": "00",
15943 "b": "03",
15944 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
15945 "h": "01",
15946 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
15947 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
15948 },
15949 "secp192r1": {
15950 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
15951 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
15952 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
15953 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
15954 "h": "01",
15955 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
15956 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
15957 },
15958 "secp256k1": {
15959 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
15960 "a": "00",
15961 "b": "07",
15962 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
15963 "h": "01",
15964 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
15965 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
15966 },
15967 "secp256r1": {
15968 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
15969 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
15970 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
15971 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
15972 "h": "01",
15973 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
15974 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
15975 }
15976}
15977
15978},{}],49:[function(require,module,exports){
15979var Point = require('./point')
15980var Curve = require('./curve')
15981
15982var getCurveByName = require('./names')
15983
15984module.exports = {
15985 Curve: Curve,
15986 Point: Point,
15987 getCurveByName: getCurveByName
15988}
15989
15990},{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
15991var BigInteger = require('bigi')
15992
15993var curves = require('./curves')
15994var Curve = require('./curve')
15995
15996function getCurveByName(name) {
15997 var curve = curves[name]
15998 if (!curve) return null
15999
16000 var p = new BigInteger(curve.p, 16)
16001 var a = new BigInteger(curve.a, 16)
16002 var b = new BigInteger(curve.b, 16)
16003 var n = new BigInteger(curve.n, 16)
16004 var h = new BigInteger(curve.h, 16)
16005 var Gx = new BigInteger(curve.Gx, 16)
16006 var Gy = new BigInteger(curve.Gy, 16)
16007
16008 return new Curve(p, a, b, Gx, Gy, n, h)
16009}
16010
16011module.exports = getCurveByName
16012
16013},{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
16014(function (Buffer){
16015var assert = require('assert')
16016var BigInteger = require('bigi')
16017
16018var THREE = BigInteger.valueOf(3)
16019
16020function Point(curve, x, y, z) {
16021 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
16022
16023 this.curve = curve
16024 this.x = x
16025 this.y = y
16026 this.z = z
16027 this._zInv = null
16028
16029 this.compressed = true
16030}
16031
16032Object.defineProperty(Point.prototype, 'zInv', {
16033 get: function() {
16034 if (this._zInv === null) {
16035 this._zInv = this.z.modInverse(this.curve.p)
16036 }
16037
16038 return this._zInv
16039 }
16040})
16041
16042Object.defineProperty(Point.prototype, 'affineX', {
16043 get: function() {
16044 return this.x.multiply(this.zInv).mod(this.curve.p)
16045 }
16046})
16047
16048Object.defineProperty(Point.prototype, 'affineY', {
16049 get: function() {
16050 return this.y.multiply(this.zInv).mod(this.curve.p)
16051 }
16052})
16053
16054Point.fromAffine = function(curve, x, y) {
16055 return new Point(curve, x, y, BigInteger.ONE)
16056}
16057
16058Point.prototype.equals = function(other) {
16059 if (other === this) return true
16060 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
16061 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
16062
16063 // u = Y2 * Z1 - Y1 * Z2
16064 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
16065
16066 if (u.signum() !== 0) return false
16067
16068 // v = X2 * Z1 - X1 * Z2
16069 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
16070
16071 return v.signum() === 0
16072}
16073
16074Point.prototype.negate = function() {
16075 var y = this.curve.p.subtract(this.y)
16076
16077 return new Point(this.curve, this.x, y, this.z)
16078}
16079
16080Point.prototype.add = function(b) {
16081 if (this.curve.isInfinity(this)) return b
16082 if (this.curve.isInfinity(b)) return this
16083
16084 var x1 = this.x
16085 var y1 = this.y
16086 var x2 = b.x
16087 var y2 = b.y
16088
16089 // u = Y2 * Z1 - Y1 * Z2
16090 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
16091 // v = X2 * Z1 - X1 * Z2
16092 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
16093
16094 if (v.signum() === 0) {
16095 if (u.signum() === 0) {
16096 return this.twice() // this == b, so double
16097 }
16098
16099 return this.curve.infinity // this = -b, so infinity
16100 }
16101
16102 var v2 = v.square()
16103 var v3 = v2.multiply(v)
16104 var x1v2 = x1.multiply(v2)
16105 var zu2 = u.square().multiply(this.z)
16106
16107 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
16108 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
16109 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
16110 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
16111 // z3 = v^3 * z1 * z2
16112 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
16113
16114 return new Point(this.curve, x3, y3, z3)
16115}
16116
16117Point.prototype.twice = function() {
16118 if (this.curve.isInfinity(this)) return this
16119 if (this.y.signum() === 0) return this.curve.infinity
16120
16121 var x1 = this.x
16122 var y1 = this.y
16123
16124 var y1z1 = y1.multiply(this.z)
16125 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
16126 var a = this.curve.a
16127
16128 // w = 3 * x1^2 + a * z1^2
16129 var w = x1.square().multiply(THREE)
16130
16131 if (a.signum() !== 0) {
16132 w = w.add(this.z.square().multiply(a))
16133 }
16134
16135 w = w.mod(this.curve.p)
16136 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
16137 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
16138 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
16139 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
16140 // z3 = 8 * (y1 * z1)^3
16141 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
16142
16143 return new Point(this.curve, x3, y3, z3)
16144}
16145
16146// Simple NAF (Non-Adjacent Form) multiplication algorithm
16147// TODO: modularize the multiplication algorithm
16148Point.prototype.multiply = function(k) {
16149 if (this.curve.isInfinity(this)) return this
16150 if (k.signum() === 0) return this.curve.infinity
16151
16152 var e = k
16153 var h = e.multiply(THREE)
16154
16155 var neg = this.negate()
16156 var R = this
16157
16158 for (var i = h.bitLength() - 2; i > 0; --i) {
16159 R = R.twice()
16160
16161 var hBit = h.testBit(i)
16162 var eBit = e.testBit(i)
16163
16164 if (hBit != eBit) {
16165 R = R.add(hBit ? this : neg)
16166 }
16167 }
16168
16169 return R
16170}
16171
16172// Compute this*j + x*k (simultaneous multiplication)
16173Point.prototype.multiplyTwo = function(j, x, k) {
16174 var i
16175
16176 if (j.bitLength() > k.bitLength())
16177 i = j.bitLength() - 1
16178 else
16179 i = k.bitLength() - 1
16180
16181 var R = this.curve.infinity
16182 var both = this.add(x)
16183
16184 while (i >= 0) {
16185 R = R.twice()
16186
16187 var jBit = j.testBit(i)
16188 var kBit = k.testBit(i)
16189
16190 if (jBit) {
16191 if (kBit) {
16192 R = R.add(both)
16193
16194 } else {
16195 R = R.add(this)
16196 }
16197
16198 } else {
16199 if (kBit) {
16200 R = R.add(x)
16201 }
16202 }
16203 --i
16204 }
16205
16206 return R
16207}
16208
16209Point.prototype.getEncoded = function(compressed) {
16210 if (compressed == undefined) compressed = this.compressed
16211 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
16212
16213 var x = this.affineX
16214 var y = this.affineY
16215
16216 var buffer
16217
16218 // Determine size of q in bytes
16219 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
16220
16221 // 0x02/0x03 | X
16222 if (compressed) {
16223 buffer = new Buffer(1 + byteLength)
16224 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
16225
16226 // 0x04 | X | Y
16227 } else {
16228 buffer = new Buffer(1 + byteLength + byteLength)
16229 buffer.writeUInt8(0x04, 0)
16230
16231 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
16232 }
16233
16234 x.toBuffer(byteLength).copy(buffer, 1)
16235
16236 return buffer
16237}
16238
16239Point.decodeFrom = function(curve, buffer) {
16240 var type = buffer.readUInt8(0)
16241 var compressed = (type !== 4)
16242
16243 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
16244 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
16245
16246 var Q
16247 if (compressed) {
16248 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
16249 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
16250
16251 var isOdd = (type === 0x03)
16252 Q = curve.pointFromX(isOdd, x)
16253
16254 } else {
16255 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
16256
16257 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
16258 Q = Point.fromAffine(curve, x, y)
16259 }
16260
16261 Q.compressed = compressed
16262 return Q
16263}
16264
16265Point.prototype.toString = function () {
16266 if (this.curve.isInfinity(this)) return '(INFINITY)'
16267
16268 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
16269}
16270
16271module.exports = Point
16272
16273}).call(this,require("buffer").Buffer)
16274},{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
16275(function (process,global,Buffer){
16276'use strict';
16277
16278var crypto = global.crypto || global.msCrypto
16279if(crypto && crypto.getRandomValues) {
16280 module.exports = randomBytes;
16281} else {
16282 module.exports = oldBrowser;
16283}
16284function randomBytes(size, cb) {
16285 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
16286 /* This will not work in older browsers.
16287 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
16288 */
16289
16290 crypto.getRandomValues(bytes);
16291 if (typeof cb === 'function') {
16292 return process.nextTick(function () {
16293 cb(null, bytes);
16294 });
16295 }
16296 return bytes;
16297}
16298function oldBrowser() {
16299 throw new Error(
16300 'secure random number generation not supported by this browser\n'+
16301 'use chrome, FireFox or Internet Explorer 11'
16302 )
16303}
16304
16305}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
16306},{"_process":14,"buffer":7}],53:[function(require,module,exports){
16307(function (Buffer){
16308'use strict';
16309
16310function getFunctionName(fn) {
16311 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
16312}
16313
16314function getTypeTypeName(type) {
16315 if (nativeTypes.Function(type)) {
16316 type = type.toJSON ? type.toJSON() : getFunctionName(type);
16317 }
16318 if (nativeTypes.Object(type)) return JSON.stringify(type);
16319
16320 return type;
16321}
16322
16323function getValueTypeName(value) {
16324 if (nativeTypes.Null(value)) return '';
16325
16326 return getFunctionName(value.constructor);
16327}
16328
16329function tfErrorString(type, value) {
16330 var typeTypeName = getTypeTypeName(type);
16331 var valueTypeName = getValueTypeName(value);
16332
16333 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
16334}
16335
16336function tfPropertyErrorString(type, name, value) {
16337 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
16338}
16339
16340var nativeTypes = {
16341 Array: (function (_Array) {
16342 function Array(_x) {
16343 return _Array.apply(this, arguments);
16344 }
16345
16346 Array.toString = function () {
16347 return _Array.toString();
16348 };
16349
16350 return Array;
16351 })(function (value) {
16352 return value !== null && value !== undefined && value.constructor === Array;
16353 }),
16354 Boolean: function Boolean(value) {
16355 return typeof value === 'boolean';
16356 },
16357 Buffer: (function (_Buffer) {
16358 function Buffer(_x2) {
16359 return _Buffer.apply(this, arguments);
16360 }
16361
16362 Buffer.toString = function () {
16363 return _Buffer.toString();
16364 };
16365
16366 return Buffer;
16367 })(function (value) {
16368 return Buffer.isBuffer(value);
16369 }),
16370 Function: function Function(value) {
16371 return typeof value === 'function';
16372 },
16373 Null: function Null(value) {
16374 return value === undefined || value === null;
16375 },
16376 Number: function Number(value) {
16377 return typeof value === 'number';
16378 },
16379 Object: function Object(value) {
16380 return typeof value === 'object';
16381 },
16382 String: function String(value) {
16383 return typeof value === 'string';
16384 },
16385 '': function _() {
16386 return true;
16387 }
16388};
16389
16390function tJSON(type) {
16391 return type && type.toJSON ? type.toJSON() : type;
16392}
16393
16394function sJSON(type) {
16395 var json = tJSON(type);
16396 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
16397}
16398
16399var otherTypes = {
16400 arrayOf: function arrayOf(type) {
16401 function arrayOf(value, strict) {
16402 try {
16403 return nativeTypes.Array(value) && value.every(function (x) {
16404 return typeforce(type, x, strict);
16405 });
16406 } catch (e) {
16407 return false;
16408 }
16409 }
16410 arrayOf.toJSON = function () {
16411 return [tJSON(type)];
16412 };
16413
16414 return arrayOf;
16415 },
16416
16417 maybe: function maybe(type) {
16418 function maybe(value, strict) {
16419 return nativeTypes.Null(value) || typeforce(type, value, strict);
16420 }
16421 maybe.toJSON = function () {
16422 return '?' + sJSON(type);
16423 };
16424
16425 return maybe;
16426 },
16427
16428 object: function object(type) {
16429 function object(value, strict) {
16430 typeforce(nativeTypes.Object, value, strict);
16431
16432 var propertyName, propertyType, propertyValue;
16433
16434 try {
16435 for (propertyName in type) {
16436 propertyType = type[propertyName];
16437 propertyValue = value[propertyName];
16438
16439 typeforce(propertyType, propertyValue, strict);
16440 }
16441 } catch (e) {
16442 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
16443 }
16444
16445 if (strict) {
16446 for (propertyName in value) {
16447 if (type[propertyName]) continue;
16448
16449 throw new TypeError('Unexpected property "' + propertyName + '"');
16450 }
16451 }
16452
16453 return true;
16454 }
16455 object.toJSON = function () {
16456 return type;
16457 };
16458
16459 return object;
16460 },
16461
16462 oneOf: function oneOf() {
16463 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
16464 types[_key] = arguments[_key];
16465 }
16466
16467 function oneOf(value, strict) {
16468 return types.some(function (type) {
16469 try {
16470 return typeforce(type, value, strict);
16471 } catch (e) {
16472 return false;
16473 }
16474 });
16475 }
16476 oneOf.toJSON = function () {
16477 return types.map(sJSON).join('|');
16478 };
16479
16480 return oneOf;
16481 },
16482
16483 quacksLike: function quacksLike(type) {
16484 function quacksLike(value, strict) {
16485 return type === getValueTypeName(value);
16486 }
16487 quacksLike.toJSON = function () {
16488 return type;
16489 };
16490
16491 return quacksLike;
16492 },
16493
16494 tuple: function tuple() {
16495 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16496 types[_key2] = arguments[_key2];
16497 }
16498
16499 function tuple(value, strict) {
16500 return types.every(function (type, i) {
16501 return typeforce(type, value[i], strict);
16502 });
16503 }
16504 tuple.toJSON = function () {
16505 return '(' + types.map(sJSON).join(', ') + ')';
16506 };
16507
16508 return tuple;
16509 },
16510
16511 value: function value(expected) {
16512 function value(actual) {
16513 return actual === expected;
16514 }
16515 value.toJSON = function () {
16516 return expected;
16517 };
16518
16519 return value;
16520 }
16521};
16522
16523function compile(type) {
16524 if (nativeTypes.String(type)) {
16525 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
16526
16527 return nativeTypes[type] || otherTypes.quacksLike(type);
16528 } else if (type && nativeTypes.Object(type)) {
16529 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
16530
16531 var compiled = {};
16532
16533 for (var propertyName in type) {
16534 compiled[propertyName] = compile(type[propertyName]);
16535 }
16536
16537 return otherTypes.object(compiled);
16538 } else if (nativeTypes.Function(type)) {
16539 return type;
16540 }
16541
16542 return otherTypes.value(type);
16543}
16544
16545function typeforce(_x3, _x4, _x5) {
16546 var _again = true;
16547
16548 _function: while (_again) {
16549 var type = _x3,
16550 value = _x4,
16551 strict = _x5;
16552 _again = false;
16553
16554 if (nativeTypes.Function(type)) {
16555 if (type(value, strict)) return true;
16556
16557 throw new TypeError(tfErrorString(type, value));
16558 }
16559
16560 // JIT
16561 _x3 = compile(type);
16562 _x4 = value;
16563 _x5 = strict;
16564 _again = true;
16565 continue _function;
16566 }
16567}
16568
16569// assign all types to typeforce function
16570var typeName;
16571Object.keys(nativeTypes).forEach(function (typeName) {
16572 var nativeType = nativeTypes[typeName];
16573 nativeType.toJSON = function () {
16574 return typeName;
16575 };
16576
16577 typeforce[typeName] = nativeType;
16578});
16579
16580for (typeName in otherTypes) {
16581 typeforce[typeName] = otherTypes[typeName];
16582}
16583
16584module.exports = typeforce;
16585module.exports.compile = compile;
16586}).call(this,require("buffer").Buffer)
16587},{"buffer":7}],54:[function(require,module,exports){
16588(function (Buffer){
16589var assert = require('assert')
16590var base58check = require('bs58check')
16591var typeForce = require('typeforce')
16592var networks = require('./networks')
16593var scripts = require('./scripts')
16594
16595function findScriptTypeByVersion (version) {
16596 for (var networkName in networks) {
16597 var network = networks[networkName]
16598
16599 if (version === network.pubKeyHash) return 'pubkeyhash'
16600 if (version === network.scriptHash) return 'scripthash'
16601 }
16602}
16603
16604function Address (hash, version) {
16605 typeForce('Buffer', hash)
16606
16607 assert.strictEqual(hash.length, 20, 'Invalid hash length')
16608 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
16609
16610 this.hash = hash
16611 this.version = version
16612}
16613
16614Address.fromBase58Check = function (string) {
16615 var payload = base58check.decode(string)
16616 var version = payload.readUInt8(0)
16617 var hash = payload.slice(1)
16618
16619 return new Address(hash, version)
16620}
16621
16622Address.fromOutputScript = function (script, network) {
16623 network = network || networks.bitcoin
16624
16625 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
16626 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
16627
16628 assert(false, script.toASM() + ' has no matching Address')
16629}
16630
16631Address.prototype.toBase58Check = function () {
16632 var payload = new Buffer(21)
16633 payload.writeUInt8(this.version, 0)
16634 this.hash.copy(payload, 1)
16635
16636 return base58check.encode(payload)
16637}
16638
16639Address.prototype.toOutputScript = function () {
16640 var scriptType = findScriptTypeByVersion(this.version)
16641
16642 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
16643 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
16644
16645 assert(false, this.toString() + ' has no matching Script')
16646}
16647
16648Address.prototype.toString = Address.prototype.toBase58Check
16649
16650module.exports = Address
16651
16652}).call(this,require("buffer").Buffer)
16653},{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
16654var bs58check = require('bs58check')
16655
16656function decode () {
16657 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16658
16659 return bs58check.decode.apply(undefined, arguments)
16660}
16661
16662function encode () {
16663 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16664
16665 return bs58check.encode.apply(undefined, arguments)
16666}
16667
16668module.exports = {
16669 decode: decode,
16670 encode: encode
16671}
16672
16673},{"bs58check":31}],56:[function(require,module,exports){
16674(function (Buffer){
16675var assert = require('assert')
16676var bufferutils = require('./bufferutils')
16677var crypto = require('./crypto')
16678
16679var Transaction = require('./transaction')
16680
16681function Block () {
16682 this.version = 1
16683 this.prevHash = null
16684 this.merkleRoot = null
16685 this.timestamp = 0
16686 this.bits = 0
16687 this.nonce = 0
16688}
16689
16690Block.fromBuffer = function (buffer) {
16691 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
16692
16693 var offset = 0
16694 function readSlice (n) {
16695 offset += n
16696 return buffer.slice(offset - n, offset)
16697 }
16698
16699 function readUInt32 () {
16700 var i = buffer.readUInt32LE(offset)
16701 offset += 4
16702 return i
16703 }
16704
16705 var block = new Block()
16706 block.version = readUInt32()
16707 block.prevHash = readSlice(32)
16708 block.merkleRoot = readSlice(32)
16709 block.timestamp = readUInt32()
16710 block.bits = readUInt32()
16711 block.nonce = readUInt32()
16712
16713 if (buffer.length === 80) return block
16714
16715 function readVarInt () {
16716 var vi = bufferutils.readVarInt(buffer, offset)
16717 offset += vi.size
16718 return vi.number
16719 }
16720
16721 // FIXME: poor performance
16722 function readTransaction () {
16723 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16724
16725 offset += tx.toBuffer().length
16726 return tx
16727 }
16728
16729 var nTransactions = readVarInt()
16730 block.transactions = []
16731
16732 for (var i = 0; i < nTransactions; ++i) {
16733 var tx = readTransaction()
16734 block.transactions.push(tx)
16735 }
16736
16737 return block
16738}
16739
16740Block.fromHex = function (hex) {
16741 return Block.fromBuffer(new Buffer(hex, 'hex'))
16742}
16743
16744Block.prototype.getHash = function () {
16745 return crypto.hash256(this.toBuffer(true))
16746}
16747
16748Block.prototype.getId = function () {
16749 return bufferutils.reverse(this.getHash()).toString('hex')
16750}
16751
16752Block.prototype.getUTCDate = function () {
16753 var date = new Date(0) // epoch
16754 date.setUTCSeconds(this.timestamp)
16755
16756 return date
16757}
16758
16759Block.prototype.toBuffer = function (headersOnly) {
16760 var buffer = new Buffer(80)
16761
16762 var offset = 0
16763 function writeSlice (slice) {
16764 slice.copy(buffer, offset)
16765 offset += slice.length
16766 }
16767
16768 function writeUInt32 (i) {
16769 buffer.writeUInt32LE(i, offset)
16770 offset += 4
16771 }
16772
16773 writeUInt32(this.version)
16774 writeSlice(this.prevHash)
16775 writeSlice(this.merkleRoot)
16776 writeUInt32(this.timestamp)
16777 writeUInt32(this.bits)
16778 writeUInt32(this.nonce)
16779
16780 if (headersOnly || !this.transactions) return buffer
16781
16782 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
16783 var txBuffers = this.transactions.map(function (tx) {
16784 return tx.toBuffer()
16785 })
16786
16787 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
16788}
16789
16790Block.prototype.toHex = function (headersOnly) {
16791 return this.toBuffer(headersOnly).toString('hex')
16792}
16793
16794module.exports = Block
16795
16796}).call(this,require("buffer").Buffer)
16797},{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
16798(function (Buffer){
16799var assert = require('assert')
16800var opcodes = require('./opcodes')
16801
16802// https://github.com/feross/buffer/blob/master/index.js#L1127
16803function verifuint (value, max) {
16804 assert(typeof value === 'number', 'cannot write a non-number as a number')
16805 assert(value >= 0, 'specified a negative value for writing an unsigned value')
16806 assert(value <= max, 'value is larger than maximum value for type')
16807 assert(Math.floor(value) === value, 'value has a fractional component')
16808}
16809
16810function pushDataSize (i) {
16811 return i < opcodes.OP_PUSHDATA1 ? 1
16812 : i < 0xff ? 2
16813 : i < 0xffff ? 3
16814 : 5
16815}
16816
16817function readPushDataInt (buffer, offset) {
16818 var opcode = buffer.readUInt8(offset)
16819 var number, size
16820
16821 // ~6 bit
16822 if (opcode < opcodes.OP_PUSHDATA1) {
16823 number = opcode
16824 size = 1
16825
16826 // 8 bit
16827 } else if (opcode === opcodes.OP_PUSHDATA1) {
16828 if (offset + 2 > buffer.length) return null
16829 number = buffer.readUInt8(offset + 1)
16830 size = 2
16831
16832 // 16 bit
16833 } else if (opcode === opcodes.OP_PUSHDATA2) {
16834 if (offset + 3 > buffer.length) return null
16835 number = buffer.readUInt16LE(offset + 1)
16836 size = 3
16837
16838 // 32 bit
16839 } else {
16840 if (offset + 5 > buffer.length) return null
16841 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
16842
16843 number = buffer.readUInt32LE(offset + 1)
16844 size = 5
16845 }
16846
16847 return {
16848 opcode: opcode,
16849 number: number,
16850 size: size
16851 }
16852}
16853
16854function readUInt64LE (buffer, offset) {
16855 var a = buffer.readUInt32LE(offset)
16856 var b = buffer.readUInt32LE(offset + 4)
16857 b *= 0x100000000
16858
16859 verifuint(b + a, 0x001fffffffffffff)
16860
16861 return b + a
16862}
16863
16864function readVarInt (buffer, offset) {
16865 var t = buffer.readUInt8(offset)
16866 var number, size
16867
16868 // 8 bit
16869 if (t < 253) {
16870 number = t
16871 size = 1
16872
16873 // 16 bit
16874 } else if (t < 254) {
16875 number = buffer.readUInt16LE(offset + 1)
16876 size = 3
16877
16878 // 32 bit
16879 } else if (t < 255) {
16880 number = buffer.readUInt32LE(offset + 1)
16881 size = 5
16882
16883 // 64 bit
16884 } else {
16885 number = readUInt64LE(buffer, offset + 1)
16886 size = 9
16887 }
16888
16889 return {
16890 number: number,
16891 size: size
16892 }
16893}
16894
16895function writePushDataInt (buffer, number, offset) {
16896 var size = pushDataSize(number)
16897
16898 // ~6 bit
16899 if (size === 1) {
16900 buffer.writeUInt8(number, offset)
16901
16902 // 8 bit
16903 } else if (size === 2) {
16904 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
16905 buffer.writeUInt8(number, offset + 1)
16906
16907 // 16 bit
16908 } else if (size === 3) {
16909 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
16910 buffer.writeUInt16LE(number, offset + 1)
16911
16912 // 32 bit
16913 } else {
16914 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
16915 buffer.writeUInt32LE(number, offset + 1)
16916 }
16917
16918 return size
16919}
16920
16921function writeUInt64LE (buffer, value, offset) {
16922 verifuint(value, 0x001fffffffffffff)
16923
16924 buffer.writeInt32LE(value & -1, offset)
16925 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16926}
16927
16928function varIntSize (i) {
16929 return i < 253 ? 1
16930 : i < 0x10000 ? 3
16931 : i < 0x100000000 ? 5
16932 : 9
16933}
16934
16935function writeVarInt (buffer, number, offset) {
16936 var size = varIntSize(number)
16937
16938 // 8 bit
16939 if (size === 1) {
16940 buffer.writeUInt8(number, offset)
16941
16942 // 16 bit
16943 } else if (size === 3) {
16944 buffer.writeUInt8(253, offset)
16945 buffer.writeUInt16LE(number, offset + 1)
16946
16947 // 32 bit
16948 } else if (size === 5) {
16949 buffer.writeUInt8(254, offset)
16950 buffer.writeUInt32LE(number, offset + 1)
16951
16952 // 64 bit
16953 } else {
16954 buffer.writeUInt8(255, offset)
16955 writeUInt64LE(buffer, number, offset + 1)
16956 }
16957
16958 return size
16959}
16960
16961function varIntBuffer (i) {
16962 var size = varIntSize(i)
16963 var buffer = new Buffer(size)
16964 writeVarInt(buffer, i, 0)
16965
16966 return buffer
16967}
16968
16969function reverse (buffer) {
16970 var buffer2 = new Buffer(buffer)
16971 Array.prototype.reverse.call(buffer2)
16972 return buffer2
16973}
16974
16975module.exports = {
16976 pushDataSize: pushDataSize,
16977 readPushDataInt: readPushDataInt,
16978 readUInt64LE: readUInt64LE,
16979 readVarInt: readVarInt,
16980 reverse: reverse,
16981 varIntBuffer: varIntBuffer,
16982 varIntSize: varIntSize,
16983 writePushDataInt: writePushDataInt,
16984 writeUInt64LE: writeUInt64LE,
16985 writeVarInt: writeVarInt
16986}
16987
16988}).call(this,require("buffer").Buffer)
16989},{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
16990var createHash = require('create-hash')
16991
16992function hash160 (buffer) {
16993 return ripemd160(sha256(buffer))
16994}
16995
16996function hash256 (buffer) {
16997 return sha256(sha256(buffer))
16998}
16999
17000function ripemd160 (buffer) {
17001 return createHash('rmd160').update(buffer).digest()
17002}
17003
17004function sha1 (buffer) {
17005 return createHash('sha1').update(buffer).digest()
17006}
17007
17008function sha256 (buffer) {
17009 return createHash('sha256').update(buffer).digest()
17010}
17011
17012// FIXME: Name not consistent with others
17013var createHmac = require('create-hmac')
17014
17015function HmacSHA256 (buffer, secret) {
17016 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17017 return createHmac('sha256', secret).update(buffer).digest()
17018}
17019
17020function HmacSHA512 (buffer, secret) {
17021 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17022 return createHmac('sha512', secret).update(buffer).digest()
17023}
17024
17025module.exports = {
17026 ripemd160: ripemd160,
17027 sha1: sha1,
17028 sha256: sha256,
17029 hash160: hash160,
17030 hash256: hash256,
17031 HmacSHA256: HmacSHA256,
17032 HmacSHA512: HmacSHA512
17033}
17034
17035},{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
17036(function (Buffer){
17037var assert = require('assert')
17038var createHmac = require('create-hmac')
17039var typeForce = require('typeforce')
17040
17041var BigInteger = require('bigi')
17042var ECSignature = require('./ecsignature')
17043
17044var ZERO = new Buffer([0])
17045var ONE = new Buffer([1])
17046
17047// https://tools.ietf.org/html/rfc6979#section-3.2
17048function deterministicGenerateK (curve, hash, d, checkSig) {
17049 typeForce('Buffer', hash)
17050 typeForce('BigInteger', d)
17051
17052 // FIXME: remove/uncomment for 2.0.0
17053 // typeForce('Function', checkSig)
17054
17055 if (typeof checkSig !== 'function') {
17056 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
17057
17058 checkSig = function (k) {
17059 var G = curve.G
17060 var n = curve.n
17061 var e = BigInteger.fromBuffer(hash)
17062
17063 var Q = G.multiply(k)
17064
17065 if (curve.isInfinity(Q))
17066 return false
17067
17068 var r = Q.affineX.mod(n)
17069 if (r.signum() === 0)
17070 return false
17071
17072 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17073 if (s.signum() === 0)
17074 return false
17075
17076 return true
17077 }
17078 }
17079
17080 // sanity check
17081 assert.equal(hash.length, 32, 'Hash must be 256 bit')
17082
17083 var x = d.toBuffer(32)
17084 var k = new Buffer(32)
17085 var v = new Buffer(32)
17086
17087 // Step A, ignored as hash already provided
17088 // Step B
17089 v.fill(1)
17090
17091 // Step C
17092 k.fill(0)
17093
17094 // Step D
17095 k = createHmac('sha256', k)
17096 .update(v)
17097 .update(ZERO)
17098 .update(x)
17099 .update(hash)
17100 .digest()
17101
17102 // Step E
17103 v = createHmac('sha256', k).update(v).digest()
17104
17105 // Step F
17106 k = createHmac('sha256', k)
17107 .update(v)
17108 .update(ONE)
17109 .update(x)
17110 .update(hash)
17111 .digest()
17112
17113 // Step G
17114 v = createHmac('sha256', k).update(v).digest()
17115
17116 // Step H1/H2a, ignored as tlen === qlen (256 bit)
17117 // Step H2b
17118 v = createHmac('sha256', k).update(v).digest()
17119
17120 var T = BigInteger.fromBuffer(v)
17121
17122 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
17123 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
17124 k = createHmac('sha256', k)
17125 .update(v)
17126 .update(ZERO)
17127 .digest()
17128
17129 v = createHmac('sha256', k).update(v).digest()
17130
17131 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
17132 // Step H2b again
17133 v = createHmac('sha256', k).update(v).digest()
17134 T = BigInteger.fromBuffer(v)
17135 }
17136
17137 return T
17138}
17139
17140function sign (curve, hash, d) {
17141 var r, s
17142
17143 var e = BigInteger.fromBuffer(hash)
17144 var n = curve.n
17145 var G = curve.G
17146
17147 deterministicGenerateK(curve, hash, d, function (k) {
17148 var Q = G.multiply(k)
17149
17150 if (curve.isInfinity(Q))
17151 return false
17152
17153 r = Q.affineX.mod(n)
17154 if (r.signum() === 0)
17155 return false
17156
17157 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17158 if (s.signum() === 0)
17159 return false
17160
17161 return true
17162 })
17163
17164 var N_OVER_TWO = n.shiftRight(1)
17165
17166 // enforce low S values, see bip62: 'low s values in signatures'
17167 if (s.compareTo(N_OVER_TWO) > 0) {
17168 s = n.subtract(s)
17169 }
17170
17171 return new ECSignature(r, s)
17172}
17173
17174function verifyRaw (curve, e, signature, Q) {
17175 var n = curve.n
17176 var G = curve.G
17177
17178 var r = signature.r
17179 var s = signature.s
17180
17181 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
17182 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
17183 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
17184
17185 // c = s^-1 mod n
17186 var c = s.modInverse(n)
17187
17188 // 1.4.4 Compute u1 = es^−1 mod n
17189 // u2 = rs^−1 mod n
17190 var u1 = e.multiply(c).mod(n)
17191 var u2 = r.multiply(c).mod(n)
17192
17193 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
17194 var R = G.multiplyTwo(u1, Q, u2)
17195 var v = R.affineX.mod(n)
17196
17197 // 1.4.5 (cont.) Enforce R is not at infinity
17198 if (curve.isInfinity(R)) return false
17199
17200 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
17201 return v.equals(r)
17202}
17203
17204function verify (curve, hash, signature, Q) {
17205 // 1.4.2 H = Hash(M), already done by the user
17206 // 1.4.3 e = H
17207 var e = BigInteger.fromBuffer(hash)
17208
17209 return verifyRaw(curve, e, signature, Q)
17210}
17211
17212/**
17213 * Recover a public key from a signature.
17214 *
17215 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
17216 * Key Recovery Operation".
17217 *
17218 * http://www.secg.org/download/aid-780/sec1-v2.pdf
17219 */
17220function recoverPubKey (curve, e, signature, i) {
17221 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
17222
17223 var n = curve.n
17224 var G = curve.G
17225
17226 var r = signature.r
17227 var s = signature.s
17228
17229 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
17230 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
17231
17232 // A set LSB signifies that the y-coordinate is odd
17233 var isYOdd = i & 1
17234
17235 // The more significant bit specifies whether we should use the
17236 // first or second candidate key.
17237 var isSecondKey = i >> 1
17238
17239 // 1.1 Let x = r + jn
17240 var x = isSecondKey ? r.add(n) : r
17241 var R = curve.pointFromX(isYOdd, x)
17242
17243 // 1.4 Check that nR is at infinity
17244 var nR = R.multiply(n)
17245 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
17246
17247 // Compute -e from e
17248 var eNeg = e.negate().mod(n)
17249
17250 // 1.6.1 Compute Q = r^-1 (sR - eG)
17251 // Q = r^-1 (sR + -eG)
17252 var rInv = r.modInverse(n)
17253
17254 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
17255 curve.validate(Q)
17256
17257 return Q
17258}
17259
17260/**
17261 * Calculate pubkey extraction parameter.
17262 *
17263 * When extracting a pubkey from a signature, we have to
17264 * distinguish four different cases. Rather than putting this
17265 * burden on the verifier, Bitcoin includes a 2-bit value with the
17266 * signature.
17267 *
17268 * This function simply tries all four cases and returns the value
17269 * that resulted in a successful pubkey recovery.
17270 */
17271function calcPubKeyRecoveryParam (curve, e, signature, Q) {
17272 for (var i = 0; i < 4; i++) {
17273 var Qprime = recoverPubKey(curve, e, signature, i)
17274
17275 // 1.6.2 Verify Q
17276 if (Qprime.equals(Q)) {
17277 return i
17278 }
17279 }
17280
17281 throw new Error('Unable to find valid recovery factor')
17282}
17283
17284module.exports = {
17285 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
17286 deterministicGenerateK: deterministicGenerateK,
17287 recoverPubKey: recoverPubKey,
17288 sign: sign,
17289 verify: verify,
17290 verifyRaw: verifyRaw
17291}
17292
17293}).call(this,require("buffer").Buffer)
17294},{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
17295(function (Buffer){
17296var assert = require('assert')
17297var base58check = require('bs58check')
17298var ecdsa = require('./ecdsa')
17299var networks = require('./networks')
17300var randomBytes = require('randombytes')
17301var typeForce = require('typeforce')
17302
17303var BigInteger = require('bigi')
17304var ECPubKey = require('./ecpubkey')
17305
17306var ecurve = require('ecurve')
17307var secp256k1 = ecurve.getCurveByName('secp256k1')
17308
17309function ECKey (d, compressed) {
17310 assert(d.signum() > 0, 'Private key must be greater than 0')
17311 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
17312
17313 var Q = ECKey.curve.G.multiply(d)
17314
17315 this.d = d
17316 this.pub = new ECPubKey(Q, compressed)
17317}
17318
17319// Constants
17320ECKey.curve = secp256k1
17321
17322// Static constructors
17323ECKey.fromWIF = function (string) {
17324 var payload = base58check.decode(string)
17325 var compressed = false
17326
17327 // Ignore the version byte
17328 payload = payload.slice(1)
17329
17330 if (payload.length === 33) {
17331 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
17332
17333 // Truncate the compression flag
17334 payload = payload.slice(0, -1)
17335 compressed = true
17336 }
17337
17338 assert.equal(payload.length, 32, 'Invalid WIF payload length')
17339
17340 var d = BigInteger.fromBuffer(payload)
17341 return new ECKey(d, compressed)
17342}
17343
17344ECKey.makeRandom = function (compressed, rng) {
17345 rng = rng || randomBytes
17346
17347 var buffer = rng(32)
17348 typeForce('Buffer', buffer)
17349 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
17350
17351 var d = BigInteger.fromBuffer(buffer)
17352 d = d.mod(ECKey.curve.n)
17353
17354 return new ECKey(d, compressed)
17355}
17356
17357// Export functions
17358ECKey.prototype.toWIF = function (network) {
17359 network = network || networks.bitcoin
17360
17361 var bufferLen = this.pub.compressed ? 34 : 33
17362 var buffer = new Buffer(bufferLen)
17363
17364 buffer.writeUInt8(network.wif, 0)
17365 this.d.toBuffer(32).copy(buffer, 1)
17366
17367 if (this.pub.compressed) {
17368 buffer.writeUInt8(0x01, 33)
17369 }
17370
17371 return base58check.encode(buffer)
17372}
17373
17374// Operations
17375ECKey.prototype.sign = function (hash) {
17376 return ecdsa.sign(ECKey.curve, hash, this.d)
17377}
17378
17379module.exports = ECKey
17380
17381}).call(this,require("buffer").Buffer)
17382},{"./ecdsa":59,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"ecurve":49,"randombytes":52,"typeforce":53}],61:[function(require,module,exports){
17383(function (Buffer){
17384var crypto = require('./crypto')
17385var ecdsa = require('./ecdsa')
17386var typeForce = require('typeforce')
17387var networks = require('./networks')
17388
17389var Address = require('./address')
17390
17391var ecurve = require('ecurve')
17392var secp256k1 = ecurve.getCurveByName('secp256k1')
17393
17394function ECPubKey (Q, compressed) {
17395 if (compressed === undefined) {
17396 compressed = true
17397 }
17398
17399 typeForce('Point', Q)
17400 typeForce('Boolean', compressed)
17401
17402 this.compressed = compressed
17403 this.Q = Q
17404}
17405
17406// Constants
17407ECPubKey.curve = secp256k1
17408
17409// Static constructors
17410ECPubKey.fromBuffer = function (buffer) {
17411 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
17412 return new ECPubKey(Q, Q.compressed)
17413}
17414
17415ECPubKey.fromHex = function (hex) {
17416 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
17417}
17418
17419// Operations
17420ECPubKey.prototype.getAddress = function (network) {
17421 network = network || networks.bitcoin
17422
17423 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
17424}
17425
17426ECPubKey.prototype.verify = function (hash, signature) {
17427 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
17428}
17429
17430// Export functions
17431ECPubKey.prototype.toBuffer = function () {
17432 return this.Q.getEncoded(this.compressed)
17433}
17434
17435ECPubKey.prototype.toHex = function () {
17436 return this.toBuffer().toString('hex')
17437}
17438
17439module.exports = ECPubKey
17440
17441}).call(this,require("buffer").Buffer)
17442},{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
17443(function (Buffer){
17444var assert = require('assert')
17445var typeForce = require('typeforce')
17446
17447var BigInteger = require('bigi')
17448
17449function ECSignature (r, s) {
17450 typeForce('BigInteger', r)
17451 typeForce('BigInteger', s)
17452
17453 this.r = r
17454 this.s = s
17455}
17456
17457ECSignature.parseCompact = function (buffer) {
17458 assert.equal(buffer.length, 65, 'Invalid signature length')
17459 var i = buffer.readUInt8(0) - 27
17460
17461 // At most 3 bits
17462 assert.equal(i, i & 7, 'Invalid signature parameter')
17463 var compressed = !!(i & 4)
17464
17465 // Recovery param only
17466 i = i & 3
17467
17468 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
17469 var s = BigInteger.fromBuffer(buffer.slice(33))
17470
17471 return {
17472 compressed: compressed,
17473 i: i,
17474 signature: new ECSignature(r, s)
17475 }
17476}
17477
17478ECSignature.fromDER = function (buffer) {
17479 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
17480 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
17481 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
17482
17483 var rLen = buffer.readUInt8(3)
17484 assert(rLen > 0, 'R length is zero')
17485
17486 var offset = 4 + rLen
17487 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
17488
17489 var sLen = buffer.readUInt8(offset + 1)
17490 assert(sLen > 0, 'S length is zero')
17491
17492 var rB = buffer.slice(4, offset)
17493 var sB = buffer.slice(offset + 2)
17494 offset += 2 + sLen
17495
17496 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
17497 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
17498 }
17499
17500 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
17501 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
17502 }
17503
17504 assert.equal(offset, buffer.length, 'Invalid DER encoding')
17505 var r = BigInteger.fromDERInteger(rB)
17506 var s = BigInteger.fromDERInteger(sB)
17507
17508 assert(r.signum() >= 0, 'R value is negative')
17509 assert(s.signum() >= 0, 'S value is negative')
17510
17511 return new ECSignature(r, s)
17512}
17513
17514// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
17515ECSignature.parseScriptSignature = function (buffer) {
17516 var hashType = buffer.readUInt8(buffer.length - 1)
17517 var hashTypeMod = hashType & ~0x80
17518
17519 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17520
17521 return {
17522 signature: ECSignature.fromDER(buffer.slice(0, -1)),
17523 hashType: hashType
17524 }
17525}
17526
17527ECSignature.prototype.toCompact = function (i, compressed) {
17528 if (compressed) {
17529 i += 4
17530 }
17531
17532 i += 27
17533
17534 var buffer = new Buffer(65)
17535 buffer.writeUInt8(i, 0)
17536
17537 this.r.toBuffer(32).copy(buffer, 1)
17538 this.s.toBuffer(32).copy(buffer, 33)
17539
17540 return buffer
17541}
17542
17543ECSignature.prototype.toDER = function () {
17544 var rBa = this.r.toDERInteger()
17545 var sBa = this.s.toDERInteger()
17546
17547 var sequence = []
17548
17549 // INTEGER
17550 sequence.push(0x02, rBa.length)
17551 sequence = sequence.concat(rBa)
17552
17553 // INTEGER
17554 sequence.push(0x02, sBa.length)
17555 sequence = sequence.concat(sBa)
17556
17557 // SEQUENCE
17558 sequence.unshift(0x30, sequence.length)
17559
17560 return new Buffer(sequence)
17561}
17562
17563ECSignature.prototype.toScriptSignature = function (hashType) {
17564 var hashTypeMod = hashType & ~0x80
17565 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17566
17567 var hashTypeBuffer = new Buffer(1)
17568 hashTypeBuffer.writeUInt8(hashType, 0)
17569
17570 return Buffer.concat([this.toDER(), hashTypeBuffer])
17571}
17572
17573module.exports = ECSignature
17574
17575}).call(this,require("buffer").Buffer)
17576},{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
17577(function (Buffer){
17578var assert = require('assert')
17579var base58check = require('bs58check')
17580var bcrypto = require('./crypto')
17581var createHmac = require('create-hmac')
17582var typeForce = require('typeforce')
17583var networks = require('./networks')
17584
17585var BigInteger = require('bigi')
17586var ECKey = require('./eckey')
17587var ECPubKey = require('./ecpubkey')
17588
17589var ecurve = require('ecurve')
17590var curve = ecurve.getCurveByName('secp256k1')
17591
17592function findBIP32NetworkByVersion (version) {
17593 for (var name in networks) {
17594 var network = networks[name]
17595
17596 if (version === network.bip32.private || version === network.bip32.public) {
17597 return network
17598 }
17599 }
17600
17601 assert(false, 'Could not find network for ' + version.toString(16))
17602}
17603
17604function HDNode (K, chainCode, network) {
17605 network = network || networks.bitcoin
17606
17607 typeForce('Buffer', chainCode)
17608
17609 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
17610 assert(network.bip32, 'Unknown BIP32 constants for network')
17611
17612 this.chainCode = chainCode
17613 this.depth = 0
17614 this.index = 0
17615 this.parentFingerprint = 0x00000000
17616 this.network = network
17617
17618 if (K instanceof BigInteger) {
17619 this.privKey = new ECKey(K, true)
17620 this.pubKey = this.privKey.pub
17621 } else if (K instanceof ECKey) {
17622 assert(K.pub.compressed, 'ECKey must be compressed')
17623 this.privKey = K
17624 this.pubKey = K.pub
17625 } else if (K instanceof ECPubKey) {
17626 assert(K.compressed, 'ECPubKey must be compressed')
17627 this.pubKey = K
17628 } else {
17629 this.pubKey = new ECPubKey(K, true)
17630 }
17631}
17632
17633HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
17634HDNode.HIGHEST_BIT = 0x80000000
17635HDNode.LENGTH = 78
17636
17637HDNode.fromSeedBuffer = function (seed, network) {
17638 typeForce('Buffer', seed)
17639
17640 assert(seed.length >= 16, 'Seed should be at least 128 bits')
17641 assert(seed.length <= 64, 'Seed should be at most 512 bits')
17642
17643 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
17644 var IL = I.slice(0, 32)
17645 var IR = I.slice(32)
17646
17647 // In case IL is 0 or >= n, the master key is invalid
17648 // This is handled by `new ECKey` in the HDNode constructor
17649 var pIL = BigInteger.fromBuffer(IL)
17650
17651 return new HDNode(pIL, IR, network)
17652}
17653
17654HDNode.fromSeedHex = function (hex, network) {
17655 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
17656}
17657
17658HDNode.fromBase58 = function (string, network) {
17659 return HDNode.fromBuffer(base58check.decode(string), network, true)
17660}
17661
17662// FIXME: remove in 2.x.y
17663HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
17664 if (!__ignoreDeprecation) {
17665 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
17666 }
17667
17668 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
17669
17670 // 4 byte: version bytes
17671 var version = buffer.readUInt32BE(0)
17672
17673 if (network) {
17674 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
17675
17676 // auto-detect
17677 } else {
17678 network = findBIP32NetworkByVersion(version)
17679 }
17680
17681 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
17682 var depth = buffer.readUInt8(4)
17683
17684 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17685 var parentFingerprint = buffer.readUInt32BE(5)
17686 if (depth === 0) {
17687 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
17688 }
17689
17690 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17691 // This is encoded in MSB order. (0x00000000 if master key)
17692 var index = buffer.readUInt32BE(9)
17693 assert(depth > 0 || index === 0, 'Invalid index')
17694
17695 // 32 bytes: the chain code
17696 var chainCode = buffer.slice(13, 45)
17697 var data, hd
17698
17699 // 33 bytes: private key data (0x00 + k)
17700 if (version === network.bip32.private) {
17701 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
17702 data = buffer.slice(46, 78)
17703 var d = BigInteger.fromBuffer(data)
17704 hd = new HDNode(d, chainCode, network)
17705
17706 // 33 bytes: public key data (0x02 + X or 0x03 + X)
17707 } else {
17708 data = buffer.slice(45, 78)
17709 var Q = ecurve.Point.decodeFrom(curve, data)
17710 assert.equal(Q.compressed, true, 'Invalid public key')
17711
17712 // Verify that the X coordinate in the public point corresponds to a point on the curve.
17713 // If not, the extended public key is invalid.
17714 curve.validate(Q)
17715
17716 hd = new HDNode(Q, chainCode, network)
17717 }
17718
17719 hd.depth = depth
17720 hd.index = index
17721 hd.parentFingerprint = parentFingerprint
17722
17723 return hd
17724}
17725
17726// FIXME: remove in 2.x.y
17727HDNode.fromHex = function (hex, network) {
17728 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
17729}
17730
17731HDNode.prototype.getIdentifier = function () {
17732 return bcrypto.hash160(this.pubKey.toBuffer())
17733}
17734
17735HDNode.prototype.getFingerprint = function () {
17736 return this.getIdentifier().slice(0, 4)
17737}
17738
17739HDNode.prototype.getAddress = function () {
17740 return this.pubKey.getAddress(this.network)
17741}
17742
17743HDNode.prototype.neutered = function () {
17744 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
17745 neutered.depth = this.depth
17746 neutered.index = this.index
17747 neutered.parentFingerprint = this.parentFingerprint
17748
17749 return neutered
17750}
17751
17752HDNode.prototype.toBase58 = function (isPrivate) {
17753 return base58check.encode(this.toBuffer(isPrivate, true))
17754}
17755
17756// FIXME: remove in 2.x.y
17757HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
17758 if (isPrivate === undefined) {
17759 isPrivate = !!this.privKey
17760
17761 // FIXME: remove in 2.x.y
17762 } else {
17763 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
17764 }
17765
17766 if (!__ignoreDeprecation) {
17767 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
17768 }
17769
17770 // Version
17771 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
17772 var buffer = new Buffer(HDNode.LENGTH)
17773
17774 // 4 bytes: version bytes
17775 buffer.writeUInt32BE(version, 0)
17776
17777 // Depth
17778 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
17779 buffer.writeUInt8(this.depth, 4)
17780
17781 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17782 buffer.writeUInt32BE(this.parentFingerprint, 5)
17783
17784 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17785 // This is encoded in Big endian. (0x00000000 if master key)
17786 buffer.writeUInt32BE(this.index, 9)
17787
17788 // 32 bytes: the chain code
17789 this.chainCode.copy(buffer, 13)
17790
17791 // 33 bytes: the public key or private key data
17792 if (isPrivate) {
17793 // FIXME: remove in 2.x.y
17794 assert(this.privKey, 'Missing private key')
17795
17796 // 0x00 + k for private keys
17797 buffer.writeUInt8(0, 45)
17798 this.privKey.d.toBuffer(32).copy(buffer, 46)
17799 } else {
17800 // X9.62 encoding for public keys
17801 this.pubKey.toBuffer().copy(buffer, 45)
17802 }
17803
17804 return buffer
17805}
17806
17807// FIXME: remove in 2.x.y
17808HDNode.prototype.toHex = function (isPrivate) {
17809 return this.toBuffer(isPrivate).toString('hex')
17810}
17811
17812// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
17813HDNode.prototype.derive = function (index) {
17814 var isHardened = index >= HDNode.HIGHEST_BIT
17815 var indexBuffer = new Buffer(4)
17816 indexBuffer.writeUInt32BE(index, 0)
17817
17818 var data
17819
17820 // Hardened child
17821 if (isHardened) {
17822 assert(this.privKey, 'Could not derive hardened child key')
17823
17824 // data = 0x00 || ser256(kpar) || ser32(index)
17825 data = Buffer.concat([
17826 this.privKey.d.toBuffer(33),
17827 indexBuffer
17828 ])
17829
17830 // Normal child
17831 } else {
17832 // data = serP(point(kpar)) || ser32(index)
17833 // = serP(Kpar) || ser32(index)
17834 data = Buffer.concat([
17835 this.pubKey.toBuffer(),
17836 indexBuffer
17837 ])
17838 }
17839
17840 var I = createHmac('sha512', this.chainCode).update(data).digest()
17841 var IL = I.slice(0, 32)
17842 var IR = I.slice(32)
17843
17844 var pIL = BigInteger.fromBuffer(IL)
17845
17846 // In case parse256(IL) >= n, proceed with the next value for i
17847 if (pIL.compareTo(curve.n) >= 0) {
17848 return this.derive(index + 1)
17849 }
17850
17851 // Private parent key -> private child key
17852 var hd
17853 if (this.privKey) {
17854 // ki = parse256(IL) + kpar (mod n)
17855 var ki = pIL.add(this.privKey.d).mod(curve.n)
17856
17857 // In case ki == 0, proceed with the next value for i
17858 if (ki.signum() === 0) {
17859 return this.derive(index + 1)
17860 }
17861
17862 hd = new HDNode(ki, IR, this.network)
17863
17864 // Public parent key -> public child key
17865 } else {
17866 // Ki = point(parse256(IL)) + Kpar
17867 // = G*IL + Kpar
17868 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
17869
17870 // In case Ki is the point at infinity, proceed with the next value for i
17871 if (curve.isInfinity(Ki)) {
17872 return this.derive(index + 1)
17873 }
17874
17875 hd = new HDNode(Ki, IR, this.network)
17876 }
17877
17878 hd.depth = this.depth + 1
17879 hd.index = index
17880 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
17881
17882 return hd
17883}
17884
17885HDNode.prototype.deriveHardened = function (index) {
17886 // Only derives hardened private keys by default
17887 return this.derive(index + HDNode.HIGHEST_BIT)
17888}
17889
17890HDNode.prototype.toString = HDNode.prototype.toBase58
17891
17892module.exports = HDNode
17893
17894}).call(this,require("buffer").Buffer)
17895},{"./crypto":58,"./eckey":60,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"create-hmac":45,"ecurve":49,"typeforce":53}],64:[function(require,module,exports){
17896module.exports = {
17897 Address: require('./address'),
17898 base58check: require('./base58check'),
17899 Block: require('./block'),
17900 bufferutils: require('./bufferutils'),
17901 crypto: require('./crypto'),
17902 ecdsa: require('./ecdsa'),
17903 ECKey: require('./eckey'),
17904 ECPubKey: require('./ecpubkey'),
17905 ECSignature: require('./ecsignature'),
17906 Message: require('./message'),
17907 opcodes: require('./opcodes'),
17908 HDNode: require('./hdnode'),
17909 Script: require('./script'),
17910 scripts: require('./scripts'),
17911 Transaction: require('./transaction'),
17912 TransactionBuilder: require('./transaction_builder'),
17913 networks: require('./networks'),
17914 Wallet: require('./wallet')
17915}
17916
17917},{"./address":54,"./base58check":55,"./block":56,"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./eckey":60,"./ecpubkey":61,"./ecsignature":62,"./hdnode":63,"./message":65,"./networks":66,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"./transaction_builder":71,"./wallet":72}],65:[function(require,module,exports){
17918(function (Buffer){
17919var bufferutils = require('./bufferutils')
17920var crypto = require('./crypto')
17921var ecdsa = require('./ecdsa')
17922var networks = require('./networks')
17923
17924var BigInteger = require('bigi')
17925var ECPubKey = require('./ecpubkey')
17926var ECSignature = require('./ecsignature')
17927
17928var ecurve = require('ecurve')
17929var ecparams = ecurve.getCurveByName('secp256k1')
17930
17931function magicHash (message, network) {
17932 var magicPrefix = new Buffer(network.magicPrefix)
17933 var messageBuffer = new Buffer(message)
17934 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
17935
17936 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
17937 return crypto.hash256(buffer)
17938}
17939
17940function sign (privKey, message, network) {
17941 network = network || networks.bitcoin
17942
17943 var hash = magicHash(message, network)
17944 var signature = privKey.sign(hash)
17945 var e = BigInteger.fromBuffer(hash)
17946 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
17947
17948 return signature.toCompact(i, privKey.pub.compressed)
17949}
17950
17951// TODO: network could be implied from address
17952function verify (address, signature, message, network) {
17953 if (!Buffer.isBuffer(signature)) {
17954 signature = new Buffer(signature, 'base64')
17955 }
17956
17957 network = network || networks.bitcoin
17958
17959 var hash = magicHash(message, network)
17960 var parsed = ECSignature.parseCompact(signature)
17961 var e = BigInteger.fromBuffer(hash)
17962 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
17963
17964 var pubKey = new ECPubKey(Q, parsed.compressed)
17965 return pubKey.getAddress(network).toString() === address.toString()
17966}
17967
17968module.exports = {
17969 magicHash: magicHash,
17970 sign: sign,
17971 verify: verify
17972}
17973
17974}).call(this,require("buffer").Buffer)
17975},{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
17976// https://en.bitcoin.it/wiki/List_of_address_prefixes
17977// Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
17978
17979var networks = {
17980 bitcoin: {
17981 magicPrefix: '\x18Bitcoin Signed Message:\n',
17982 bip32: {
17983 public: 0x0488b21e,
17984 private: 0x0488ade4
17985 },
17986 pubKeyHash: 0x00,
17987 scriptHash: 0x05,
17988 wif: 0x80,
17989 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
17990 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
17991 estimateFee: estimateFee('bitcoin')
17992 },
17993 testnet: {
17994 magicPrefix: '\x18Bitcoin Signed Message:\n',
17995 bip32: {
17996 public: 0x043587cf,
17997 private: 0x04358394
17998 },
17999 pubKeyHash: 0x6f,
18000 scriptHash: 0xc4,
18001 wif: 0xef,
18002 dustThreshold: 546,
18003 feePerKb: 10000,
18004 estimateFee: estimateFee('testnet')
18005 },
18006 litecoin: {
18007 magicPrefix: '\x19Litecoin Signed Message:\n',
18008 bip32: {
18009 public: 0x019da462,
18010 private: 0x019d9cfe
18011 },
18012 pubKeyHash: 0x30,
18013 scriptHash: 0x05,
18014 wif: 0xb0,
18015 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
18016 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
18017 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
18018 estimateFee: estimateFee('litecoin')
18019 },
18020 dogecoin: {
18021 magicPrefix: '\x19Dogecoin Signed Message:\n',
18022 bip32: {
18023 public: 0x02facafd,
18024 private: 0x02fac398
18025 },
18026 pubKeyHash: 0x1e,
18027 scriptHash: 0x16,
18028 wif: 0x9e,
18029 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
18030 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
18031 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
18032 estimateFee: estimateFee('dogecoin')
18033 },
18034 viacoin: {
18035 magicPrefix: '\x18Viacoin Signed Message:\n',
18036 bip32: {
18037 public: 0x0488b21e,
18038 private: 0x0488ade4
18039 },
18040 pubKeyHash: 0x47,
18041 scriptHash: 0x21,
18042 wif: 0xc7,
18043 dustThreshold: 560,
18044 dustSoftThreshold: 100000,
18045 feePerKb: 100000, //
18046 estimateFee: estimateFee('viacoin')
18047 },
18048 viacointestnet: {
18049 magicPrefix: '\x18Viacoin Signed Message:\n',
18050 bip32: {
18051 public: 0x043587cf,
18052 private: 0x04358394
18053 },
18054 pubKeyHash: 0x7f,
18055 scriptHash: 0xc4,
18056 wif: 0xff,
18057 dustThreshold: 560,
18058 dustSoftThreshold: 100000,
18059 feePerKb: 100000,
18060 estimateFee: estimateFee('viacointestnet')
18061 },
18062 gamerscoin: {
18063 magicPrefix: '\x19Gamerscoin Signed Message:\n',
18064 bip32: {
18065 public: 0x019da462,
18066 private: 0x019d9cfe
18067 },
18068 pubKeyHash: 0x26,
18069 scriptHash: 0x05,
18070 wif: 0xA6,
18071 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
18072 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
18073 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
18074 estimateFee: estimateFee('gamerscoin')
18075 },
18076 jumbucks: {
18077 magicPrefix: '\x19Jumbucks Signed Message:\n',
18078 bip32: {
18079 public: 0x037a689a,
18080 private: 0x037a6460
18081 },
18082 pubKeyHash: 0x2b,
18083 scriptHash: 0x05,
18084 wif: 0xab,
18085 dustThreshold: 0,
18086 dustSoftThreshold: 10000,
18087 feePerKb: 10000,
18088 estimateFee: estimateFee('jumbucks')
18089 },
18090 zetacoin: {
18091 magicPrefix: '\x18Zetacoin Signed Message:\n',
18092 bip32: {
18093 public: 0x0488b21e,
18094 private: 0x0488ade4
18095 },
18096 pubKeyHash: 0x50,
18097 scriptHash: 0x09,
18098 wif: 0xe0,
18099 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
18100 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
18101 estimateFee: estimateFee('zetacoin')
18102 }
18103}
18104
18105function estimateFee (type) {
18106 return function (tx) {
18107 var network = networks[type]
18108 var baseFee = network.feePerKb
18109 var byteSize = tx.toBuffer().length
18110
18111 var fee = baseFee * Math.ceil(byteSize / 1000)
18112 if (network.dustSoftThreshold === undefined) return fee
18113
18114 tx.outs.forEach(function (e) {
18115 if (e.value < network.dustSoftThreshold) {
18116 fee += baseFee
18117 }
18118 })
18119
18120 return fee
18121 }
18122}
18123
18124module.exports = networks
18125
18126},{}],67:[function(require,module,exports){
18127module.exports = {
18128 // push value
18129 OP_FALSE: 0,
18130 OP_0: 0,
18131 OP_PUSHDATA1: 76,
18132 OP_PUSHDATA2: 77,
18133 OP_PUSHDATA4: 78,
18134 OP_1NEGATE: 79,
18135 OP_RESERVED: 80,
18136 OP_1: 81,
18137 OP_TRUE: 81,
18138 OP_2: 82,
18139 OP_3: 83,
18140 OP_4: 84,
18141 OP_5: 85,
18142 OP_6: 86,
18143 OP_7: 87,
18144 OP_8: 88,
18145 OP_9: 89,
18146 OP_10: 90,
18147 OP_11: 91,
18148 OP_12: 92,
18149 OP_13: 93,
18150 OP_14: 94,
18151 OP_15: 95,
18152 OP_16: 96,
18153
18154 // control
18155 OP_NOP: 97,
18156 OP_VER: 98,
18157 OP_IF: 99,
18158 OP_NOTIF: 100,
18159 OP_VERIF: 101,
18160 OP_VERNOTIF: 102,
18161 OP_ELSE: 103,
18162 OP_ENDIF: 104,
18163 OP_VERIFY: 105,
18164 OP_RETURN: 106,
18165
18166 // stack ops
18167 OP_TOALTSTACK: 107,
18168 OP_FROMALTSTACK: 108,
18169 OP_2DROP: 109,
18170 OP_2DUP: 110,
18171 OP_3DUP: 111,
18172 OP_2OVER: 112,
18173 OP_2ROT: 113,
18174 OP_2SWAP: 114,
18175 OP_IFDUP: 115,
18176 OP_DEPTH: 116,
18177 OP_DROP: 117,
18178 OP_DUP: 118,
18179 OP_NIP: 119,
18180 OP_OVER: 120,
18181 OP_PICK: 121,
18182 OP_ROLL: 122,
18183 OP_ROT: 123,
18184 OP_SWAP: 124,
18185 OP_TUCK: 125,
18186
18187 // splice ops
18188 OP_CAT: 126,
18189 OP_SUBSTR: 127,
18190 OP_LEFT: 128,
18191 OP_RIGHT: 129,
18192 OP_SIZE: 130,
18193
18194 // bit logic
18195 OP_INVERT: 131,
18196 OP_AND: 132,
18197 OP_OR: 133,
18198 OP_XOR: 134,
18199 OP_EQUAL: 135,
18200 OP_EQUALVERIFY: 136,
18201 OP_RESERVED1: 137,
18202 OP_RESERVED2: 138,
18203
18204 // numeric
18205 OP_1ADD: 139,
18206 OP_1SUB: 140,
18207 OP_2MUL: 141,
18208 OP_2DIV: 142,
18209 OP_NEGATE: 143,
18210 OP_ABS: 144,
18211 OP_NOT: 145,
18212 OP_0NOTEQUAL: 146,
18213
18214 OP_ADD: 147,
18215 OP_SUB: 148,
18216 OP_MUL: 149,
18217 OP_DIV: 150,
18218 OP_MOD: 151,
18219 OP_LSHIFT: 152,
18220 OP_RSHIFT: 153,
18221
18222 OP_BOOLAND: 154,
18223 OP_BOOLOR: 155,
18224 OP_NUMEQUAL: 156,
18225 OP_NUMEQUALVERIFY: 157,
18226 OP_NUMNOTEQUAL: 158,
18227 OP_LESSTHAN: 159,
18228 OP_GREATERTHAN: 160,
18229 OP_LESSTHANOREQUAL: 161,
18230 OP_GREATERTHANOREQUAL: 162,
18231 OP_MIN: 163,
18232 OP_MAX: 164,
18233
18234 OP_WITHIN: 165,
18235
18236 // crypto
18237 OP_RIPEMD160: 166,
18238 OP_SHA1: 167,
18239 OP_SHA256: 168,
18240 OP_HASH160: 169,
18241 OP_HASH256: 170,
18242 OP_CODESEPARATOR: 171,
18243 OP_CHECKSIG: 172,
18244 OP_CHECKSIGVERIFY: 173,
18245 OP_CHECKMULTISIG: 174,
18246 OP_CHECKMULTISIGVERIFY: 175,
18247
18248 // expansion
18249 OP_NOP1: 176,
18250 OP_NOP2: 177,
18251 OP_NOP3: 178,
18252 OP_NOP4: 179,
18253 OP_NOP5: 180,
18254 OP_NOP6: 181,
18255 OP_NOP7: 182,
18256 OP_NOP8: 183,
18257 OP_NOP9: 184,
18258 OP_NOP10: 185,
18259
18260 // template matching params
18261 OP_PUBKEYHASH: 253,
18262 OP_PUBKEY: 254,
18263 OP_INVALIDOPCODE: 255
18264}
18265
18266},{}],68:[function(require,module,exports){
18267(function (Buffer){
18268var assert = require('assert')
18269var bufferutils = require('./bufferutils')
18270var crypto = require('./crypto')
18271var typeForce = require('typeforce')
18272var opcodes = require('./opcodes')
18273
18274function Script (buffer, chunks) {
18275 typeForce('Buffer', buffer)
18276 typeForce('Array', chunks)
18277
18278 this.buffer = buffer
18279 this.chunks = chunks
18280}
18281
18282Script.fromASM = function (asm) {
18283 var strChunks = asm.split(' ')
18284 var chunks = strChunks.map(function (strChunk) {
18285 // opcode
18286 if (strChunk in opcodes) {
18287 return opcodes[strChunk]
18288
18289 // data chunk
18290 } else {
18291 return new Buffer(strChunk, 'hex')
18292 }
18293 })
18294
18295 return Script.fromChunks(chunks)
18296}
18297
18298Script.fromBuffer = function (buffer) {
18299 var chunks = []
18300 var i = 0
18301
18302 while (i < buffer.length) {
18303 var opcode = buffer.readUInt8(i)
18304
18305 // data chunk
18306 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
18307 var d = bufferutils.readPushDataInt(buffer, i)
18308
18309 // did reading a pushDataInt fail? return non-chunked script
18310 if (d === null) return new Script(buffer, [])
18311 i += d.size
18312
18313 // attempt to read too much data?
18314 if (i + d.number > buffer.length) return new Script(buffer, [])
18315
18316 var data = buffer.slice(i, i + d.number)
18317 i += d.number
18318
18319 chunks.push(data)
18320
18321 // opcode
18322 } else {
18323 chunks.push(opcode)
18324
18325 i += 1
18326 }
18327 }
18328
18329 return new Script(buffer, chunks)
18330}
18331
18332Script.fromChunks = function (chunks) {
18333 typeForce('Array', chunks)
18334
18335 var bufferSize = chunks.reduce(function (accum, chunk) {
18336 // data chunk
18337 if (Buffer.isBuffer(chunk)) {
18338 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
18339 }
18340
18341 // opcode
18342 return accum + 1
18343 }, 0.0)
18344
18345 var buffer = new Buffer(bufferSize)
18346 var offset = 0
18347
18348 chunks.forEach(function (chunk) {
18349 // data chunk
18350 if (Buffer.isBuffer(chunk)) {
18351 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
18352
18353 chunk.copy(buffer, offset)
18354 offset += chunk.length
18355
18356 // opcode
18357 } else {
18358 buffer.writeUInt8(chunk, offset)
18359 offset += 1
18360 }
18361 })
18362
18363 assert.equal(offset, buffer.length, 'Could not decode chunks')
18364 return new Script(buffer, chunks)
18365}
18366
18367Script.fromHex = function (hex) {
18368 return Script.fromBuffer(new Buffer(hex, 'hex'))
18369}
18370
18371Script.EMPTY = Script.fromChunks([])
18372
18373Script.prototype.getHash = function () {
18374 return crypto.hash160(this.buffer)
18375}
18376
18377// FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
18378Script.prototype.without = function (needle) {
18379 return Script.fromChunks(this.chunks.filter(function (op) {
18380 return op !== needle
18381 }))
18382}
18383
18384var reverseOps = []
18385for (var op in opcodes) {
18386 var code = opcodes[op]
18387 reverseOps[code] = op
18388}
18389
18390Script.prototype.toASM = function () {
18391 return this.chunks.map(function (chunk) {
18392 // data chunk
18393 if (Buffer.isBuffer(chunk)) {
18394 return chunk.toString('hex')
18395
18396 // opcode
18397 } else {
18398 return reverseOps[chunk]
18399 }
18400 }).join(' ')
18401}
18402
18403Script.prototype.toBuffer = function () {
18404 return this.buffer
18405}
18406
18407Script.prototype.toHex = function () {
18408 return this.toBuffer().toString('hex')
18409}
18410
18411module.exports = Script
18412
18413}).call(this,require("buffer").Buffer)
18414},{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
18415(function (Buffer){
18416var assert = require('assert')
18417var ops = require('./opcodes')
18418var typeForce = require('typeforce')
18419
18420var ecurve = require('ecurve')
18421var curve = ecurve.getCurveByName('secp256k1')
18422
18423var ECSignature = require('./ecsignature')
18424var Script = require('./script')
18425
18426function isCanonicalPubKey (buffer) {
18427 if (!Buffer.isBuffer(buffer)) return false
18428
18429 try {
18430 ecurve.Point.decodeFrom(curve, buffer)
18431 } catch (e) {
18432 if (!(e.message.match(/Invalid sequence (length|tag)/)))
18433 throw e
18434
18435 return false
18436 }
18437
18438 return true
18439}
18440
18441function isCanonicalSignature (buffer) {
18442 if (!Buffer.isBuffer(buffer)) return false
18443
18444 try {
18445 ECSignature.parseScriptSignature(buffer)
18446 } catch (e) {
18447 if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) {
18448 throw e
18449 }
18450
18451 return false
18452 }
18453
18454 return true
18455}
18456
18457function isPubKeyHashInput (script) {
18458 return script.chunks.length === 2 &&
18459 isCanonicalSignature(script.chunks[0]) &&
18460 isCanonicalPubKey(script.chunks[1])
18461}
18462
18463function isPubKeyHashOutput (script) {
18464 return script.chunks.length === 5 &&
18465 script.chunks[0] === ops.OP_DUP &&
18466 script.chunks[1] === ops.OP_HASH160 &&
18467 Buffer.isBuffer(script.chunks[2]) &&
18468 script.chunks[2].length === 20 &&
18469 script.chunks[3] === ops.OP_EQUALVERIFY &&
18470 script.chunks[4] === ops.OP_CHECKSIG
18471}
18472
18473function isPubKeyInput (script) {
18474 return script.chunks.length === 1 &&
18475 isCanonicalSignature(script.chunks[0])
18476}
18477
18478function isPubKeyOutput (script) {
18479 return script.chunks.length === 2 &&
18480 isCanonicalPubKey(script.chunks[0]) &&
18481 script.chunks[1] === ops.OP_CHECKSIG
18482}
18483
18484function isScriptHashInput (script, allowIncomplete) {
18485 if (script.chunks.length < 2) return false
18486
18487 var lastChunk = script.chunks[script.chunks.length - 1]
18488 if (!Buffer.isBuffer(lastChunk)) return false
18489
18490 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
18491 var redeemScript = Script.fromBuffer(lastChunk)
18492
18493 // is redeemScript a valid script?
18494 if (redeemScript.chunks.length === 0) return false
18495
18496 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
18497}
18498
18499function isScriptHashOutput (script) {
18500 return script.chunks.length === 3 &&
18501 script.chunks[0] === ops.OP_HASH160 &&
18502 Buffer.isBuffer(script.chunks[1]) &&
18503 script.chunks[1].length === 20 &&
18504 script.chunks[2] === ops.OP_EQUAL
18505}
18506
18507// allowIncomplete is to account for combining signatures
18508// See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
18509function isMultisigInput (script, allowIncomplete) {
18510 if (script.chunks.length < 2) return false
18511 if (script.chunks[0] !== ops.OP_0) return false
18512
18513 if (allowIncomplete) {
18514 return script.chunks.slice(1).every(function (chunk) {
18515 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
18516 })
18517 }
18518
18519 return script.chunks.slice(1).every(isCanonicalSignature)
18520}
18521
18522function isMultisigOutput (script) {
18523 if (script.chunks.length < 4) return false
18524 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
18525
18526 var mOp = script.chunks[0]
18527 if (mOp === ops.OP_0) return false
18528 if (mOp < ops.OP_1) return false
18529 if (mOp > ops.OP_16) return false
18530
18531 var nOp = script.chunks[script.chunks.length - 2]
18532 if (nOp === ops.OP_0) return false
18533 if (nOp < ops.OP_1) return false
18534 if (nOp > ops.OP_16) return false
18535
18536 var m = mOp - (ops.OP_1 - 1)
18537 var n = nOp - (ops.OP_1 - 1)
18538 if (n < m) return false
18539
18540 var pubKeys = script.chunks.slice(1, -2)
18541 if (n < pubKeys.length) return false
18542
18543 return pubKeys.every(isCanonicalPubKey)
18544}
18545
18546function isNullDataOutput (script) {
18547 return script.chunks[0] === ops.OP_RETURN
18548}
18549
18550function classifyOutput (script) {
18551 typeForce('Script', script)
18552
18553 if (isPubKeyHashOutput(script)) {
18554 return 'pubkeyhash'
18555 } else if (isScriptHashOutput(script)) {
18556 return 'scripthash'
18557 } else if (isMultisigOutput(script)) {
18558 return 'multisig'
18559 } else if (isPubKeyOutput(script)) {
18560 return 'pubkey'
18561 } else if (isNullDataOutput(script)) {
18562 return 'nulldata'
18563 }
18564
18565 return 'nonstandard'
18566}
18567
18568function classifyInput (script, allowIncomplete) {
18569 typeForce('Script', script)
18570
18571 if (isPubKeyHashInput(script)) {
18572 return 'pubkeyhash'
18573 } else if (isMultisigInput(script, allowIncomplete)) {
18574 return 'multisig'
18575 } else if (isScriptHashInput(script, allowIncomplete)) {
18576 return 'scripthash'
18577 } else if (isPubKeyInput(script)) {
18578 return 'pubkey'
18579 }
18580
18581 return 'nonstandard'
18582}
18583
18584// Standard Script Templates
18585// {pubKey} OP_CHECKSIG
18586function pubKeyOutput (pubKey) {
18587 return Script.fromChunks([
18588 pubKey.toBuffer(),
18589 ops.OP_CHECKSIG
18590 ])
18591}
18592
18593// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
18594function pubKeyHashOutput (hash) {
18595 typeForce('Buffer', hash)
18596
18597 return Script.fromChunks([
18598 ops.OP_DUP,
18599 ops.OP_HASH160,
18600 hash,
18601 ops.OP_EQUALVERIFY,
18602 ops.OP_CHECKSIG
18603 ])
18604}
18605
18606// OP_HASH160 {scriptHash} OP_EQUAL
18607function scriptHashOutput (hash) {
18608 typeForce('Buffer', hash)
18609
18610 return Script.fromChunks([
18611 ops.OP_HASH160,
18612 hash,
18613 ops.OP_EQUAL
18614 ])
18615}
18616
18617// m [pubKeys ...] n OP_CHECKMULTISIG
18618function multisigOutput (m, pubKeys) {
18619 typeForce(['ECPubKey'], pubKeys)
18620
18621 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
18622
18623 var pubKeyBuffers = pubKeys.map(function (pubKey) {
18624 return pubKey.toBuffer()
18625 })
18626 var n = pubKeys.length
18627
18628 return Script.fromChunks([].concat(
18629 (ops.OP_1 - 1) + m,
18630 pubKeyBuffers,
18631 (ops.OP_1 - 1) + n,
18632 ops.OP_CHECKMULTISIG
18633 ))
18634}
18635
18636// {signature}
18637function pubKeyInput (signature) {
18638 typeForce('Buffer', signature)
18639
18640 return Script.fromChunks([signature])
18641}
18642
18643// {signature} {pubKey}
18644function pubKeyHashInput (signature, pubKey) {
18645 typeForce('Buffer', signature)
18646
18647 return Script.fromChunks([signature, pubKey.toBuffer()])
18648}
18649
18650// <scriptSig> {serialized scriptPubKey script}
18651function scriptHashInput (scriptSig, scriptPubKey) {
18652 return Script.fromChunks([].concat(
18653 scriptSig.chunks,
18654 scriptPubKey.toBuffer()
18655 ))
18656}
18657
18658// OP_0 [signatures ...]
18659function multisigInput (signatures, scriptPubKey) {
18660 if (scriptPubKey) {
18661 assert(isMultisigOutput(scriptPubKey))
18662
18663 var mOp = scriptPubKey.chunks[0]
18664 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
18665 var m = mOp - (ops.OP_1 - 1)
18666 var n = nOp - (ops.OP_1 - 1)
18667
18668 assert(signatures.length >= m, 'Not enough signatures provided')
18669 assert(signatures.length <= n, 'Too many signatures provided')
18670 }
18671
18672 return Script.fromChunks([].concat(ops.OP_0, signatures))
18673}
18674
18675function nullDataOutput (data) {
18676 return Script.fromChunks([ops.OP_RETURN, data])
18677}
18678
18679module.exports = {
18680 isCanonicalPubKey: isCanonicalPubKey,
18681 isCanonicalSignature: isCanonicalSignature,
18682 isPubKeyHashInput: isPubKeyHashInput,
18683 isPubKeyHashOutput: isPubKeyHashOutput,
18684 isPubKeyInput: isPubKeyInput,
18685 isPubKeyOutput: isPubKeyOutput,
18686 isScriptHashInput: isScriptHashInput,
18687 isScriptHashOutput: isScriptHashOutput,
18688 isMultisigInput: isMultisigInput,
18689 isMultisigOutput: isMultisigOutput,
18690 isNullDataOutput: isNullDataOutput,
18691 classifyOutput: classifyOutput,
18692 classifyInput: classifyInput,
18693 pubKeyOutput: pubKeyOutput,
18694 pubKeyHashOutput: pubKeyHashOutput,
18695 scriptHashOutput: scriptHashOutput,
18696 multisigOutput: multisigOutput,
18697 pubKeyInput: pubKeyInput,
18698 pubKeyHashInput: pubKeyHashInput,
18699 scriptHashInput: scriptHashInput,
18700 multisigInput: multisigInput,
18701 dataOutput: function (data) {
18702 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
18703 return nullDataOutput(data)
18704 },
18705 nullDataOutput: nullDataOutput
18706}
18707
18708}).call(this,require("buffer").Buffer)
18709},{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
18710(function (Buffer){
18711var assert = require('assert')
18712var bufferutils = require('./bufferutils')
18713var crypto = require('./crypto')
18714var typeForce = require('typeforce')
18715var opcodes = require('./opcodes')
18716var scripts = require('./scripts')
18717
18718var Address = require('./address')
18719var ECSignature = require('./ecsignature')
18720var Script = require('./script')
18721
18722function Transaction () {
18723 this.version = 1
18724 this.locktime = 0
18725 this.ins = []
18726 this.outs = []
18727}
18728
18729Transaction.DEFAULT_SEQUENCE = 0xffffffff
18730Transaction.SIGHASH_ALL = 0x01
18731Transaction.SIGHASH_NONE = 0x02
18732Transaction.SIGHASH_SINGLE = 0x03
18733Transaction.SIGHASH_ANYONECANPAY = 0x80
18734
18735Transaction.fromBuffer = function (buffer, __disableAssert) {
18736 var offset = 0
18737 function readSlice (n) {
18738 offset += n
18739 return buffer.slice(offset - n, offset)
18740 }
18741
18742 function readUInt32 () {
18743 var i = buffer.readUInt32LE(offset)
18744 offset += 4
18745 return i
18746 }
18747
18748 function readUInt64 () {
18749 var i = bufferutils.readUInt64LE(buffer, offset)
18750 offset += 8
18751 return i
18752 }
18753
18754 function readVarInt () {
18755 var vi = bufferutils.readVarInt(buffer, offset)
18756 offset += vi.size
18757 return vi.number
18758 }
18759
18760 function readScript () {
18761 return Script.fromBuffer(readSlice(readVarInt()))
18762 }
18763
18764 function readGenerationScript () {
18765 return new Script(readSlice(readVarInt()), [])
18766 }
18767
18768 var tx = new Transaction()
18769 tx.version = readUInt32()
18770
18771 var vinLen = readVarInt()
18772 for (var i = 0; i < vinLen; ++i) {
18773 var hash = readSlice(32)
18774
18775 if (Transaction.isCoinbaseHash(hash)) {
18776 tx.ins.push({
18777 hash: hash,
18778 index: readUInt32(),
18779 script: readGenerationScript(),
18780 sequence: readUInt32()
18781 })
18782 } else {
18783 tx.ins.push({
18784 hash: hash,
18785 index: readUInt32(),
18786 script: readScript(),
18787 sequence: readUInt32()
18788 })
18789 }
18790 }
18791
18792 var voutLen = readVarInt()
18793 for (i = 0; i < voutLen; ++i) {
18794 tx.outs.push({
18795 value: readUInt64(),
18796 script: readScript()
18797 })
18798 }
18799
18800 tx.locktime = readUInt32()
18801
18802 if (!__disableAssert) {
18803 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
18804 }
18805
18806 return tx
18807}
18808
18809Transaction.fromHex = function (hex) {
18810 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
18811}
18812
18813Transaction.isCoinbaseHash = function (buffer) {
18814 return Array.prototype.every.call(buffer, function (x) {
18815 return x === 0
18816 })
18817}
18818
18819/**
18820 * Create a new txIn.
18821 *
18822 * Can be called with any of:
18823 *
18824 * - A transaction and an index
18825 * - A transaction hash and an index
18826 *
18827 * Note that this method does not sign the created input.
18828 */
18829Transaction.prototype.addInput = function (hash, index, sequence, script) {
18830 if (sequence === undefined || sequence === null) {
18831 sequence = Transaction.DEFAULT_SEQUENCE
18832 }
18833
18834 script = script || Script.EMPTY
18835
18836 if (typeof hash === 'string') {
18837 // TxId hex is big-endian, we need little-endian
18838 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
18839 } else if (hash instanceof Transaction) {
18840 hash = hash.getHash()
18841 }
18842
18843 typeForce('Buffer', hash)
18844 typeForce('Number', index)
18845 typeForce('Number', sequence)
18846 typeForce('Script', script)
18847
18848 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
18849
18850 // Add the input and return the input's index
18851 return (this.ins.push({
18852 hash: hash,
18853 index: index,
18854 script: script,
18855 sequence: sequence
18856 }) - 1)
18857}
18858
18859/**
18860 * Create a new txOut.
18861 *
18862 * Can be called with:
18863 *
18864 * - A base58 address string and a value
18865 * - An Address object and a value
18866 * - A scriptPubKey Script and a value
18867 */
18868Transaction.prototype.addOutput = function (scriptPubKey, value) {
18869 // Attempt to get a valid address if it's a base58 address string
18870 if (typeof scriptPubKey === 'string') {
18871 scriptPubKey = Address.fromBase58Check(scriptPubKey)
18872 }
18873
18874 // Attempt to get a valid script if it's an Address object
18875 if (scriptPubKey instanceof Address) {
18876 scriptPubKey = scriptPubKey.toOutputScript()
18877 }
18878
18879 typeForce('Script', scriptPubKey)
18880 typeForce('Number', value)
18881
18882 // Add the output and return the output's index
18883 return (this.outs.push({
18884 script: scriptPubKey,
18885 value: value
18886 }) - 1)
18887}
18888
18889Transaction.prototype.clone = function () {
18890 var newTx = new Transaction()
18891 newTx.version = this.version
18892 newTx.locktime = this.locktime
18893
18894 newTx.ins = this.ins.map(function (txIn) {
18895 return {
18896 hash: txIn.hash,
18897 index: txIn.index,
18898 script: txIn.script,
18899 sequence: txIn.sequence
18900 }
18901 })
18902
18903 newTx.outs = this.outs.map(function (txOut) {
18904 return {
18905 script: txOut.script,
18906 value: txOut.value
18907 }
18908 })
18909
18910 return newTx
18911}
18912
18913/**
18914 * Hash transaction for signing a specific input.
18915 *
18916 * Bitcoin uses a different hash for each signed transaction input. This
18917 * method copies the transaction, makes the necessary changes based on the
18918 * hashType, serializes and finally hashes the result. This hash can then be
18919 * used to sign the transaction input in question.
18920 */
18921Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18922 // FIXME: remove in 2.x.y
18923 if (arguments[0] instanceof Script) {
18924 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
18925
18926 // swap the arguments (must be stored in tmp, arguments is special)
18927 var tmp = arguments[0]
18928 inIndex = arguments[1]
18929 prevOutScript = tmp
18930 }
18931
18932 typeForce('Number', inIndex)
18933 typeForce('Script', prevOutScript)
18934 typeForce('Number', hashType)
18935
18936 assert(inIndex >= 0, 'Invalid vin index')
18937 assert(inIndex < this.ins.length, 'Invalid vin index')
18938
18939 var txTmp = this.clone()
18940 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
18941
18942 // Blank out other inputs' signatures
18943 txTmp.ins.forEach(function (txIn) {
18944 txIn.script = Script.EMPTY
18945 })
18946 txTmp.ins[inIndex].script = hashScript
18947
18948 var hashTypeModifier = hashType & 0x1f
18949
18950 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
18951 assert(false, 'SIGHASH_NONE not yet supported')
18952 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
18953 assert(false, 'SIGHASH_SINGLE not yet supported')
18954 }
18955
18956 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18957 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
18958 }
18959
18960 var hashTypeBuffer = new Buffer(4)
18961 hashTypeBuffer.writeInt32LE(hashType, 0)
18962
18963 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
18964 return crypto.hash256(buffer)
18965}
18966
18967Transaction.prototype.getHash = function () {
18968 return crypto.hash256(this.toBuffer())
18969}
18970
18971Transaction.prototype.getId = function () {
18972 // TxHash is little-endian, we need big-endian
18973 return bufferutils.reverse(this.getHash()).toString('hex')
18974}
18975
18976Transaction.prototype.toBuffer = function () {
18977 function scriptSize (script) {
18978 var length = script.buffer.length
18979
18980 return bufferutils.varIntSize(length) + length
18981 }
18982
18983 var buffer = new Buffer(
18984 8 +
18985 bufferutils.varIntSize(this.ins.length) +
18986 bufferutils.varIntSize(this.outs.length) +
18987 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
18988 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
18989 )
18990
18991 var offset = 0
18992 function writeSlice (slice) {
18993 slice.copy(buffer, offset)
18994 offset += slice.length
18995 }
18996
18997 function writeUInt32 (i) {
18998 buffer.writeUInt32LE(i, offset)
18999 offset += 4
19000 }
19001
19002 function writeUInt64 (i) {
19003 bufferutils.writeUInt64LE(buffer, i, offset)
19004 offset += 8
19005 }
19006
19007 function writeVarInt (i) {
19008 var n = bufferutils.writeVarInt(buffer, i, offset)
19009 offset += n
19010 }
19011
19012 writeUInt32(this.version)
19013 writeVarInt(this.ins.length)
19014
19015 this.ins.forEach(function (txIn) {
19016 writeSlice(txIn.hash)
19017 writeUInt32(txIn.index)
19018 writeVarInt(txIn.script.buffer.length)
19019 writeSlice(txIn.script.buffer)
19020 writeUInt32(txIn.sequence)
19021 })
19022
19023 writeVarInt(this.outs.length)
19024 this.outs.forEach(function (txOut) {
19025 writeUInt64(txOut.value)
19026 writeVarInt(txOut.script.buffer.length)
19027 writeSlice(txOut.script.buffer)
19028 })
19029
19030 writeUInt32(this.locktime)
19031
19032 return buffer
19033}
19034
19035Transaction.prototype.toHex = function () {
19036 return this.toBuffer().toString('hex')
19037}
19038
19039Transaction.prototype.setInputScript = function (index, script) {
19040 typeForce('Number', index)
19041 typeForce('Script', script)
19042
19043 this.ins[index].script = script
19044}
19045
19046// FIXME: remove in 2.x.y
19047Transaction.prototype.sign = function (index, privKey, hashType) {
19048 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
19049
19050 var prevOutScript = privKey.pub.getAddress().toOutputScript()
19051 var signature = this.signInput(index, prevOutScript, privKey, hashType)
19052
19053 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
19054 this.setInputScript(index, scriptSig)
19055}
19056
19057// FIXME: remove in 2.x.y
19058Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
19059 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
19060
19061 hashType = hashType || Transaction.SIGHASH_ALL
19062
19063 var hash = this.hashForSignature(index, prevOutScript, hashType)
19064 var signature = privKey.sign(hash)
19065
19066 return signature.toScriptSignature(hashType)
19067}
19068
19069// FIXME: remove in 2.x.y
19070Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
19071 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
19072
19073 var parsed = ECSignature.parseScriptSignature(buffer)
19074 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
19075
19076 return pubKey.verify(hash, parsed.signature)
19077}
19078
19079module.exports = Transaction
19080
19081}).call(this,require("buffer").Buffer)
19082},{"./address":54,"./bufferutils":57,"./crypto":58,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"assert":5,"buffer":7,"typeforce":53}],71:[function(require,module,exports){
19083(function (Buffer){
19084var assert = require('assert')
19085var ops = require('./opcodes')
19086var scripts = require('./scripts')
19087
19088var ECPubKey = require('./ecpubkey')
19089var ECSignature = require('./ecsignature')
19090var Script = require('./script')
19091var Transaction = require('./transaction')
19092
19093function extractInput (txIn) {
19094 var redeemScript
19095 var scriptSig = txIn.script
19096 var prevOutScript
19097 var prevOutType = scripts.classifyInput(scriptSig, true)
19098 var scriptType
19099
19100 // Re-classify if scriptHash
19101 if (prevOutType === 'scripthash') {
19102 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
19103 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19104
19105 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
19106 scriptType = scripts.classifyInput(scriptSig, true)
19107 } else {
19108 scriptType = prevOutType
19109 }
19110
19111 // Extract hashType, pubKeys and signatures
19112 var hashType, parsed, pubKeys, signatures
19113
19114 switch (scriptType) {
19115 case 'pubkeyhash': {
19116 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19117 hashType = parsed.hashType
19118 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
19119 signatures = [parsed.signature]
19120 prevOutScript = pubKeys[0].getAddress().toOutputScript()
19121
19122 break
19123 }
19124
19125 case 'pubkey': {
19126 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19127 hashType = parsed.hashType
19128 signatures = [parsed.signature]
19129
19130 if (redeemScript) {
19131 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
19132 }
19133
19134 break
19135 }
19136
19137 case 'multisig': {
19138 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
19139 if (chunk === ops.OP_0) return chunk
19140
19141 var parsed = ECSignature.parseScriptSignature(chunk)
19142 hashType = parsed.hashType
19143
19144 return parsed.signature
19145 })
19146
19147 if (redeemScript) {
19148 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19149 }
19150
19151 break
19152 }
19153 }
19154
19155 return {
19156 hashType: hashType,
19157 prevOutScript: prevOutScript,
19158 prevOutType: prevOutType,
19159 pubKeys: pubKeys,
19160 redeemScript: redeemScript,
19161 scriptType: scriptType,
19162 signatures: signatures
19163 }
19164}
19165
19166function TransactionBuilder () {
19167 this.prevTxMap = {}
19168 this.prevOutScripts = {}
19169 this.prevOutTypes = {}
19170
19171 this.inputs = []
19172 this.tx = new Transaction()
19173}
19174
19175TransactionBuilder.fromTransaction = function (transaction) {
19176 var txb = new TransactionBuilder()
19177
19178 // Copy other transaction fields
19179 txb.tx.version = transaction.version
19180 txb.tx.locktime = transaction.locktime
19181
19182 // Extract/add inputs
19183 transaction.ins.forEach(function (txIn) {
19184 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
19185 })
19186
19187 // Extract/add outputs
19188 transaction.outs.forEach(function (txOut) {
19189 txb.addOutput(txOut.script, txOut.value)
19190 })
19191
19192 // Extract/add signatures
19193 txb.inputs = transaction.ins.map(function (txIn) {
19194 // TODO: remove me after testcase added
19195 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
19196
19197 // Ignore empty scripts
19198 if (txIn.script.buffer.length === 0) return {}
19199
19200 return extractInput(txIn)
19201 })
19202
19203 return txb
19204}
19205
19206TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
19207 var prevOutHash
19208
19209 // txId
19210 if (typeof prevTx === 'string') {
19211 prevOutHash = new Buffer(prevTx, 'hex')
19212
19213 // TxId hex is big-endian, we want little-endian hash
19214 Array.prototype.reverse.call(prevOutHash)
19215
19216 // Transaction
19217 } else if (prevTx instanceof Transaction) {
19218 prevOutHash = prevTx.getHash()
19219 prevOutScript = prevTx.outs[index].script
19220
19221 // txHash
19222 } else {
19223 prevOutHash = prevTx
19224 }
19225
19226 var input = {}
19227 if (prevOutScript) {
19228 var prevOutType = scripts.classifyOutput(prevOutScript)
19229
19230 // if we can, extract pubKey information
19231 switch (prevOutType) {
19232 case 'multisig': {
19233 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19234 break
19235 }
19236
19237 case 'pubkey': {
19238 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19239 break
19240 }
19241 }
19242
19243 if (prevOutType !== 'scripthash') {
19244 input.scriptType = prevOutType
19245 }
19246
19247 input.prevOutScript = prevOutScript
19248 input.prevOutType = prevOutType
19249 }
19250
19251 assert(this.inputs.every(function (input2) {
19252 if (input2.hashType === undefined) return true
19253
19254 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
19255 }), 'No, this would invalidate signatures')
19256
19257 var prevOut = prevOutHash.toString('hex') + ':' + index
19258 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
19259
19260 var vin = this.tx.addInput(prevOutHash, index, sequence)
19261 this.inputs[vin] = input
19262 this.prevTxMap[prevOut] = vin
19263
19264 return vin
19265}
19266
19267TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19268 assert(this.inputs.every(function (input) {
19269 if (input.hashType === undefined) return true
19270
19271 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
19272 }), 'No, this would invalidate signatures')
19273
19274 return this.tx.addOutput(scriptPubKey, value)
19275}
19276
19277TransactionBuilder.prototype.build = function () {
19278 return this.__build(false)
19279}
19280TransactionBuilder.prototype.buildIncomplete = function () {
19281 return this.__build(true)
19282}
19283
19284var canSignTypes = {
19285 'pubkeyhash': true,
19286 'multisig': true,
19287 'pubkey': true
19288}
19289
19290TransactionBuilder.prototype.__build = function (allowIncomplete) {
19291 if (!allowIncomplete) {
19292 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
19293 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
19294 }
19295
19296 var tx = this.tx.clone()
19297
19298 // Create script signatures from signature meta-data
19299 this.inputs.forEach(function (input, index) {
19300 var scriptType = input.scriptType
19301 var scriptSig
19302
19303 if (!allowIncomplete) {
19304 assert(!!scriptType, 'Transaction is not complete')
19305 assert(scriptType in canSignTypes, scriptType + ' not supported')
19306 assert(input.signatures, 'Transaction is missing signatures')
19307 }
19308
19309 if (input.signatures) {
19310 switch (scriptType) {
19311 case 'pubkeyhash': {
19312 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
19313 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
19314 break
19315 }
19316
19317 case 'multisig': {
19318 // Array.prototype.map is sparse-compatible
19319 var msSignatures = input.signatures.map(function (signature) {
19320 return signature && signature.toScriptSignature(input.hashType)
19321 })
19322
19323 // fill in blanks with OP_0
19324 if (allowIncomplete) {
19325 for (var i = 0; i < msSignatures.length; ++i) {
19326 if (msSignatures[i]) continue
19327
19328 msSignatures[i] = ops.OP_0
19329 }
19330 } else {
19331 // Array.prototype.filter returns non-sparse array
19332 msSignatures = msSignatures.filter(function (x) { return x })
19333 }
19334
19335 var redeemScript = allowIncomplete ? undefined : input.redeemScript
19336 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
19337 break
19338 }
19339
19340 case 'pubkey': {
19341 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
19342 scriptSig = scripts.pubKeyInput(pkSignature)
19343 break
19344 }
19345 }
19346 }
19347
19348 // did we build a scriptSig?
19349 if (scriptSig) {
19350 // wrap as scriptHash if necessary
19351 if (input.prevOutType === 'scripthash') {
19352 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
19353 }
19354
19355 tx.setInputScript(index, scriptSig)
19356 }
19357 })
19358
19359 return tx
19360}
19361
19362TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
19363 assert(index in this.inputs, 'No input at index: ' + index)
19364 hashType = hashType || Transaction.SIGHASH_ALL
19365
19366 var input = this.inputs[index]
19367 var canSign = input.hashType &&
19368 input.prevOutScript &&
19369 input.prevOutType &&
19370 input.pubKeys &&
19371 input.scriptType &&
19372 input.signatures
19373
19374 // are we almost ready to sign?
19375 if (canSign) {
19376 // if redeemScript was provided, enforce consistency
19377 if (redeemScript) {
19378 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
19379 }
19380
19381 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
19382
19383 // no? prepare
19384 } else {
19385 // must be pay-to-scriptHash?
19386 if (redeemScript) {
19387 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
19388 if (input.prevOutScript) {
19389 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
19390
19391 var scriptHash = input.prevOutScript.chunks[1]
19392 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
19393 }
19394
19395 var scriptType = scripts.classifyOutput(redeemScript)
19396 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
19397
19398 var pubKeys = []
19399 switch (scriptType) {
19400 case 'multisig': {
19401 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19402 break
19403 }
19404
19405 case 'pubkeyhash': {
19406 var pkh1 = redeemScript.chunks[2]
19407 var pkh2 = privKey.pub.getAddress().hash
19408
19409 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
19410 pubKeys = [privKey.pub]
19411 break
19412 }
19413
19414 case 'pubkey': {
19415 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19416 break
19417 }
19418 }
19419
19420 if (!input.prevOutScript) {
19421 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19422 input.prevOutType = 'scripthash'
19423 }
19424
19425 input.pubKeys = pubKeys
19426 input.redeemScript = redeemScript
19427 input.scriptType = scriptType
19428
19429 // cannot be pay-to-scriptHash
19430 } else {
19431 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
19432
19433 // can we otherwise sign this?
19434 if (input.scriptType) {
19435 assert(input.pubKeys, input.scriptType + ' not supported')
19436
19437 // we know nothin' Jon Snow, assume pubKeyHash
19438 } else {
19439 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
19440 input.prevOutType = 'pubkeyhash'
19441 input.pubKeys = [privKey.pub]
19442 input.scriptType = input.prevOutType
19443 }
19444 }
19445
19446 input.hashType = hashType
19447 input.signatures = input.signatures || []
19448 }
19449
19450 var signatureScript = input.redeemScript || input.prevOutScript
19451 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
19452
19453 // enforce signature order matches public keys
19454 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
19455 // maintain a local copy of unmatched signatures
19456 var unmatched = input.signatures.slice()
19457
19458 input.signatures = input.pubKeys.map(function (pubKey) {
19459 var match
19460
19461 // check for any matching signatures
19462 unmatched.some(function (signature, i) {
19463 if (!pubKey.verify(signatureHash, signature)) return false
19464 match = signature
19465
19466 // remove matched signature from unmatched
19467 unmatched.splice(i, 1)
19468
19469 return true
19470 })
19471
19472 return match || undefined
19473 })
19474 }
19475
19476 // enforce in order signing of public keys
19477 assert(input.pubKeys.some(function (pubKey, i) {
19478 if (!privKey.pub.Q.equals(pubKey.Q)) return false
19479
19480 assert(!input.signatures[i], 'Signature already exists')
19481 var signature = privKey.sign(signatureHash)
19482 input.signatures[i] = signature
19483
19484 return true
19485 }, this), 'privateKey cannot sign for this input')
19486}
19487
19488module.exports = TransactionBuilder
19489
19490}).call(this,require("buffer").Buffer)
19491},{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
19492(function (Buffer){
19493var assert = require('assert')
19494var bufferutils = require('./bufferutils')
19495var typeForce = require('typeforce')
19496var networks = require('./networks')
19497var randomBytes = require('randombytes')
19498
19499var Address = require('./address')
19500var HDNode = require('./hdnode')
19501var TransactionBuilder = require('./transaction_builder')
19502var Script = require('./script')
19503
19504function Wallet (seed, network) {
19505 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
19506
19507 seed = seed || randomBytes(32)
19508 network = network || networks.bitcoin
19509
19510 // Stored in a closure to make accidental serialization less likely
19511 var masterKey = HDNode.fromSeedBuffer(seed, network)
19512
19513 // HD first-level child derivation method should be hardened
19514 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
19515 var accountZero = masterKey.deriveHardened(0)
19516 var externalAccount = accountZero.derive(0)
19517 var internalAccount = accountZero.derive(1)
19518
19519 this.addresses = []
19520 this.changeAddresses = []
19521 this.network = network
19522 this.unspents = []
19523
19524 // FIXME: remove in 2.0.0
19525 this.unspentMap = {}
19526
19527 // FIXME: remove in 2.0.0
19528 var me = this
19529 this.newMasterKey = function (seed) {
19530 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
19531
19532 seed = seed || randomBytes(32)
19533 masterKey = HDNode.fromSeedBuffer(seed, network)
19534
19535 accountZero = masterKey.deriveHardened(0)
19536 externalAccount = accountZero.derive(0)
19537 internalAccount = accountZero.derive(1)
19538
19539 me.addresses = []
19540 me.changeAddresses = []
19541
19542 me.unspents = []
19543 me.unspentMap = {}
19544 }
19545
19546 this.getMasterKey = function () {
19547 return masterKey
19548 }
19549 this.getAccountZero = function () {
19550 return accountZero
19551 }
19552 this.getExternalAccount = function () {
19553 return externalAccount
19554 }
19555 this.getInternalAccount = function () {
19556 return internalAccount
19557 }
19558}
19559
19560Wallet.prototype.createTransaction = function (to, value, options) {
19561 // FIXME: remove in 2.0.0
19562 if (typeof options !== 'object') {
19563 if (options !== undefined) {
19564 console.warn('Non options object parameters are deprecated, use options object instead')
19565
19566 options = {
19567 fixedFee: arguments[2],
19568 changeAddress: arguments[3]
19569 }
19570 }
ab78acc6 19571 }
8b095871
IC
19572
19573 options = options || {}
19574
19575 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
19576
19577 var changeAddress = options.changeAddress
19578 var fixedFee = options.fixedFee
19579 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
19580
19581 // filter by minConf, then pending and sort by descending value
19582 var unspents = this.unspents.filter(function (unspent) {
19583 return unspent.confirmations >= minConf
19584 }).filter(function (unspent) {
19585 return !unspent.pending
19586 }).sort(function (o1, o2) {
19587 return o2.value - o1.value
19588 })
19589
19590 var accum = 0
19591 var addresses = []
19592 var subTotal = value
19593
19594 var txb = new TransactionBuilder()
19595 txb.addOutput(to, value)
19596
19597 for (var i = 0; i < unspents.length; ++i) {
19598 var unspent = unspents[i]
19599 addresses.push(unspent.address)
19600
19601 txb.addInput(unspent.txHash, unspent.index)
19602
19603 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
19604
19605 accum += unspent.value
19606 subTotal = value + fee
19607
19608 if (accum >= subTotal) {
19609 var change = accum - subTotal
19610
19611 if (change > this.network.dustThreshold) {
19612 txb.addOutput(changeAddress || this.getChangeAddress(), change)
19613 }
19614
19615 break
19616 }
ab78acc6 19617 }
8b095871
IC
19618
19619 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
19620
19621 return this.signWith(txb, addresses).build()
19622}
19623
19624// FIXME: remove in 2.0.0
19625Wallet.prototype.processPendingTx = function (tx) {
19626 this.__processTx(tx, true)
19627}
19628
19629// FIXME: remove in 2.0.0
19630Wallet.prototype.processConfirmedTx = function (tx) {
19631 this.__processTx(tx, false)
19632}
19633
19634// FIXME: remove in 2.0.0
19635Wallet.prototype.__processTx = function (tx, isPending) {
19636 console.warn('processTransaction is considered harmful, see issue #260 for more information')
19637
19638 var txId = tx.getId()
19639 var txHash = tx.getHash()
19640
19641 tx.outs.forEach(function (txOut, i) {
19642 var address
19643
19644 try {
19645 address = Address.fromOutputScript(txOut.script, this.network).toString()
19646 } catch (e) {
19647 if (!(e.message.match(/has no matching Address/)))
19648 throw e
19649 }
19650
19651 var myAddresses = this.addresses.concat(this.changeAddresses)
19652 if (myAddresses.indexOf(address) > -1) {
19653 var lookup = txId + ':' + i
19654 if (lookup in this.unspentMap) return
19655
19656 // its unique, add it
19657 var unspent = {
19658 address: address,
19659 confirmations: 0, // no way to determine this without more information
19660 index: i,
19661 txHash: txHash,
19662 txId: txId,
19663 value: txOut.value,
19664 pending: isPending
19665 }
19666
19667 this.unspentMap[lookup] = unspent
19668 this.unspents.push(unspent)
19669 }
19670 }, this)
19671
19672 tx.ins.forEach(function (txIn) {
19673 // copy and convert to big-endian hex
19674 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
19675
19676 var lookup = txInId + ':' + txIn.index
19677 if (!(lookup in this.unspentMap)) return
19678
19679 var unspent = this.unspentMap[lookup]
19680
19681 if (isPending) {
19682 unspent.pending = true
19683 unspent.spent = true
19684 } else {
19685 delete this.unspentMap[lookup]
19686
19687 this.unspents = this.unspents.filter(function (unspent2) {
19688 return unspent !== unspent2
19689 })
19690 }
19691 }, this)
19692}
19693
19694Wallet.prototype.generateAddress = function () {
19695 var k = this.addresses.length
19696 var address = this.getExternalAccount().derive(k).getAddress()
19697
19698 this.addresses.push(address.toString())
19699
19700 return this.getReceiveAddress()
19701}
19702
19703Wallet.prototype.generateChangeAddress = function () {
19704 var k = this.changeAddresses.length
19705 var address = this.getInternalAccount().derive(k).getAddress()
19706
19707 this.changeAddresses.push(address.toString())
19708
19709 return this.getChangeAddress()
19710}
19711
19712Wallet.prototype.getAddress = function () {
19713 if (this.addresses.length === 0) {
19714 this.generateAddress()
ab78acc6 19715 }
8b095871
IC
19716
19717 return this.addresses[this.addresses.length - 1]
19718}
19719
19720Wallet.prototype.getBalance = function (minConf) {
19721 minConf = minConf || 0
19722
19723 return this.unspents.filter(function (unspent) {
19724 return unspent.confirmations >= minConf
19725
19726 // FIXME: remove spent filter in 2.0.0
19727 }).filter(function (unspent) {
19728 return !unspent.spent
19729 }).reduce(function (accum, unspent) {
19730 return accum + unspent.value
19731 }, 0)
19732}
19733
19734Wallet.prototype.getChangeAddress = function () {
19735 if (this.changeAddresses.length === 0) {
19736 this.generateChangeAddress()
3af2954a 19737 }
8b095871
IC
19738
19739 return this.changeAddresses[this.changeAddresses.length - 1]
19740}
19741
19742Wallet.prototype.getInternalPrivateKey = function (index) {
19743 return this.getInternalAccount().derive(index).privKey
19744}
19745
19746Wallet.prototype.getPrivateKey = function (index) {
19747 return this.getExternalAccount().derive(index).privKey
19748}
19749
19750Wallet.prototype.getPrivateKeyForAddress = function (address) {
19751 var index
19752
19753 if ((index = this.addresses.indexOf(address)) > -1) {
19754 return this.getPrivateKey(index)
ab78acc6 19755 }
8b095871
IC
19756
19757 if ((index = this.changeAddresses.indexOf(address)) > -1) {
19758 return this.getInternalPrivateKey(index)
19759 }
19760
19761 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
ab78acc6
IC
19762}
19763
8b095871
IC
19764Wallet.prototype.getUnspentOutputs = function (minConf) {
19765 minConf = minConf || 0
19766
19767 return this.unspents.filter(function (unspent) {
19768 return unspent.confirmations >= minConf
19769
19770 // FIXME: remove spent filter in 2.0.0
19771 }).filter(function (unspent) {
19772 return !unspent.spent
19773 }).map(function (unspent) {
19774 return {
19775 address: unspent.address,
19776 confirmations: unspent.confirmations,
19777 index: unspent.index,
19778 txId: unspent.txId,
19779 value: unspent.value,
19780
19781 // FIXME: remove in 2.0.0
19782 hash: unspent.txId,
19783 pending: unspent.pending
19784 }
19785 })
ab78acc6 19786}
3af2954a 19787
8b095871
IC
19788Wallet.prototype.setUnspentOutputs = function (unspents) {
19789 this.unspentMap = {}
19790 this.unspents = unspents.map(function (unspent) {
19791 // FIXME: remove unspent.hash in 2.0.0
19792 var txId = unspent.txId || unspent.hash
19793 var index = unspent.index
3af2954a 19794
8b095871
IC
19795 // FIXME: remove in 2.0.0
19796 if (unspent.hash !== undefined) {
19797 console.warn('unspent.hash is deprecated, use unspent.txId instead')
19798 }
3af2954a 19799
8b095871
IC
19800 // FIXME: remove in 2.0.0
19801 if (index === undefined) {
19802 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
19803 index = unspent.outputIndex
19804 }
3af2954a 19805
8b095871
IC
19806 typeForce('String', txId)
19807 typeForce('Number', index)
19808 typeForce('Number', unspent.value)
3af2954a 19809
8b095871
IC
19810 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
19811 assert.doesNotThrow(function () {
19812 Address.fromBase58Check(unspent.address)
19813 }, 'Expected Base58 Address, got ' + unspent.address)
19814 assert(isFinite(index), 'Expected finite index, got ' + index)
3af2954a 19815
8b095871
IC
19816 // FIXME: remove branch in 2.0.0
19817 if (unspent.confirmations !== undefined) {
19818 typeForce('Number', unspent.confirmations)
ab78acc6 19819 }
8b095871
IC
19820
19821 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
19822
19823 unspent = {
19824 address: unspent.address,
19825 confirmations: unspent.confirmations || 0,
19826 index: index,
19827 txHash: txHash,
19828 txId: txId,
19829 value: unspent.value,
19830
19831 // FIXME: remove in 2.0.0
19832 pending: unspent.pending || false
ab78acc6 19833 }
3af2954a 19834
8b095871
IC
19835 // FIXME: remove in 2.0.0
19836 this.unspentMap[txId + ':' + index] = unspent
19837
19838 return unspent
19839 }, this)
ab78acc6 19840}
3af2954a 19841
8b095871
IC
19842Wallet.prototype.signWith = function (tx, addresses) {
19843 addresses.forEach(function (address, i) {
19844 var privKey = this.getPrivateKeyForAddress(address)
19845
19846 tx.sign(i, privKey)
19847 }, this)
19848
19849 return tx
ab78acc6 19850}
3af2954a 19851
8b095871
IC
19852function estimatePaddedFee (tx, network) {
19853 var tmpTx = tx.clone()
19854 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
19855
19856 return network.estimateFee(tmpTx)
ab78acc6 19857}
3af2954a 19858
8b095871
IC
19859// FIXME: 1.0.0 shims, remove in 2.0.0
19860Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
19861Wallet.prototype.createTx = Wallet.prototype.createTransaction
19862
19863module.exports = Wallet
19864
19865}).call(this,require("buffer").Buffer)
19866},{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
19867});</script>
19868 <script>bitcoin.networks.shadow = {
19869 magicPrefix: '\x19ShadowCash Signed Message:\n',
19870 bip32: {
19871 public: 0xEE80286A,
19872 private: 0xEE8031E8
19873 },
19874 pubKeyHash: 0x3f,
19875 scriptHash: 0x7d,
19876 wif: 0xbf,
19877 dustThreshold: 0,
19878 feePerKb: 1000,
19879 estimateFee: function() { return "unused in this app" },
19880};
19881
19882bitcoin.networks.shadowtn = {
19883 magicPrefix: '\x19ShadowCash Signed Message:\n',
19884 bip32: {
19885 public: 0x76C0FDFB,
19886 private: 0x76C1077A
19887 },
19888 pubKeyHash: 0x7f,
19889 scriptHash: 0xc4,
19890 wif: 0xff,
19891 dustThreshold: 0,
19892 feePerKb: 1000,
19893 estimateFee: function() { return "unused in this app" },
19894};
3af2954a 19895
8b095871
IC
19896bitcoin.networks.clam = {
19897 bip32: {
19898 public: 0xa8c26d64,
19899 private: 0xa8c17826
19900 },
19901 pubKeyHash: 0x89,
19902 wif: 0x85,
19903};
3af2954a 19904
8b095871
IC
19905bitcoin.networks.dash = {
19906 bip32: {
19907 public: 0x0488b21e,
19908 private: 0x0488ade4
19909 },
19910 pubKeyHash: 0x4c,
19911 scriptHash: 0x10,
19912 wif: 0xcc,
19913};
ab78acc6 19914
c0386f3b
KR
19915bitcoin.networks.dashtn = {
19916 bip32: {
19917 public: 0x043587cf,
19918 private: 0x04358394
19919 },
19920 pubKeyHash: 0x8c,
19921 scriptHash: 0x13,
19922 wif: 0xef,
19923};
19924
f88fab20 19925bitcoin.networks.game = {
19926 bip32: {
19927 public: 0x0488b21e,
19928 private: 0x0488ade4
19929 },
19930 pubKeyHash: 0x26,
19931 scriptHash: 0x05,
19932 wif: 0xa6,
19933};
19934
8b095871
IC
19935bitcoin.networks.namecoin = {
19936 bip32: {
19937 public: 0x0488b21e,
19938 private: 0x0488ade4
19939 },
19940 pubKeyHash: 0x34,
19941 //scriptHash: 0x10,
19942 wif: 0x80,
19943};
3af2954a 19944
8b095871
IC
19945bitcoin.networks.peercoin = {
19946 bip32: {
19947 public: 0x0488b21e,
19948 private: 0x0488ade4
19949 },
19950 pubKeyHash: 0x37,
19951 //scriptHash: 0x10,
19952 wif: 0xb7,
19953};
3af2954a 19954
01e81e53
GH
19955bitcoin.networks.slimcoin = {
19956 bip32: {
19957 public: 0xef6adf10,
19958 private: 0xef69ea80
19959 },
19960 pubKeyHash: 0x3f,
19961 scriptHash: 0x7d,
19962 wif: 0x46,
19963};
19964
19965bitcoin.networks.slimcointn = {
19966 bip32: {
19967 public: 0x043587CF,
19968 private: 0x04358394
19969 },
19970 pubKeyHash: 0x6f,
19971 scriptHash: 0xc4,
19972 wif: 0x57,
19973};
19974
8b095871
IC
19975</script>
19976 <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){
19977(function (global){
19978'use strict';
3af2954a 19979
8b095871
IC
19980// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
19981// original notice:
3af2954a 19982
8b095871
IC
19983/*!
19984 * The buffer module from node.js, for the browser.
19985 *
19986 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19987 * @license MIT
19988 */
19989function compare(a, b) {
19990 if (a === b) {
19991 return 0;
19992 }
3af2954a 19993
8b095871
IC
19994 var x = a.length;
19995 var y = b.length;
3af2954a 19996
8b095871
IC
19997 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
19998 if (a[i] !== b[i]) {
19999 x = a[i];
20000 y = b[i];
20001 break;
20002 }
20003 }
3af2954a 20004
8b095871
IC
20005 if (x < y) {
20006 return -1;
20007 }
20008 if (y < x) {
20009 return 1;
20010 }
20011 return 0;
ab78acc6 20012}
8b095871
IC
20013function isBuffer(b) {
20014 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
20015 return global.Buffer.isBuffer(b);
20016 }
20017 return !!(b != null && b._isBuffer);
ab78acc6 20018}
3af2954a 20019
8b095871
IC
20020// based on node assert, original notice:
20021
20022// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
20023//
20024// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
20025//
20026// Originally from narwhal.js (http://narwhaljs.org)
20027// Copyright (c) 2009 Thomas Robinson <280north.com>
20028//
20029// Permission is hereby granted, free of charge, to any person obtaining a copy
20030// of this software and associated documentation files (the 'Software'), to
20031// deal in the Software without restriction, including without limitation the
20032// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
20033// sell copies of the Software, and to permit persons to whom the Software is
20034// furnished to do so, subject to the following conditions:
20035//
20036// The above copyright notice and this permission notice shall be included in
20037// all copies or substantial portions of the Software.
20038//
20039// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20040// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20041// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20042// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20043// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20044// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20045
20046var util = require('util/');
20047var hasOwn = Object.prototype.hasOwnProperty;
20048var pSlice = Array.prototype.slice;
20049var functionsHaveNames = (function () {
20050 return function foo() {}.name === 'foo';
20051}());
20052function pToString (obj) {
20053 return Object.prototype.toString.call(obj);
20054}
20055function isView(arrbuf) {
20056 if (isBuffer(arrbuf)) {
20057 return false;
ab78acc6 20058 }
8b095871
IC
20059 if (typeof global.ArrayBuffer !== 'function') {
20060 return false;
20061 }
20062 if (typeof ArrayBuffer.isView === 'function') {
20063 return ArrayBuffer.isView(arrbuf);
20064 }
20065 if (!arrbuf) {
20066 return false;
20067 }
20068 if (arrbuf instanceof DataView) {
20069 return true;
20070 }
20071 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
20072 return true;
20073 }
20074 return false;
ab78acc6 20075}
8b095871
IC
20076// 1. The assert module provides functions that throw
20077// AssertionError's when particular conditions are not met. The
20078// assert module must conform to the following interface.
3af2954a 20079
8b095871 20080var assert = module.exports = ok;
3af2954a 20081
8b095871
IC
20082// 2. The AssertionError is defined in assert.
20083// new assert.AssertionError({ message: message,
20084// actual: actual,
20085// expected: expected })
20086
20087var regex = /\s*function\s+([^\(\s]*)\s*/;
20088// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
20089function getName(func) {
20090 if (!util.isFunction(func)) {
20091 return;
20092 }
20093 if (functionsHaveNames) {
20094 return func.name;
20095 }
20096 var str = func.toString();
20097 var match = str.match(regex);
20098 return match && match[1];
ab78acc6 20099}
8b095871
IC
20100assert.AssertionError = function AssertionError(options) {
20101 this.name = 'AssertionError';
20102 this.actual = options.actual;
20103 this.expected = options.expected;
20104 this.operator = options.operator;
20105 if (options.message) {
20106 this.message = options.message;
20107 this.generatedMessage = false;
20108 } else {
20109 this.message = getMessage(this);
20110 this.generatedMessage = true;
20111 }
20112 var stackStartFunction = options.stackStartFunction || fail;
20113 if (Error.captureStackTrace) {
20114 Error.captureStackTrace(this, stackStartFunction);
20115 } else {
20116 // non v8 browsers so we can have a stacktrace
20117 var err = new Error();
20118 if (err.stack) {
20119 var out = err.stack;
20120
20121 // try to strip useless frames
20122 var fn_name = getName(stackStartFunction);
20123 var idx = out.indexOf('\n' + fn_name);
20124 if (idx >= 0) {
20125 // once we have located the function frame
20126 // we need to strip out everything before it (and its line)
20127 var next_line = out.indexOf('\n', idx + 1);
20128 out = out.substring(next_line + 1);
20129 }
3af2954a 20130
8b095871
IC
20131 this.stack = out;
20132 }
20133 }
20134};
3af2954a 20135
8b095871
IC
20136// assert.AssertionError instanceof Error
20137util.inherits(assert.AssertionError, Error);
3af2954a 20138
8b095871
IC
20139function truncate(s, n) {
20140 if (typeof s === 'string') {
20141 return s.length < n ? s : s.slice(0, n);
20142 } else {
20143 return s;
3af2954a 20144 }
ab78acc6 20145}
8b095871
IC
20146function inspect(something) {
20147 if (functionsHaveNames || !util.isFunction(something)) {
20148 return util.inspect(something);
20149 }
20150 var rawname = getName(something);
20151 var name = rawname ? ': ' + rawname : '';
20152 return '[Function' + name + ']';
20153}
20154function getMessage(self) {
20155 return truncate(inspect(self.actual), 128) + ' ' +
20156 self.operator + ' ' +
20157 truncate(inspect(self.expected), 128);
ab78acc6 20158}
3af2954a 20159
8b095871
IC
20160// At present only the three keys mentioned above are used and
20161// understood by the spec. Implementations or sub modules can pass
20162// other keys to the AssertionError's constructor - they will be
20163// ignored.
3af2954a 20164
8b095871
IC
20165// 3. All of the following functions must throw an AssertionError
20166// when a corresponding condition is not met, with a message that
20167// may be undefined if not provided. All assertion methods provide
20168// both the actual and expected values to the assertion error for
20169// display purposes.
3af2954a 20170
8b095871
IC
20171function fail(actual, expected, message, operator, stackStartFunction) {
20172 throw new assert.AssertionError({
20173 message: message,
20174 actual: actual,
20175 expected: expected,
20176 operator: operator,
20177 stackStartFunction: stackStartFunction
20178 });
ab78acc6 20179}
3af2954a 20180
8b095871
IC
20181// EXTENSION! allows for well behaved errors defined elsewhere.
20182assert.fail = fail;
3af2954a 20183
8b095871
IC
20184// 4. Pure assertion tests whether a value is truthy, as determined
20185// by !!guard.
20186// assert.ok(guard, message_opt);
20187// This statement is equivalent to assert.equal(true, !!guard,
20188// message_opt);. To test strictly for the value true, use
20189// assert.strictEqual(true, guard, message_opt);.
3af2954a 20190
8b095871
IC
20191function ok(value, message) {
20192 if (!value) fail(value, true, message, '==', assert.ok);
ab78acc6 20193}
8b095871 20194assert.ok = ok;
3af2954a 20195
8b095871
IC
20196// 5. The equality assertion tests shallow, coercive equality with
20197// ==.
20198// assert.equal(actual, expected, message_opt);
3af2954a 20199
8b095871
IC
20200assert.equal = function equal(actual, expected, message) {
20201 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
20202};
3af2954a 20203
8b095871
IC
20204// 6. The non-equality assertion tests for whether two objects are not equal
20205// with != assert.notEqual(actual, expected, message_opt);
3af2954a 20206
8b095871
IC
20207assert.notEqual = function notEqual(actual, expected, message) {
20208 if (actual == expected) {
20209 fail(actual, expected, message, '!=', assert.notEqual);
ab78acc6 20210 }
8b095871
IC
20211};
20212
20213// 7. The equivalence assertion tests a deep equality relation.
20214// assert.deepEqual(actual, expected, message_opt);
20215
20216assert.deepEqual = function deepEqual(actual, expected, message) {
20217 if (!_deepEqual(actual, expected, false)) {
20218 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
ab78acc6 20219 }
8b095871 20220};
3af2954a 20221
8b095871
IC
20222assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
20223 if (!_deepEqual(actual, expected, true)) {
20224 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
3af2954a 20225 }
8b095871
IC
20226};
20227
20228function _deepEqual(actual, expected, strict, memos) {
20229 // 7.1. All identical values are equivalent, as determined by ===.
20230 if (actual === expected) {
20231 return true;
20232 } else if (isBuffer(actual) && isBuffer(expected)) {
20233 return compare(actual, expected) === 0;
20234
20235 // 7.2. If the expected value is a Date object, the actual value is
20236 // equivalent if it is also a Date object that refers to the same time.
20237 } else if (util.isDate(actual) && util.isDate(expected)) {
20238 return actual.getTime() === expected.getTime();
20239
20240 // 7.3 If the expected value is a RegExp object, the actual value is
20241 // equivalent if it is also a RegExp object with the same source and
20242 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
20243 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
20244 return actual.source === expected.source &&
20245 actual.global === expected.global &&
20246 actual.multiline === expected.multiline &&
20247 actual.lastIndex === expected.lastIndex &&
20248 actual.ignoreCase === expected.ignoreCase;
20249
20250 // 7.4. Other pairs that do not both pass typeof value == 'object',
20251 // equivalence is determined by ==.
20252 } else if ((actual === null || typeof actual !== 'object') &&
20253 (expected === null || typeof expected !== 'object')) {
20254 return strict ? actual === expected : actual == expected;
20255
20256 // If both values are instances of typed arrays, wrap their underlying
20257 // ArrayBuffers in a Buffer each to increase performance
20258 // This optimization requires the arrays to have the same type as checked by
20259 // Object.prototype.toString (aka pToString). Never perform binary
20260 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
20261 // bit patterns are not identical.
20262 } else if (isView(actual) && isView(expected) &&
20263 pToString(actual) === pToString(expected) &&
20264 !(actual instanceof Float32Array ||
20265 actual instanceof Float64Array)) {
20266 return compare(new Uint8Array(actual.buffer),
20267 new Uint8Array(expected.buffer)) === 0;
20268
20269 // 7.5 For all other Object pairs, including Array objects, equivalence is
20270 // determined by having the same number of owned properties (as verified
20271 // with Object.prototype.hasOwnProperty.call), the same set of keys
20272 // (although not necessarily the same order), equivalent values for every
20273 // corresponding key, and an identical 'prototype' property. Note: this
20274 // accounts for both named and indexed properties on Arrays.
20275 } else if (isBuffer(actual) !== isBuffer(expected)) {
20276 return false;
20277 } else {
20278 memos = memos || {actual: [], expected: []};
3af2954a 20279
8b095871
IC
20280 var actualIndex = memos.actual.indexOf(actual);
20281 if (actualIndex !== -1) {
20282 if (actualIndex === memos.expected.indexOf(expected)) {
20283 return true;
ab78acc6 20284 }
3af2954a 20285 }
8b095871
IC
20286
20287 memos.actual.push(actual);
20288 memos.expected.push(expected);
20289
20290 return objEquiv(actual, expected, strict, memos);
3af2954a 20291 }
ab78acc6 20292}
3af2954a 20293
8b095871
IC
20294function isArguments(object) {
20295 return Object.prototype.toString.call(object) == '[object Arguments]';
ab78acc6 20296}
3af2954a 20297
8b095871
IC
20298function objEquiv(a, b, strict, actualVisitedObjects) {
20299 if (a === null || a === undefined || b === null || b === undefined)
20300 return false;
20301 // if one is a primitive, the other must be same
20302 if (util.isPrimitive(a) || util.isPrimitive(b))
20303 return a === b;
20304 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
20305 return false;
20306 var aIsArgs = isArguments(a);
20307 var bIsArgs = isArguments(b);
20308 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
20309 return false;
20310 if (aIsArgs) {
20311 a = pSlice.call(a);
20312 b = pSlice.call(b);
20313 return _deepEqual(a, b, strict);
20314 }
20315 var ka = objectKeys(a);
20316 var kb = objectKeys(b);
20317 var key, i;
20318 // having the same number of owned properties (keys incorporates
20319 // hasOwnProperty)
20320 if (ka.length !== kb.length)
20321 return false;
20322 //the same set of keys (although not necessarily the same order),
20323 ka.sort();
20324 kb.sort();
20325 //~~~cheap key test
20326 for (i = ka.length - 1; i >= 0; i--) {
20327 if (ka[i] !== kb[i])
20328 return false;
20329 }
20330 //equivalent values for every corresponding key, and
20331 //~~~possibly expensive deep test
20332 for (i = ka.length - 1; i >= 0; i--) {
20333 key = ka[i];
20334 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
20335 return false;
20336 }
20337 return true;
ab78acc6 20338}
3af2954a 20339
8b095871
IC
20340// 8. The non-equivalence assertion tests for any deep inequality.
20341// assert.notDeepEqual(actual, expected, message_opt);
3af2954a 20342
8b095871
IC
20343assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
20344 if (_deepEqual(actual, expected, false)) {
20345 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
3af2954a 20346 }
8b095871 20347};
3af2954a 20348
8b095871
IC
20349assert.notDeepStrictEqual = notDeepStrictEqual;
20350function notDeepStrictEqual(actual, expected, message) {
20351 if (_deepEqual(actual, expected, true)) {
20352 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
20353 }
ab78acc6 20354}
3af2954a 20355
3af2954a 20356
8b095871
IC
20357// 9. The strict equality assertion tests strict equality, as determined by ===.
20358// assert.strictEqual(actual, expected, message_opt);
3af2954a 20359
8b095871
IC
20360assert.strictEqual = function strictEqual(actual, expected, message) {
20361 if (actual !== expected) {
20362 fail(actual, expected, message, '===', assert.strictEqual);
20363 }
20364};
3af2954a 20365
8b095871
IC
20366// 10. The strict non-equality assertion tests for strict inequality, as
20367// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
3af2954a 20368
8b095871
IC
20369assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
20370 if (actual === expected) {
20371 fail(actual, expected, message, '!==', assert.notStrictEqual);
20372 }
20373};
3af2954a 20374
8b095871
IC
20375function expectedException(actual, expected) {
20376 if (!actual || !expected) {
20377 return false;
20378 }
3af2954a 20379
8b095871
IC
20380 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
20381 return expected.test(actual);
20382 }
3af2954a 20383
8b095871
IC
20384 try {
20385 if (actual instanceof expected) {
20386 return true;
20387 }
20388 } catch (e) {
20389 // Ignore. The instanceof check doesn't work for arrow functions.
20390 }
3af2954a 20391
8b095871
IC
20392 if (Error.isPrototypeOf(expected)) {
20393 return false;
20394 }
20395
20396 return expected.call({}, actual) === true;
ab78acc6 20397}
3af2954a 20398
8b095871
IC
20399function _tryBlock(block) {
20400 var error;
20401 try {
20402 block();
20403 } catch (e) {
20404 error = e;
20405 }
20406 return error;
ab78acc6 20407}
3af2954a 20408
8b095871
IC
20409function _throws(shouldThrow, block, expected, message) {
20410 var actual;
20411
20412 if (typeof block !== 'function') {
20413 throw new TypeError('"block" argument must be a function');
3af2954a 20414 }
8b095871
IC
20415
20416 if (typeof expected === 'string') {
20417 message = expected;
20418 expected = null;
ab78acc6 20419 }
8b095871
IC
20420
20421 actual = _tryBlock(block);
20422
20423 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
20424 (message ? ' ' + message : '.');
20425
20426 if (shouldThrow && !actual) {
20427 fail(actual, expected, 'Missing expected exception' + message);
ab78acc6 20428 }
8b095871
IC
20429
20430 var userProvidedMessage = typeof message === 'string';
20431 var isUnwantedException = !shouldThrow && util.isError(actual);
20432 var isUnexpectedException = !shouldThrow && actual && !expected;
20433
20434 if ((isUnwantedException &&
20435 userProvidedMessage &&
20436 expectedException(actual, expected)) ||
20437 isUnexpectedException) {
20438 fail(actual, expected, 'Got unwanted exception' + message);
ab78acc6 20439 }
3af2954a 20440
8b095871
IC
20441 if ((shouldThrow && actual && expected &&
20442 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
20443 throw actual;
20444 }
ab78acc6 20445}
3af2954a 20446
8b095871
IC
20447// 11. Expected to throw an error:
20448// assert.throws(block, Error_opt, message_opt);
20449
20450assert.throws = function(block, /*optional*/error, /*optional*/message) {
20451 _throws(true, block, error, message);
20452};
20453
20454// EXTENSION! This is annoying to write outside this module.
20455assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
20456 _throws(false, block, error, message);
20457};
20458
20459assert.ifError = function(err) { if (err) throw err; };
20460
20461var objectKeys = Object.keys || function (obj) {
20462 var keys = [];
20463 for (var key in obj) {
20464 if (hasOwn.call(obj, key)) keys.push(key);
3af2954a 20465 }
8b095871
IC
20466 return keys;
20467};
3af2954a 20468
8b095871
IC
20469}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20470},{"util/":30}],2:[function(require,module,exports){
20471'use strict'
20472
20473exports.byteLength = byteLength
20474exports.toByteArray = toByteArray
20475exports.fromByteArray = fromByteArray
20476
20477var lookup = []
20478var revLookup = []
20479var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
20480
20481var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
20482for (var i = 0, len = code.length; i < len; ++i) {
20483 lookup[i] = code[i]
20484 revLookup[code.charCodeAt(i)] = i
20485}
20486
20487revLookup['-'.charCodeAt(0)] = 62
20488revLookup['_'.charCodeAt(0)] = 63
20489
20490function placeHoldersCount (b64) {
20491 var len = b64.length
20492 if (len % 4 > 0) {
20493 throw new Error('Invalid string. Length must be a multiple of 4')
20494 }
20495
20496 // the number of equal signs (place holders)
20497 // if there are two placeholders, than the two characters before it
20498 // represent one byte
20499 // if there is only one, then the three characters before it represent 2 bytes
20500 // this is just a cheap hack to not do indexOf twice
20501 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
ab78acc6
IC
20502}
20503
8b095871
IC
20504function byteLength (b64) {
20505 // base64 is 4/3 + up to two characters of the original data
20506 return b64.length * 3 / 4 - placeHoldersCount(b64)
ab78acc6 20507}
3af2954a 20508
8b095871
IC
20509function toByteArray (b64) {
20510 var i, j, l, tmp, placeHolders, arr
20511 var len = b64.length
20512 placeHolders = placeHoldersCount(b64)
20513
20514 arr = new Arr(len * 3 / 4 - placeHolders)
20515
20516 // if there are placeholders, only get up to the last complete 4 chars
20517 l = placeHolders > 0 ? len - 4 : len
20518
20519 var L = 0
20520
20521 for (i = 0, j = 0; i < l; i += 4, j += 3) {
20522 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
20523 arr[L++] = (tmp >> 16) & 0xFF
20524 arr[L++] = (tmp >> 8) & 0xFF
20525 arr[L++] = tmp & 0xFF
20526 }
20527
20528 if (placeHolders === 2) {
20529 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
20530 arr[L++] = tmp & 0xFF
20531 } else if (placeHolders === 1) {
20532 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
20533 arr[L++] = (tmp >> 8) & 0xFF
20534 arr[L++] = tmp & 0xFF
20535 }
20536
20537 return arr
ab78acc6 20538}
3af2954a 20539
8b095871
IC
20540function tripletToBase64 (num) {
20541 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
ab78acc6 20542}
3af2954a 20543
8b095871
IC
20544function encodeChunk (uint8, start, end) {
20545 var tmp
20546 var output = []
20547 for (var i = start; i < end; i += 3) {
20548 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
20549 output.push(tripletToBase64(tmp))
20550 }
20551 return output.join('')
ab78acc6 20552}
3af2954a 20553
8b095871
IC
20554function fromByteArray (uint8) {
20555 var tmp
20556 var len = uint8.length
20557 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
20558 var output = ''
20559 var parts = []
20560 var maxChunkLength = 16383 // must be multiple of 3
20561
20562 // go through the array every three bytes, we'll deal with trailing stuff later
20563 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
20564 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
20565 }
20566
20567 // pad the end with zeros, but make sure to not forget the extra bytes
20568 if (extraBytes === 1) {
20569 tmp = uint8[len - 1]
20570 output += lookup[tmp >> 2]
20571 output += lookup[(tmp << 4) & 0x3F]
20572 output += '=='
20573 } else if (extraBytes === 2) {
20574 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
20575 output += lookup[tmp >> 10]
20576 output += lookup[(tmp >> 4) & 0x3F]
20577 output += lookup[(tmp << 2) & 0x3F]
20578 output += '='
20579 }
20580
20581 parts.push(output)
20582
20583 return parts.join('')
ab78acc6 20584}
3af2954a 20585
8b095871 20586},{}],3:[function(require,module,exports){
3af2954a 20587
8b095871
IC
20588},{}],4:[function(require,module,exports){
20589(function (global){
20590'use strict';
20591
20592var buffer = require('buffer');
20593var Buffer = buffer.Buffer;
20594var SlowBuffer = buffer.SlowBuffer;
20595var MAX_LEN = buffer.kMaxLength || 2147483647;
20596exports.alloc = function alloc(size, fill, encoding) {
20597 if (typeof Buffer.alloc === 'function') {
20598 return Buffer.alloc(size, fill, encoding);
ab78acc6 20599 }
8b095871
IC
20600 if (typeof encoding === 'number') {
20601 throw new TypeError('encoding must not be number');
20602 }
20603 if (typeof size !== 'number') {
20604 throw new TypeError('size must be a number');
20605 }
20606 if (size > MAX_LEN) {
20607 throw new RangeError('size is too large');
20608 }
20609 var enc = encoding;
20610 var _fill = fill;
20611 if (_fill === undefined) {
20612 enc = undefined;
20613 _fill = 0;
20614 }
20615 var buf = new Buffer(size);
20616 if (typeof _fill === 'string') {
20617 var fillBuf = new Buffer(_fill, enc);
20618 var flen = fillBuf.length;
20619 var i = -1;
20620 while (++i < size) {
20621 buf[i] = fillBuf[i % flen];
ab78acc6 20622 }
ab78acc6 20623 } else {
8b095871 20624 buf.fill(_fill);
ab78acc6 20625 }
8b095871 20626 return buf;
ab78acc6 20627}
8b095871
IC
20628exports.allocUnsafe = function allocUnsafe(size) {
20629 if (typeof Buffer.allocUnsafe === 'function') {
20630 return Buffer.allocUnsafe(size);
20631 }
20632 if (typeof size !== 'number') {
20633 throw new TypeError('size must be a number');
20634 }
20635 if (size > MAX_LEN) {
20636 throw new RangeError('size is too large');
20637 }
20638 return new Buffer(size);
ab78acc6 20639}
8b095871
IC
20640exports.from = function from(value, encodingOrOffset, length) {
20641 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
20642 return Buffer.from(value, encodingOrOffset, length);
20643 }
20644 if (typeof value === 'number') {
20645 throw new TypeError('"value" argument must not be a number');
20646 }
20647 if (typeof value === 'string') {
20648 return new Buffer(value, encodingOrOffset);
20649 }
20650 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
20651 var offset = encodingOrOffset;
20652 if (arguments.length === 1) {
20653 return new Buffer(value);
20654 }
20655 if (typeof offset === 'undefined') {
20656 offset = 0;
20657 }
20658 var len = length;
20659 if (typeof len === 'undefined') {
20660 len = value.byteLength - offset;
20661 }
20662 if (offset >= value.byteLength) {
20663 throw new RangeError('\'offset\' is out of bounds');
20664 }
20665 if (len > value.byteLength - offset) {
20666 throw new RangeError('\'length\' is out of bounds');
20667 }
20668 return new Buffer(value.slice(offset, offset + len));
20669 }
20670 if (Buffer.isBuffer(value)) {
20671 var out = new Buffer(value.length);
20672 value.copy(out, 0, 0, value.length);
20673 return out;
20674 }
20675 if (value) {
20676 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
20677 return new Buffer(value);
20678 }
20679 if (value.type === 'Buffer' && Array.isArray(value.data)) {
20680 return new Buffer(value.data);
20681 }
20682 }
3af2954a 20683
8b095871 20684 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
ab78acc6 20685}
8b095871
IC
20686exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
20687 if (typeof Buffer.allocUnsafeSlow === 'function') {
20688 return Buffer.allocUnsafeSlow(size);
20689 }
20690 if (typeof size !== 'number') {
20691 throw new TypeError('size must be a number');
20692 }
20693 if (size >= MAX_LEN) {
20694 throw new RangeError('size is too large');
20695 }
20696 return new SlowBuffer(size);
ab78acc6 20697}
3af2954a 20698
8b095871
IC
20699}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20700},{"buffer":5}],5:[function(require,module,exports){
20701/*!
20702 * The buffer module from node.js, for the browser.
20703 *
20704 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20705 * @license MIT
20706 */
20707/* eslint-disable no-proto */
3af2954a 20708
8b095871 20709'use strict'
3af2954a 20710
8b095871
IC
20711var base64 = require('base64-js')
20712var ieee754 = require('ieee754')
3af2954a 20713
8b095871
IC
20714exports.Buffer = Buffer
20715exports.SlowBuffer = SlowBuffer
20716exports.INSPECT_MAX_BYTES = 50
20717
20718var K_MAX_LENGTH = 0x7fffffff
20719exports.kMaxLength = K_MAX_LENGTH
20720
20721/**
20722 * If `Buffer.TYPED_ARRAY_SUPPORT`:
20723 * === true Use Uint8Array implementation (fastest)
20724 * === false Print warning and recommend using `buffer` v4.x which has an Object
20725 * implementation (most compatible, even IE6)
20726 *
20727 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
20728 * Opera 11.6+, iOS 4.2+.
20729 *
20730 * We report that the browser does not support typed arrays if the are not subclassable
20731 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
20732 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
20733 * for __proto__ and has a buggy typed array implementation.
20734 */
20735Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
20736
20737if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
20738 typeof console.error === 'function') {
20739 console.error(
20740 'This browser lacks typed array (Uint8Array) support which is required by ' +
20741 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
20742 )
ab78acc6 20743}
3af2954a 20744
8b095871
IC
20745function typedArraySupport () {
20746 // Can typed array instances can be augmented?
20747 try {
20748 var arr = new Uint8Array(1)
20749 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
20750 return arr.foo() === 42
20751 } catch (e) {
20752 return false
20753 }
ab78acc6 20754}
3af2954a 20755
8b095871
IC
20756function createBuffer (length) {
20757 if (length > K_MAX_LENGTH) {
20758 throw new RangeError('Invalid typed array length')
3af2954a 20759 }
8b095871
IC
20760 // Return an augmented `Uint8Array` instance
20761 var buf = new Uint8Array(length)
20762 buf.__proto__ = Buffer.prototype
20763 return buf
ab78acc6 20764}
3af2954a 20765
8b095871
IC
20766/**
20767 * The Buffer constructor returns instances of `Uint8Array` that have their
20768 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
20769 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
20770 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
20771 * returns a single octet.
20772 *
20773 * The `Uint8Array` prototype remains unmodified.
20774 */
3af2954a 20775
8b095871
IC
20776function Buffer (arg, encodingOrOffset, length) {
20777 // Common case.
20778 if (typeof arg === 'number') {
20779 if (typeof encodingOrOffset === 'string') {
20780 throw new Error(
20781 'If encoding is specified then the first argument must be a string'
20782 )
20783 }
20784 return allocUnsafe(arg)
20785 }
20786 return from(arg, encodingOrOffset, length)
ab78acc6 20787}
3af2954a 20788
8b095871
IC
20789// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
20790if (typeof Symbol !== 'undefined' && Symbol.species &&
20791 Buffer[Symbol.species] === Buffer) {
20792 Object.defineProperty(Buffer, Symbol.species, {
20793 value: null,
20794 configurable: true,
20795 enumerable: false,
20796 writable: false
20797 })
ab78acc6 20798}
3af2954a 20799
8b095871 20800Buffer.poolSize = 8192 // not used by this implementation
3af2954a 20801
8b095871
IC
20802function from (value, encodingOrOffset, length) {
20803 if (typeof value === 'number') {
20804 throw new TypeError('"value" argument must not be a number')
20805 }
3af2954a 20806
8b095871
IC
20807 if (value instanceof ArrayBuffer) {
20808 return fromArrayBuffer(value, encodingOrOffset, length)
20809 }
3af2954a 20810
8b095871
IC
20811 if (typeof value === 'string') {
20812 return fromString(value, encodingOrOffset)
20813 }
3af2954a 20814
8b095871 20815 return fromObject(value)
ab78acc6 20816}
3af2954a 20817
8b095871
IC
20818/**
20819 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
20820 * if value is a number.
20821 * Buffer.from(str[, encoding])
20822 * Buffer.from(array)
20823 * Buffer.from(buffer)
20824 * Buffer.from(arrayBuffer[, byteOffset[, length]])
20825 **/
20826Buffer.from = function (value, encodingOrOffset, length) {
20827 return from(value, encodingOrOffset, length)
ab78acc6 20828}
3af2954a 20829
8b095871
IC
20830// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
20831// https://github.com/feross/buffer/pull/148
20832Buffer.prototype.__proto__ = Uint8Array.prototype
20833Buffer.__proto__ = Uint8Array
20834
20835function assertSize (size) {
20836 if (typeof size !== 'number') {
20837 throw new TypeError('"size" argument must be a number')
20838 } else if (size < 0) {
20839 throw new RangeError('"size" argument must not be negative')
20840 }
20841}
20842
20843function alloc (size, fill, encoding) {
20844 assertSize(size)
20845 if (size <= 0) {
20846 return createBuffer(size)
3af2954a 20847 }
8b095871
IC
20848 if (fill !== undefined) {
20849 // Only pay attention to encoding if it's a string. This
20850 // prevents accidentally sending in a number that would
20851 // be interpretted as a start offset.
20852 return typeof encoding === 'string'
20853 ? createBuffer(size).fill(fill, encoding)
20854 : createBuffer(size).fill(fill)
20855 }
20856 return createBuffer(size)
ab78acc6 20857}
3af2954a 20858
8b095871
IC
20859/**
20860 * Creates a new filled Buffer instance.
20861 * alloc(size[, fill[, encoding]])
20862 **/
20863Buffer.alloc = function (size, fill, encoding) {
20864 return alloc(size, fill, encoding)
ab78acc6 20865}
3af2954a 20866
8b095871
IC
20867function allocUnsafe (size) {
20868 assertSize(size)
20869 return createBuffer(size < 0 ? 0 : checked(size) | 0)
ab78acc6 20870}
3af2954a 20871
8b095871
IC
20872/**
20873 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
20874 * */
20875Buffer.allocUnsafe = function (size) {
20876 return allocUnsafe(size)
20877}
20878/**
20879 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
20880 */
20881Buffer.allocUnsafeSlow = function (size) {
20882 return allocUnsafe(size)
ab78acc6 20883}
3af2954a 20884
8b095871
IC
20885function fromString (string, encoding) {
20886 if (typeof encoding !== 'string' || encoding === '') {
20887 encoding = 'utf8'
20888 }
20889
20890 if (!Buffer.isEncoding(encoding)) {
20891 throw new TypeError('"encoding" must be a valid string encoding')
20892 }
20893
20894 var length = byteLength(string, encoding) | 0
20895 var buf = createBuffer(length)
20896
20897 var actual = buf.write(string, encoding)
20898
20899 if (actual !== length) {
20900 // Writing a hex string, for example, that contains invalid characters will
20901 // cause everything after the first invalid character to be ignored. (e.g.
20902 // 'abxxcd' will be treated as 'ab')
20903 buf = buf.slice(0, actual)
20904 }
20905
20906 return buf
ab78acc6 20907}
3af2954a 20908
8b095871
IC
20909function fromArrayLike (array) {
20910 var length = array.length < 0 ? 0 : checked(array.length) | 0
20911 var buf = createBuffer(length)
20912 for (var i = 0; i < length; i += 1) {
20913 buf[i] = array[i] & 255
20914 }
20915 return buf
20916}
3af2954a 20917
8b095871
IC
20918function fromArrayBuffer (array, byteOffset, length) {
20919 if (byteOffset < 0 || array.byteLength < byteOffset) {
20920 throw new RangeError('\'offset\' is out of bounds')
20921 }
3af2954a 20922
8b095871
IC
20923 if (array.byteLength < byteOffset + (length || 0)) {
20924 throw new RangeError('\'length\' is out of bounds')
ab78acc6
IC
20925 }
20926
8b095871
IC
20927 var buf
20928 if (byteOffset === undefined && length === undefined) {
20929 buf = new Uint8Array(array)
20930 } else if (length === undefined) {
20931 buf = new Uint8Array(array, byteOffset)
20932 } else {
20933 buf = new Uint8Array(array, byteOffset, length)
20934 }
3af2954a 20935
8b095871
IC
20936 // Return an augmented `Uint8Array` instance
20937 buf.__proto__ = Buffer.prototype
20938 return buf
20939}
20940
20941function fromObject (obj) {
20942 if (Buffer.isBuffer(obj)) {
20943 var len = checked(obj.length) | 0
20944 var buf = createBuffer(len)
20945
20946 if (buf.length === 0) {
20947 return buf
ab78acc6 20948 }
8b095871
IC
20949
20950 obj.copy(buf, 0, 0, len)
20951 return buf
20952 }
20953
20954 if (obj) {
20955 if (ArrayBuffer.isView(obj) || 'length' in obj) {
20956 if (typeof obj.length !== 'number' || isnan(obj.length)) {
20957 return createBuffer(0)
ab78acc6 20958 }
8b095871 20959 return fromArrayLike(obj)
ab78acc6 20960 }
3af2954a 20961
8b095871
IC
20962 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
20963 return fromArrayLike(obj.data)
3af2954a
IC
20964 }
20965 }
8b095871
IC
20966
20967 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
ab78acc6 20968}
3af2954a 20969
8b095871
IC
20970function checked (length) {
20971 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
20972 // length is NaN (which is otherwise coerced to zero.)
20973 if (length >= K_MAX_LENGTH) {
20974 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
20975 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
ab78acc6 20976 }
8b095871
IC
20977 return length | 0
20978}
20979
20980function SlowBuffer (length) {
20981 if (+length != length) { // eslint-disable-line eqeqeq
20982 length = 0
3af2954a 20983 }
8b095871 20984 return Buffer.alloc(+length)
ab78acc6 20985}
3af2954a 20986
8b095871
IC
20987Buffer.isBuffer = function isBuffer (b) {
20988 return b != null && b._isBuffer === true
ab78acc6 20989}
3af2954a 20990
8b095871
IC
20991Buffer.compare = function compare (a, b) {
20992 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
20993 throw new TypeError('Arguments must be Buffers')
20994 }
20995
20996 if (a === b) return 0
20997
20998 var x = a.length
20999 var y = b.length
21000
21001 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
21002 if (a[i] !== b[i]) {
21003 x = a[i]
21004 y = b[i]
21005 break
ab78acc6
IC
21006 }
21007 }
8b095871
IC
21008
21009 if (x < y) return -1
21010 if (y < x) return 1
21011 return 0
21012}
21013
21014Buffer.isEncoding = function isEncoding (encoding) {
21015 switch (String(encoding).toLowerCase()) {
21016 case 'hex':
21017 case 'utf8':
21018 case 'utf-8':
21019 case 'ascii':
21020 case 'latin1':
21021 case 'binary':
21022 case 'base64':
21023 case 'ucs2':
21024 case 'ucs-2':
21025 case 'utf16le':
21026 case 'utf-16le':
21027 return true
21028 default:
21029 return false
21030 }
ab78acc6
IC
21031}
21032
8b095871
IC
21033Buffer.concat = function concat (list, length) {
21034 if (!Array.isArray(list)) {
21035 throw new TypeError('"list" argument must be an Array of Buffers')
21036 }
ab78acc6 21037
8b095871
IC
21038 if (list.length === 0) {
21039 return Buffer.alloc(0)
21040 }
ab78acc6 21041
8b095871
IC
21042 var i
21043 if (length === undefined) {
21044 length = 0
21045 for (i = 0; i < list.length; ++i) {
21046 length += list[i].length
21047 }
3af2954a 21048 }
8b095871
IC
21049
21050 var buffer = Buffer.allocUnsafe(length)
21051 var pos = 0
21052 for (i = 0; i < list.length; ++i) {
21053 var buf = list[i]
21054 if (!Buffer.isBuffer(buf)) {
21055 throw new TypeError('"list" argument must be an Array of Buffers')
21056 }
21057 buf.copy(buffer, pos)
21058 pos += buf.length
ab78acc6 21059 }
8b095871 21060 return buffer
ab78acc6
IC
21061}
21062
8b095871
IC
21063function byteLength (string, encoding) {
21064 if (Buffer.isBuffer(string)) {
21065 return string.length
21066 }
21067 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
21068 return string.byteLength
21069 }
21070 if (typeof string !== 'string') {
21071 string = '' + string
21072 }
21073
21074 var len = string.length
21075 if (len === 0) return 0
21076
21077 // Use a for loop to avoid recursion
21078 var loweredCase = false
21079 for (;;) {
21080 switch (encoding) {
21081 case 'ascii':
21082 case 'latin1':
21083 case 'binary':
21084 return len
21085 case 'utf8':
21086 case 'utf-8':
21087 case undefined:
21088 return utf8ToBytes(string).length
21089 case 'ucs2':
21090 case 'ucs-2':
21091 case 'utf16le':
21092 case 'utf-16le':
21093 return len * 2
21094 case 'hex':
21095 return len >>> 1
21096 case 'base64':
21097 return base64ToBytes(string).length
21098 default:
21099 if (loweredCase) return utf8ToBytes(string).length // assume utf8
21100 encoding = ('' + encoding).toLowerCase()
21101 loweredCase = true
ab78acc6 21102 }
3af2954a 21103 }
ab78acc6 21104}
8b095871 21105Buffer.byteLength = byteLength
3af2954a 21106
8b095871
IC
21107function slowToString (encoding, start, end) {
21108 var loweredCase = false
3af2954a 21109
8b095871
IC
21110 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
21111 // property of a typed array.
3af2954a 21112
8b095871
IC
21113 // This behaves neither like String nor Uint8Array in that we set start/end
21114 // to their upper/lower bounds if the value passed is out of range.
21115 // undefined is handled specially as per ECMA-262 6th Edition,
21116 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
21117 if (start === undefined || start < 0) {
21118 start = 0
21119 }
21120 // Return early if start > this.length. Done here to prevent potential uint32
21121 // coercion fail below.
21122 if (start > this.length) {
21123 return ''
21124 }
3af2954a 21125
8b095871
IC
21126 if (end === undefined || end > this.length) {
21127 end = this.length
21128 }
3af2954a 21129
8b095871
IC
21130 if (end <= 0) {
21131 return ''
21132 }
3af2954a 21133
8b095871
IC
21134 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
21135 end >>>= 0
21136 start >>>= 0
3af2954a 21137
8b095871
IC
21138 if (end <= start) {
21139 return ''
3af2954a
IC
21140 }
21141
8b095871 21142 if (!encoding) encoding = 'utf8'
3af2954a 21143
8b095871
IC
21144 while (true) {
21145 switch (encoding) {
21146 case 'hex':
21147 return hexSlice(this, start, end)
21148
21149 case 'utf8':
21150 case 'utf-8':
21151 return utf8Slice(this, start, end)
21152
21153 case 'ascii':
21154 return asciiSlice(this, start, end)
21155
21156 case 'latin1':
21157 case 'binary':
21158 return latin1Slice(this, start, end)
21159
21160 case 'base64':
21161 return base64Slice(this, start, end)
21162
21163 case 'ucs2':
21164 case 'ucs-2':
21165 case 'utf16le':
21166 case 'utf-16le':
21167 return utf16leSlice(this, start, end)
21168
21169 default:
21170 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21171 encoding = (encoding + '').toLowerCase()
21172 loweredCase = true
21173 }
21174 }
ab78acc6 21175}
3af2954a 21176
8b095871
IC
21177// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
21178// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
21179// reliably in a browserify context because there could be multiple different
21180// copies of the 'buffer' package in use. This method works even for Buffer
21181// instances that were created from another copy of the `buffer` package.
21182// See: https://github.com/feross/buffer/issues/154
21183Buffer.prototype._isBuffer = true
21184
21185function swap (b, n, m) {
21186 var i = b[n]
21187 b[n] = b[m]
21188 b[m] = i
ab78acc6 21189}
3af2954a 21190
8b095871
IC
21191Buffer.prototype.swap16 = function swap16 () {
21192 var len = this.length
21193 if (len % 2 !== 0) {
21194 throw new RangeError('Buffer size must be a multiple of 16-bits')
21195 }
21196 for (var i = 0; i < len; i += 2) {
21197 swap(this, i, i + 1)
21198 }
21199 return this
21200}
3af2954a 21201
8b095871
IC
21202Buffer.prototype.swap32 = function swap32 () {
21203 var len = this.length
21204 if (len % 4 !== 0) {
21205 throw new RangeError('Buffer size must be a multiple of 32-bits')
21206 }
21207 for (var i = 0; i < len; i += 4) {
21208 swap(this, i, i + 3)
21209 swap(this, i + 1, i + 2)
21210 }
21211 return this
21212}
3af2954a 21213
8b095871
IC
21214Buffer.prototype.swap64 = function swap64 () {
21215 var len = this.length
21216 if (len % 8 !== 0) {
21217 throw new RangeError('Buffer size must be a multiple of 64-bits')
3af2954a 21218 }
8b095871
IC
21219 for (var i = 0; i < len; i += 8) {
21220 swap(this, i, i + 7)
21221 swap(this, i + 1, i + 6)
21222 swap(this, i + 2, i + 5)
21223 swap(this, i + 3, i + 4)
21224 }
21225 return this
21226}
3af2954a 21227
8b095871
IC
21228Buffer.prototype.toString = function toString () {
21229 var length = this.length
21230 if (length === 0) return ''
21231 if (arguments.length === 0) return utf8Slice(this, 0, length)
21232 return slowToString.apply(this, arguments)
ab78acc6 21233}
3af2954a 21234
8b095871
IC
21235Buffer.prototype.equals = function equals (b) {
21236 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
21237 if (this === b) return true
21238 return Buffer.compare(this, b) === 0
21239}
3af2954a 21240
8b095871
IC
21241Buffer.prototype.inspect = function inspect () {
21242 var str = ''
21243 var max = exports.INSPECT_MAX_BYTES
21244 if (this.length > 0) {
21245 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
21246 if (this.length > max) str += ' ... '
21247 }
21248 return '<Buffer ' + str + '>'
ab78acc6 21249}
3af2954a 21250
8b095871
IC
21251Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
21252 if (!Buffer.isBuffer(target)) {
21253 throw new TypeError('Argument must be a Buffer')
21254 }
3af2954a 21255
8b095871
IC
21256 if (start === undefined) {
21257 start = 0
21258 }
21259 if (end === undefined) {
21260 end = target ? target.length : 0
21261 }
21262 if (thisStart === undefined) {
21263 thisStart = 0
21264 }
21265 if (thisEnd === undefined) {
21266 thisEnd = this.length
21267 }
3af2954a 21268
8b095871
IC
21269 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
21270 throw new RangeError('out of range index')
21271 }
3af2954a 21272
8b095871
IC
21273 if (thisStart >= thisEnd && start >= end) {
21274 return 0
21275 }
21276 if (thisStart >= thisEnd) {
21277 return -1
21278 }
21279 if (start >= end) {
21280 return 1
21281 }
3af2954a 21282
8b095871
IC
21283 start >>>= 0
21284 end >>>= 0
21285 thisStart >>>= 0
21286 thisEnd >>>= 0
3af2954a 21287
8b095871 21288 if (this === target) return 0
3af2954a 21289
8b095871
IC
21290 var x = thisEnd - thisStart
21291 var y = end - start
21292 var len = Math.min(x, y)
21293
21294 var thisCopy = this.slice(thisStart, thisEnd)
21295 var targetCopy = target.slice(start, end)
21296
21297 for (var i = 0; i < len; ++i) {
21298 if (thisCopy[i] !== targetCopy[i]) {
21299 x = thisCopy[i]
21300 y = targetCopy[i]
21301 break
3af2954a 21302 }
8b095871
IC
21303 }
21304
21305 if (x < y) return -1
21306 if (y < x) return 1
21307 return 0
ab78acc6 21308}
3af2954a 21309
8b095871
IC
21310// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
21311// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
ab78acc6 21312//
8b095871
IC
21313// Arguments:
21314// - buffer - a Buffer to search
21315// - val - a string, Buffer, or number
21316// - byteOffset - an index into `buffer`; will be clamped to an int32
21317// - encoding - an optional encoding, relevant is val is a string
21318// - dir - true for indexOf, false for lastIndexOf
21319function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
21320 // Empty buffer means no match
21321 if (buffer.length === 0) return -1
21322
21323 // Normalize byteOffset
21324 if (typeof byteOffset === 'string') {
21325 encoding = byteOffset
21326 byteOffset = 0
21327 } else if (byteOffset > 0x7fffffff) {
21328 byteOffset = 0x7fffffff
21329 } else if (byteOffset < -0x80000000) {
21330 byteOffset = -0x80000000
21331 }
21332 byteOffset = +byteOffset // Coerce to Number.
21333 if (isNaN(byteOffset)) {
21334 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
21335 byteOffset = dir ? 0 : (buffer.length - 1)
21336 }
21337
21338 // Normalize byteOffset: negative offsets start from the end of the buffer
21339 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
21340 if (byteOffset >= buffer.length) {
21341 if (dir) return -1
21342 else byteOffset = buffer.length - 1
21343 } else if (byteOffset < 0) {
21344 if (dir) byteOffset = 0
21345 else return -1
21346 }
21347
21348 // Normalize val
21349 if (typeof val === 'string') {
21350 val = Buffer.from(val, encoding)
21351 }
3af2954a 21352
8b095871
IC
21353 // Finally, search either indexOf (if dir is true) or lastIndexOf
21354 if (Buffer.isBuffer(val)) {
21355 // Special case: looking for empty string/buffer always fails
21356 if (val.length === 0) {
21357 return -1
21358 }
21359 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
21360 } else if (typeof val === 'number') {
21361 val = val & 0xFF // Search for a byte value [0-255]
21362 if (typeof Uint8Array.prototype.indexOf === 'function') {
21363 if (dir) {
21364 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
21365 } else {
21366 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
21367 }
21368 }
21369 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
21370 }
3af2954a 21371
8b095871
IC
21372 throw new TypeError('val must be string, number or Buffer')
21373}
3af2954a 21374
8b095871
IC
21375function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
21376 var indexSize = 1
21377 var arrLength = arr.length
21378 var valLength = val.length
3af2954a 21379
8b095871
IC
21380 if (encoding !== undefined) {
21381 encoding = String(encoding).toLowerCase()
21382 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
21383 encoding === 'utf16le' || encoding === 'utf-16le') {
21384 if (arr.length < 2 || val.length < 2) {
21385 return -1
21386 }
21387 indexSize = 2
21388 arrLength /= 2
21389 valLength /= 2
21390 byteOffset /= 2
21391 }
21392 }
3af2954a 21393
8b095871
IC
21394 function read (buf, i) {
21395 if (indexSize === 1) {
21396 return buf[i]
21397 } else {
21398 return buf.readUInt16BE(i * indexSize)
21399 }
21400 }
3af2954a 21401
8b095871
IC
21402 var i
21403 if (dir) {
21404 var foundIndex = -1
21405 for (i = byteOffset; i < arrLength; i++) {
21406 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
21407 if (foundIndex === -1) foundIndex = i
21408 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
21409 } else {
21410 if (foundIndex !== -1) i -= i - foundIndex
21411 foundIndex = -1
21412 }
21413 }
ab78acc6 21414 } else {
8b095871
IC
21415 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
21416 for (i = byteOffset; i >= 0; i--) {
21417 var found = true
21418 for (var j = 0; j < valLength; j++) {
21419 if (read(arr, i + j) !== read(val, j)) {
21420 found = false
21421 break
21422 }
21423 }
21424 if (found) return i
21425 }
ab78acc6 21426 }
3af2954a 21427
8b095871
IC
21428 return -1
21429}
3af2954a 21430
8b095871
IC
21431Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
21432 return this.indexOf(val, byteOffset, encoding) !== -1
21433}
21434
21435Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
21436 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
21437}
3af2954a 21438
8b095871
IC
21439Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
21440 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
21441}
21442
21443function hexWrite (buf, string, offset, length) {
21444 offset = Number(offset) || 0
21445 var remaining = buf.length - offset
21446 if (!length) {
21447 length = remaining
21448 } else {
21449 length = Number(length)
21450 if (length > remaining) {
21451 length = remaining
3af2954a 21452 }
3af2954a
IC
21453 }
21454
8b095871
IC
21455 // must be an even number of digits
21456 var strLen = string.length
21457 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
3af2954a 21458
8b095871
IC
21459 if (length > strLen / 2) {
21460 length = strLen / 2
ab78acc6 21461 }
8b095871
IC
21462 for (var i = 0; i < length; ++i) {
21463 var parsed = parseInt(string.substr(i * 2, 2), 16)
21464 if (isNaN(parsed)) return i
21465 buf[offset + i] = parsed
ab78acc6 21466 }
8b095871 21467 return i
ab78acc6 21468}
3af2954a 21469
8b095871
IC
21470function utf8Write (buf, string, offset, length) {
21471 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
ab78acc6 21472}
3af2954a 21473
8b095871
IC
21474function asciiWrite (buf, string, offset, length) {
21475 return blitBuffer(asciiToBytes(string), buf, offset, length)
ab78acc6 21476}
3af2954a 21477
8b095871
IC
21478function latin1Write (buf, string, offset, length) {
21479 return asciiWrite(buf, string, offset, length)
ab78acc6 21480}
3af2954a 21481
8b095871
IC
21482function base64Write (buf, string, offset, length) {
21483 return blitBuffer(base64ToBytes(string), buf, offset, length)
ab78acc6 21484}
3af2954a 21485
8b095871
IC
21486function ucs2Write (buf, string, offset, length) {
21487 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
21488}
3af2954a 21489
8b095871
IC
21490Buffer.prototype.write = function write (string, offset, length, encoding) {
21491 // Buffer#write(string)
21492 if (offset === undefined) {
21493 encoding = 'utf8'
21494 length = this.length
21495 offset = 0
21496 // Buffer#write(string, encoding)
21497 } else if (length === undefined && typeof offset === 'string') {
21498 encoding = offset
21499 length = this.length
21500 offset = 0
21501 // Buffer#write(string, offset[, length][, encoding])
21502 } else if (isFinite(offset)) {
21503 offset = offset >>> 0
21504 if (isFinite(length)) {
21505 length = length >>> 0
21506 if (encoding === undefined) encoding = 'utf8'
21507 } else {
21508 encoding = length
21509 length = undefined
21510 }
21511 } else {
21512 throw new Error(
21513 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
21514 )
3af2954a
IC
21515 }
21516
8b095871
IC
21517 var remaining = this.length - offset
21518 if (length === undefined || length > remaining) length = remaining
3af2954a 21519
8b095871
IC
21520 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
21521 throw new RangeError('Attempt to write outside buffer bounds')
ab78acc6 21522 }
3af2954a 21523
8b095871 21524 if (!encoding) encoding = 'utf8'
3af2954a 21525
8b095871
IC
21526 var loweredCase = false
21527 for (;;) {
21528 switch (encoding) {
21529 case 'hex':
21530 return hexWrite(this, string, offset, length)
3af2954a 21531
8b095871
IC
21532 case 'utf8':
21533 case 'utf-8':
21534 return utf8Write(this, string, offset, length)
3af2954a 21535
8b095871
IC
21536 case 'ascii':
21537 return asciiWrite(this, string, offset, length)
3af2954a 21538
8b095871
IC
21539 case 'latin1':
21540 case 'binary':
21541 return latin1Write(this, string, offset, length)
3af2954a 21542
8b095871
IC
21543 case 'base64':
21544 // Warning: maxLength not taken into account in base64Write
21545 return base64Write(this, string, offset, length)
3af2954a 21546
8b095871
IC
21547 case 'ucs2':
21548 case 'ucs-2':
21549 case 'utf16le':
21550 case 'utf-16le':
21551 return ucs2Write(this, string, offset, length)
3af2954a 21552
8b095871
IC
21553 default:
21554 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21555 encoding = ('' + encoding).toLowerCase()
21556 loweredCase = true
21557 }
3af2954a 21558 }
ab78acc6 21559}
3af2954a 21560
8b095871
IC
21561Buffer.prototype.toJSON = function toJSON () {
21562 return {
21563 type: 'Buffer',
21564 data: Array.prototype.slice.call(this._arr || this, 0)
3af2954a 21565 }
ab78acc6
IC
21566}
21567
8b095871
IC
21568function base64Slice (buf, start, end) {
21569 if (start === 0 && end === buf.length) {
21570 return base64.fromByteArray(buf)
21571 } else {
21572 return base64.fromByteArray(buf.slice(start, end))
3af2954a 21573 }
8b095871 21574}
3af2954a 21575
8b095871
IC
21576function utf8Slice (buf, start, end) {
21577 end = Math.min(buf.length, end)
21578 var res = []
3af2954a 21579
8b095871
IC
21580 var i = start
21581 while (i < end) {
21582 var firstByte = buf[i]
21583 var codePoint = null
21584 var bytesPerSequence = (firstByte > 0xEF) ? 4
21585 : (firstByte > 0xDF) ? 3
21586 : (firstByte > 0xBF) ? 2
21587 : 1
3af2954a 21588
8b095871
IC
21589 if (i + bytesPerSequence <= end) {
21590 var secondByte, thirdByte, fourthByte, tempCodePoint
3af2954a 21591
8b095871
IC
21592 switch (bytesPerSequence) {
21593 case 1:
21594 if (firstByte < 0x80) {
21595 codePoint = firstByte
21596 }
21597 break
21598 case 2:
21599 secondByte = buf[i + 1]
21600 if ((secondByte & 0xC0) === 0x80) {
21601 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
21602 if (tempCodePoint > 0x7F) {
21603 codePoint = tempCodePoint
21604 }
21605 }
21606 break
21607 case 3:
21608 secondByte = buf[i + 1]
21609 thirdByte = buf[i + 2]
21610 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
21611 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
21612 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
21613 codePoint = tempCodePoint
21614 }
21615 }
21616 break
21617 case 4:
21618 secondByte = buf[i + 1]
21619 thirdByte = buf[i + 2]
21620 fourthByte = buf[i + 3]
21621 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
21622 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
21623 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
21624 codePoint = tempCodePoint
21625 }
21626 }
21627 }
21628 }
3af2954a 21629
8b095871
IC
21630 if (codePoint === null) {
21631 // we did not generate a valid codePoint so insert a
21632 // replacement char (U+FFFD) and advance only 1 byte
21633 codePoint = 0xFFFD
21634 bytesPerSequence = 1
21635 } else if (codePoint > 0xFFFF) {
21636 // encode to utf16 (surrogate pair dance)
21637 codePoint -= 0x10000
21638 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
21639 codePoint = 0xDC00 | codePoint & 0x3FF
21640 }
21641
21642 res.push(codePoint)
21643 i += bytesPerSequence
3af2954a
IC
21644 }
21645
8b095871 21646 return decodeCodePointsArray(res)
ab78acc6 21647}
3af2954a 21648
8b095871
IC
21649// Based on http://stackoverflow.com/a/22747272/680742, the browser with
21650// the lowest limit is Chrome, with 0x10000 args.
21651// We go 1 magnitude less, for safety
21652var MAX_ARGUMENTS_LENGTH = 0x1000
3af2954a 21653
8b095871
IC
21654function decodeCodePointsArray (codePoints) {
21655 var len = codePoints.length
21656 if (len <= MAX_ARGUMENTS_LENGTH) {
21657 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
3af2954a
IC
21658 }
21659
8b095871
IC
21660 // Decode in chunks to avoid "call stack size exceeded".
21661 var res = ''
21662 var i = 0
21663 while (i < len) {
21664 res += String.fromCharCode.apply(
21665 String,
21666 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
21667 )
3af2954a 21668 }
8b095871
IC
21669 return res
21670}
3af2954a 21671
8b095871
IC
21672function asciiSlice (buf, start, end) {
21673 var ret = ''
21674 end = Math.min(buf.length, end)
3af2954a 21675
8b095871
IC
21676 for (var i = start; i < end; ++i) {
21677 ret += String.fromCharCode(buf[i] & 0x7F)
3af2954a 21678 }
8b095871
IC
21679 return ret
21680}
3af2954a 21681
8b095871
IC
21682function latin1Slice (buf, start, end) {
21683 var ret = ''
21684 end = Math.min(buf.length, end)
3af2954a 21685
8b095871
IC
21686 for (var i = start; i < end; ++i) {
21687 ret += String.fromCharCode(buf[i])
3af2954a 21688 }
8b095871 21689 return ret
ab78acc6 21690}
3af2954a 21691
8b095871
IC
21692function hexSlice (buf, start, end) {
21693 var len = buf.length
3af2954a 21694
8b095871
IC
21695 if (!start || start < 0) start = 0
21696 if (!end || end < 0 || end > len) end = len
3af2954a 21697
8b095871
IC
21698 var out = ''
21699 for (var i = start; i < end; ++i) {
21700 out += toHex(buf[i])
3af2954a 21701 }
8b095871
IC
21702 return out
21703}
3af2954a 21704
8b095871
IC
21705function utf16leSlice (buf, start, end) {
21706 var bytes = buf.slice(start, end)
21707 var res = ''
21708 for (var i = 0; i < bytes.length; i += 2) {
21709 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
21710 }
21711 return res
21712}
3af2954a 21713
8b095871
IC
21714Buffer.prototype.slice = function slice (start, end) {
21715 var len = this.length
21716 start = ~~start
21717 end = end === undefined ? len : ~~end
3af2954a 21718
8b095871
IC
21719 if (start < 0) {
21720 start += len
21721 if (start < 0) start = 0
21722 } else if (start > len) {
21723 start = len
21724 }
3af2954a 21725
8b095871
IC
21726 if (end < 0) {
21727 end += len
21728 if (end < 0) end = 0
21729 } else if (end > len) {
21730 end = len
21731 }
3af2954a 21732
8b095871 21733 if (end < start) end = start
3af2954a 21734
8b095871
IC
21735 var newBuf = this.subarray(start, end)
21736 // Return an augmented `Uint8Array` instance
21737 newBuf.__proto__ = Buffer.prototype
21738 return newBuf
21739}
3af2954a 21740
8b095871
IC
21741/*
21742 * Need to make sure that buffer isn't trying to write out of bounds.
ab78acc6 21743 */
8b095871
IC
21744function checkOffset (offset, ext, length) {
21745 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
21746 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
ab78acc6 21747}
3af2954a 21748
8b095871
IC
21749Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
21750 offset = offset >>> 0
21751 byteLength = byteLength >>> 0
21752 if (!noAssert) checkOffset(offset, byteLength, this.length)
21753
21754 var val = this[offset]
21755 var mul = 1
21756 var i = 0
21757 while (++i < byteLength && (mul *= 0x100)) {
21758 val += this[offset + i] * mul
3af2954a
IC
21759 }
21760
8b095871
IC
21761 return val
21762}
3af2954a 21763
8b095871
IC
21764Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
21765 offset = offset >>> 0
21766 byteLength = byteLength >>> 0
21767 if (!noAssert) {
21768 checkOffset(offset, byteLength, this.length)
ab78acc6 21769 }
3af2954a 21770
8b095871
IC
21771 var val = this[offset + --byteLength]
21772 var mul = 1
21773 while (byteLength > 0 && (mul *= 0x100)) {
21774 val += this[offset + --byteLength] * mul
ab78acc6 21775 }
3af2954a 21776
8b095871 21777 return val
ab78acc6 21778}
3af2954a 21779
8b095871
IC
21780Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
21781 offset = offset >>> 0
21782 if (!noAssert) checkOffset(offset, 1, this.length)
21783 return this[offset]
ab78acc6 21784}
3af2954a 21785
8b095871
IC
21786Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
21787 offset = offset >>> 0
21788 if (!noAssert) checkOffset(offset, 2, this.length)
21789 return this[offset] | (this[offset + 1] << 8)
21790}
3af2954a 21791
8b095871
IC
21792Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
21793 offset = offset >>> 0
21794 if (!noAssert) checkOffset(offset, 2, this.length)
21795 return (this[offset] << 8) | this[offset + 1]
21796}
3af2954a 21797
8b095871
IC
21798Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
21799 offset = offset >>> 0
21800 if (!noAssert) checkOffset(offset, 4, this.length)
21801
21802 return ((this[offset]) |
21803 (this[offset + 1] << 8) |
21804 (this[offset + 2] << 16)) +
21805 (this[offset + 3] * 0x1000000)
ab78acc6 21806}
3af2954a 21807
8b095871
IC
21808Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
21809 offset = offset >>> 0
21810 if (!noAssert) checkOffset(offset, 4, this.length)
3af2954a 21811
8b095871
IC
21812 return (this[offset] * 0x1000000) +
21813 ((this[offset + 1] << 16) |
21814 (this[offset + 2] << 8) |
21815 this[offset + 3])
21816}
3af2954a 21817
8b095871
IC
21818Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
21819 offset = offset >>> 0
21820 byteLength = byteLength >>> 0
21821 if (!noAssert) checkOffset(offset, byteLength, this.length)
3af2954a 21822
8b095871
IC
21823 var val = this[offset]
21824 var mul = 1
21825 var i = 0
21826 while (++i < byteLength && (mul *= 0x100)) {
21827 val += this[offset + i] * mul
3af2954a 21828 }
8b095871 21829 mul *= 0x80
3af2954a 21830
8b095871 21831 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
3af2954a 21832
8b095871 21833 return val
ab78acc6 21834}
3af2954a 21835
8b095871
IC
21836Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
21837 offset = offset >>> 0
21838 byteLength = byteLength >>> 0
21839 if (!noAssert) checkOffset(offset, byteLength, this.length)
3af2954a 21840
8b095871
IC
21841 var i = byteLength
21842 var mul = 1
21843 var val = this[offset + --i]
21844 while (i > 0 && (mul *= 0x100)) {
21845 val += this[offset + --i] * mul
3af2954a 21846 }
8b095871 21847 mul *= 0x80
3af2954a 21848
8b095871
IC
21849 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21850
21851 return val
ab78acc6 21852}
3af2954a 21853
8b095871
IC
21854Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
21855 offset = offset >>> 0
21856 if (!noAssert) checkOffset(offset, 1, this.length)
21857 if (!(this[offset] & 0x80)) return (this[offset])
21858 return ((0xff - this[offset] + 1) * -1)
ab78acc6 21859}
3af2954a 21860
8b095871
IC
21861Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
21862 offset = offset >>> 0
21863 if (!noAssert) checkOffset(offset, 2, this.length)
21864 var val = this[offset] | (this[offset + 1] << 8)
21865 return (val & 0x8000) ? val | 0xFFFF0000 : val
ab78acc6 21866}
3af2954a 21867
8b095871
IC
21868Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
21869 offset = offset >>> 0
21870 if (!noAssert) checkOffset(offset, 2, this.length)
21871 var val = this[offset + 1] | (this[offset] << 8)
21872 return (val & 0x8000) ? val | 0xFFFF0000 : val
21873}
ab78acc6 21874
8b095871
IC
21875Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
21876 offset = offset >>> 0
21877 if (!noAssert) checkOffset(offset, 4, this.length)
3af2954a 21878
8b095871
IC
21879 return (this[offset]) |
21880 (this[offset + 1] << 8) |
21881 (this[offset + 2] << 16) |
21882 (this[offset + 3] << 24)
ab78acc6 21883}
3af2954a 21884
8b095871
IC
21885Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
21886 offset = offset >>> 0
21887 if (!noAssert) checkOffset(offset, 4, this.length)
3af2954a 21888
8b095871
IC
21889 return (this[offset] << 24) |
21890 (this[offset + 1] << 16) |
21891 (this[offset + 2] << 8) |
21892 (this[offset + 3])
21893}
3af2954a 21894
8b095871
IC
21895Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
21896 offset = offset >>> 0
21897 if (!noAssert) checkOffset(offset, 4, this.length)
21898 return ieee754.read(this, offset, true, 23, 4)
ab78acc6 21899}
3af2954a 21900
8b095871
IC
21901Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
21902 offset = offset >>> 0
21903 if (!noAssert) checkOffset(offset, 4, this.length)
21904 return ieee754.read(this, offset, false, 23, 4)
ab78acc6 21905}
3af2954a 21906
8b095871
IC
21907Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
21908 offset = offset >>> 0
21909 if (!noAssert) checkOffset(offset, 8, this.length)
21910 return ieee754.read(this, offset, true, 52, 8)
21911}
3af2954a 21912
8b095871
IC
21913Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
21914 offset = offset >>> 0
21915 if (!noAssert) checkOffset(offset, 8, this.length)
21916 return ieee754.read(this, offset, false, 52, 8)
ab78acc6 21917}
3af2954a 21918
8b095871
IC
21919function checkInt (buf, value, offset, ext, max, min) {
21920 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
21921 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
21922 if (offset + ext > buf.length) throw new RangeError('Index out of range')
ab78acc6 21923}
3af2954a 21924
8b095871
IC
21925Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
21926 value = +value
21927 offset = offset >>> 0
21928 byteLength = byteLength >>> 0
21929 if (!noAssert) {
21930 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21931 checkInt(this, value, offset, byteLength, maxBytes, 0)
3af2954a
IC
21932 }
21933
8b095871 21934 var mul = 1
ab78acc6 21935 var i = 0
8b095871
IC
21936 this[offset] = value & 0xFF
21937 while (++i < byteLength && (mul *= 0x100)) {
21938 this[offset + i] = (value / mul) & 0xFF
21939 }
3af2954a 21940
8b095871
IC
21941 return offset + byteLength
21942}
21943
21944Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
21945 value = +value
21946 offset = offset >>> 0
21947 byteLength = byteLength >>> 0
21948 if (!noAssert) {
21949 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21950 checkInt(this, value, offset, byteLength, maxBytes, 0)
ab78acc6 21951 }
3af2954a 21952
8b095871
IC
21953 var i = byteLength - 1
21954 var mul = 1
21955 this[offset + i] = value & 0xFF
21956 while (--i >= 0 && (mul *= 0x100)) {
21957 this[offset + i] = (value / mul) & 0xFF
ab78acc6 21958 }
3af2954a 21959
8b095871
IC
21960 return offset + byteLength
21961}
21962
21963Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
21964 value = +value
21965 offset = offset >>> 0
21966 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
21967 this[offset] = (value & 0xff)
21968 return offset + 1
21969}
21970
21971Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
21972 value = +value
21973 offset = offset >>> 0
21974 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21975 this[offset] = (value & 0xff)
21976 this[offset + 1] = (value >>> 8)
21977 return offset + 2
21978}
21979
21980Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
21981 value = +value
21982 offset = offset >>> 0
21983 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21984 this[offset] = (value >>> 8)
21985 this[offset + 1] = (value & 0xff)
21986 return offset + 2
ab78acc6 21987}
3af2954a 21988
8b095871
IC
21989Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
21990 value = +value
21991 offset = offset >>> 0
21992 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21993 this[offset + 3] = (value >>> 24)
21994 this[offset + 2] = (value >>> 16)
21995 this[offset + 1] = (value >>> 8)
21996 this[offset] = (value & 0xff)
21997 return offset + 4
ab78acc6 21998}
3af2954a 21999
8b095871
IC
22000Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
22001 value = +value
22002 offset = offset >>> 0
22003 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
22004 this[offset] = (value >>> 24)
22005 this[offset + 1] = (value >>> 16)
22006 this[offset + 2] = (value >>> 8)
22007 this[offset + 3] = (value & 0xff)
22008 return offset + 4
22009}
3af2954a 22010
8b095871
IC
22011Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
22012 value = +value
22013 offset = offset >>> 0
22014 if (!noAssert) {
22015 var limit = Math.pow(2, (8 * byteLength) - 1)
22016
22017 checkInt(this, value, offset, byteLength, limit - 1, -limit)
3af2954a
IC
22018 }
22019
8b095871
IC
22020 var i = 0
22021 var mul = 1
22022 var sub = 0
22023 this[offset] = value & 0xFF
22024 while (++i < byteLength && (mul *= 0x100)) {
22025 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
22026 sub = 1
ab78acc6 22027 }
8b095871 22028 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
3af2954a
IC
22029 }
22030
8b095871 22031 return offset + byteLength
ab78acc6 22032}
3af2954a 22033
8b095871
IC
22034Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
22035 value = +value
22036 offset = offset >>> 0
22037 if (!noAssert) {
22038 var limit = Math.pow(2, (8 * byteLength) - 1)
ab78acc6 22039
8b095871
IC
22040 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22041 }
ab78acc6 22042
8b095871
IC
22043 var i = byteLength - 1
22044 var mul = 1
22045 var sub = 0
22046 this[offset + i] = value & 0xFF
22047 while (--i >= 0 && (mul *= 0x100)) {
22048 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
22049 sub = 1
3af2954a 22050 }
8b095871 22051 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
3af2954a 22052 }
3af2954a 22053
8b095871
IC
22054 return offset + byteLength
22055}
3af2954a 22056
8b095871
IC
22057Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
22058 value = +value
22059 offset = offset >>> 0
22060 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
22061 if (value < 0) value = 0xff + value + 1
22062 this[offset] = (value & 0xff)
22063 return offset + 1
22064}
3af2954a 22065
8b095871
IC
22066Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
22067 value = +value
22068 offset = offset >>> 0
22069 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22070 this[offset] = (value & 0xff)
22071 this[offset + 1] = (value >>> 8)
22072 return offset + 2
22073}
3af2954a 22074
8b095871
IC
22075Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
22076 value = +value
22077 offset = offset >>> 0
22078 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22079 this[offset] = (value >>> 8)
22080 this[offset + 1] = (value & 0xff)
22081 return offset + 2
22082}
3af2954a 22083
8b095871
IC
22084Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
22085 value = +value
22086 offset = offset >>> 0
22087 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22088 this[offset] = (value & 0xff)
22089 this[offset + 1] = (value >>> 8)
22090 this[offset + 2] = (value >>> 16)
22091 this[offset + 3] = (value >>> 24)
22092 return offset + 4
22093}
3af2954a 22094
8b095871
IC
22095Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
22096 value = +value
22097 offset = offset >>> 0
22098 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22099 if (value < 0) value = 0xffffffff + value + 1
22100 this[offset] = (value >>> 24)
22101 this[offset + 1] = (value >>> 16)
22102 this[offset + 2] = (value >>> 8)
22103 this[offset + 3] = (value & 0xff)
22104 return offset + 4
22105}
3af2954a 22106
8b095871
IC
22107function checkIEEE754 (buf, value, offset, ext, max, min) {
22108 if (offset + ext > buf.length) throw new RangeError('Index out of range')
22109 if (offset < 0) throw new RangeError('Index out of range')
22110}
3af2954a 22111
8b095871
IC
22112function writeFloat (buf, value, offset, littleEndian, noAssert) {
22113 value = +value
22114 offset = offset >>> 0
22115 if (!noAssert) {
22116 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
3af2954a 22117 }
8b095871
IC
22118 ieee754.write(buf, value, offset, littleEndian, 23, 4)
22119 return offset + 4
ab78acc6 22120}
3af2954a 22121
8b095871
IC
22122Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
22123 return writeFloat(this, value, offset, true, noAssert)
ab78acc6 22124}
3af2954a 22125
8b095871
IC
22126Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
22127 return writeFloat(this, value, offset, false, noAssert)
ab78acc6 22128}
3af2954a 22129
8b095871
IC
22130function writeDouble (buf, value, offset, littleEndian, noAssert) {
22131 value = +value
22132 offset = offset >>> 0
22133 if (!noAssert) {
22134 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
3af2954a 22135 }
8b095871
IC
22136 ieee754.write(buf, value, offset, littleEndian, 52, 8)
22137 return offset + 8
ab78acc6 22138}
3af2954a 22139
8b095871
IC
22140Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
22141 return writeDouble(this, value, offset, true, noAssert)
ab78acc6 22142}
3af2954a 22143
8b095871
IC
22144Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
22145 return writeDouble(this, value, offset, false, noAssert)
22146}
3af2954a 22147
8b095871
IC
22148// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
22149Buffer.prototype.copy = function copy (target, targetStart, start, end) {
22150 if (!start) start = 0
22151 if (!end && end !== 0) end = this.length
22152 if (targetStart >= target.length) targetStart = target.length
22153 if (!targetStart) targetStart = 0
22154 if (end > 0 && end < start) end = start
3af2954a 22155
8b095871
IC
22156 // Copy 0 bytes; we're done
22157 if (end === start) return 0
22158 if (target.length === 0 || this.length === 0) return 0
3af2954a 22159
8b095871
IC
22160 // Fatal error conditions
22161 if (targetStart < 0) {
22162 throw new RangeError('targetStart out of bounds')
3af2954a 22163 }
8b095871
IC
22164 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
22165 if (end < 0) throw new RangeError('sourceEnd out of bounds')
22166
22167 // Are we oob?
22168 if (end > this.length) end = this.length
22169 if (target.length - targetStart < end - start) {
22170 end = target.length - targetStart + start
3af2954a 22171 }
8b095871
IC
22172
22173 var len = end - start
22174 var i
22175
22176 if (this === target && start < targetStart && targetStart < end) {
22177 // descending copy from end
22178 for (i = len - 1; i >= 0; --i) {
22179 target[i + targetStart] = this[i + start]
3af2954a 22180 }
8b095871
IC
22181 } else if (len < 1000) {
22182 // ascending copy from start
22183 for (i = 0; i < len; ++i) {
22184 target[i + targetStart] = this[i + start]
22185 }
22186 } else {
22187 Uint8Array.prototype.set.call(
22188 target,
22189 this.subarray(start, start + len),
22190 targetStart
22191 )
3af2954a
IC
22192 }
22193
8b095871
IC
22194 return len
22195}
22196
22197// Usage:
22198// buffer.fill(number[, offset[, end]])
22199// buffer.fill(buffer[, offset[, end]])
22200// buffer.fill(string[, offset[, end]][, encoding])
22201Buffer.prototype.fill = function fill (val, start, end, encoding) {
22202 // Handle string cases:
22203 if (typeof val === 'string') {
22204 if (typeof start === 'string') {
22205 encoding = start
22206 start = 0
22207 end = this.length
22208 } else if (typeof end === 'string') {
22209 encoding = end
22210 end = this.length
22211 }
22212 if (val.length === 1) {
22213 var code = val.charCodeAt(0)
22214 if (code < 256) {
22215 val = code
3af2954a 22216 }
3af2954a 22217 }
8b095871
IC
22218 if (encoding !== undefined && typeof encoding !== 'string') {
22219 throw new TypeError('encoding must be a string')
22220 }
22221 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
22222 throw new TypeError('Unknown encoding: ' + encoding)
22223 }
22224 } else if (typeof val === 'number') {
22225 val = val & 255
ab78acc6 22226 }
3af2954a 22227
8b095871
IC
22228 // Invalid ranges are not set to a default, so can range check early.
22229 if (start < 0 || this.length < start || this.length < end) {
22230 throw new RangeError('Out of range index')
22231 }
3af2954a 22232
8b095871
IC
22233 if (end <= start) {
22234 return this
22235 }
3af2954a 22236
8b095871
IC
22237 start = start >>> 0
22238 end = end === undefined ? this.length : end >>> 0
3af2954a 22239
8b095871
IC
22240 if (!val) val = 0
22241
22242 var i
22243 if (typeof val === 'number') {
22244 for (i = start; i < end; ++i) {
22245 this[i] = val
22246 }
ab78acc6 22247 } else {
8b095871
IC
22248 var bytes = Buffer.isBuffer(val)
22249 ? val
22250 : new Buffer(val, encoding)
22251 var len = bytes.length
22252 for (i = 0; i < end - start; ++i) {
22253 this[i + start] = bytes[i % len]
ab78acc6
IC
22254 }
22255 }
3af2954a 22256
8b095871
IC
22257 return this
22258}
3af2954a 22259
8b095871
IC
22260// HELPER FUNCTIONS
22261// ================
22262
22263var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
22264
22265function base64clean (str) {
22266 // Node strips out invalid characters like \n and \t from the string, base64-js does not
22267 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
22268 // Node converts strings with length < 2 to ''
22269 if (str.length < 2) return ''
22270 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
22271 while (str.length % 4 !== 0) {
22272 str = str + '='
3af2954a 22273 }
8b095871 22274 return str
ab78acc6
IC
22275}
22276
8b095871
IC
22277function stringtrim (str) {
22278 if (str.trim) return str.trim()
22279 return str.replace(/^\s+|\s+$/g, '')
ab78acc6 22280}
3af2954a 22281
8b095871
IC
22282function toHex (n) {
22283 if (n < 16) return '0' + n.toString(16)
22284 return n.toString(16)
ab78acc6 22285}
3af2954a 22286
8b095871
IC
22287function utf8ToBytes (string, units) {
22288 units = units || Infinity
22289 var codePoint
22290 var length = string.length
22291 var leadSurrogate = null
22292 var bytes = []
3af2954a 22293
8b095871
IC
22294 for (var i = 0; i < length; ++i) {
22295 codePoint = string.charCodeAt(i)
3af2954a 22296
8b095871
IC
22297 // is surrogate component
22298 if (codePoint > 0xD7FF && codePoint < 0xE000) {
22299 // last char was a lead
22300 if (!leadSurrogate) {
22301 // no lead yet
22302 if (codePoint > 0xDBFF) {
22303 // unexpected trail
22304 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22305 continue
22306 } else if (i + 1 === length) {
22307 // unpaired lead
22308 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22309 continue
22310 }
3af2954a 22311
8b095871
IC
22312 // valid lead
22313 leadSurrogate = codePoint
22314
22315 continue
22316 }
22317
22318 // 2 leads in a row
22319 if (codePoint < 0xDC00) {
22320 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22321 leadSurrogate = codePoint
22322 continue
22323 }
22324
22325 // valid surrogate pair
22326 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
22327 } else if (leadSurrogate) {
22328 // valid bmp char, but last char was a lead
22329 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22330 }
22331
22332 leadSurrogate = null
22333
22334 // encode utf8
22335 if (codePoint < 0x80) {
22336 if ((units -= 1) < 0) break
22337 bytes.push(codePoint)
22338 } else if (codePoint < 0x800) {
22339 if ((units -= 2) < 0) break
22340 bytes.push(
22341 codePoint >> 0x6 | 0xC0,
22342 codePoint & 0x3F | 0x80
22343 )
22344 } else if (codePoint < 0x10000) {
22345 if ((units -= 3) < 0) break
22346 bytes.push(
22347 codePoint >> 0xC | 0xE0,
22348 codePoint >> 0x6 & 0x3F | 0x80,
22349 codePoint & 0x3F | 0x80
22350 )
22351 } else if (codePoint < 0x110000) {
22352 if ((units -= 4) < 0) break
22353 bytes.push(
22354 codePoint >> 0x12 | 0xF0,
22355 codePoint >> 0xC & 0x3F | 0x80,
22356 codePoint >> 0x6 & 0x3F | 0x80,
22357 codePoint & 0x3F | 0x80
22358 )
ab78acc6 22359 } else {
8b095871 22360 throw new Error('Invalid code point')
ab78acc6 22361 }
3af2954a
IC
22362 }
22363
8b095871
IC
22364 return bytes
22365}
3af2954a 22366
8b095871
IC
22367function asciiToBytes (str) {
22368 var byteArray = []
22369 for (var i = 0; i < str.length; ++i) {
22370 // Node's code seems to be doing this and not & 0x7F..
22371 byteArray.push(str.charCodeAt(i) & 0xFF)
ab78acc6 22372 }
8b095871
IC
22373 return byteArray
22374}
3af2954a 22375
8b095871
IC
22376function utf16leToBytes (str, units) {
22377 var c, hi, lo
22378 var byteArray = []
22379 for (var i = 0; i < str.length; ++i) {
22380 if ((units -= 2) < 0) break
3af2954a 22381
8b095871
IC
22382 c = str.charCodeAt(i)
22383 hi = c >> 8
22384 lo = c % 256
22385 byteArray.push(lo)
22386 byteArray.push(hi)
22387 }
ebd8d4e8 22388
8b095871
IC
22389 return byteArray
22390}
22391
22392function base64ToBytes (str) {
22393 return base64.toByteArray(base64clean(str))
22394}
22395
22396function blitBuffer (src, dst, offset, length) {
22397 for (var i = 0; i < length; ++i) {
22398 if ((i + offset >= dst.length) || (i >= src.length)) break
22399 dst[i + offset] = src[i]
22400 }
22401 return i
22402}
22403
22404function isnan (val) {
22405 return val !== val // eslint-disable-line no-self-compare
22406}
22407
22408},{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
22409(function (Buffer){
22410// Copyright Joyent, Inc. and other Node contributors.
22411//
22412// Permission is hereby granted, free of charge, to any person obtaining a
22413// copy of this software and associated documentation files (the
22414// "Software"), to deal in the Software without restriction, including
22415// without limitation the rights to use, copy, modify, merge, publish,
22416// distribute, sublicense, and/or sell copies of the Software, and to permit
22417// persons to whom the Software is furnished to do so, subject to the
22418// following conditions:
22419//
22420// The above copyright notice and this permission notice shall be included
22421// in all copies or substantial portions of the Software.
22422//
22423// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22424// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22425// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22426// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22427// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22428// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22429// USE OR OTHER DEALINGS IN THE SOFTWARE.
22430
22431// NOTE: These type checking functions intentionally don't use `instanceof`
22432// because it is fragile and can be easily faked with `Object.create()`.
ebd8d4e8 22433
8b095871
IC
22434function isArray(arg) {
22435 if (Array.isArray) {
22436 return Array.isArray(arg);
22437 }
22438 return objectToString(arg) === '[object Array]';
22439}
22440exports.isArray = isArray;
ebd8d4e8 22441
8b095871
IC
22442function isBoolean(arg) {
22443 return typeof arg === 'boolean';
22444}
22445exports.isBoolean = isBoolean;
ebd8d4e8 22446
8b095871
IC
22447function isNull(arg) {
22448 return arg === null;
22449}
22450exports.isNull = isNull;
ebd8d4e8 22451
8b095871
IC
22452function isNullOrUndefined(arg) {
22453 return arg == null;
22454}
22455exports.isNullOrUndefined = isNullOrUndefined;
ebd8d4e8 22456
8b095871
IC
22457function isNumber(arg) {
22458 return typeof arg === 'number';
ab78acc6 22459}
8b095871 22460exports.isNumber = isNumber;
212b1b46 22461
8b095871
IC
22462function isString(arg) {
22463 return typeof arg === 'string';
ab78acc6 22464}
8b095871 22465exports.isString = isString;
212b1b46 22466
8b095871
IC
22467function isSymbol(arg) {
22468 return typeof arg === 'symbol';
ab78acc6 22469}
8b095871 22470exports.isSymbol = isSymbol;
ab78acc6 22471
8b095871
IC
22472function isUndefined(arg) {
22473 return arg === void 0;
22474}
22475exports.isUndefined = isUndefined;
ab78acc6 22476
8b095871
IC
22477function isRegExp(re) {
22478 return objectToString(re) === '[object RegExp]';
22479}
22480exports.isRegExp = isRegExp;
ab78acc6 22481
8b095871
IC
22482function isObject(arg) {
22483 return typeof arg === 'object' && arg !== null;
22484}
22485exports.isObject = isObject;
212b1b46 22486
8b095871
IC
22487function isDate(d) {
22488 return objectToString(d) === '[object Date]';
22489}
22490exports.isDate = isDate;
212b1b46 22491
8b095871
IC
22492function isError(e) {
22493 return (objectToString(e) === '[object Error]' || e instanceof Error);
22494}
22495exports.isError = isError;
212b1b46 22496
8b095871
IC
22497function isFunction(arg) {
22498 return typeof arg === 'function';
22499}
22500exports.isFunction = isFunction;
212b1b46 22501
8b095871
IC
22502function isPrimitive(arg) {
22503 return arg === null ||
22504 typeof arg === 'boolean' ||
22505 typeof arg === 'number' ||
22506 typeof arg === 'string' ||
22507 typeof arg === 'symbol' || // ES6 symbol
22508 typeof arg === 'undefined';
ab78acc6 22509}
8b095871 22510exports.isPrimitive = isPrimitive;
212b1b46 22511
8b095871 22512exports.isBuffer = Buffer.isBuffer;
ab78acc6 22513
8b095871
IC
22514function objectToString(o) {
22515 return Object.prototype.toString.call(o);
ab78acc6 22516}
212b1b46 22517
8b095871
IC
22518}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
22519},{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
22520// Copyright Joyent, Inc. and other Node contributors.
22521//
22522// Permission is hereby granted, free of charge, to any person obtaining a
22523// copy of this software and associated documentation files (the
22524// "Software"), to deal in the Software without restriction, including
22525// without limitation the rights to use, copy, modify, merge, publish,
22526// distribute, sublicense, and/or sell copies of the Software, and to permit
22527// persons to whom the Software is furnished to do so, subject to the
22528// following conditions:
22529//
22530// The above copyright notice and this permission notice shall be included
22531// in all copies or substantial portions of the Software.
22532//
22533// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22534// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22535// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22536// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22537// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22538// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22539// USE OR OTHER DEALINGS IN THE SOFTWARE.
212b1b46 22540
8b095871
IC
22541function EventEmitter() {
22542 this._events = this._events || {};
22543 this._maxListeners = this._maxListeners || undefined;
ab78acc6 22544}
8b095871 22545module.exports = EventEmitter;
212b1b46 22546
8b095871
IC
22547// Backwards-compat with node 0.10.x
22548EventEmitter.EventEmitter = EventEmitter;
212b1b46 22549
8b095871
IC
22550EventEmitter.prototype._events = undefined;
22551EventEmitter.prototype._maxListeners = undefined;
212b1b46 22552
8b095871
IC
22553// By default EventEmitters will print a warning if more than 10 listeners are
22554// added to it. This is a useful default which helps finding memory leaks.
22555EventEmitter.defaultMaxListeners = 10;
212b1b46 22556
8b095871
IC
22557// Obviously not all Emitters should be limited to 10. This function allows
22558// that to be increased. Set to zero for unlimited.
22559EventEmitter.prototype.setMaxListeners = function(n) {
22560 if (!isNumber(n) || n < 0 || isNaN(n))
22561 throw TypeError('n must be a positive number');
22562 this._maxListeners = n;
22563 return this;
22564};
212b1b46 22565
8b095871
IC
22566EventEmitter.prototype.emit = function(type) {
22567 var er, handler, len, args, i, listeners;
212b1b46 22568
8b095871
IC
22569 if (!this._events)
22570 this._events = {};
212b1b46 22571
8b095871
IC
22572 // If there is no 'error' event listener then throw.
22573 if (type === 'error') {
22574 if (!this._events.error ||
22575 (isObject(this._events.error) && !this._events.error.length)) {
22576 er = arguments[1];
22577 if (er instanceof Error) {
22578 throw er; // Unhandled 'error' event
22579 } else {
22580 // At least give some kind of context to the user
22581 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
22582 err.context = er;
22583 throw err;
22584 }
22585 }
ab78acc6 22586 }
212b1b46 22587
8b095871 22588 handler = this._events[type];
212b1b46 22589
8b095871
IC
22590 if (isUndefined(handler))
22591 return false;
22592
22593 if (isFunction(handler)) {
22594 switch (arguments.length) {
22595 // fast cases
22596 case 1:
22597 handler.call(this);
22598 break;
22599 case 2:
22600 handler.call(this, arguments[1]);
22601 break;
22602 case 3:
22603 handler.call(this, arguments[1], arguments[2]);
22604 break;
22605 // slower
22606 default:
22607 args = Array.prototype.slice.call(arguments, 1);
22608 handler.apply(this, args);
3af2954a 22609 }
8b095871
IC
22610 } else if (isObject(handler)) {
22611 args = Array.prototype.slice.call(arguments, 1);
22612 listeners = handler.slice();
22613 len = listeners.length;
22614 for (i = 0; i < len; i++)
22615 listeners[i].apply(this, args);
3af2954a 22616 }
212b1b46 22617
8b095871
IC
22618 return true;
22619};
ebd8d4e8 22620
8b095871
IC
22621EventEmitter.prototype.addListener = function(type, listener) {
22622 var m;
ebd8d4e8 22623
8b095871
IC
22624 if (!isFunction(listener))
22625 throw TypeError('listener must be a function');
ebd8d4e8 22626
8b095871
IC
22627 if (!this._events)
22628 this._events = {};
3af2954a 22629
8b095871
IC
22630 // To avoid recursion in the case that type === "newListener"! Before
22631 // adding it to the listeners, first emit "newListener".
22632 if (this._events.newListener)
22633 this.emit('newListener', type,
22634 isFunction(listener.listener) ?
22635 listener.listener : listener);
3af2954a 22636
8b095871
IC
22637 if (!this._events[type])
22638 // Optimize the case of one listener. Don't need the extra array object.
22639 this._events[type] = listener;
22640 else if (isObject(this._events[type]))
22641 // If we've already got an array, just append.
22642 this._events[type].push(listener);
22643 else
22644 // Adding the second element, need to change to array.
22645 this._events[type] = [this._events[type], listener];
3af2954a 22646
8b095871
IC
22647 // Check for listener leak
22648 if (isObject(this._events[type]) && !this._events[type].warned) {
22649 if (!isUndefined(this._maxListeners)) {
22650 m = this._maxListeners;
22651 } else {
22652 m = EventEmitter.defaultMaxListeners;
22653 }
3af2954a 22654
8b095871
IC
22655 if (m && m > 0 && this._events[type].length > m) {
22656 this._events[type].warned = true;
22657 console.error('(node) warning: possible EventEmitter memory ' +
22658 'leak detected. %d listeners added. ' +
22659 'Use emitter.setMaxListeners() to increase limit.',
22660 this._events[type].length);
22661 if (typeof console.trace === 'function') {
22662 // not supported in IE 10
22663 console.trace();
22664 }
22665 }
3af2954a
IC
22666 }
22667
8b095871
IC
22668 return this;
22669};
3af2954a 22670
8b095871 22671EventEmitter.prototype.on = EventEmitter.prototype.addListener;
3af2954a 22672
8b095871
IC
22673EventEmitter.prototype.once = function(type, listener) {
22674 if (!isFunction(listener))
22675 throw TypeError('listener must be a function');
3af2954a 22676
8b095871 22677 var fired = false;
ebd8d4e8 22678
8b095871
IC
22679 function g() {
22680 this.removeListener(type, g);
3af2954a 22681
8b095871
IC
22682 if (!fired) {
22683 fired = true;
22684 listener.apply(this, arguments);
22685 }
22686 }
3af2954a 22687
8b095871
IC
22688 g.listener = listener;
22689 this.on(type, g);
ebd8d4e8 22690
8b095871
IC
22691 return this;
22692};
ebd8d4e8 22693
8b095871
IC
22694// emits a 'removeListener' event iff the listener was removed
22695EventEmitter.prototype.removeListener = function(type, listener) {
22696 var list, position, length, i;
ebd8d4e8 22697
8b095871
IC
22698 if (!isFunction(listener))
22699 throw TypeError('listener must be a function');
ebd8d4e8 22700
8b095871
IC
22701 if (!this._events || !this._events[type])
22702 return this;
ab78acc6 22703
8b095871
IC
22704 list = this._events[type];
22705 length = list.length;
22706 position = -1;
ebd8d4e8 22707
8b095871
IC
22708 if (list === listener ||
22709 (isFunction(list.listener) && list.listener === listener)) {
22710 delete this._events[type];
22711 if (this._events.removeListener)
22712 this.emit('removeListener', type, listener);
ebd8d4e8 22713
8b095871
IC
22714 } else if (isObject(list)) {
22715 for (i = length; i-- > 0;) {
22716 if (list[i] === listener ||
22717 (list[i].listener && list[i].listener === listener)) {
22718 position = i;
22719 break;
22720 }
22721 }
22722
22723 if (position < 0)
22724 return this;
22725
22726 if (list.length === 1) {
22727 list.length = 0;
22728 delete this._events[type];
22729 } else {
22730 list.splice(position, 1);
22731 }
22732
22733 if (this._events.removeListener)
22734 this.emit('removeListener', type, listener);
ab78acc6 22735 }
ebd8d4e8 22736
8b095871
IC
22737 return this;
22738};
ebd8d4e8 22739
8b095871
IC
22740EventEmitter.prototype.removeAllListeners = function(type) {
22741 var key, listeners;
ebd8d4e8 22742
8b095871
IC
22743 if (!this._events)
22744 return this;
ab78acc6 22745
8b095871
IC
22746 // not listening for removeListener, no need to emit
22747 if (!this._events.removeListener) {
22748 if (arguments.length === 0)
22749 this._events = {};
22750 else if (this._events[type])
22751 delete this._events[type];
22752 return this;
22753 }
ab78acc6 22754
8b095871
IC
22755 // emit removeListener for all listeners on all events
22756 if (arguments.length === 0) {
22757 for (key in this._events) {
22758 if (key === 'removeListener') continue;
22759 this.removeAllListeners(key);
22760 }
22761 this.removeAllListeners('removeListener');
22762 this._events = {};
22763 return this;
22764 }
ebd8d4e8 22765
8b095871 22766 listeners = this._events[type];
ebd8d4e8 22767
8b095871
IC
22768 if (isFunction(listeners)) {
22769 this.removeListener(type, listeners);
22770 } else if (listeners) {
22771 // LIFO order
22772 while (listeners.length)
22773 this.removeListener(type, listeners[listeners.length - 1]);
22774 }
22775 delete this._events[type];
ebd8d4e8 22776
8b095871
IC
22777 return this;
22778};
ebd8d4e8 22779
8b095871
IC
22780EventEmitter.prototype.listeners = function(type) {
22781 var ret;
22782 if (!this._events || !this._events[type])
22783 ret = [];
22784 else if (isFunction(this._events[type]))
22785 ret = [this._events[type]];
22786 else
22787 ret = this._events[type].slice();
22788 return ret;
22789};
ebd8d4e8 22790
8b095871
IC
22791EventEmitter.prototype.listenerCount = function(type) {
22792 if (this._events) {
22793 var evlistener = this._events[type];
ebd8d4e8 22794
8b095871
IC
22795 if (isFunction(evlistener))
22796 return 1;
22797 else if (evlistener)
22798 return evlistener.length;
22799 }
22800 return 0;
22801};
22802
22803EventEmitter.listenerCount = function(emitter, type) {
22804 return emitter.listenerCount(type);
22805};
22806
22807function isFunction(arg) {
22808 return typeof arg === 'function';
ebd8d4e8
IC
22809}
22810
8b095871
IC
22811function isNumber(arg) {
22812 return typeof arg === 'number';
ebd8d4e8
IC
22813}
22814
8b095871
IC
22815function isObject(arg) {
22816 return typeof arg === 'object' && arg !== null;
ebd8d4e8
IC
22817}
22818
8b095871
IC
22819function isUndefined(arg) {
22820 return arg === void 0;
ebd8d4e8
IC
22821}
22822
8b095871
IC
22823},{}],8:[function(require,module,exports){
22824exports.read = function (buffer, offset, isLE, mLen, nBytes) {
22825 var e, m
22826 var eLen = nBytes * 8 - mLen - 1
22827 var eMax = (1 << eLen) - 1
22828 var eBias = eMax >> 1
22829 var nBits = -7
22830 var i = isLE ? (nBytes - 1) : 0
22831 var d = isLE ? -1 : 1
22832 var s = buffer[offset + i]
ebd8d4e8 22833
8b095871 22834 i += d
ebd8d4e8 22835
8b095871
IC
22836 e = s & ((1 << (-nBits)) - 1)
22837 s >>= (-nBits)
22838 nBits += eLen
22839 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
ebd8d4e8 22840
8b095871
IC
22841 m = e & ((1 << (-nBits)) - 1)
22842 e >>= (-nBits)
22843 nBits += mLen
22844 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
ebd8d4e8 22845
8b095871
IC
22846 if (e === 0) {
22847 e = 1 - eBias
22848 } else if (e === eMax) {
22849 return m ? NaN : ((s ? -1 : 1) * Infinity)
22850 } else {
22851 m = m + Math.pow(2, mLen)
22852 e = e - eBias
ab78acc6 22853 }
8b095871 22854 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
ebd8d4e8
IC
22855}
22856
8b095871
IC
22857exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
22858 var e, m, c
22859 var eLen = nBytes * 8 - mLen - 1
22860 var eMax = (1 << eLen) - 1
22861 var eBias = eMax >> 1
22862 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
22863 var i = isLE ? 0 : (nBytes - 1)
22864 var d = isLE ? 1 : -1
22865 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
ebd8d4e8 22866
8b095871 22867 value = Math.abs(value)
ebd8d4e8 22868
8b095871
IC
22869 if (isNaN(value) || value === Infinity) {
22870 m = isNaN(value) ? 1 : 0
22871 e = eMax
ab78acc6 22872 } else {
8b095871
IC
22873 e = Math.floor(Math.log(value) / Math.LN2)
22874 if (value * (c = Math.pow(2, -e)) < 1) {
22875 e--
22876 c *= 2
22877 }
22878 if (e + eBias >= 1) {
22879 value += rt / c
22880 } else {
22881 value += rt * Math.pow(2, 1 - eBias)
22882 }
22883 if (value * c >= 2) {
22884 e++
22885 c /= 2
22886 }
ebd8d4e8 22887
8b095871
IC
22888 if (e + eBias >= eMax) {
22889 m = 0
22890 e = eMax
22891 } else if (e + eBias >= 1) {
22892 m = (value * c - 1) * Math.pow(2, mLen)
22893 e = e + eBias
22894 } else {
22895 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
22896 e = 0
22897 }
ebd8d4e8 22898 }
ebd8d4e8 22899
8b095871 22900 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
ebd8d4e8 22901
8b095871
IC
22902 e = (e << mLen) | m
22903 eLen += mLen
22904 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
ebd8d4e8 22905
8b095871 22906 buffer[offset + i - d] |= s * 128
ab78acc6
IC
22907}
22908
8b095871
IC
22909},{}],9:[function(require,module,exports){
22910if (typeof Object.create === 'function') {
22911 // implementation from standard node.js 'util' module
22912 module.exports = function inherits(ctor, superCtor) {
22913 ctor.super_ = superCtor
22914 ctor.prototype = Object.create(superCtor.prototype, {
22915 constructor: {
22916 value: ctor,
22917 enumerable: false,
22918 writable: true,
22919 configurable: true
22920 }
22921 });
22922 };
22923} else {
22924 // old school shim for old browsers
22925 module.exports = function inherits(ctor, superCtor) {
22926 ctor.super_ = superCtor
22927 var TempCtor = function () {}
22928 TempCtor.prototype = superCtor.prototype
22929 ctor.prototype = new TempCtor()
22930 ctor.prototype.constructor = ctor
ebd8d4e8 22931 }
8b095871 22932}
ab78acc6 22933
8b095871
IC
22934},{}],10:[function(require,module,exports){
22935/*!
22936 * Determine if an object is a Buffer
22937 *
22938 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22939 * @license MIT
22940 */
ebd8d4e8 22941
8b095871
IC
22942// The _isBuffer check is for Safari 5-7 support, because it's missing
22943// Object.prototype.constructor. Remove this eventually
22944module.exports = function (obj) {
22945 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
ebd8d4e8
IC
22946}
22947
8b095871
IC
22948function isBuffer (obj) {
22949 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
22950}
ebd8d4e8 22951
8b095871
IC
22952// For Node v0.10 support. Remove this eventually.
22953function isSlowBuffer (obj) {
22954 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
22955}
ebd8d4e8 22956
8b095871
IC
22957},{}],11:[function(require,module,exports){
22958var toString = {}.toString;
ab78acc6 22959
8b095871
IC
22960module.exports = Array.isArray || function (arr) {
22961 return toString.call(arr) == '[object Array]';
22962};
ebd8d4e8 22963
8b095871
IC
22964},{}],12:[function(require,module,exports){
22965(function (process){
22966'use strict';
ebd8d4e8 22967
8b095871
IC
22968if (!process.version ||
22969 process.version.indexOf('v0.') === 0 ||
22970 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
22971 module.exports = nextTick;
22972} else {
22973 module.exports = process.nextTick;
22974}
22975
22976function nextTick(fn, arg1, arg2, arg3) {
22977 if (typeof fn !== 'function') {
22978 throw new TypeError('"callback" argument must be a function');
22979 }
22980 var len = arguments.length;
22981 var args, i;
22982 switch (len) {
22983 case 0:
22984 case 1:
22985 return process.nextTick(fn);
22986 case 2:
22987 return process.nextTick(function afterTickOne() {
22988 fn.call(null, arg1);
22989 });
22990 case 3:
22991 return process.nextTick(function afterTickTwo() {
22992 fn.call(null, arg1, arg2);
22993 });
22994 case 4:
22995 return process.nextTick(function afterTickThree() {
22996 fn.call(null, arg1, arg2, arg3);
22997 });
22998 default:
22999 args = new Array(len - 1);
23000 i = 0;
23001 while (i < args.length) {
23002 args[i++] = arguments[i];
23003 }
23004 return process.nextTick(function afterTick() {
23005 fn.apply(null, args);
23006 });
ab78acc6 23007 }
ebd8d4e8
IC
23008}
23009
8b095871
IC
23010}).call(this,require('_process'))
23011},{"_process":13}],13:[function(require,module,exports){
23012// shim for using process in browser
23013var process = module.exports = {};
ebd8d4e8 23014
8b095871
IC
23015// cached from whatever global is present so that test runners that stub it
23016// don't break things. But we need to wrap it in a try catch in case it is
23017// wrapped in strict mode code which doesn't define any globals. It's inside a
23018// function because try/catches deoptimize in certain engines.
ab78acc6 23019
8b095871
IC
23020var cachedSetTimeout;
23021var cachedClearTimeout;
ebd8d4e8 23022
8b095871
IC
23023function defaultSetTimout() {
23024 throw new Error('setTimeout has not been defined');
ab78acc6 23025}
8b095871
IC
23026function defaultClearTimeout () {
23027 throw new Error('clearTimeout has not been defined');
ab78acc6 23028}
8b095871
IC
23029(function () {
23030 try {
23031 if (typeof setTimeout === 'function') {
23032 cachedSetTimeout = setTimeout;
23033 } else {
23034 cachedSetTimeout = defaultSetTimout;
23035 }
23036 } catch (e) {
23037 cachedSetTimeout = defaultSetTimout;
23038 }
23039 try {
23040 if (typeof clearTimeout === 'function') {
23041 cachedClearTimeout = clearTimeout;
23042 } else {
23043 cachedClearTimeout = defaultClearTimeout;
23044 }
23045 } catch (e) {
23046 cachedClearTimeout = defaultClearTimeout;
23047 }
23048} ())
23049function runTimeout(fun) {
23050 if (cachedSetTimeout === setTimeout) {
23051 //normal enviroments in sane situations
23052 return setTimeout(fun, 0);
23053 }
23054 // if setTimeout wasn't available but was latter defined
23055 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
23056 cachedSetTimeout = setTimeout;
23057 return setTimeout(fun, 0);
23058 }
23059 try {
23060 // when when somebody has screwed with setTimeout but no I.E. maddness
23061 return cachedSetTimeout(fun, 0);
23062 } catch(e){
23063 try {
23064 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23065 return cachedSetTimeout.call(null, fun, 0);
23066 } catch(e){
23067 // 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
23068 return cachedSetTimeout.call(this, fun, 0);
23069 }
23070 }
23071
ebd8d4e8 23072
ab78acc6 23073}
8b095871
IC
23074function runClearTimeout(marker) {
23075 if (cachedClearTimeout === clearTimeout) {
23076 //normal enviroments in sane situations
23077 return clearTimeout(marker);
23078 }
23079 // if clearTimeout wasn't available but was latter defined
23080 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
23081 cachedClearTimeout = clearTimeout;
23082 return clearTimeout(marker);
23083 }
23084 try {
23085 // when when somebody has screwed with setTimeout but no I.E. maddness
23086 return cachedClearTimeout(marker);
23087 } catch (e){
23088 try {
23089 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23090 return cachedClearTimeout.call(null, marker);
23091 } catch (e){
23092 // 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.
23093 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
23094 return cachedClearTimeout.call(this, marker);
23095 }
23096 }
23097
23098
ebd8d4e8 23099
ab78acc6 23100}
8b095871
IC
23101var queue = [];
23102var draining = false;
23103var currentQueue;
23104var queueIndex = -1;
ebd8d4e8 23105
8b095871
IC
23106function cleanUpNextTick() {
23107 if (!draining || !currentQueue) {
23108 return;
23109 }
23110 draining = false;
23111 if (currentQueue.length) {
23112 queue = currentQueue.concat(queue);
23113 } else {
23114 queueIndex = -1;
23115 }
23116 if (queue.length) {
23117 drainQueue();
23118 }
ebd8d4e8
IC
23119}
23120
8b095871
IC
23121function drainQueue() {
23122 if (draining) {
23123 return;
23124 }
23125 var timeout = runTimeout(cleanUpNextTick);
23126 draining = true;
23127
23128 var len = queue.length;
23129 while(len) {
23130 currentQueue = queue;
23131 queue = [];
23132 while (++queueIndex < len) {
23133 if (currentQueue) {
23134 currentQueue[queueIndex].run();
23135 }
23136 }
23137 queueIndex = -1;
23138 len = queue.length;
23139 }
23140 currentQueue = null;
23141 draining = false;
23142 runClearTimeout(timeout);
ebd8d4e8
IC
23143}
23144
8b095871
IC
23145process.nextTick = function (fun) {
23146 var args = new Array(arguments.length - 1);
23147 if (arguments.length > 1) {
23148 for (var i = 1; i < arguments.length; i++) {
23149 args[i - 1] = arguments[i];
23150 }
23151 }
23152 queue.push(new Item(fun, args));
23153 if (queue.length === 1 && !draining) {
23154 runTimeout(drainQueue);
23155 }
23156};
23157
23158// v8 likes predictible objects
23159function Item(fun, array) {
23160 this.fun = fun;
23161 this.array = array;
ab78acc6 23162}
8b095871
IC
23163Item.prototype.run = function () {
23164 this.fun.apply(null, this.array);
23165};
23166process.title = 'browser';
23167process.browser = true;
23168process.env = {};
23169process.argv = [];
23170process.version = ''; // empty string to avoid regexp issues
23171process.versions = {};
ebd8d4e8 23172
8b095871
IC
23173function noop() {}
23174
23175process.on = noop;
23176process.addListener = noop;
23177process.once = noop;
23178process.off = noop;
23179process.removeListener = noop;
23180process.removeAllListeners = noop;
23181process.emit = noop;
23182
23183process.binding = function (name) {
23184 throw new Error('process.binding is not supported');
23185};
23186
23187process.cwd = function () { return '/' };
23188process.chdir = function (dir) {
23189 throw new Error('process.chdir is not supported');
23190};
23191process.umask = function() { return 0; };
23192
23193},{}],14:[function(require,module,exports){
23194module.exports = require("./lib/_stream_duplex.js")
23195
23196},{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
23197// a duplex stream is just a stream that is both readable and writable.
23198// Since JS doesn't have multiple prototypal inheritance, this class
23199// prototypally inherits from Readable, and then parasitically from
23200// Writable.
23201
23202'use strict';
23203
23204/*<replacement>*/
ab78acc6 23205
8b095871
IC
23206var objectKeys = Object.keys || function (obj) {
23207 var keys = [];
23208 for (var key in obj) {
23209 keys.push(key);
23210 }return keys;
23211};
23212/*</replacement>*/
ebd8d4e8 23213
8b095871 23214module.exports = Duplex;
ebd8d4e8 23215
8b095871
IC
23216/*<replacement>*/
23217var processNextTick = require('process-nextick-args');
23218/*</replacement>*/
ebd8d4e8 23219
8b095871
IC
23220/*<replacement>*/
23221var util = require('core-util-is');
23222util.inherits = require('inherits');
23223/*</replacement>*/
ebd8d4e8 23224
8b095871
IC
23225var Readable = require('./_stream_readable');
23226var Writable = require('./_stream_writable');
ebd8d4e8 23227
8b095871
IC
23228util.inherits(Duplex, Readable);
23229
23230var keys = objectKeys(Writable.prototype);
23231for (var v = 0; v < keys.length; v++) {
23232 var method = keys[v];
23233 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
ab78acc6 23234}
ebd8d4e8 23235
8b095871
IC
23236function Duplex(options) {
23237 if (!(this instanceof Duplex)) return new Duplex(options);
ebd8d4e8 23238
8b095871
IC
23239 Readable.call(this, options);
23240 Writable.call(this, options);
ebd8d4e8 23241
8b095871 23242 if (options && options.readable === false) this.readable = false;
ebd8d4e8 23243
8b095871 23244 if (options && options.writable === false) this.writable = false;
ebd8d4e8 23245
8b095871
IC
23246 this.allowHalfOpen = true;
23247 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
ebd8d4e8 23248
8b095871 23249 this.once('end', onend);
ebd8d4e8
IC
23250}
23251
8b095871
IC
23252// the no-half-open enforcer
23253function onend() {
23254 // if we allow half-open state, or if the writable side ended,
23255 // then we're ok.
23256 if (this.allowHalfOpen || this._writableState.ended) return;
23257
23258 // no more data can be written.
23259 // But allow more writes to happen in this tick.
23260 processNextTick(onEndNT, this);
ebd8d4e8
IC
23261}
23262
8b095871
IC
23263function onEndNT(self) {
23264 self.end();
23265}
ebd8d4e8 23266
8b095871
IC
23267function forEach(xs, f) {
23268 for (var i = 0, l = xs.length; i < l; i++) {
23269 f(xs[i], i);
23270 }
23271}
23272},{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
23273// a passthrough stream.
23274// basically just the most minimal sort of Transform stream.
23275// Every written chunk gets output as-is.
ebd8d4e8 23276
8b095871 23277'use strict';
ebd8d4e8 23278
8b095871 23279module.exports = PassThrough;
ebd8d4e8 23280
8b095871 23281var Transform = require('./_stream_transform');
ebd8d4e8 23282
8b095871
IC
23283/*<replacement>*/
23284var util = require('core-util-is');
23285util.inherits = require('inherits');
23286/*</replacement>*/
ebd8d4e8 23287
8b095871 23288util.inherits(PassThrough, Transform);
ebd8d4e8 23289
8b095871
IC
23290function PassThrough(options) {
23291 if (!(this instanceof PassThrough)) return new PassThrough(options);
ebd8d4e8 23292
8b095871 23293 Transform.call(this, options);
ebd8d4e8
IC
23294}
23295
8b095871
IC
23296PassThrough.prototype._transform = function (chunk, encoding, cb) {
23297 cb(null, chunk);
23298};
23299},{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
23300(function (process){
23301'use strict';
ebd8d4e8 23302
8b095871 23303module.exports = Readable;
ebd8d4e8 23304
8b095871
IC
23305/*<replacement>*/
23306var processNextTick = require('process-nextick-args');
23307/*</replacement>*/
ebd8d4e8 23308
8b095871
IC
23309/*<replacement>*/
23310var isArray = require('isarray');
23311/*</replacement>*/
ebd8d4e8 23312
8b095871
IC
23313/*<replacement>*/
23314var Duplex;
23315/*</replacement>*/
ebd8d4e8 23316
8b095871 23317Readable.ReadableState = ReadableState;
ebd8d4e8 23318
8b095871
IC
23319/*<replacement>*/
23320var EE = require('events').EventEmitter;
ebd8d4e8 23321
8b095871
IC
23322var EElistenerCount = function (emitter, type) {
23323 return emitter.listeners(type).length;
23324};
23325/*</replacement>*/
ebd8d4e8 23326
8b095871
IC
23327/*<replacement>*/
23328var Stream;
23329(function () {
23330 try {
23331 Stream = require('st' + 'ream');
23332 } catch (_) {} finally {
23333 if (!Stream) Stream = require('events').EventEmitter;
23334 }
23335})();
23336/*</replacement>*/
ebd8d4e8 23337
8b095871
IC
23338var Buffer = require('buffer').Buffer;
23339/*<replacement>*/
23340var bufferShim = require('buffer-shims');
23341/*</replacement>*/
ab78acc6 23342
8b095871
IC
23343/*<replacement>*/
23344var util = require('core-util-is');
23345util.inherits = require('inherits');
23346/*</replacement>*/
ab78acc6 23347
8b095871
IC
23348/*<replacement>*/
23349var debugUtil = require('util');
23350var debug = void 0;
23351if (debugUtil && debugUtil.debuglog) {
23352 debug = debugUtil.debuglog('stream');
23353} else {
23354 debug = function () {};
23355}
23356/*</replacement>*/
ab78acc6 23357
8b095871
IC
23358var BufferList = require('./internal/streams/BufferList');
23359var StringDecoder;
ab78acc6 23360
8b095871 23361util.inherits(Readable, Stream);
ab78acc6 23362
8b095871
IC
23363function prependListener(emitter, event, fn) {
23364 // Sadly this is not cacheable as some libraries bundle their own
23365 // event emitter implementation with them.
23366 if (typeof emitter.prependListener === 'function') {
23367 return emitter.prependListener(event, fn);
23368 } else {
23369 // This is a hack to make sure that our error handler is attached before any
23370 // userland ones. NEVER DO THIS. This is here only because this code needs
23371 // to continue to work with older versions of Node.js that do not include
23372 // the prependListener() method. The goal is to eventually remove this hack.
23373 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]];
ebd8d4e8 23374 }
ebd8d4e8
IC
23375}
23376
8b095871
IC
23377function ReadableState(options, stream) {
23378 Duplex = Duplex || require('./_stream_duplex');
ebd8d4e8 23379
8b095871 23380 options = options || {};
ebd8d4e8 23381
8b095871
IC
23382 // object stream flag. Used to make read(n) ignore n and to
23383 // make all the buffer merging and length checks go away
23384 this.objectMode = !!options.objectMode;
ebd8d4e8 23385
8b095871 23386 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
ebd8d4e8 23387
8b095871
IC
23388 // the point at which it stops calling _read() to fill the buffer
23389 // Note: 0 is a valid value, means "don't call _read preemptively ever"
23390 var hwm = options.highWaterMark;
23391 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
23392 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
ab78acc6 23393
8b095871
IC
23394 // cast to ints.
23395 this.highWaterMark = ~ ~this.highWaterMark;
ab78acc6 23396
8b095871
IC
23397 // A linked list is used to store data chunks instead of an array because the
23398 // linked list can remove elements from the beginning faster than
23399 // array.shift()
23400 this.buffer = new BufferList();
23401 this.length = 0;
23402 this.pipes = null;
23403 this.pipesCount = 0;
23404 this.flowing = null;
23405 this.ended = false;
23406 this.endEmitted = false;
23407 this.reading = false;
ab78acc6 23408
8b095871
IC
23409 // a flag to be able to tell if the onwrite cb is called immediately,
23410 // or on a later tick. We set this to true at first, because any
23411 // actions that shouldn't happen until "later" should generally also
23412 // not happen before the first write call.
23413 this.sync = true;
ebd8d4e8 23414
8b095871
IC
23415 // whenever we return null, then we set a flag to say
23416 // that we're awaiting a 'readable' event emission.
23417 this.needReadable = false;
23418 this.emittedReadable = false;
23419 this.readableListening = false;
23420 this.resumeScheduled = false;
ebd8d4e8 23421
8b095871
IC
23422 // Crypto is kind of old and crusty. Historically, its default string
23423 // encoding is 'binary' so we have to make this configurable.
23424 // Everything else in the universe uses 'utf8', though.
23425 this.defaultEncoding = options.defaultEncoding || 'utf8';
ebd8d4e8 23426
8b095871
IC
23427 // when piping, we only care about 'readable' events that happen
23428 // after read()ing all the bytes and not getting any pushback.
23429 this.ranOut = false;
ebd8d4e8 23430
8b095871
IC
23431 // the number of writers that are awaiting a drain event in .pipe()s
23432 this.awaitDrain = 0;
ebd8d4e8 23433
8b095871
IC
23434 // if true, a maybeReadMore has been scheduled
23435 this.readingMore = false;
ebd8d4e8 23436
8b095871
IC
23437 this.decoder = null;
23438 this.encoding = null;
23439 if (options.encoding) {
23440 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23441 this.decoder = new StringDecoder(options.encoding);
23442 this.encoding = options.encoding;
23443 }
23444}
ebd8d4e8 23445
8b095871
IC
23446function Readable(options) {
23447 Duplex = Duplex || require('./_stream_duplex');
ebd8d4e8 23448
8b095871 23449 if (!(this instanceof Readable)) return new Readable(options);
ebd8d4e8 23450
8b095871 23451 this._readableState = new ReadableState(options, this);
ebd8d4e8 23452
8b095871
IC
23453 // legacy
23454 this.readable = true;
ebd8d4e8 23455
8b095871 23456 if (options && typeof options.read === 'function') this._read = options.read;
ebd8d4e8 23457
8b095871
IC
23458 Stream.call(this);
23459}
ebd8d4e8 23460
8b095871
IC
23461// Manually shove something into the read() buffer.
23462// This returns true if the highWaterMark has not been hit yet,
23463// similar to how Writable.write() returns true if you should
23464// write() some more.
23465Readable.prototype.push = function (chunk, encoding) {
23466 var state = this._readableState;
ebd8d4e8 23467
8b095871
IC
23468 if (!state.objectMode && typeof chunk === 'string') {
23469 encoding = encoding || state.defaultEncoding;
23470 if (encoding !== state.encoding) {
23471 chunk = bufferShim.from(chunk, encoding);
23472 encoding = '';
23473 }
23474 }
ebd8d4e8 23475
8b095871
IC
23476 return readableAddChunk(this, state, chunk, encoding, false);
23477};
ebd8d4e8 23478
8b095871
IC
23479// Unshift should *always* be something directly out of read()
23480Readable.prototype.unshift = function (chunk) {
23481 var state = this._readableState;
23482 return readableAddChunk(this, state, chunk, '', true);
23483};
ebd8d4e8 23484
8b095871
IC
23485Readable.prototype.isPaused = function () {
23486 return this._readableState.flowing === false;
23487};
23488
23489function readableAddChunk(stream, state, chunk, encoding, addToFront) {
23490 var er = chunkInvalid(state, chunk);
23491 if (er) {
23492 stream.emit('error', er);
23493 } else if (chunk === null) {
23494 state.reading = false;
23495 onEofChunk(stream, state);
23496 } else if (state.objectMode || chunk && chunk.length > 0) {
23497 if (state.ended && !addToFront) {
23498 var e = new Error('stream.push() after EOF');
23499 stream.emit('error', e);
23500 } else if (state.endEmitted && addToFront) {
23501 var _e = new Error('stream.unshift() after end event');
23502 stream.emit('error', _e);
23503 } else {
23504 var skipAdd;
23505 if (state.decoder && !addToFront && !encoding) {
23506 chunk = state.decoder.write(chunk);
23507 skipAdd = !state.objectMode && chunk.length === 0;
23508 }
ebd8d4e8 23509
8b095871 23510 if (!addToFront) state.reading = false;
ebd8d4e8 23511
8b095871
IC
23512 // Don't add to the buffer if we've decoded to an empty string chunk and
23513 // we're not in object mode
23514 if (!skipAdd) {
23515 // if we want the data now, just emit it.
23516 if (state.flowing && state.length === 0 && !state.sync) {
23517 stream.emit('data', chunk);
23518 stream.read(0);
23519 } else {
23520 // update the buffer info.
23521 state.length += state.objectMode ? 1 : chunk.length;
23522 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
ebd8d4e8 23523
8b095871
IC
23524 if (state.needReadable) emitReadable(stream);
23525 }
23526 }
ab78acc6 23527
8b095871
IC
23528 maybeReadMore(stream, state);
23529 }
23530 } else if (!addToFront) {
23531 state.reading = false;
23532 }
ab78acc6 23533
8b095871
IC
23534 return needMoreData(state);
23535}
ab78acc6 23536
8b095871
IC
23537// if it's past the high water mark, we can push in some more.
23538// Also, if we have no data yet, we can stand some
23539// more bytes. This is to work around cases where hwm=0,
23540// such as the repl. Also, if the push() triggered a
23541// readable event, and the user called read(largeNumber) such that
23542// needReadable was set, then we ought to push more, so that another
23543// 'readable' event will be triggered.
23544function needMoreData(state) {
23545 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
23546}
ebd8d4e8 23547
8b095871
IC
23548// backwards compatibility.
23549Readable.prototype.setEncoding = function (enc) {
23550 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23551 this._readableState.decoder = new StringDecoder(enc);
23552 this._readableState.encoding = enc;
23553 return this;
23554};
23555
23556// Don't raise the hwm > 8MB
23557var MAX_HWM = 0x800000;
23558function computeNewHighWaterMark(n) {
23559 if (n >= MAX_HWM) {
23560 n = MAX_HWM;
ab78acc6 23561 } else {
8b095871
IC
23562 // Get the next highest power of 2 to prevent increasing hwm excessively in
23563 // tiny amounts
23564 n--;
23565 n |= n >>> 1;
23566 n |= n >>> 2;
23567 n |= n >>> 4;
23568 n |= n >>> 8;
23569 n |= n >>> 16;
23570 n++;
ebd8d4e8 23571 }
8b095871 23572 return n;
ebd8d4e8
IC
23573}
23574
8b095871
IC
23575// This function is designed to be inlinable, so please take care when making
23576// changes to the function body.
23577function howMuchToRead(n, state) {
23578 if (n <= 0 || state.length === 0 && state.ended) return 0;
23579 if (state.objectMode) return 1;
23580 if (n !== n) {
23581 // Only flow one buffer at a time
23582 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
23583 }
23584 // If we're asking for more than the current hwm, then raise the hwm.
23585 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
23586 if (n <= state.length) return n;
23587 // Don't have enough
23588 if (!state.ended) {
23589 state.needReadable = true;
23590 return 0;
23591 }
23592 return state.length;
23593}
ebd8d4e8 23594
8b095871
IC
23595// you can override either this method, or the async _read(n) below.
23596Readable.prototype.read = function (n) {
23597 debug('read', n);
23598 n = parseInt(n, 10);
23599 var state = this._readableState;
23600 var nOrig = n;
ebd8d4e8 23601
8b095871 23602 if (n !== 0) state.emittedReadable = false;
ab78acc6 23603
8b095871
IC
23604 // if we're doing read(0) to trigger a readable event, but we
23605 // already have a bunch of data in the buffer, then just trigger
23606 // the 'readable' event and move on.
23607 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
23608 debug('read: emitReadable', state.length, state.ended);
23609 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
23610 return null;
ebd8d4e8 23611 }
ebd8d4e8 23612
8b095871 23613 n = howMuchToRead(n, state);
ebd8d4e8 23614
8b095871
IC
23615 // if we've ended, and we're now clear, then finish it up.
23616 if (n === 0 && state.ended) {
23617 if (state.length === 0) endReadable(this);
23618 return null;
23619 }
ebd8d4e8 23620
8b095871
IC
23621 // All the actual chunk generation logic needs to be
23622 // *below* the call to _read. The reason is that in certain
23623 // synthetic stream cases, such as passthrough streams, _read
23624 // may be a completely synchronous operation which may change
23625 // the state of the read buffer, providing enough data when
23626 // before there was *not* enough.
23627 //
23628 // So, the steps are:
23629 // 1. Figure out what the state of things will be after we do
23630 // a read from the buffer.
23631 //
23632 // 2. If that resulting state will trigger a _read, then call _read.
23633 // Note that this may be asynchronous, or synchronous. Yes, it is
23634 // deeply ugly to write APIs this way, but that still doesn't mean
23635 // that the Readable class should behave improperly, as streams are
23636 // designed to be sync/async agnostic.
23637 // Take note if the _read call is sync or async (ie, if the read call
23638 // has returned yet), so that we know whether or not it's safe to emit
23639 // 'readable' etc.
23640 //
23641 // 3. Actually pull the requested chunks out of the buffer and return.
ebd8d4e8 23642
8b095871
IC
23643 // if we need a readable event, then we need to do some reading.
23644 var doRead = state.needReadable;
23645 debug('need readable', doRead);
ebd8d4e8 23646
8b095871
IC
23647 // if we currently have less than the highWaterMark, then also read some
23648 if (state.length === 0 || state.length - n < state.highWaterMark) {
23649 doRead = true;
23650 debug('length less than watermark', doRead);
23651 }
ebd8d4e8 23652
8b095871
IC
23653 // however, if we've ended, then there's no point, and if we're already
23654 // reading, then it's unnecessary.
23655 if (state.ended || state.reading) {
23656 doRead = false;
23657 debug('reading or ended', doRead);
23658 } else if (doRead) {
23659 debug('do read');
23660 state.reading = true;
23661 state.sync = true;
23662 // if the length is currently zero, then we *need* a readable event.
23663 if (state.length === 0) state.needReadable = true;
23664 // call internal read method
23665 this._read(state.highWaterMark);
23666 state.sync = false;
23667 // If _read pushed data synchronously, then `reading` will be false,
23668 // and we need to re-evaluate how much data we can return to the user.
23669 if (!state.reading) n = howMuchToRead(nOrig, state);
23670 }
ebd8d4e8 23671
8b095871
IC
23672 var ret;
23673 if (n > 0) ret = fromList(n, state);else ret = null;
ebd8d4e8 23674
8b095871
IC
23675 if (ret === null) {
23676 state.needReadable = true;
23677 n = 0;
23678 } else {
23679 state.length -= n;
23680 }
ebd8d4e8 23681
8b095871
IC
23682 if (state.length === 0) {
23683 // If we have nothing in the buffer, then we want to know
23684 // as soon as we *do* get something into the buffer.
23685 if (!state.ended) state.needReadable = true;
ebd8d4e8 23686
8b095871
IC
23687 // If we tried to read() past the EOF, then emit end on the next tick.
23688 if (nOrig !== n && state.ended) endReadable(this);
23689 }
23690
23691 if (ret !== null) this.emit('data', ret);
23692
23693 return ret;
ab78acc6
IC
23694};
23695
8b095871
IC
23696function chunkInvalid(state, chunk) {
23697 var er = null;
23698 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
23699 er = new TypeError('Invalid non-string/buffer chunk');
23700 }
23701 return er;
23702}
ab78acc6 23703
8b095871
IC
23704function onEofChunk(stream, state) {
23705 if (state.ended) return;
23706 if (state.decoder) {
23707 var chunk = state.decoder.end();
23708 if (chunk && chunk.length) {
23709 state.buffer.push(chunk);
23710 state.length += state.objectMode ? 1 : chunk.length;
23711 }
23712 }
23713 state.ended = true;
23714
23715 // emit 'readable' now to make sure it gets picked up.
23716 emitReadable(stream);
23717}
23718
23719// Don't emit readable right away in sync mode, because this can trigger
23720// another read() call => stack overflow. This way, it might trigger
23721// a nextTick recursion warning, but that's not so bad.
23722function emitReadable(stream) {
23723 var state = stream._readableState;
23724 state.needReadable = false;
23725 if (!state.emittedReadable) {
23726 debug('emitReadable', state.flowing);
23727 state.emittedReadable = true;
23728 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
23729 }
ebd8d4e8
IC
23730}
23731
8b095871
IC
23732function emitReadable_(stream) {
23733 debug('emit readable');
23734 stream.emit('readable');
23735 flow(stream);
23736}
ebd8d4e8 23737
8b095871
IC
23738// at this point, the user has presumably seen the 'readable' event,
23739// and called read() to consume some data. that may have triggered
23740// in turn another _read(n) call, in which case reading = true if
23741// it's in progress.
23742// However, if we're not ended, or reading, and the length < hwm,
23743// then go ahead and try to read some more preemptively.
23744function maybeReadMore(stream, state) {
23745 if (!state.readingMore) {
23746 state.readingMore = true;
23747 processNextTick(maybeReadMore_, stream, state);
23748 }
23749}
ab78acc6 23750
8b095871
IC
23751function maybeReadMore_(stream, state) {
23752 var len = state.length;
23753 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
23754 debug('maybeReadMore read 0');
23755 stream.read(0);
23756 if (len === state.length)
23757 // didn't get any data, stop spinning.
23758 break;else len = state.length;
23759 }
23760 state.readingMore = false;
23761}
ab78acc6 23762
8b095871
IC
23763// abstract method. to be overridden in specific implementation classes.
23764// call cb(er, data) where data is <= n in length.
23765// for virtual (non-string, non-buffer) streams, "length" is somewhat
23766// arbitrary, and perhaps not very meaningful.
23767Readable.prototype._read = function (n) {
23768 this.emit('error', new Error('_read() is not implemented'));
ab78acc6
IC
23769};
23770
8b095871
IC
23771Readable.prototype.pipe = function (dest, pipeOpts) {
23772 var src = this;
23773 var state = this._readableState;
ab78acc6 23774
8b095871
IC
23775 switch (state.pipesCount) {
23776 case 0:
23777 state.pipes = dest;
23778 break;
23779 case 1:
23780 state.pipes = [state.pipes, dest];
23781 break;
23782 default:
23783 state.pipes.push(dest);
23784 break;
ab78acc6 23785 }
8b095871
IC
23786 state.pipesCount += 1;
23787 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
ab78acc6 23788
8b095871 23789 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
ab78acc6 23790
8b095871
IC
23791 var endFn = doEnd ? onend : cleanup;
23792 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
ab78acc6 23793
8b095871
IC
23794 dest.on('unpipe', onunpipe);
23795 function onunpipe(readable) {
23796 debug('onunpipe');
23797 if (readable === src) {
23798 cleanup();
ab78acc6 23799 }
8b095871 23800 }
ebd8d4e8 23801
8b095871
IC
23802 function onend() {
23803 debug('onend');
23804 dest.end();
ebd8d4e8
IC
23805 }
23806
8b095871
IC
23807 // when the dest drains, it reduces the awaitDrain counter
23808 // on the source. This would be more elegant with a .once()
23809 // handler in flow(), but adding and removing repeatedly is
23810 // too slow.
23811 var ondrain = pipeOnDrain(src);
23812 dest.on('drain', ondrain);
ebd8d4e8 23813
8b095871
IC
23814 var cleanedUp = false;
23815 function cleanup() {
23816 debug('cleanup');
23817 // cleanup event handlers once the pipe is broken
23818 dest.removeListener('close', onclose);
23819 dest.removeListener('finish', onfinish);
23820 dest.removeListener('drain', ondrain);
23821 dest.removeListener('error', onerror);
23822 dest.removeListener('unpipe', onunpipe);
23823 src.removeListener('end', onend);
23824 src.removeListener('end', cleanup);
23825 src.removeListener('data', ondata);
ebd8d4e8 23826
8b095871 23827 cleanedUp = true;
ebd8d4e8 23828
8b095871
IC
23829 // if the reader is waiting for a drain event from this
23830 // specific writer, then it would cause it to never start
23831 // flowing again.
23832 // So, if this is awaiting a drain, then we just call it now.
23833 // If we don't know, then assume that we are waiting for one.
23834 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
23835 }
ebd8d4e8 23836
8b095871
IC
23837 // If the user pushes more data while we're writing to dest then we'll end up
23838 // in ondata again. However, we only want to increase awaitDrain once because
23839 // dest will only emit one 'drain' event for the multiple writes.
23840 // => Introduce a guard on increasing awaitDrain.
23841 var increasedAwaitDrain = false;
23842 src.on('data', ondata);
23843 function ondata(chunk) {
23844 debug('ondata');
23845 increasedAwaitDrain = false;
23846 var ret = dest.write(chunk);
23847 if (false === ret && !increasedAwaitDrain) {
23848 // If the user unpiped during `dest.write()`, it is possible
23849 // to get stuck in a permanently paused state if that write
23850 // also returned false.
23851 // => Check whether `dest` is still a piping destination.
23852 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
23853 debug('false write response, pause', src._readableState.awaitDrain);
23854 src._readableState.awaitDrain++;
23855 increasedAwaitDrain = true;
23856 }
23857 src.pause();
23858 }
23859 }
ebd8d4e8 23860
8b095871
IC
23861 // if the dest has an error, then stop piping into it.
23862 // however, don't suppress the throwing behavior for this.
23863 function onerror(er) {
23864 debug('onerror', er);
23865 unpipe();
23866 dest.removeListener('error', onerror);
23867 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
23868 }
ab78acc6 23869
8b095871
IC
23870 // Make sure our error handler is attached before userland ones.
23871 prependListener(dest, 'error', onerror);
ab78acc6 23872
8b095871
IC
23873 // Both close and finish should trigger unpipe, but only once.
23874 function onclose() {
23875 dest.removeListener('finish', onfinish);
23876 unpipe();
23877 }
23878 dest.once('close', onclose);
23879 function onfinish() {
23880 debug('onfinish');
23881 dest.removeListener('close', onclose);
23882 unpipe();
ab78acc6 23883 }
8b095871 23884 dest.once('finish', onfinish);
ebd8d4e8 23885
8b095871
IC
23886 function unpipe() {
23887 debug('unpipe');
23888 src.unpipe(dest);
23889 }
23890
23891 // tell the dest that it's being piped to
23892 dest.emit('pipe', src);
23893
23894 // start the flow if it hasn't been started already.
23895 if (!state.flowing) {
23896 debug('pipe resume');
23897 src.resume();
23898 }
23899
23900 return dest;
ab78acc6 23901};
ebd8d4e8 23902
8b095871
IC
23903function pipeOnDrain(src) {
23904 return function () {
23905 var state = src._readableState;
23906 debug('pipeOnDrain', state.awaitDrain);
23907 if (state.awaitDrain) state.awaitDrain--;
23908 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
23909 state.flowing = true;
23910 flow(src);
23911 }
23912 };
23913}
ebd8d4e8 23914
8b095871
IC
23915Readable.prototype.unpipe = function (dest) {
23916 var state = this._readableState;
ebd8d4e8 23917
8b095871
IC
23918 // if we're not piping anywhere, then do nothing.
23919 if (state.pipesCount === 0) return this;
ebd8d4e8 23920
8b095871
IC
23921 // just one destination. most common case.
23922 if (state.pipesCount === 1) {
23923 // passed in one, but it's not the right one.
23924 if (dest && dest !== state.pipes) return this;
ebd8d4e8 23925
8b095871
IC
23926 if (!dest) dest = state.pipes;
23927
23928 // got a match.
23929 state.pipes = null;
23930 state.pipesCount = 0;
23931 state.flowing = false;
23932 if (dest) dest.emit('unpipe', this);
23933 return this;
ab78acc6 23934 }
ebd8d4e8 23935
8b095871 23936 // slow case. multiple pipe destinations.
ebd8d4e8 23937
8b095871
IC
23938 if (!dest) {
23939 // remove all.
23940 var dests = state.pipes;
23941 var len = state.pipesCount;
23942 state.pipes = null;
23943 state.pipesCount = 0;
23944 state.flowing = false;
ebd8d4e8 23945
8b095871
IC
23946 for (var i = 0; i < len; i++) {
23947 dests[i].emit('unpipe', this);
23948 }return this;
23949 }
ebd8d4e8 23950
8b095871
IC
23951 // try to find the right one.
23952 var index = indexOf(state.pipes, dest);
23953 if (index === -1) return this;
ebd8d4e8 23954
8b095871
IC
23955 state.pipes.splice(index, 1);
23956 state.pipesCount -= 1;
23957 if (state.pipesCount === 1) state.pipes = state.pipes[0];
ebd8d4e8 23958
8b095871 23959 dest.emit('unpipe', this);
ab78acc6 23960
8b095871
IC
23961 return this;
23962};
ab78acc6 23963
8b095871
IC
23964// set up data events if they are asked for
23965// Ensure readable listeners eventually get something
23966Readable.prototype.on = function (ev, fn) {
23967 var res = Stream.prototype.on.call(this, ev, fn);
23968
23969 if (ev === 'data') {
23970 // Start flowing on next tick if stream isn't explicitly paused
23971 if (this._readableState.flowing !== false) this.resume();
23972 } else if (ev === 'readable') {
23973 var state = this._readableState;
23974 if (!state.endEmitted && !state.readableListening) {
23975 state.readableListening = state.needReadable = true;
23976 state.emittedReadable = false;
23977 if (!state.reading) {
23978 processNextTick(nReadingNextTick, this);
23979 } else if (state.length) {
23980 emitReadable(this, state);
ebd8d4e8 23981 }
ab78acc6 23982 }
8b095871 23983 }
ebd8d4e8 23984
8b095871
IC
23985 return res;
23986};
23987Readable.prototype.addListener = Readable.prototype.on;
ab78acc6 23988
8b095871
IC
23989function nReadingNextTick(self) {
23990 debug('readable nexttick read 0');
23991 self.read(0);
23992}
ab78acc6 23993
8b095871
IC
23994// pause() and resume() are remnants of the legacy readable stream API
23995// If the user uses them, then switch into old mode.
23996Readable.prototype.resume = function () {
23997 var state = this._readableState;
23998 if (!state.flowing) {
23999 debug('resume');
24000 state.flowing = true;
24001 resume(this, state);
ebd8d4e8 24002 }
ab78acc6 24003 return this;
ebd8d4e8
IC
24004};
24005
8b095871
IC
24006function resume(stream, state) {
24007 if (!state.resumeScheduled) {
24008 state.resumeScheduled = true;
24009 processNextTick(resume_, stream, state);
ebd8d4e8 24010 }
8b095871 24011}
ab78acc6 24012
8b095871
IC
24013function resume_(stream, state) {
24014 if (!state.reading) {
24015 debug('resume read 0');
24016 stream.read(0);
ebd8d4e8 24017 }
ebd8d4e8 24018
8b095871
IC
24019 state.resumeScheduled = false;
24020 state.awaitDrain = 0;
24021 stream.emit('resume');
24022 flow(stream);
24023 if (state.flowing && !state.reading) stream.read(0);
24024}
ab78acc6 24025
8b095871
IC
24026Readable.prototype.pause = function () {
24027 debug('call pause flowing=%j', this._readableState.flowing);
24028 if (false !== this._readableState.flowing) {
24029 debug('pause');
24030 this._readableState.flowing = false;
24031 this.emit('pause');
ebd8d4e8 24032 }
ab78acc6
IC
24033 return this;
24034};
ebd8d4e8 24035
8b095871
IC
24036function flow(stream) {
24037 var state = stream._readableState;
24038 debug('flow', state.flowing);
24039 while (state.flowing && stream.read() !== null) {}
24040}
ebd8d4e8 24041
8b095871
IC
24042// wrap an old-style stream as the async data source.
24043// This is *not* part of the readable stream interface.
24044// It is an ugly unfortunate mess of history.
24045Readable.prototype.wrap = function (stream) {
24046 var state = this._readableState;
24047 var paused = false;
ebd8d4e8 24048
8b095871
IC
24049 var self = this;
24050 stream.on('end', function () {
24051 debug('wrapped end');
24052 if (state.decoder && !state.ended) {
24053 var chunk = state.decoder.end();
24054 if (chunk && chunk.length) self.push(chunk);
24055 }
ebd8d4e8 24056
8b095871
IC
24057 self.push(null);
24058 });
ebd8d4e8 24059
8b095871
IC
24060 stream.on('data', function (chunk) {
24061 debug('wrapped data');
24062 if (state.decoder) chunk = state.decoder.write(chunk);
ebd8d4e8 24063
8b095871
IC
24064 // don't skip over falsy values in objectMode
24065 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
ebd8d4e8 24066
8b095871
IC
24067 var ret = self.push(chunk);
24068 if (!ret) {
24069 paused = true;
24070 stream.pause();
24071 }
24072 });
24073
24074 // proxy all the other methods.
24075 // important when wrapping filters and duplexes.
24076 for (var i in stream) {
24077 if (this[i] === undefined && typeof stream[i] === 'function') {
24078 this[i] = function (method) {
24079 return function () {
24080 return stream[method].apply(stream, arguments);
24081 };
24082 }(i);
24083 }
ab78acc6 24084 }
ebd8d4e8 24085
8b095871
IC
24086 // proxy certain important events.
24087 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
24088 forEach(events, function (ev) {
24089 stream.on(ev, self.emit.bind(self, ev));
24090 });
24091
24092 // when we try to consume some more bytes, simply unpause the
24093 // underlying stream.
24094 self._read = function (n) {
24095 debug('wrapped _read', n);
24096 if (paused) {
24097 paused = false;
24098 stream.resume();
24099 }
24100 };
24101
24102 return self;
ebd8d4e8
IC
24103};
24104
8b095871
IC
24105// exposed for testing purposes only.
24106Readable._fromList = fromList;
ebd8d4e8 24107
8b095871
IC
24108// Pluck off n bytes from an array of buffers.
24109// Length is the combined lengths of all the buffers in the list.
24110// This function is designed to be inlinable, so please take care when making
24111// changes to the function body.
24112function fromList(n, state) {
24113 // nothing buffered
24114 if (state.length === 0) return null;
ab78acc6 24115
8b095871
IC
24116 var ret;
24117 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
24118 // read it all, truncate the list
24119 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);
24120 state.buffer.clear();
24121 } else {
24122 // read part of list
24123 ret = fromListPartial(n, state.buffer, state.decoder);
24124 }
24125
24126 return ret;
24127}
24128
24129// Extracts only enough buffered data to satisfy the amount requested.
24130// This function is designed to be inlinable, so please take care when making
24131// changes to the function body.
24132function fromListPartial(n, list, hasStrings) {
24133 var ret;
24134 if (n < list.head.data.length) {
24135 // slice is the same for buffers and strings
24136 ret = list.head.data.slice(0, n);
24137 list.head.data = list.head.data.slice(n);
24138 } else if (n === list.head.data.length) {
24139 // first chunk is a perfect match
24140 ret = list.shift();
24141 } else {
24142 // result spans more than one buffer
24143 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
24144 }
24145 return ret;
ab78acc6 24146}
ebd8d4e8 24147
8b095871
IC
24148// Copies a specified amount of characters from the list of buffered data
24149// chunks.
24150// This function is designed to be inlinable, so please take care when making
24151// changes to the function body.
24152function copyFromBufferString(n, list) {
24153 var p = list.head;
24154 var c = 1;
24155 var ret = p.data;
24156 n -= ret.length;
24157 while (p = p.next) {
24158 var str = p.data;
24159 var nb = n > str.length ? str.length : n;
24160 if (nb === str.length) ret += str;else ret += str.slice(0, n);
24161 n -= nb;
24162 if (n === 0) {
24163 if (nb === str.length) {
24164 ++c;
24165 if (p.next) list.head = p.next;else list.head = list.tail = null;
24166 } else {
24167 list.head = p;
24168 p.data = str.slice(nb);
24169 }
24170 break;
ab78acc6 24171 }
8b095871
IC
24172 ++c;
24173 }
24174 list.length -= c;
24175 return ret;
ab78acc6
IC
24176}
24177
8b095871
IC
24178// Copies a specified amount of bytes from the list of buffered data chunks.
24179// This function is designed to be inlinable, so please take care when making
24180// changes to the function body.
24181function copyFromBuffer(n, list) {
24182 var ret = bufferShim.allocUnsafe(n);
24183 var p = list.head;
24184 var c = 1;
24185 p.data.copy(ret);
24186 n -= p.data.length;
24187 while (p = p.next) {
24188 var buf = p.data;
24189 var nb = n > buf.length ? buf.length : n;
24190 buf.copy(ret, ret.length - n, 0, nb);
24191 n -= nb;
24192 if (n === 0) {
24193 if (nb === buf.length) {
24194 ++c;
24195 if (p.next) list.head = p.next;else list.head = list.tail = null;
24196 } else {
24197 list.head = p;
24198 p.data = buf.slice(nb);
24199 }
24200 break;
ab78acc6 24201 }
8b095871
IC
24202 ++c;
24203 }
24204 list.length -= c;
24205 return ret;
ab78acc6 24206}
ebd8d4e8 24207
8b095871
IC
24208function endReadable(stream) {
24209 var state = stream._readableState;
ab78acc6 24210
8b095871
IC
24211 // If we get here before consuming all the bytes, then that is a
24212 // bug in node. Should never happen.
24213 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
ab78acc6 24214
8b095871
IC
24215 if (!state.endEmitted) {
24216 state.ended = true;
24217 processNextTick(endReadableNT, state, stream);
24218 }
24219}
ebd8d4e8 24220
8b095871
IC
24221function endReadableNT(state, stream) {
24222 // Check that we didn't get one last unshift.
24223 if (!state.endEmitted && state.length === 0) {
24224 state.endEmitted = true;
24225 stream.readable = false;
24226 stream.emit('end');
24227 }
24228}
ebd8d4e8 24229
8b095871
IC
24230function forEach(xs, f) {
24231 for (var i = 0, l = xs.length; i < l; i++) {
24232 f(xs[i], i);
24233 }
24234}
ebd8d4e8 24235
8b095871
IC
24236function indexOf(xs, x) {
24237 for (var i = 0, l = xs.length; i < l; i++) {
24238 if (xs[i] === x) return i;
24239 }
24240 return -1;
24241}
24242}).call(this,require('_process'))
24243},{"./_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){
24244// a transform stream is a readable/writable stream where you do
24245// something with the data. Sometimes it's called a "filter",
24246// but that's not a great name for it, since that implies a thing where
24247// some bits pass through, and others are simply ignored. (That would
24248// be a valid example of a transform, of course.)
ab78acc6 24249//
8b095871
IC
24250// While the output is causally related to the input, it's not a
24251// necessarily symmetric or synchronous transformation. For example,
24252// a zlib stream might take multiple plain-text writes(), and then
24253// emit a single compressed chunk some time in the future.
ab78acc6 24254//
8b095871 24255// Here's how this works:
ab78acc6 24256//
8b095871
IC
24257// The Transform stream has all the aspects of the readable and writable
24258// stream classes. When you write(chunk), that calls _write(chunk,cb)
24259// internally, and returns false if there's a lot of pending writes
24260// buffered up. When you call read(), that calls _read(n) until
24261// there's enough pending readable data buffered up.
24262//
24263// In a transform stream, the written data is placed in a buffer. When
24264// _read(n) is called, it transforms the queued up data, calling the
24265// buffered _write cb's as it consumes chunks. If consuming a single
24266// written chunk would result in multiple output chunks, then the first
24267// outputted bit calls the readcb, and subsequent chunks just go into
24268// the read buffer, and will cause it to emit 'readable' if necessary.
24269//
24270// This way, back-pressure is actually determined by the reading side,
24271// since _read has to be called to start processing a new chunk. However,
24272// a pathological inflate type of transform can cause excessive buffering
24273// here. For example, imagine a stream where every byte of input is
24274// interpreted as an integer from 0-255, and then results in that many
24275// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
24276// 1kb of data being output. In this case, you could write a very small
24277// amount of input, and end up with a very large amount of output. In
24278// such a pathological inflating mechanism, there'd be no way to tell
24279// the system to stop doing the transform. A single 4MB write could
24280// cause the system to run out of memory.
24281//
24282// However, even in such a pathological case, only a single written chunk
24283// would be consumed, and then the rest would wait (un-transformed) until
24284// the results of the previous transformed chunk were consumed.
ebd8d4e8 24285
8b095871 24286'use strict';
ebd8d4e8 24287
8b095871 24288module.exports = Transform;
ebd8d4e8 24289
8b095871 24290var Duplex = require('./_stream_duplex');
ebd8d4e8 24291
ab78acc6
IC
24292/*<replacement>*/
24293var util = require('core-util-is');
24294util.inherits = require('inherits');
24295/*</replacement>*/
ebd8d4e8 24296
8b095871 24297util.inherits(Transform, Duplex);
ebd8d4e8 24298
8b095871
IC
24299function TransformState(stream) {
24300 this.afterTransform = function (er, data) {
24301 return afterTransform(stream, er, data);
24302 };
ebd8d4e8 24303
8b095871
IC
24304 this.needTransform = false;
24305 this.transforming = false;
24306 this.writecb = null;
24307 this.writechunk = null;
24308 this.writeencoding = null;
24309}
ebd8d4e8 24310
8b095871
IC
24311function afterTransform(stream, er, data) {
24312 var ts = stream._transformState;
24313 ts.transforming = false;
ebd8d4e8 24314
8b095871 24315 var cb = ts.writecb;
ebd8d4e8 24316
8b095871 24317 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
ebd8d4e8 24318
8b095871
IC
24319 ts.writechunk = null;
24320 ts.writecb = null;
ebd8d4e8 24321
8b095871 24322 if (data !== null && data !== undefined) stream.push(data);
ebd8d4e8 24323
8b095871
IC
24324 cb(er);
24325
24326 var rs = stream._readableState;
24327 rs.reading = false;
24328 if (rs.needReadable || rs.length < rs.highWaterMark) {
24329 stream._read(rs.highWaterMark);
24330 }
ebd8d4e8
IC
24331}
24332
8b095871
IC
24333function Transform(options) {
24334 if (!(this instanceof Transform)) return new Transform(options);
ebd8d4e8 24335
8b095871 24336 Duplex.call(this, options);
ebd8d4e8 24337
8b095871
IC
24338 this._transformState = new TransformState(this);
24339
24340 var stream = this;
24341
24342 // start out asking for a readable event once data is transformed.
24343 this._readableState.needReadable = true;
24344
24345 // we have implemented the _read method, and done the other things
24346 // that Readable wants before the first _read call, so unset the
24347 // sync guard flag.
24348 this._readableState.sync = false;
24349
24350 if (options) {
24351 if (typeof options.transform === 'function') this._transform = options.transform;
24352
24353 if (typeof options.flush === 'function') this._flush = options.flush;
ebd8d4e8 24354 }
8b095871
IC
24355
24356 // When the writable side finishes, then flush out anything remaining.
24357 this.once('prefinish', function () {
24358 if (typeof this._flush === 'function') this._flush(function (er, data) {
24359 done(stream, er, data);
24360 });else done(stream);
24361 });
ab78acc6 24362}
ebd8d4e8 24363
8b095871
IC
24364Transform.prototype.push = function (chunk, encoding) {
24365 this._transformState.needTransform = false;
24366 return Duplex.prototype.push.call(this, chunk, encoding);
24367};
24368
24369// This is the part where you do stuff!
24370// override this function in implementation classes.
24371// 'chunk' is an input chunk.
ab78acc6 24372//
8b095871
IC
24373// Call `push(newChunk)` to pass along transformed output
24374// to the readable side. You may call 'push' zero or more times.
ab78acc6 24375//
8b095871
IC
24376// Call `cb(err)` when you are done with this chunk. If you pass
24377// an error, then that'll put the hurt on the whole operation. If you
24378// never call cb(), then you'll never get another chunk.
24379Transform.prototype._transform = function (chunk, encoding, cb) {
24380 throw new Error('_transform() is not implemented');
24381};
ebd8d4e8 24382
8b095871
IC
24383Transform.prototype._write = function (chunk, encoding, cb) {
24384 var ts = this._transformState;
24385 ts.writecb = cb;
24386 ts.writechunk = chunk;
24387 ts.writeencoding = encoding;
24388 if (!ts.transforming) {
24389 var rs = this._readableState;
24390 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
24391 }
24392};
ebd8d4e8 24393
8b095871
IC
24394// Doesn't matter what the args are here.
24395// _transform does all the work.
24396// That we got here means that the readable side wants more data.
24397Transform.prototype._read = function (n) {
24398 var ts = this._transformState;
ebd8d4e8 24399
8b095871
IC
24400 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
24401 ts.transforming = true;
24402 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
24403 } else {
24404 // mark that we need a transform, so that any data that comes in
24405 // will get processed, now that we've asked for it.
24406 ts.needTransform = true;
24407 }
24408};
ebd8d4e8 24409
8b095871
IC
24410function done(stream, er, data) {
24411 if (er) return stream.emit('error', er);
ebd8d4e8 24412
8b095871 24413 if (data !== null && data !== undefined) stream.push(data);
ebd8d4e8 24414
8b095871
IC
24415 // if there's nothing in the write buffer, then that means
24416 // that nothing more will ever be provided
24417 var ws = stream._writableState;
24418 var ts = stream._transformState;
ebd8d4e8 24419
8b095871 24420 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
ebd8d4e8 24421
8b095871 24422 if (ts.transforming) throw new Error('Calling transform done when still transforming');
ebd8d4e8 24423
8b095871
IC
24424 return stream.push(null);
24425}
24426},{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
ab78acc6 24427(function (process){
8b095871
IC
24428// A bit simpler than readable streams.
24429// Implement an async ._write(chunk, encoding, cb), and it'll handle all
24430// the drain event emission and buffering.
ebd8d4e8 24431
8b095871
IC
24432'use strict';
24433
24434module.exports = Writable;
ebd8d4e8 24435
ab78acc6 24436/*<replacement>*/
8b095871 24437var processNextTick = require('process-nextick-args');
ab78acc6
IC
24438/*</replacement>*/
24439
ab78acc6 24440/*<replacement>*/
8b095871 24441var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
ab78acc6
IC
24442/*</replacement>*/
24443
ab78acc6 24444/*<replacement>*/
8b095871 24445var Duplex;
ab78acc6
IC
24446/*</replacement>*/
24447
8b095871 24448Writable.WritableState = WritableState;
ab78acc6
IC
24449
24450/*<replacement>*/
24451var util = require('core-util-is');
24452util.inherits = require('inherits');
24453/*</replacement>*/
24454
8b095871
IC
24455/*<replacement>*/
24456var internalUtil = {
24457 deprecate: require('util-deprecate')
24458};
24459/*</replacement>*/
ab78acc6 24460
8b095871
IC
24461/*<replacement>*/
24462var Stream;
24463(function () {
24464 try {
24465 Stream = require('st' + 'ream');
24466 } catch (_) {} finally {
24467 if (!Stream) Stream = require('events').EventEmitter;
24468 }
24469})();
24470/*</replacement>*/
ab78acc6 24471
8b095871 24472var Buffer = require('buffer').Buffer;
ab78acc6 24473/*<replacement>*/
8b095871 24474var bufferShim = require('buffer-shims');
ab78acc6
IC
24475/*</replacement>*/
24476
8b095871
IC
24477util.inherits(Writable, Stream);
24478
24479function nop() {}
ab78acc6 24480
8b095871
IC
24481function WriteReq(chunk, encoding, cb) {
24482 this.chunk = chunk;
24483 this.encoding = encoding;
24484 this.callback = cb;
24485 this.next = null;
24486}
ab78acc6 24487
8b095871
IC
24488function WritableState(options, stream) {
24489 Duplex = Duplex || require('./_stream_duplex');
ab78acc6
IC
24490
24491 options = options || {};
24492
8b095871
IC
24493 // object stream flag to indicate whether or not this stream
24494 // contains buffers or objects.
24495 this.objectMode = !!options.objectMode;
24496
24497 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
24498
24499 // the point at which write() starts returning false
24500 // Note: 0 is a valid value, means that we always return false if
24501 // the entire buffer is not flushed immediately on write()
ab78acc6 24502 var hwm = options.highWaterMark;
8b095871
IC
24503 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
24504 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
ab78acc6
IC
24505
24506 // cast to ints.
8b095871 24507 this.highWaterMark = ~ ~this.highWaterMark;
ab78acc6 24508
8b095871
IC
24509 // drain event flag.
24510 this.needDrain = false;
24511 // at the start of calling end()
24512 this.ending = false;
24513 // when end() has been called, and returned
ab78acc6 24514 this.ended = false;
8b095871
IC
24515 // when 'finish' is emitted
24516 this.finished = false;
24517
24518 // should we decode strings into buffers before passing to _write?
24519 // this is here so that some node-core streams can optimize string
24520 // handling at a lower level.
24521 var noDecode = options.decodeStrings === false;
24522 this.decodeStrings = !noDecode;
24523
24524 // Crypto is kind of old and crusty. Historically, its default string
24525 // encoding is 'binary' so we have to make this configurable.
24526 // Everything else in the universe uses 'utf8', though.
24527 this.defaultEncoding = options.defaultEncoding || 'utf8';
24528
24529 // not an actual buffer we keep track of, but a measurement
24530 // of how much we're waiting to get pushed to some underlying
24531 // socket or file.
24532 this.length = 0;
24533
24534 // a flag to see when we're in the middle of a write.
24535 this.writing = false;
24536
24537 // when true all writes will be buffered until .uncork() call
24538 this.corked = 0;
ebd8d4e8 24539
ab78acc6
IC
24540 // a flag to be able to tell if the onwrite cb is called immediately,
24541 // or on a later tick. We set this to true at first, because any
24542 // actions that shouldn't happen until "later" should generally also
24543 // not happen before the first write call.
24544 this.sync = true;
ebd8d4e8 24545
8b095871
IC
24546 // a flag to know if we're processing previously buffered items, which
24547 // may call the _write() callback in the same tick, so that we don't
24548 // end up in an overlapped onwrite situation.
24549 this.bufferProcessing = false;
24550
24551 // the callback that's passed to _write(chunk,cb)
24552 this.onwrite = function (er) {
24553 onwrite(stream, er);
24554 };
24555
24556 // the callback that the user supplies to write(chunk,encoding,cb)
24557 this.writecb = null;
24558
24559 // the amount that is being written when _write is called.
24560 this.writelen = 0;
24561
24562 this.bufferedRequest = null;
24563 this.lastBufferedRequest = null;
24564
24565 // number of pending user-supplied write callbacks
24566 // this must be 0 before 'finish' can be emitted
24567 this.pendingcb = 0;
24568
24569 // emit prefinish if the only thing we're waiting for is _write cbs
24570 // This is relevant for synchronous Transform streams
24571 this.prefinished = false;
24572
24573 // True if the error was already emitted and should not be thrown again
24574 this.errorEmitted = false;
24575
24576 // count buffered requests
24577 this.bufferedRequestCount = 0;
24578
24579 // allocate the first CorkedRequest, there is always
24580 // one allocated and free to use, and we maintain at most two
24581 this.corkedRequestsFree = new CorkedRequest(this);
24582}
24583
24584WritableState.prototype.getBuffer = function getBuffer() {
24585 var current = this.bufferedRequest;
24586 var out = [];
24587 while (current) {
24588 out.push(current);
24589 current = current.next;
24590 }
24591 return out;
24592};
24593
24594(function () {
24595 try {
24596 Object.defineProperty(WritableState.prototype, 'buffer', {
24597 get: internalUtil.deprecate(function () {
24598 return this.getBuffer();
24599 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
24600 });
24601 } catch (_) {}
24602})();
24603
24604// Test _writableState for inheritance to account for Duplex streams,
24605// whose prototype chain only points to Readable.
24606var realHasInstance;
24607if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
24608 realHasInstance = Function.prototype[Symbol.hasInstance];
24609 Object.defineProperty(Writable, Symbol.hasInstance, {
24610 value: function (object) {
24611 if (realHasInstance.call(this, object)) return true;
24612
24613 return object && object._writableState instanceof WritableState;
24614 }
24615 });
24616} else {
24617 realHasInstance = function (object) {
24618 return object instanceof this;
24619 };
24620}
24621
24622function Writable(options) {
24623 Duplex = Duplex || require('./_stream_duplex');
24624
24625 // Writable ctor is applied to Duplexes, too.
24626 // `realHasInstance` is necessary because using plain `instanceof`
24627 // would return false, as no `_writableState` property is attached.
24628
24629 // Trying to use the custom `instanceof` for Writable here will also break the
24630 // Node.js LazyTransform implementation, which has a non-trivial getter for
24631 // `_writableState` that would lead to infinite recursion.
24632 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
24633 return new Writable(options);
24634 }
24635
24636 this._writableState = new WritableState(options, this);
24637
24638 // legacy.
24639 this.writable = true;
24640
24641 if (options) {
24642 if (typeof options.write === 'function') this._write = options.write;
24643
24644 if (typeof options.writev === 'function') this._writev = options.writev;
24645 }
24646
24647 Stream.call(this);
24648}
24649
24650// Otherwise people can pipe Writable streams, which is just wrong.
24651Writable.prototype.pipe = function () {
24652 this.emit('error', new Error('Cannot pipe, not readable'));
24653};
24654
24655function writeAfterEnd(stream, cb) {
24656 var er = new Error('write after end');
24657 // TODO: defer error events consistently everywhere, not just the cb
24658 stream.emit('error', er);
24659 processNextTick(cb, er);
24660}
24661
24662// If we get something that is not a buffer, string, null, or undefined,
24663// and we're not in objectMode, then that's an error.
24664// Otherwise stream chunks are all considered to be of length=1, and the
24665// watermarks determine how many objects to keep in the buffer, rather than
24666// how many bytes or characters.
24667function validChunk(stream, state, chunk, cb) {
24668 var valid = true;
24669 var er = false;
24670 // Always throw error if a null is written
24671 // if we are not in object mode then throw
24672 // if it is not a buffer, string, or undefined.
24673 if (chunk === null) {
24674 er = new TypeError('May not write null values to stream');
24675 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
24676 er = new TypeError('Invalid non-string/buffer chunk');
24677 }
24678 if (er) {
24679 stream.emit('error', er);
24680 processNextTick(cb, er);
24681 valid = false;
24682 }
24683 return valid;
24684}
ebd8d4e8 24685
8b095871
IC
24686Writable.prototype.write = function (chunk, encoding, cb) {
24687 var state = this._writableState;
24688 var ret = false;
ab78acc6 24689
8b095871
IC
24690 if (typeof encoding === 'function') {
24691 cb = encoding;
24692 encoding = null;
24693 }
ab78acc6 24694
8b095871 24695 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
ab78acc6 24696
8b095871 24697 if (typeof cb !== 'function') cb = nop;
ab78acc6 24698
8b095871
IC
24699 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
24700 state.pendingcb++;
24701 ret = writeOrBuffer(this, state, chunk, encoding, cb);
24702 }
ab78acc6 24703
8b095871
IC
24704 return ret;
24705};
ab78acc6 24706
8b095871
IC
24707Writable.prototype.cork = function () {
24708 var state = this._writableState;
ab78acc6 24709
8b095871
IC
24710 state.corked++;
24711};
ebd8d4e8 24712
8b095871
IC
24713Writable.prototype.uncork = function () {
24714 var state = this._writableState;
ab78acc6 24715
8b095871
IC
24716 if (state.corked) {
24717 state.corked--;
ab78acc6 24718
8b095871
IC
24719 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
24720 }
24721};
ab78acc6 24722
8b095871
IC
24723Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
24724 // node::ParseEncoding() requires lower case.
24725 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
24726 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);
24727 this._writableState.defaultEncoding = encoding;
24728 return this;
24729};
ab78acc6 24730
8b095871
IC
24731function decodeChunk(state, chunk, encoding) {
24732 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
24733 chunk = bufferShim.from(chunk, encoding);
24734 }
24735 return chunk;
ab78acc6
IC
24736}
24737
8b095871
IC
24738// if we're already writing something, then just put this
24739// in the queue, and wait our turn. Otherwise, call _write
24740// If we return false, then we need a drain event, so set that flag.
24741function writeOrBuffer(stream, state, chunk, encoding, cb) {
24742 chunk = decodeChunk(state, chunk, encoding);
ab78acc6 24743
8b095871
IC
24744 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
24745 var len = state.objectMode ? 1 : chunk.length;
ebd8d4e8 24746
8b095871 24747 state.length += len;
ebd8d4e8 24748
8b095871
IC
24749 var ret = state.length < state.highWaterMark;
24750 // we must ensure that previous needDrain will not be reset to false.
24751 if (!ret) state.needDrain = true;
ebd8d4e8 24752
8b095871
IC
24753 if (state.writing || state.corked) {
24754 var last = state.lastBufferedRequest;
24755 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
24756 if (last) {
24757 last.next = state.lastBufferedRequest;
ebd8d4e8 24758 } else {
8b095871
IC
24759 state.bufferedRequest = state.lastBufferedRequest;
24760 }
24761 state.bufferedRequestCount += 1;
24762 } else {
24763 doWrite(stream, state, false, len, chunk, encoding, cb);
24764 }
ab78acc6 24765
8b095871
IC
24766 return ret;
24767}
ab78acc6 24768
8b095871
IC
24769function doWrite(stream, state, writev, len, chunk, encoding, cb) {
24770 state.writelen = len;
24771 state.writecb = cb;
24772 state.writing = true;
24773 state.sync = true;
24774 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
24775 state.sync = false;
24776}
ab78acc6 24777
8b095871
IC
24778function onwriteError(stream, state, sync, er, cb) {
24779 --state.pendingcb;
24780 if (sync) processNextTick(cb, er);else cb(er);
ab78acc6 24781
8b095871
IC
24782 stream._writableState.errorEmitted = true;
24783 stream.emit('error', er);
24784}
ebd8d4e8 24785
8b095871
IC
24786function onwriteStateUpdate(state) {
24787 state.writing = false;
24788 state.writecb = null;
24789 state.length -= state.writelen;
24790 state.writelen = 0;
ab78acc6 24791}
ebd8d4e8 24792
8b095871
IC
24793function onwrite(stream, er) {
24794 var state = stream._writableState;
24795 var sync = state.sync;
24796 var cb = state.writecb;
ab78acc6 24797
8b095871 24798 onwriteStateUpdate(state);
ab78acc6 24799
8b095871
IC
24800 if (er) onwriteError(stream, state, sync, er, cb);else {
24801 // Check if we're actually ready to finish, but don't emit yet
24802 var finished = needFinish(state);
24803
24804 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
24805 clearBuffer(stream, state);
24806 }
24807
24808 if (sync) {
24809 /*<replacement>*/
24810 asyncWrite(afterWrite, stream, state, finished, cb);
24811 /*</replacement>*/
24812 } else {
24813 afterWrite(stream, state, finished, cb);
24814 }
24815 }
ab78acc6
IC
24816}
24817
8b095871
IC
24818function afterWrite(stream, state, finished, cb) {
24819 if (!finished) onwriteDrain(stream, state);
24820 state.pendingcb--;
24821 cb();
24822 finishMaybe(stream, state);
24823}
ab78acc6 24824
8b095871
IC
24825// Must force callback to be called on nextTick, so that we don't
24826// emit 'drain' before the write() consumer gets the 'false' return
24827// value, and has a chance to attach a 'drain' listener.
24828function onwriteDrain(stream, state) {
24829 if (state.length === 0 && state.needDrain) {
24830 state.needDrain = false;
24831 stream.emit('drain');
ebd8d4e8 24832 }
ebd8d4e8 24833}
ebd8d4e8 24834
8b095871
IC
24835// if there's something in the buffer waiting, then process it
24836function clearBuffer(stream, state) {
24837 state.bufferProcessing = true;
24838 var entry = state.bufferedRequest;
ebd8d4e8 24839
8b095871
IC
24840 if (stream._writev && entry && entry.next) {
24841 // Fast case, write everything using _writev()
24842 var l = state.bufferedRequestCount;
24843 var buffer = new Array(l);
24844 var holder = state.corkedRequestsFree;
24845 holder.entry = entry;
ebd8d4e8 24846
8b095871
IC
24847 var count = 0;
24848 while (entry) {
24849 buffer[count] = entry;
24850 entry = entry.next;
24851 count += 1;
24852 }
ebd8d4e8 24853
8b095871 24854 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
ebd8d4e8 24855
8b095871
IC
24856 // doWrite is almost always async, defer these to save a bit of time
24857 // as the hot path ends with doWrite
24858 state.pendingcb++;
24859 state.lastBufferedRequest = null;
24860 if (holder.next) {
24861 state.corkedRequestsFree = holder.next;
24862 holder.next = null;
24863 } else {
24864 state.corkedRequestsFree = new CorkedRequest(state);
24865 }
24866 } else {
24867 // Slow case, write chunks one-by-one
24868 while (entry) {
24869 var chunk = entry.chunk;
24870 var encoding = entry.encoding;
24871 var cb = entry.callback;
24872 var len = state.objectMode ? 1 : chunk.length;
ebd8d4e8 24873
8b095871
IC
24874 doWrite(stream, state, false, len, chunk, encoding, cb);
24875 entry = entry.next;
24876 // if we didn't call the onwrite immediately, then
24877 // it means that we need to wait until it does.
24878 // also, that means that the chunk and cb are currently
24879 // being processed, so move the buffer counter past them.
24880 if (state.writing) {
24881 break;
24882 }
24883 }
24884
24885 if (entry === null) state.lastBufferedRequest = null;
ebd8d4e8 24886 }
ab78acc6 24887
8b095871
IC
24888 state.bufferedRequestCount = 0;
24889 state.bufferedRequest = entry;
24890 state.bufferProcessing = false;
ebd8d4e8
IC
24891}
24892
8b095871
IC
24893Writable.prototype._write = function (chunk, encoding, cb) {
24894 cb(new Error('_write() is not implemented'));
24895};
ebd8d4e8 24896
8b095871 24897Writable.prototype._writev = null;
ab78acc6 24898
8b095871
IC
24899Writable.prototype.end = function (chunk, encoding, cb) {
24900 var state = this._writableState;
24901
24902 if (typeof chunk === 'function') {
24903 cb = chunk;
24904 chunk = null;
24905 encoding = null;
24906 } else if (typeof encoding === 'function') {
24907 cb = encoding;
24908 encoding = null;
ab78acc6
IC
24909 }
24910
8b095871 24911 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
ab78acc6 24912
8b095871
IC
24913 // .end() fully uncorks
24914 if (state.corked) {
24915 state.corked = 1;
24916 this.uncork();
ab78acc6
IC
24917 }
24918
8b095871
IC
24919 // ignore unnecessary end() calls.
24920 if (!state.ending && !state.finished) endWritable(this, state, cb);
24921};
ab78acc6 24922
8b095871
IC
24923function needFinish(state) {
24924 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
24925}
ab78acc6 24926
8b095871
IC
24927function prefinish(stream, state) {
24928 if (!state.prefinished) {
24929 state.prefinished = true;
24930 stream.emit('prefinish');
ab78acc6 24931 }
8b095871 24932}
ab78acc6 24933
8b095871
IC
24934function finishMaybe(stream, state) {
24935 var need = needFinish(state);
24936 if (need) {
24937 if (state.pendingcb === 0) {
24938 prefinish(stream, state);
24939 state.finished = true;
24940 stream.emit('finish');
24941 } else {
24942 prefinish(stream, state);
24943 }
ab78acc6 24944 }
8b095871
IC
24945 return need;
24946}
ab78acc6 24947
8b095871
IC
24948function endWritable(stream, state, cb) {
24949 state.ending = true;
24950 finishMaybe(stream, state);
24951 if (cb) {
24952 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
ab78acc6 24953 }
8b095871
IC
24954 state.ended = true;
24955 stream.writable = false;
24956}
ab78acc6 24957
8b095871
IC
24958// It seems a linked list but it is not
24959// there will be only 2 of these for each stream
24960function CorkedRequest(state) {
24961 var _this = this;
ab78acc6 24962
8b095871
IC
24963 this.next = null;
24964 this.entry = null;
ebd8d4e8 24965
8b095871
IC
24966 this.finish = function (err) {
24967 var entry = _this.entry;
24968 _this.entry = null;
24969 while (entry) {
24970 var cb = entry.callback;
24971 state.pendingcb--;
24972 cb(err);
24973 entry = entry.next;
24974 }
24975 if (state.corkedRequestsFree) {
24976 state.corkedRequestsFree.next = _this;
24977 } else {
24978 state.corkedRequestsFree = _this;
24979 }
24980 };
24981}
24982}).call(this,require('_process'))
24983},{"./_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){
24984'use strict';
ebd8d4e8 24985
8b095871
IC
24986var Buffer = require('buffer').Buffer;
24987/*<replacement>*/
24988var bufferShim = require('buffer-shims');
24989/*</replacement>*/
ebd8d4e8 24990
8b095871 24991module.exports = BufferList;
ebd8d4e8 24992
8b095871
IC
24993function BufferList() {
24994 this.head = null;
24995 this.tail = null;
24996 this.length = 0;
24997}
ab78acc6 24998
8b095871
IC
24999BufferList.prototype.push = function (v) {
25000 var entry = { data: v, next: null };
25001 if (this.length > 0) this.tail.next = entry;else this.head = entry;
25002 this.tail = entry;
25003 ++this.length;
25004};
25005
25006BufferList.prototype.unshift = function (v) {
25007 var entry = { data: v, next: this.head };
25008 if (this.length === 0) this.tail = entry;
25009 this.head = entry;
25010 ++this.length;
25011};
ab78acc6 25012
8b095871
IC
25013BufferList.prototype.shift = function () {
25014 if (this.length === 0) return;
25015 var ret = this.head.data;
25016 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
25017 --this.length;
ab78acc6
IC
25018 return ret;
25019};
25020
8b095871
IC
25021BufferList.prototype.clear = function () {
25022 this.head = this.tail = null;
25023 this.length = 0;
25024};
ebd8d4e8 25025
8b095871
IC
25026BufferList.prototype.join = function (s) {
25027 if (this.length === 0) return '';
25028 var p = this.head;
25029 var ret = '' + p.data;
25030 while (p = p.next) {
25031 ret += s + p.data;
25032 }return ret;
25033};
ebd8d4e8 25034
8b095871
IC
25035BufferList.prototype.concat = function (n) {
25036 if (this.length === 0) return bufferShim.alloc(0);
25037 if (this.length === 1) return this.head.data;
25038 var ret = bufferShim.allocUnsafe(n >>> 0);
25039 var p = this.head;
25040 var i = 0;
25041 while (p) {
25042 p.data.copy(ret, i);
25043 i += p.data.length;
25044 p = p.next;
ebd8d4e8 25045 }
8b095871
IC
25046 return ret;
25047};
25048},{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
25049module.exports = require("./lib/_stream_passthrough.js")
ebd8d4e8 25050
8b095871
IC
25051},{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
25052(function (process){
25053var Stream = (function (){
25054 try {
25055 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
25056 } catch(_){}
25057}());
25058exports = module.exports = require('./lib/_stream_readable.js');
25059exports.Stream = Stream || exports;
25060exports.Readable = exports;
25061exports.Writable = require('./lib/_stream_writable.js');
25062exports.Duplex = require('./lib/_stream_duplex.js');
25063exports.Transform = require('./lib/_stream_transform.js');
25064exports.PassThrough = require('./lib/_stream_passthrough.js');
ab78acc6 25065
8b095871
IC
25066if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
25067 module.exports = Stream;
ab78acc6 25068}
ebd8d4e8 25069
8b095871
IC
25070}).call(this,require('_process'))
25071},{"./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){
25072module.exports = require("./lib/_stream_transform.js")
ebd8d4e8 25073
8b095871
IC
25074},{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
25075module.exports = require("./lib/_stream_writable.js")
ab78acc6 25076
8b095871
IC
25077},{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
25078// Copyright Joyent, Inc. and other Node contributors.
25079//
25080// Permission is hereby granted, free of charge, to any person obtaining a
25081// copy of this software and associated documentation files (the
25082// "Software"), to deal in the Software without restriction, including
25083// without limitation the rights to use, copy, modify, merge, publish,
25084// distribute, sublicense, and/or sell copies of the Software, and to permit
25085// persons to whom the Software is furnished to do so, subject to the
25086// following conditions:
25087//
25088// The above copyright notice and this permission notice shall be included
25089// in all copies or substantial portions of the Software.
25090//
25091// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25092// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25093// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25094// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25095// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25096// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25097// USE OR OTHER DEALINGS IN THE SOFTWARE.
25098
25099module.exports = Stream;
25100
25101var EE = require('events').EventEmitter;
25102var inherits = require('inherits');
25103
25104inherits(Stream, EE);
25105Stream.Readable = require('readable-stream/readable.js');
25106Stream.Writable = require('readable-stream/writable.js');
25107Stream.Duplex = require('readable-stream/duplex.js');
25108Stream.Transform = require('readable-stream/transform.js');
25109Stream.PassThrough = require('readable-stream/passthrough.js');
ebd8d4e8 25110
8b095871
IC
25111// Backwards-compat with node 0.4.x
25112Stream.Stream = Stream;
ebd8d4e8 25113
ab78acc6 25114
ab78acc6 25115
8b095871
IC
25116// old-style streams. Note that the pipe method (the only relevant
25117// part of this class) is overridden in the Readable class.
ebd8d4e8 25118
8b095871
IC
25119function Stream() {
25120 EE.call(this);
25121}
ebd8d4e8 25122
8b095871
IC
25123Stream.prototype.pipe = function(dest, options) {
25124 var source = this;
ab78acc6 25125
8b095871
IC
25126 function ondata(chunk) {
25127 if (dest.writable) {
25128 if (false === dest.write(chunk) && source.pause) {
25129 source.pause();
25130 }
ab78acc6
IC
25131 }
25132 }
25133
8b095871
IC
25134 source.on('data', ondata);
25135
25136 function ondrain() {
25137 if (source.readable && source.resume) {
25138 source.resume();
25139 }
ab78acc6
IC
25140 }
25141
ab78acc6
IC
25142 dest.on('drain', ondrain);
25143
8b095871
IC
25144 // If the 'end' option is not supplied, dest.end() will be called when
25145 // source gets the 'end' or 'close' events. Only dest.end() once.
25146 if (!dest._isStdio && (!options || options.end !== false)) {
25147 source.on('end', onend);
25148 source.on('close', onclose);
ab78acc6
IC
25149 }
25150
8b095871
IC
25151 var didOnEnd = false;
25152 function onend() {
25153 if (didOnEnd) return;
25154 didOnEnd = true;
ab78acc6 25155
8b095871 25156 dest.end();
ab78acc6 25157 }
ab78acc6
IC
25158
25159
ab78acc6 25160 function onclose() {
8b095871
IC
25161 if (didOnEnd) return;
25162 didOnEnd = true;
ebd8d4e8 25163
8b095871 25164 if (typeof dest.destroy === 'function') dest.destroy();
ebd8d4e8
IC
25165 }
25166
8b095871
IC
25167 // don't leave dangling pipes when there are errors.
25168 function onerror(er) {
25169 cleanup();
25170 if (EE.listenerCount(this, 'error') === 0) {
25171 throw er; // Unhandled stream error in pipe.
25172 }
ebd8d4e8
IC
25173 }
25174
8b095871
IC
25175 source.on('error', onerror);
25176 dest.on('error', onerror);
ab78acc6 25177
8b095871
IC
25178 // remove all the event listeners that were added.
25179 function cleanup() {
25180 source.removeListener('data', ondata);
25181 dest.removeListener('drain', ondrain);
ab78acc6 25182
8b095871
IC
25183 source.removeListener('end', onend);
25184 source.removeListener('close', onclose);
ab78acc6 25185
8b095871
IC
25186 source.removeListener('error', onerror);
25187 dest.removeListener('error', onerror);
ab78acc6 25188
8b095871
IC
25189 source.removeListener('end', cleanup);
25190 source.removeListener('close', cleanup);
ab78acc6 25191
8b095871
IC
25192 dest.removeListener('close', cleanup);
25193 }
ab78acc6 25194
8b095871
IC
25195 source.on('end', cleanup);
25196 source.on('close', cleanup);
ab78acc6 25197
8b095871 25198 dest.on('close', cleanup);
ebd8d4e8 25199
8b095871 25200 dest.emit('pipe', source);
ab78acc6 25201
8b095871
IC
25202 // Allow for unix-like usage: A.pipe(B).pipe(C)
25203 return dest;
25204};
ab78acc6 25205
8b095871
IC
25206},{"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){
25207// Copyright Joyent, Inc. and other Node contributors.
25208//
25209// Permission is hereby granted, free of charge, to any person obtaining a
25210// copy of this software and associated documentation files (the
25211// "Software"), to deal in the Software without restriction, including
25212// without limitation the rights to use, copy, modify, merge, publish,
25213// distribute, sublicense, and/or sell copies of the Software, and to permit
25214// persons to whom the Software is furnished to do so, subject to the
25215// following conditions:
25216//
25217// The above copyright notice and this permission notice shall be included
25218// in all copies or substantial portions of the Software.
25219//
25220// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25221// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25222// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25223// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25224// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25225// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25226// USE OR OTHER DEALINGS IN THE SOFTWARE.
25227
25228var Buffer = require('buffer').Buffer;
ebd8d4e8 25229
8b095871
IC
25230var isBufferEncoding = Buffer.isEncoding
25231 || function(encoding) {
25232 switch (encoding && encoding.toLowerCase()) {
25233 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;
25234 default: return false;
25235 }
25236 }
ab78acc6 25237
ab78acc6 25238
8b095871
IC
25239function assertEncoding(encoding) {
25240 if (encoding && !isBufferEncoding(encoding)) {
25241 throw new Error('Unknown encoding: ' + encoding);
25242 }
25243}
ebd8d4e8 25244
8b095871
IC
25245// StringDecoder provides an interface for efficiently splitting a series of
25246// buffers into a series of JS strings without breaking apart multi-byte
25247// characters. CESU-8 is handled as part of the UTF-8 encoding.
25248//
25249// @TODO Handling all encodings inside a single object makes it very difficult
25250// to reason about this code, so it should be split up in the future.
25251// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
25252// points as used by CESU-8.
25253var StringDecoder = exports.StringDecoder = function(encoding) {
25254 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
25255 assertEncoding(encoding);
25256 switch (this.encoding) {
25257 case 'utf8':
25258 // CESU-8 represents each of Surrogate Pair by 3-bytes
25259 this.surrogateSize = 3;
25260 break;
25261 case 'ucs2':
25262 case 'utf16le':
25263 // UTF-16 represents each of Surrogate Pair by 2-bytes
25264 this.surrogateSize = 2;
25265 this.detectIncompleteChar = utf16DetectIncompleteChar;
25266 break;
25267 case 'base64':
25268 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
25269 this.surrogateSize = 3;
25270 this.detectIncompleteChar = base64DetectIncompleteChar;
25271 break;
25272 default:
25273 this.write = passThroughWrite;
25274 return;
25275 }
25276
25277 // Enough space to store all bytes of a single character. UTF-8 needs 4
25278 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
25279 this.charBuffer = new Buffer(6);
25280 // Number of bytes received for the current incomplete multi-byte character.
25281 this.charReceived = 0;
25282 // Number of bytes expected for the current incomplete multi-byte character.
25283 this.charLength = 0;
ab78acc6
IC
25284};
25285
ab78acc6 25286
8b095871
IC
25287// write decodes the given buffer and returns it as JS string that is
25288// guaranteed to not contain any partial multi-byte characters. Any partial
25289// character found at the end of the buffer is buffered up, and will be
25290// returned when calling write again with the remaining bytes.
25291//
25292// Note: Converting a Buffer containing an orphan surrogate to a String
25293// currently works, but converting a String to a Buffer (via `new Buffer`, or
25294// Buffer#write) will replace incomplete surrogates with the unicode
25295// replacement character. See https://codereview.chromium.org/121173009/ .
25296StringDecoder.prototype.write = function(buffer) {
25297 var charStr = '';
25298 // if our last write ended with an incomplete multibyte character
25299 while (this.charLength) {
25300 // determine how many remaining bytes this buffer has to offer for this char
25301 var available = (buffer.length >= this.charLength - this.charReceived) ?
25302 this.charLength - this.charReceived :
25303 buffer.length;
ab78acc6 25304
8b095871
IC
25305 // add the new bytes to the char buffer
25306 buffer.copy(this.charBuffer, this.charReceived, 0, available);
25307 this.charReceived += available;
25308
25309 if (this.charReceived < this.charLength) {
25310 // still not enough chars in this buffer? wait for more ...
25311 return '';
ebd8d4e8 25312 }
ebd8d4e8 25313
8b095871
IC
25314 // remove bytes belonging to the current character from the buffer
25315 buffer = buffer.slice(available, buffer.length);
ab78acc6 25316
8b095871
IC
25317 // get the character that was split
25318 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
25319
25320 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25321 var charCode = charStr.charCodeAt(charStr.length - 1);
25322 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25323 this.charLength += this.surrogateSize;
25324 charStr = '';
25325 continue;
ab78acc6 25326 }
8b095871 25327 this.charReceived = this.charLength = 0;
ebd8d4e8 25328
8b095871
IC
25329 // if there are no more bytes in this buffer, just emit our char
25330 if (buffer.length === 0) {
25331 return charStr;
25332 }
25333 break;
ebd8d4e8 25334 }
ebd8d4e8 25335
8b095871
IC
25336 // determine and set charLength / charReceived
25337 this.detectIncompleteChar(buffer);
ebd8d4e8 25338
8b095871
IC
25339 var end = buffer.length;
25340 if (this.charLength) {
25341 // buffer the incomplete character bytes we got
25342 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
25343 end -= this.charReceived;
ab78acc6 25344 }
ebd8d4e8 25345
8b095871
IC
25346 charStr += buffer.toString(this.encoding, 0, end);
25347
25348 var end = charStr.length - 1;
25349 var charCode = charStr.charCodeAt(end);
25350 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25351 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25352 var size = this.surrogateSize;
25353 this.charLength += size;
25354 this.charReceived += size;
25355 this.charBuffer.copy(this.charBuffer, size, 0, size);
25356 buffer.copy(this.charBuffer, 0, 0, size);
25357 return charStr.substring(0, end);
ab78acc6 25358 }
ebd8d4e8 25359
8b095871
IC
25360 // or just emit the charStr
25361 return charStr;
25362};
ebd8d4e8 25363
8b095871
IC
25364// detectIncompleteChar determines if there is an incomplete UTF-8 character at
25365// the end of the given buffer. If so, it sets this.charLength to the byte
25366// length that character, and sets this.charReceived to the number of bytes
25367// that are available for this character.
25368StringDecoder.prototype.detectIncompleteChar = function(buffer) {
25369 // determine how many bytes we have to check at the end of this buffer
25370 var i = (buffer.length >= 3) ? 3 : buffer.length;
ab78acc6 25371
8b095871
IC
25372 // Figure out if one of the last i bytes of our buffer announces an
25373 // incomplete char.
25374 for (; i > 0; i--) {
25375 var c = buffer[buffer.length - i];
ebd8d4e8 25376
8b095871 25377 // See http://en.wikipedia.org/wiki/UTF-8#Description
ebd8d4e8 25378
8b095871
IC
25379 // 110XXXXX
25380 if (i == 1 && c >> 5 == 0x06) {
25381 this.charLength = 2;
25382 break;
ebd8d4e8 25383 }
ab78acc6 25384
8b095871
IC
25385 // 1110XXXX
25386 if (i <= 2 && c >> 4 == 0x0E) {
25387 this.charLength = 3;
25388 break;
25389 }
25390
25391 // 11110XXX
25392 if (i <= 3 && c >> 3 == 0x1E) {
25393 this.charLength = 4;
25394 break;
ebd8d4e8
IC
25395 }
25396 }
8b095871
IC
25397 this.charReceived = i;
25398};
ab78acc6 25399
8b095871
IC
25400StringDecoder.prototype.end = function(buffer) {
25401 var res = '';
25402 if (buffer && buffer.length)
25403 res = this.write(buffer);
ab78acc6 25404
8b095871
IC
25405 if (this.charReceived) {
25406 var cr = this.charReceived;
25407 var buf = this.charBuffer;
25408 var enc = this.encoding;
25409 res += buf.slice(0, cr).toString(enc);
25410 }
ab78acc6 25411
8b095871 25412 return res;
ab78acc6
IC
25413};
25414
8b095871
IC
25415function passThroughWrite(buffer) {
25416 return buffer.toString(this.encoding);
25417}
ab78acc6 25418
8b095871
IC
25419function utf16DetectIncompleteChar(buffer) {
25420 this.charReceived = buffer.length % 2;
25421 this.charLength = this.charReceived ? 2 : 0;
25422}
ab78acc6 25423
8b095871
IC
25424function base64DetectIncompleteChar(buffer) {
25425 this.charReceived = buffer.length % 3;
25426 this.charLength = this.charReceived ? 3 : 0;
25427}
ab78acc6 25428
8b095871
IC
25429},{"buffer":5}],27:[function(require,module,exports){
25430(function (global){
ab78acc6 25431
8b095871
IC
25432/**
25433 * Module exports.
25434 */
ebd8d4e8 25435
8b095871 25436module.exports = deprecate;
ebd8d4e8 25437
8b095871
IC
25438/**
25439 * Mark that a method should not be used.
25440 * Returns a modified function which warns once by default.
25441 *
25442 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
25443 *
25444 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
25445 * will throw an Error when invoked.
25446 *
25447 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
25448 * will invoke `console.trace()` instead of `console.error()`.
25449 *
25450 * @param {Function} fn - the function to deprecate
25451 * @param {String} msg - the string to print to the console when `fn` is invoked
25452 * @returns {Function} a new "deprecated" version of `fn`
25453 * @api public
25454 */
ebd8d4e8 25455
8b095871
IC
25456function deprecate (fn, msg) {
25457 if (config('noDeprecation')) {
25458 return fn;
25459 }
ebd8d4e8 25460
8b095871
IC
25461 var warned = false;
25462 function deprecated() {
25463 if (!warned) {
25464 if (config('throwDeprecation')) {
25465 throw new Error(msg);
25466 } else if (config('traceDeprecation')) {
25467 console.trace(msg);
25468 } else {
25469 console.warn(msg);
ab78acc6 25470 }
8b095871 25471 warned = true;
ab78acc6 25472 }
8b095871 25473 return fn.apply(this, arguments);
ebd8d4e8
IC
25474 }
25475
8b095871 25476 return deprecated;
ebd8d4e8
IC
25477}
25478
8b095871
IC
25479/**
25480 * Checks `localStorage` for boolean values for the given `name`.
25481 *
25482 * @param {String} name
25483 * @returns {Boolean}
25484 * @api private
25485 */
ebd8d4e8 25486
8b095871
IC
25487function config (name) {
25488 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
25489 try {
25490 if (!global.localStorage) return false;
25491 } catch (_) {
25492 return false;
ab78acc6 25493 }
8b095871
IC
25494 var val = global.localStorage[name];
25495 if (null == val) return false;
25496 return String(val).toLowerCase() === 'true';
ebd8d4e8 25497}
ebd8d4e8 25498
8b095871
IC
25499}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
25500},{}],28:[function(require,module,exports){
25501arguments[4][9][0].apply(exports,arguments)
25502},{"dup":9}],29:[function(require,module,exports){
25503module.exports = function isBuffer(arg) {
25504 return arg && typeof arg === 'object'
25505 && typeof arg.copy === 'function'
25506 && typeof arg.fill === 'function'
25507 && typeof arg.readUInt8 === 'function';
ebd8d4e8 25508}
8b095871
IC
25509},{}],30:[function(require,module,exports){
25510(function (process,global){
ab78acc6
IC
25511// Copyright Joyent, Inc. and other Node contributors.
25512//
25513// Permission is hereby granted, free of charge, to any person obtaining a
25514// copy of this software and associated documentation files (the
25515// "Software"), to deal in the Software without restriction, including
25516// without limitation the rights to use, copy, modify, merge, publish,
25517// distribute, sublicense, and/or sell copies of the Software, and to permit
25518// persons to whom the Software is furnished to do so, subject to the
25519// following conditions:
25520//
25521// The above copyright notice and this permission notice shall be included
25522// in all copies or substantial portions of the Software.
25523//
25524// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25525// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25526// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25527// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25528// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25529// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25530// USE OR OTHER DEALINGS IN THE SOFTWARE.
ebd8d4e8 25531
8b095871
IC
25532var formatRegExp = /%[sdj%]/g;
25533exports.format = function(f) {
25534 if (!isString(f)) {
25535 var objects = [];
25536 for (var i = 0; i < arguments.length; i++) {
25537 objects.push(inspect(arguments[i]));
25538 }
25539 return objects.join(' ');
25540 }
ebd8d4e8 25541
8b095871
IC
25542 var i = 1;
25543 var args = arguments;
25544 var len = args.length;
25545 var str = String(f).replace(formatRegExp, function(x) {
25546 if (x === '%%') return '%';
25547 if (i >= len) return x;
25548 switch (x) {
25549 case '%s': return String(args[i++]);
25550 case '%d': return Number(args[i++]);
25551 case '%j':
25552 try {
25553 return JSON.stringify(args[i++]);
25554 } catch (_) {
25555 return '[Circular]';
25556 }
25557 default:
25558 return x;
25559 }
25560 });
25561 for (var x = args[i]; i < len; x = args[++i]) {
25562 if (isNull(x) || !isObject(x)) {
25563 str += ' ' + x;
25564 } else {
25565 str += ' ' + inspect(x);
25566 }
25567 }
25568 return str;
25569};
ebd8d4e8 25570
ebd8d4e8 25571
8b095871
IC
25572// Mark that a method should not be used.
25573// Returns a modified function which warns once by default.
25574// If --no-deprecation is set, then it is a no-op.
25575exports.deprecate = function(fn, msg) {
25576 // Allow for deprecating things in the process of starting up.
25577 if (isUndefined(global.process)) {
25578 return function() {
25579 return exports.deprecate(fn, msg).apply(this, arguments);
25580 };
25581 }
25582
25583 if (process.noDeprecation === true) {
25584 return fn;
25585 }
25586
25587 var warned = false;
25588 function deprecated() {
25589 if (!warned) {
25590 if (process.throwDeprecation) {
25591 throw new Error(msg);
25592 } else if (process.traceDeprecation) {
25593 console.trace(msg);
25594 } else {
25595 console.error(msg);
25596 }
25597 warned = true;
25598 }
25599 return fn.apply(this, arguments);
25600 }
25601
25602 return deprecated;
25603};
ebd8d4e8 25604
ab78acc6 25605
8b095871
IC
25606var debugs = {};
25607var debugEnviron;
25608exports.debuglog = function(set) {
25609 if (isUndefined(debugEnviron))
25610 debugEnviron = process.env.NODE_DEBUG || '';
25611 set = set.toUpperCase();
25612 if (!debugs[set]) {
25613 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
25614 var pid = process.pid;
25615 debugs[set] = function() {
25616 var msg = exports.format.apply(exports, arguments);
25617 console.error('%s %d: %s', set, pid, msg);
25618 };
25619 } else {
25620 debugs[set] = function() {};
25621 }
25622 }
25623 return debugs[set];
25624};
ab78acc6
IC
25625
25626
8b095871
IC
25627/**
25628 * Echos the value of a value. Trys to print the value out
25629 * in the best way possible given the different types.
25630 *
25631 * @param {Object} obj The object to print out.
25632 * @param {Object} opts Optional options object that alters the output.
25633 */
25634/* legacy: obj, showHidden, depth, colors*/
25635function inspect(obj, opts) {
25636 // default options
25637 var ctx = {
25638 seen: [],
25639 stylize: stylizeNoColor
ab78acc6 25640 };
8b095871
IC
25641 // legacy...
25642 if (arguments.length >= 3) ctx.depth = arguments[2];
25643 if (arguments.length >= 4) ctx.colors = arguments[3];
25644 if (isBoolean(opts)) {
25645 // legacy...
25646 ctx.showHidden = opts;
25647 } else if (opts) {
25648 // got an "options" object
25649 exports._extend(ctx, opts);
25650 }
25651 // set default options
25652 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
25653 if (isUndefined(ctx.depth)) ctx.depth = 2;
25654 if (isUndefined(ctx.colors)) ctx.colors = false;
25655 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
25656 if (ctx.colors) ctx.stylize = stylizeWithColor;
25657 return formatValue(ctx, obj, ctx.depth);
ebd8d4e8 25658}
8b095871 25659exports.inspect = inspect;
ebd8d4e8 25660
ab78acc6 25661
8b095871
IC
25662// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
25663inspect.colors = {
25664 'bold' : [1, 22],
25665 'italic' : [3, 23],
25666 'underline' : [4, 24],
25667 'inverse' : [7, 27],
25668 'white' : [37, 39],
25669 'grey' : [90, 39],
25670 'black' : [30, 39],
25671 'blue' : [34, 39],
25672 'cyan' : [36, 39],
25673 'green' : [32, 39],
25674 'magenta' : [35, 39],
25675 'red' : [31, 39],
25676 'yellow' : [33, 39]
25677};
ab78acc6 25678
8b095871
IC
25679// Don't use 'blue' not visible on cmd.exe
25680inspect.styles = {
25681 'special': 'cyan',
25682 'number': 'yellow',
25683 'boolean': 'yellow',
25684 'undefined': 'grey',
25685 'null': 'bold',
25686 'string': 'green',
25687 'date': 'magenta',
25688 // "name": intentionally not styling
25689 'regexp': 'red'
25690};
ab78acc6 25691
ab78acc6 25692
8b095871
IC
25693function stylizeWithColor(str, styleType) {
25694 var style = inspect.styles[styleType];
ab78acc6 25695
8b095871
IC
25696 if (style) {
25697 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
25698 '\u001b[' + inspect.colors[style][1] + 'm';
25699 } else {
25700 return str;
ab78acc6 25701 }
ebd8d4e8 25702}
ebd8d4e8 25703
ab78acc6 25704
8b095871
IC
25705function stylizeNoColor(str, styleType) {
25706 return str;
25707}
ab78acc6 25708
ab78acc6 25709
8b095871
IC
25710function arrayToHash(array) {
25711 var hash = {};
ab78acc6 25712
8b095871
IC
25713 array.forEach(function(val, idx) {
25714 hash[val] = true;
ab78acc6 25715 });
ebd8d4e8 25716
8b095871
IC
25717 return hash;
25718}
ab78acc6 25719
ab78acc6 25720
8b095871
IC
25721function formatValue(ctx, value, recurseTimes) {
25722 // Provide a hook for user-specified inspect functions.
25723 // Check that value is an object with an inspect function on it
25724 if (ctx.customInspect &&
25725 value &&
25726 isFunction(value.inspect) &&
25727 // Filter out the util module, it's inspect function is special
25728 value.inspect !== exports.inspect &&
25729 // Also filter out any prototype objects using the circular check.
25730 !(value.constructor && value.constructor.prototype === value)) {
25731 var ret = value.inspect(recurseTimes, ctx);
25732 if (!isString(ret)) {
25733 ret = formatValue(ctx, ret, recurseTimes);
25734 }
25735 return ret;
ab78acc6 25736 }
ebd8d4e8 25737
8b095871
IC
25738 // Primitive types cannot have properties
25739 var primitive = formatPrimitive(ctx, value);
25740 if (primitive) {
25741 return primitive;
ab78acc6 25742 }
ebd8d4e8 25743
8b095871
IC
25744 // Look up the keys of the object.
25745 var keys = Object.keys(value);
25746 var visibleKeys = arrayToHash(keys);
ebd8d4e8 25747
8b095871
IC
25748 if (ctx.showHidden) {
25749 keys = Object.getOwnPropertyNames(value);
25750 }
ebd8d4e8 25751
8b095871
IC
25752 // IE doesn't make error fields non-enumerable
25753 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
25754 if (isError(value)
25755 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
25756 return formatError(value);
25757 }
ebd8d4e8 25758
8b095871
IC
25759 // Some type of object without properties can be shortcutted.
25760 if (keys.length === 0) {
25761 if (isFunction(value)) {
25762 var name = value.name ? ': ' + value.name : '';
25763 return ctx.stylize('[Function' + name + ']', 'special');
25764 }
25765 if (isRegExp(value)) {
25766 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25767 }
25768 if (isDate(value)) {
25769 return ctx.stylize(Date.prototype.toString.call(value), 'date');
25770 }
25771 if (isError(value)) {
25772 return formatError(value);
25773 }
25774 }
ab78acc6 25775
8b095871 25776 var base = '', array = false, braces = ['{', '}'];
ab78acc6 25777
8b095871
IC
25778 // Make Array say that they are Array
25779 if (isArray(value)) {
25780 array = true;
25781 braces = ['[', ']'];
25782 }
ebd8d4e8 25783
8b095871
IC
25784 // Make functions say that they are functions
25785 if (isFunction(value)) {
25786 var n = value.name ? ': ' + value.name : '';
25787 base = ' [Function' + n + ']';
25788 }
ebd8d4e8 25789
8b095871
IC
25790 // Make RegExps say that they are RegExps
25791 if (isRegExp(value)) {
25792 base = ' ' + RegExp.prototype.toString.call(value);
25793 }
ebd8d4e8 25794
8b095871
IC
25795 // Make dates with properties first say the date
25796 if (isDate(value)) {
25797 base = ' ' + Date.prototype.toUTCString.call(value);
25798 }
ebd8d4e8 25799
8b095871
IC
25800 // Make error with message first say the error
25801 if (isError(value)) {
25802 base = ' ' + formatError(value);
25803 }
ebd8d4e8 25804
8b095871
IC
25805 if (keys.length === 0 && (!array || value.length == 0)) {
25806 return braces[0] + base + braces[1];
25807 }
ebd8d4e8 25808
8b095871
IC
25809 if (recurseTimes < 0) {
25810 if (isRegExp(value)) {
25811 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25812 } else {
25813 return ctx.stylize('[Object]', 'special');
25814 }
25815 }
ebd8d4e8 25816
8b095871 25817 ctx.seen.push(value);
ebd8d4e8 25818
8b095871
IC
25819 var output;
25820 if (array) {
25821 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
25822 } else {
25823 output = keys.map(function(key) {
25824 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
25825 });
25826 }
ebd8d4e8 25827
8b095871 25828 ctx.seen.pop();
ebd8d4e8 25829
8b095871 25830 return reduceToSingleString(output, base, braces);
ebd8d4e8
IC
25831}
25832
ebd8d4e8 25833
8b095871
IC
25834function formatPrimitive(ctx, value) {
25835 if (isUndefined(value))
25836 return ctx.stylize('undefined', 'undefined');
25837 if (isString(value)) {
25838 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
25839 .replace(/'/g, "\\'")
25840 .replace(/\\"/g, '"') + '\'';
25841 return ctx.stylize(simple, 'string');
25842 }
25843 if (isNumber(value))
25844 return ctx.stylize('' + value, 'number');
25845 if (isBoolean(value))
25846 return ctx.stylize('' + value, 'boolean');
25847 // For some reason typeof null is "object", so special case here.
25848 if (isNull(value))
25849 return ctx.stylize('null', 'null');
25850}
ebd8d4e8 25851
ebd8d4e8 25852
8b095871
IC
25853function formatError(value) {
25854 return '[' + Error.prototype.toString.call(value) + ']';
25855}
ebd8d4e8 25856
ebd8d4e8 25857
8b095871
IC
25858function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
25859 var output = [];
25860 for (var i = 0, l = value.length; i < l; ++i) {
25861 if (hasOwnProperty(value, String(i))) {
25862 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25863 String(i), true));
25864 } else {
25865 output.push('');
25866 }
25867 }
25868 keys.forEach(function(key) {
25869 if (!key.match(/^\d+$/)) {
25870 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25871 key, true));
25872 }
25873 });
25874 return output;
25875}
ebd8d4e8 25876
ebd8d4e8 25877
8b095871
IC
25878function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
25879 var name, str, desc;
25880 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
25881 if (desc.get) {
25882 if (desc.set) {
25883 str = ctx.stylize('[Getter/Setter]', 'special');
25884 } else {
25885 str = ctx.stylize('[Getter]', 'special');
25886 }
25887 } else {
25888 if (desc.set) {
25889 str = ctx.stylize('[Setter]', 'special');
25890 }
25891 }
25892 if (!hasOwnProperty(visibleKeys, key)) {
25893 name = '[' + key + ']';
25894 }
25895 if (!str) {
25896 if (ctx.seen.indexOf(desc.value) < 0) {
25897 if (isNull(recurseTimes)) {
25898 str = formatValue(ctx, desc.value, null);
25899 } else {
25900 str = formatValue(ctx, desc.value, recurseTimes - 1);
25901 }
25902 if (str.indexOf('\n') > -1) {
25903 if (array) {
25904 str = str.split('\n').map(function(line) {
25905 return ' ' + line;
25906 }).join('\n').substr(2);
25907 } else {
25908 str = '\n' + str.split('\n').map(function(line) {
25909 return ' ' + line;
25910 }).join('\n');
25911 }
25912 }
25913 } else {
25914 str = ctx.stylize('[Circular]', 'special');
25915 }
25916 }
25917 if (isUndefined(name)) {
25918 if (array && key.match(/^\d+$/)) {
25919 return str;
25920 }
25921 name = JSON.stringify('' + key);
25922 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
25923 name = name.substr(1, name.length - 2);
25924 name = ctx.stylize(name, 'name');
25925 } else {
25926 name = name.replace(/'/g, "\\'")
25927 .replace(/\\"/g, '"')
25928 .replace(/(^"|"$)/g, "'");
25929 name = ctx.stylize(name, 'string');
25930 }
25931 }
ebd8d4e8 25932
8b095871
IC
25933 return name + ': ' + str;
25934}
ebd8d4e8 25935
ebd8d4e8 25936
8b095871
IC
25937function reduceToSingleString(output, base, braces) {
25938 var numLinesEst = 0;
25939 var length = output.reduce(function(prev, cur) {
25940 numLinesEst++;
25941 if (cur.indexOf('\n') >= 0) numLinesEst++;
25942 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
25943 }, 0);
ebd8d4e8 25944
8b095871
IC
25945 if (length > 60) {
25946 return braces[0] +
25947 (base === '' ? '' : base + '\n ') +
25948 ' ' +
25949 output.join(',\n ') +
25950 ' ' +
25951 braces[1];
25952 }
ebd8d4e8 25953
8b095871
IC
25954 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
25955}
ebd8d4e8 25956
ebd8d4e8 25957
8b095871
IC
25958// NOTE: These type checking functions intentionally don't use `instanceof`
25959// because it is fragile and can be easily faked with `Object.create()`.
25960function isArray(ar) {
25961 return Array.isArray(ar);
25962}
25963exports.isArray = isArray;
ebd8d4e8 25964
8b095871
IC
25965function isBoolean(arg) {
25966 return typeof arg === 'boolean';
25967}
25968exports.isBoolean = isBoolean;
ebd8d4e8 25969
8b095871
IC
25970function isNull(arg) {
25971 return arg === null;
25972}
25973exports.isNull = isNull;
ebd8d4e8 25974
8b095871
IC
25975function isNullOrUndefined(arg) {
25976 return arg == null;
ebd8d4e8 25977}
8b095871 25978exports.isNullOrUndefined = isNullOrUndefined;
ebd8d4e8 25979
8b095871
IC
25980function isNumber(arg) {
25981 return typeof arg === 'number';
25982}
25983exports.isNumber = isNumber;
ebd8d4e8 25984
8b095871
IC
25985function isString(arg) {
25986 return typeof arg === 'string';
25987}
25988exports.isString = isString;
ebd8d4e8 25989
8b095871
IC
25990function isSymbol(arg) {
25991 return typeof arg === 'symbol';
25992}
25993exports.isSymbol = isSymbol;
ebd8d4e8 25994
8b095871
IC
25995function isUndefined(arg) {
25996 return arg === void 0;
25997}
25998exports.isUndefined = isUndefined;
ebd8d4e8 25999
8b095871
IC
26000function isRegExp(re) {
26001 return isObject(re) && objectToString(re) === '[object RegExp]';
ebd8d4e8 26002}
8b095871 26003exports.isRegExp = isRegExp;
ebd8d4e8 26004
8b095871
IC
26005function isObject(arg) {
26006 return typeof arg === 'object' && arg !== null;
26007}
26008exports.isObject = isObject;
ebd8d4e8 26009
8b095871
IC
26010function isDate(d) {
26011 return isObject(d) && objectToString(d) === '[object Date]';
26012}
26013exports.isDate = isDate;
ebd8d4e8 26014
8b095871
IC
26015function isError(e) {
26016 return isObject(e) &&
26017 (objectToString(e) === '[object Error]' || e instanceof Error);
ebd8d4e8 26018}
8b095871 26019exports.isError = isError;
ebd8d4e8 26020
8b095871
IC
26021function isFunction(arg) {
26022 return typeof arg === 'function';
ebd8d4e8 26023}
8b095871 26024exports.isFunction = isFunction;
ebd8d4e8 26025
8b095871
IC
26026function isPrimitive(arg) {
26027 return arg === null ||
26028 typeof arg === 'boolean' ||
26029 typeof arg === 'number' ||
26030 typeof arg === 'string' ||
26031 typeof arg === 'symbol' || // ES6 symbol
26032 typeof arg === 'undefined';
26033}
26034exports.isPrimitive = isPrimitive;
ebd8d4e8 26035
8b095871 26036exports.isBuffer = require('./support/isBuffer');
ebd8d4e8 26037
8b095871
IC
26038function objectToString(o) {
26039 return Object.prototype.toString.call(o);
26040}
ab78acc6 26041
ab78acc6 26042
8b095871
IC
26043function pad(n) {
26044 return n < 10 ? '0' + n.toString(10) : n.toString(10);
26045}
ebd8d4e8 26046
ab78acc6 26047
8b095871
IC
26048var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
26049 'Oct', 'Nov', 'Dec'];
ab78acc6 26050
8b095871
IC
26051// 26 Feb 16:19:34
26052function timestamp() {
26053 var d = new Date();
26054 var time = [pad(d.getHours()),
26055 pad(d.getMinutes()),
26056 pad(d.getSeconds())].join(':');
26057 return [d.getDate(), months[d.getMonth()], time].join(' ');
26058}
26059
26060
26061// log is just a thin wrapper to console.log that prepends a timestamp
26062exports.log = function() {
26063 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
ab78acc6 26064};
ebd8d4e8 26065
ebd8d4e8 26066
8b095871
IC
26067/**
26068 * Inherit the prototype methods from one constructor into another.
26069 *
26070 * The Function.prototype.inherits from lang.js rewritten as a standalone
26071 * function (not on Function.prototype). NOTE: If this file is to be loaded
26072 * during bootstrapping this function needs to be rewritten using some native
26073 * functions as prototype setup using normal JavaScript does not work as
26074 * expected during bootstrapping (see mirror.js in r114903).
26075 *
26076 * @param {function} ctor Constructor function which needs to inherit the
26077 * prototype.
26078 * @param {function} superCtor Constructor function to inherit prototype from.
26079 */
26080exports.inherits = require('inherits');
ebd8d4e8 26081
8b095871
IC
26082exports._extend = function(origin, add) {
26083 // Don't do anything if add isn't an object
26084 if (!add || !isObject(add)) return origin;
26085
26086 var keys = Object.keys(add);
26087 var i = keys.length;
26088 while (i--) {
26089 origin[keys[i]] = add[keys[i]];
ebd8d4e8 26090 }
8b095871 26091 return origin;
ab78acc6 26092};
ebd8d4e8 26093
8b095871
IC
26094function hasOwnProperty(obj, prop) {
26095 return Object.prototype.hasOwnProperty.call(obj, prop);
ebd8d4e8
IC
26096}
26097
8b095871
IC
26098}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
26099},{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
26100(function (Buffer){
26101const createKeccakHash = require('keccak')
26102const secp256k1 = require('secp256k1')
26103const assert = require('assert')
26104const rlp = require('rlp')
26105const BN = require('bn.js')
26106const createHash = require('create-hash')
26107Object.assign(exports, require('ethjs-util'))
ab78acc6 26108
8b095871
IC
26109/**
26110 * the max integer that this VM can handle (a ```BN```)
26111 * @var {BN} MAX_INTEGER
26112 */
26113exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
ab78acc6 26114
8b095871
IC
26115/**
26116 * 2^256 (a ```BN```)
26117 * @var {BN} TWO_POW256
26118 */
26119exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
ab78acc6 26120
8b095871
IC
26121/**
26122 * SHA3-256 hash of null (a ```String```)
26123 * @var {String} SHA3_NULL_S
26124 */
26125exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
ebd8d4e8 26126
8b095871
IC
26127/**
26128 * SHA3-256 hash of null (a ```Buffer```)
26129 * @var {Buffer} SHA3_NULL
26130 */
26131exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
ebd8d4e8 26132
8b095871
IC
26133/**
26134 * SHA3-256 of an RLP of an empty array (a ```String```)
26135 * @var {String} SHA3_RLP_ARRAY_S
26136 */
26137exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
ebd8d4e8 26138
8b095871
IC
26139/**
26140 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
26141 * @var {Buffer} SHA3_RLP_ARRAY
26142 */
26143exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
ebd8d4e8 26144
8b095871
IC
26145/**
26146 * SHA3-256 hash of the RLP of null (a ```String```)
26147 * @var {String} SHA3_RLP_S
26148 */
26149exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
ebd8d4e8 26150
8b095871
IC
26151/**
26152 * SHA3-256 hash of the RLP of null (a ```Buffer```)
26153 * @var {Buffer} SHA3_RLP
26154 */
26155exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
ebd8d4e8 26156
8b095871
IC
26157/**
26158 * [`BN`](https://github.com/indutny/bn.js)
26159 * @var {Function}
26160 */
26161exports.BN = BN
ebd8d4e8 26162
8b095871
IC
26163/**
26164 * [`rlp`](https://github.com/ethereumjs/rlp)
26165 * @var {Function}
26166 */
26167exports.rlp = rlp
ebd8d4e8 26168
8b095871
IC
26169/**
26170 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
26171 * @var {Object}
26172 */
26173exports.secp256k1 = secp256k1
ab78acc6 26174
8b095871
IC
26175/**
26176 * Returns a buffer filled with 0s
26177 * @method zeros
26178 * @param {Number} bytes the number of bytes the buffer should be
26179 * @return {Buffer}
26180 */
26181exports.zeros = function (bytes) {
26182 return Buffer.allocUnsafe(bytes).fill(0)
26183}
26184
26185/**
26186 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26187 * Or it truncates the beginning if it exceeds.
26188 * @method lsetLength
26189 * @param {Buffer|Array} msg the value to pad
26190 * @param {Number} length the number of bytes the output should be
26191 * @param {Boolean} [right=false] whether to start padding form the left or right
26192 * @return {Buffer|Array}
26193 */
26194exports.setLengthLeft = exports.setLength = function (msg, length, right) {
26195 var buf = exports.zeros(length)
26196 msg = exports.toBuffer(msg)
26197 if (right) {
26198 if (msg.length < length) {
26199 msg.copy(buf)
26200 return buf
26201 }
26202 return msg.slice(0, length)
26203 } else {
26204 if (msg.length < length) {
26205 msg.copy(buf, length - msg.length)
26206 return buf
ebd8d4e8 26207 }
8b095871 26208 return msg.slice(-length)
ebd8d4e8
IC
26209 }
26210}
26211
8b095871
IC
26212/**
26213 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26214 * Or it truncates the beginning if it exceeds.
26215 * @param {Buffer|Array} msg the value to pad
26216 * @param {Number} length the number of bytes the output should be
26217 * @return {Buffer|Array}
26218 */
26219exports.setLengthRight = function (msg, length) {
26220 return exports.setLength(msg, length, true)
ab78acc6
IC
26221}
26222
8b095871
IC
26223/**
26224 * Trims leading zeros from a `Buffer` or an `Array`
26225 * @param {Buffer|Array|String} a
26226 * @return {Buffer|Array|String}
26227 */
26228exports.unpad = exports.stripZeros = function (a) {
26229 a = exports.stripHexPrefix(a)
26230 var first = a[0]
26231 while (a.length > 0 && first.toString() === '0') {
26232 a = a.slice(1)
26233 first = a[0]
26234 }
26235 return a
26236}
26237/**
26238 * 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.
26239 * @param {*} v the value
26240 */
26241exports.toBuffer = function (v) {
26242 if (!Buffer.isBuffer(v)) {
26243 if (Array.isArray(v)) {
26244 v = Buffer.from(v)
26245 } else if (typeof v === 'string') {
26246 if (exports.isHexPrefixed(v)) {
26247 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
26248 } else {
26249 v = Buffer.from(v)
26250 }
26251 } else if (typeof v === 'number') {
26252 v = exports.intToBuffer(v)
26253 } else if (v === null || v === undefined) {
26254 v = Buffer.allocUnsafe(0)
26255 } else if (v.toArray) {
26256 // converts a BN to a Buffer
26257 v = Buffer.from(v.toArray())
26258 } else {
26259 throw new Error('invalid type')
26260 }
ebd8d4e8 26261 }
8b095871 26262 return v
ebd8d4e8
IC
26263}
26264
8b095871
IC
26265/**
26266 * Converts a `Buffer` to a `Number`
26267 * @param {Buffer} buf
26268 * @return {Number}
26269 * @throws If the input number exceeds 53 bits.
26270 */
26271exports.bufferToInt = function (buf) {
26272 return new BN(exports.toBuffer(buf)).toNumber()
26273}
ebd8d4e8 26274
8b095871
IC
26275/**
26276 * Converts a `Buffer` into a hex `String`
26277 * @param {Buffer} buf
26278 * @return {String}
26279 */
26280exports.bufferToHex = function (buf) {
26281 buf = exports.toBuffer(buf)
26282 return '0x' + buf.toString('hex')
26283}
ab78acc6 26284
8b095871
IC
26285/**
26286 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
26287 * @param {Buffer} num
26288 * @return {BN}
26289 */
26290exports.fromSigned = function (num) {
26291 return new BN(num).fromTwos(256)
26292}
ab78acc6 26293
8b095871
IC
26294/**
26295 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
26296 * @param {BN} num
26297 * @return {Buffer}
26298 */
26299exports.toUnsigned = function (num) {
26300 return Buffer.from(num.toTwos(256).toArray())
26301}
ab78acc6 26302
8b095871
IC
26303/**
26304 * Creates SHA-3 hash of the input
26305 * @param {Buffer|Array|String|Number} a the input data
26306 * @param {Number} [bits=256] the SHA width
26307 * @return {Buffer}
26308 */
26309exports.sha3 = function (a, bits) {
26310 a = exports.toBuffer(a)
26311 if (!bits) bits = 256
ab78acc6 26312
8b095871
IC
26313 return createKeccakHash('keccak' + bits).update(a).digest()
26314}
ab78acc6 26315
8b095871
IC
26316/**
26317 * Creates SHA256 hash of the input
26318 * @param {Buffer|Array|String|Number} a the input data
26319 * @return {Buffer}
26320 */
26321exports.sha256 = function (a) {
26322 a = exports.toBuffer(a)
26323 return createHash('sha256').update(a).digest()
26324}
ab78acc6 26325
8b095871
IC
26326/**
26327 * Creates RIPEMD160 hash of the input
26328 * @param {Buffer|Array|String|Number} a the input data
26329 * @param {Boolean} padded whether it should be padded to 256 bits or not
26330 * @return {Buffer}
26331 */
26332exports.ripemd160 = function (a, padded) {
26333 a = exports.toBuffer(a)
26334 var hash = createHash('rmd160').update(a).digest()
26335 if (padded === true) {
26336 return exports.setLength(hash, 32)
26337 } else {
26338 return hash
ebd8d4e8 26339 }
8b095871 26340}
ebd8d4e8 26341
8b095871
IC
26342/**
26343 * Creates SHA-3 hash of the RLP encoded version of the input
26344 * @param {Buffer|Array|String|Number} a the input data
26345 * @return {Buffer}
26346 */
26347exports.rlphash = function (a) {
26348 return exports.sha3(rlp.encode(a))
ebd8d4e8
IC
26349}
26350
8b095871
IC
26351/**
26352 * Checks if the private key satisfies the rules of the curve secp256k1.
26353 * @param {Buffer} privateKey
26354 * @return {Boolean}
26355 */
26356exports.isValidPrivate = function (privateKey) {
26357 return secp256k1.privateKeyVerify(privateKey)
26358}
ebd8d4e8 26359
8b095871
IC
26360/**
26361 * Checks if the public key satisfies the rules of the curve secp256k1
26362 * and the requirements of Ethereum.
26363 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
26364 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26365 * @return {Boolean}
26366 */
26367exports.isValidPublic = function (publicKey, sanitize) {
26368 if (publicKey.length === 64) {
26369 // Convert to SEC1 for secp256k1
26370 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
26371 }
ebd8d4e8 26372
8b095871
IC
26373 if (!sanitize) {
26374 return false
26375 }
ebd8d4e8 26376
8b095871
IC
26377 return secp256k1.publicKeyVerify(publicKey)
26378}
ebd8d4e8 26379
8b095871
IC
26380/**
26381 * Returns the ethereum address of a given public key.
26382 * Accepts "Ethereum public keys" and SEC1 encoded keys.
26383 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
26384 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26385 * @return {Buffer}
26386 */
26387exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
26388 pubKey = exports.toBuffer(pubKey)
26389 if (sanitize && (pubKey.length !== 64)) {
26390 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
ab78acc6 26391 }
8b095871
IC
26392 assert(pubKey.length === 64)
26393 // Only take the lower 160bits of the hash
26394 return exports.sha3(pubKey).slice(-20)
26395}
ebd8d4e8 26396
8b095871
IC
26397/**
26398 * Returns the ethereum public key of a given private key
26399 * @param {Buffer} privateKey A private key must be 256 bits wide
26400 * @return {Buffer}
26401 */
26402var privateToPublic = exports.privateToPublic = function (privateKey) {
26403 privateKey = exports.toBuffer(privateKey)
26404 // skip the type flag and use the X, Y points
26405 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
26406}
ab78acc6 26407
8b095871
IC
26408/**
26409 * Converts a public key to the Ethereum format.
26410 * @param {Buffer} publicKey
26411 * @return {Buffer}
26412 */
26413exports.importPublic = function (publicKey) {
26414 publicKey = exports.toBuffer(publicKey)
26415 if (publicKey.length !== 64) {
26416 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
ebd8d4e8 26417 }
8b095871
IC
26418 return publicKey
26419}
ab78acc6 26420
8b095871
IC
26421/**
26422 * ECDSA sign
26423 * @param {Buffer} msgHash
26424 * @param {Buffer} privateKey
26425 * @return {Object}
26426 */
26427exports.ecsign = function (msgHash, privateKey) {
26428 var sig = secp256k1.sign(msgHash, privateKey)
ab78acc6 26429
8b095871
IC
26430 var ret = {}
26431 ret.r = sig.signature.slice(0, 32)
26432 ret.s = sig.signature.slice(32, 64)
26433 ret.v = sig.recovery + 27
26434 return ret
ebd8d4e8
IC
26435}
26436
8b095871
IC
26437/**
26438 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
26439 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
26440 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
26441 * used to produce the signature.
26442 * @param message
26443 * @returns {Buffer} hash
26444 */
26445exports.hashPersonalMessage = function (message) {
26446 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
26447 return exports.sha3(Buffer.concat([prefix, message]))
ebd8d4e8
IC
26448}
26449
8b095871
IC
26450/**
26451 * ECDSA public key recovery from signature
26452 * @param {Buffer} msgHash
26453 * @param {Number} v
26454 * @param {Buffer} r
26455 * @param {Buffer} s
26456 * @return {Buffer} publicKey
26457 */
26458exports.ecrecover = function (msgHash, v, r, s) {
26459 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
26460 var recovery = v - 27
26461 if (recovery !== 0 && recovery !== 1) {
26462 throw new Error('Invalid signature v value')
ab78acc6 26463 }
8b095871
IC
26464 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
26465 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
ab78acc6 26466}
ebd8d4e8 26467
8b095871
IC
26468/**
26469 * Convert signature parameters into the format of `eth_sign` RPC method
26470 * @param {Number} v
26471 * @param {Buffer} r
26472 * @param {Buffer} s
26473 * @return {String} sig
26474 */
26475exports.toRpcSig = function (v, r, s) {
26476 // NOTE: with potential introduction of chainId this might need to be updated
26477 if (v !== 27 && v !== 28) {
26478 throw new Error('Invalid recovery id')
26479 }
26480
26481 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
26482 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
26483 return exports.bufferToHex(Buffer.concat([
26484 exports.setLengthLeft(r, 32),
26485 exports.setLengthLeft(s, 32),
26486 exports.toBuffer(v - 27)
26487 ]))
ebd8d4e8
IC
26488}
26489
8b095871
IC
26490/**
26491 * Convert signature format of the `eth_sign` RPC method to signature parameters
26492 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
26493 * @param {String} sig
26494 * @return {Object}
26495 */
26496exports.fromRpcSig = function (sig) {
26497 sig = exports.toBuffer(sig)
ebd8d4e8 26498
8b095871
IC
26499 // NOTE: with potential introduction of chainId this might need to be updated
26500 if (sig.length !== 65) {
26501 throw new Error('Invalid signature length')
26502 }
26503
26504 var v = sig[64]
26505 // support both versions of `eth_sign` responses
26506 if (v < 27) {
26507 v += 27
26508 }
26509
26510 return {
26511 v: v,
26512 r: sig.slice(0, 32),
26513 s: sig.slice(32, 64)
26514 }
ebd8d4e8
IC
26515}
26516
8b095871
IC
26517/**
26518 * Returns the ethereum address of a given private key
26519 * @param {Buffer} privateKey A private key must be 256 bits wide
26520 * @return {Buffer}
26521 */
26522exports.privateToAddress = function (privateKey) {
26523 return exports.publicToAddress(privateToPublic(privateKey))
ab78acc6 26524}
ebd8d4e8 26525
8b095871
IC
26526/**
26527 * Checks if the address is a valid. Accepts checksummed addresses too
26528 * @param {String} address
26529 * @return {Boolean}
26530 */
26531exports.isValidAddress = function (address) {
26532 return /^0x[0-9a-fA-F]{40}$/i.test(address)
ab78acc6 26533}
ebd8d4e8 26534
8b095871
IC
26535/**
26536 * Returns a checksummed address
26537 * @param {String} address
26538 * @return {String}
26539 */
26540exports.toChecksumAddress = function (address) {
26541 address = exports.stripHexPrefix(address).toLowerCase()
26542 var hash = exports.sha3(address).toString('hex')
26543 var ret = '0x'
26544
26545 for (var i = 0; i < address.length; i++) {
26546 if (parseInt(hash[i], 16) >= 8) {
26547 ret += address[i].toUpperCase()
26548 } else {
26549 ret += address[i]
26550 }
26551 }
26552
26553 return ret
ebd8d4e8
IC
26554}
26555
8b095871
IC
26556/**
26557 * Checks if the address is a valid checksummed address
26558 * @param {Buffer} address
26559 * @return {Boolean}
26560 */
26561exports.isValidChecksumAddress = function (address) {
26562 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
ab78acc6 26563}
ebd8d4e8 26564
8b095871
IC
26565/**
26566 * Generates an address of a newly created contract
26567 * @param {Buffer} from the address which is creating this new address
26568 * @param {Buffer} nonce the nonce of the from account
26569 * @return {Buffer}
26570 */
26571exports.generateAddress = function (from, nonce) {
26572 from = exports.toBuffer(from)
26573 nonce = new BN(nonce)
26574
26575 if (nonce.isZero()) {
26576 // in RLP we want to encode null in the case of zero nonce
26577 // read the RLP documentation for an answer if you dare
26578 nonce = null
26579 } else {
26580 nonce = Buffer.from(nonce.toArray())
26581 }
26582
26583 // Only take the lower 160bits of the hash
26584 return exports.rlphash([from, nonce]).slice(-20)
ab78acc6 26585}
ebd8d4e8 26586
8b095871
IC
26587/**
26588 * Returns true if the supplied address belongs to a precompiled account
26589 * @param {Buffer|String} address
26590 * @return {Boolean}
26591 */
26592exports.isPrecompiled = function (address) {
26593 var a = exports.unpad(address)
26594 return a.length === 1 && a[0] > 0 && a[0] < 5
ebd8d4e8
IC
26595}
26596
8b095871
IC
26597/**
26598 * Adds "0x" to a given `String` if it does not already start with "0x"
26599 * @param {String} str
26600 * @return {String}
26601 */
26602exports.addHexPrefix = function (str) {
26603 if (typeof str !== 'string') {
26604 return str
26605 }
26606
26607 return exports.isHexPrefixed(str) ? str : '0x' + str
ebd8d4e8
IC
26608}
26609
8b095871
IC
26610/**
26611 * Validate ECDSA signature
26612 * @method isValidSignature
26613 * @param {Buffer} v
26614 * @param {Buffer} r
26615 * @param {Buffer} s
26616 * @param {Boolean} [homestead=true]
26617 * @return {Boolean}
26618 */
26619
26620exports.isValidSignature = function (v, r, s, homestead) {
26621 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
26622 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
26623
26624 if (r.length !== 32 || s.length !== 32) {
26625 return false
26626 }
26627
26628 if (v !== 27 && v !== 28) {
26629 return false
26630 }
26631
26632 r = new BN(r)
26633 s = new BN(s)
26634
26635 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
26636 return false
26637 }
26638
26639 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
26640 return false
26641 }
26642
26643 return true
ebd8d4e8
IC
26644}
26645
8b095871
IC
26646/**
26647 * Converts a `Buffer` or `Array` to JSON
26648 * @param {Buffer|Array} ba
26649 * @return {Array|String|null}
26650 */
26651exports.baToJSON = function (ba) {
26652 if (Buffer.isBuffer(ba)) {
26653 return '0x' + ba.toString('hex')
26654 } else if (ba instanceof Array) {
26655 var array = []
26656 for (var i = 0; i < ba.length; i++) {
26657 array.push(exports.baToJSON(ba[i]))
26658 }
26659 return array
26660 }
ab78acc6 26661}
ebd8d4e8 26662
8b095871
IC
26663/**
26664 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
26665 * @param {Object} self the `Object` to define properties on
26666 * @param {Array} fields an array fields to define. Fields can contain:
26667 * * `name` - the name of the properties
26668 * * `length` - the number of bytes the field can have
26669 * * `allowLess` - if the field can be less than the length
26670 * * `allowEmpty`
26671 * @param {*} data data to be validated against the definitions
26672 */
26673exports.defineProperties = function (self, fields, data) {
26674 self.raw = []
26675 self._fields = []
26676
26677 // attach the `toJSON`
26678 self.toJSON = function (label) {
26679 if (label) {
26680 var obj = {}
26681 self._fields.forEach(function (field) {
26682 obj[field] = '0x' + self[field].toString('hex')
26683 })
26684 return obj
26685 }
26686 return exports.baToJSON(this.raw)
26687 }
26688
26689 self.serialize = function serialize () {
26690 return rlp.encode(self.raw)
26691 }
26692
26693 fields.forEach(function (field, i) {
26694 self._fields.push(field.name)
26695 function getter () {
26696 return self.raw[i]
26697 }
26698 function setter (v) {
26699 v = exports.toBuffer(v)
26700
26701 if (v.toString('hex') === '00' && !field.allowZero) {
26702 v = Buffer.allocUnsafe(0)
26703 }
26704
26705 if (field.allowLess && field.length) {
26706 v = exports.stripZeros(v)
26707 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
26708 } else if (!(field.allowZero && v.length === 0) && field.length) {
26709 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
26710 }
26711
26712 self.raw[i] = v
26713 }
26714
26715 Object.defineProperty(self, field.name, {
26716 enumerable: true,
26717 configurable: true,
26718 get: getter,
26719 set: setter
26720 })
26721
26722 if (field.default) {
26723 self[field.name] = field.default
26724 }
26725
26726 // attach alias
26727 if (field.alias) {
26728 Object.defineProperty(self, field.alias, {
26729 enumerable: false,
26730 configurable: true,
26731 set: setter,
26732 get: getter
26733 })
26734 }
26735 })
26736
26737 // if the constuctor is passed data
26738 if (data) {
26739 if (typeof data === 'string') {
26740 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
26741 }
26742
26743 if (Buffer.isBuffer(data)) {
26744 data = rlp.decode(data)
26745 }
26746
26747 if (Array.isArray(data)) {
26748 if (data.length > self._fields.length) {
26749 throw (new Error('wrong number of fields in data'))
26750 }
26751
26752 // make sure all the items are buffers
26753 data.forEach(function (d, i) {
26754 self[self._fields[i]] = exports.toBuffer(d)
26755 })
26756 } else if (typeof data === 'object') {
26757 const keys = Object.keys(data)
26758 fields.forEach(function (field) {
26759 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
26760 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
26761 })
26762 } else {
26763 throw new Error('invalid data')
26764 }
26765 }
ab78acc6 26766}
ebd8d4e8 26767
8b095871
IC
26768}).call(this,require("buffer").Buffer)
26769},{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
26770(function (Buffer){
26771// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
26772// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26773// NOTE: SIGHASH byte ignored AND restricted, truncate before use
26774
26775function check (buffer) {
26776 if (buffer.length < 8) return false
26777 if (buffer.length > 72) return false
26778 if (buffer[0] !== 0x30) return false
26779 if (buffer[1] !== buffer.length - 2) return false
26780 if (buffer[2] !== 0x02) return false
26781
26782 var lenR = buffer[3]
26783 if (lenR === 0) return false
26784 if (5 + lenR >= buffer.length) return false
26785 if (buffer[4 + lenR] !== 0x02) return false
26786
26787 var lenS = buffer[5 + lenR]
26788 if (lenS === 0) return false
26789 if ((6 + lenR + lenS) !== buffer.length) return false
26790
26791 if (buffer[4] & 0x80) return false
26792 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
26793
26794 if (buffer[lenR + 6] & 0x80) return false
26795 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
26796 return true
ab78acc6 26797}
ab78acc6 26798
8b095871
IC
26799function decode (buffer) {
26800 if (buffer.length < 8) throw new Error('DER sequence length is too short')
26801 if (buffer.length > 72) throw new Error('DER sequence length is too long')
26802 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
26803 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
26804 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
26805
26806 var lenR = buffer[3]
26807 if (lenR === 0) throw new Error('R length is zero')
26808 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
26809 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
26810
26811 var lenS = buffer[5 + lenR]
26812 if (lenS === 0) throw new Error('S length is zero')
26813 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
26814
26815 if (buffer[4] & 0x80) throw new Error('R value is negative')
26816 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
26817
26818 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
26819 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
26820
26821 // non-BIP66 - extract R, S values
26822 return {
26823 r: buffer.slice(4, 4 + lenR),
26824 s: buffer.slice(6 + lenR)
26825 }
ebd8d4e8
IC
26826}
26827
8b095871
IC
26828/*
26829 * Expects r and s to be positive DER integers.
26830 *
26831 * The DER format uses the most significant bit as a sign bit (& 0x80).
26832 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
26833 *
26834 * Examples:
26835 *
26836 * 0 => 0x00
26837 * 1 => 0x01
26838 * -1 => 0xff
26839 * 127 => 0x7f
26840 * -127 => 0x81
26841 * 128 => 0x0080
26842 * -128 => 0x80
26843 * 255 => 0x00ff
26844 * -255 => 0xff01
26845 * 16300 => 0x3fac
26846 * -16300 => 0xc054
26847 * 62300 => 0x00f35c
26848 * -62300 => 0xff0ca4
26849*/
26850function encode (r, s) {
26851 var lenR = r.length
26852 var lenS = s.length
26853 if (lenR === 0) throw new Error('R length is zero')
26854 if (lenS === 0) throw new Error('S length is zero')
26855 if (lenR > 33) throw new Error('R length is too long')
26856 if (lenS > 33) throw new Error('S length is too long')
26857 if (r[0] & 0x80) throw new Error('R value is negative')
26858 if (s[0] & 0x80) throw new Error('S value is negative')
26859 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
26860 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
26861
26862 var signature = new Buffer(6 + lenR + lenS)
26863
26864 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26865 signature[0] = 0x30
26866 signature[1] = signature.length - 2
26867 signature[2] = 0x02
26868 signature[3] = r.length
26869 r.copy(signature, 4)
26870 signature[4 + lenR] = 0x02
26871 signature[5 + lenR] = s.length
26872 s.copy(signature, 6 + lenR)
26873
26874 return signature
ebd8d4e8
IC
26875}
26876
8b095871
IC
26877module.exports = {
26878 check: check,
26879 decode: decode,
26880 encode: encode
ebd8d4e8 26881}
8b095871 26882
ab78acc6 26883}).call(this,require("buffer").Buffer)
8b095871
IC
26884},{"buffer":5}],33:[function(require,module,exports){
26885(function (module, exports) {
26886 'use strict';
ebd8d4e8 26887
8b095871
IC
26888 // Utils
26889 function assert (val, msg) {
26890 if (!val) throw new Error(msg || 'Assertion failed');
26891 }
ebd8d4e8 26892
8b095871
IC
26893 // Could use `inherits` module, but don't want to move from single file
26894 // architecture yet.
26895 function inherits (ctor, superCtor) {
26896 ctor.super_ = superCtor;
26897 var TempCtor = function () {};
26898 TempCtor.prototype = superCtor.prototype;
26899 ctor.prototype = new TempCtor();
26900 ctor.prototype.constructor = ctor;
26901 }
ebd8d4e8 26902
8b095871 26903 // BN
ab78acc6 26904
8b095871
IC
26905 function BN (number, base, endian) {
26906 if (BN.isBN(number)) {
26907 return number;
26908 }
ab78acc6 26909
8b095871
IC
26910 this.negative = 0;
26911 this.words = null;
26912 this.length = 0;
ab78acc6 26913
8b095871
IC
26914 // Reduction context
26915 this.red = null;
ab78acc6 26916
8b095871
IC
26917 if (number !== null) {
26918 if (base === 'le' || base === 'be') {
26919 endian = base;
26920 base = 10;
26921 }
ab78acc6 26922
8b095871
IC
26923 this._init(number || 0, base || 10, endian || 'be');
26924 }
26925 }
26926 if (typeof module === 'object') {
26927 module.exports = BN;
26928 } else {
26929 exports.BN = BN;
26930 }
ab78acc6 26931
8b095871
IC
26932 BN.BN = BN;
26933 BN.wordSize = 26;
ab78acc6 26934
8b095871
IC
26935 var Buffer;
26936 try {
26937 Buffer = require('buf' + 'fer').Buffer;
26938 } catch (e) {
26939 }
ab78acc6 26940
8b095871
IC
26941 BN.isBN = function isBN (num) {
26942 if (num instanceof BN) {
26943 return true;
26944 }
ab78acc6 26945
8b095871
IC
26946 return num !== null && typeof num === 'object' &&
26947 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
26948 };
ebd8d4e8 26949
8b095871
IC
26950 BN.max = function max (left, right) {
26951 if (left.cmp(right) > 0) return left;
26952 return right;
26953 };
ebd8d4e8 26954
8b095871
IC
26955 BN.min = function min (left, right) {
26956 if (left.cmp(right) < 0) return left;
26957 return right;
26958 };
26959
26960 BN.prototype._init = function init (number, base, endian) {
26961 if (typeof number === 'number') {
26962 return this._initNumber(number, base, endian);
ab78acc6 26963 }
ebd8d4e8 26964
8b095871
IC
26965 if (typeof number === 'object') {
26966 return this._initArray(number, base, endian);
26967 }
ebd8d4e8 26968
8b095871
IC
26969 if (base === 'hex') {
26970 base = 16;
26971 }
26972 assert(base === (base | 0) && base >= 2 && base <= 36);
26973
26974 number = number.toString().replace(/\s+/g, '');
26975 var start = 0;
26976 if (number[0] === '-') {
26977 start++;
26978 }
26979
26980 if (base === 16) {
26981 this._parseHex(number, start);
26982 } else {
26983 this._parseBase(number, base, start);
ab78acc6 26984 }
ebd8d4e8 26985
8b095871
IC
26986 if (number[0] === '-') {
26987 this.negative = 1;
26988 }
ebd8d4e8 26989
8b095871 26990 this.strip();
ebd8d4e8 26991
8b095871 26992 if (endian !== 'le') return;
ebd8d4e8 26993
8b095871
IC
26994 this._initArray(this.toArray(), base, endian);
26995 };
ebd8d4e8 26996
8b095871
IC
26997 BN.prototype._initNumber = function _initNumber (number, base, endian) {
26998 if (number < 0) {
26999 this.negative = 1;
27000 number = -number;
27001 }
27002 if (number < 0x4000000) {
27003 this.words = [ number & 0x3ffffff ];
27004 this.length = 1;
27005 } else if (number < 0x10000000000000) {
27006 this.words = [
27007 number & 0x3ffffff,
27008 (number / 0x4000000) & 0x3ffffff
27009 ];
27010 this.length = 2;
27011 } else {
27012 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
27013 this.words = [
27014 number & 0x3ffffff,
27015 (number / 0x4000000) & 0x3ffffff,
27016 1
27017 ];
27018 this.length = 3;
27019 }
ebd8d4e8 27020
8b095871 27021 if (endian !== 'le') return;
ebd8d4e8 27022
8b095871
IC
27023 // Reverse the bytes
27024 this._initArray(this.toArray(), base, endian);
27025 };
ebd8d4e8 27026
8b095871
IC
27027 BN.prototype._initArray = function _initArray (number, base, endian) {
27028 // Perhaps a Uint8Array
27029 assert(typeof number.length === 'number');
27030 if (number.length <= 0) {
27031 this.words = [ 0 ];
27032 this.length = 1;
27033 return this;
ab78acc6 27034 }
ebd8d4e8 27035
8b095871
IC
27036 this.length = Math.ceil(number.length / 3);
27037 this.words = new Array(this.length);
27038 for (var i = 0; i < this.length; i++) {
27039 this.words[i] = 0;
27040 }
ebd8d4e8 27041
8b095871
IC
27042 var j, w;
27043 var off = 0;
27044 if (endian === 'be') {
27045 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
27046 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
27047 this.words[j] |= (w << off) & 0x3ffffff;
27048 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27049 off += 24;
27050 if (off >= 26) {
27051 off -= 26;
27052 j++;
27053 }
27054 }
27055 } else if (endian === 'le') {
27056 for (i = 0, j = 0; i < number.length; i += 3) {
27057 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
27058 this.words[j] |= (w << off) & 0x3ffffff;
27059 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27060 off += 24;
27061 if (off >= 26) {
27062 off -= 26;
27063 j++;
27064 }
27065 }
27066 }
27067 return this.strip();
27068 };
ebd8d4e8 27069
8b095871
IC
27070 function parseHex (str, start, end) {
27071 var r = 0;
27072 var len = Math.min(str.length, end);
27073 for (var i = start; i < len; i++) {
27074 var c = str.charCodeAt(i) - 48;
ab78acc6 27075
8b095871 27076 r <<= 4;
ab78acc6 27077
8b095871
IC
27078 // 'a' - 'f'
27079 if (c >= 49 && c <= 54) {
27080 r |= c - 49 + 0xa;
ab78acc6 27081
8b095871
IC
27082 // 'A' - 'F'
27083 } else if (c >= 17 && c <= 22) {
27084 r |= c - 17 + 0xa;
ebd8d4e8 27085
8b095871
IC
27086 // '0' - '9'
27087 } else {
27088 r |= c & 0xf;
27089 }
27090 }
27091 return r;
27092 }
27093
27094 BN.prototype._parseHex = function _parseHex (number, start) {
27095 // Create possibly bigger array to ensure that it fits the number
27096 this.length = Math.ceil((number.length - start) / 6);
27097 this.words = new Array(this.length);
27098 for (var i = 0; i < this.length; i++) {
27099 this.words[i] = 0;
27100 }
27101
27102 var j, w;
27103 // Scan 24-bit chunks and add them to the number
27104 var off = 0;
27105 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
27106 w = parseHex(number, i, i + 6);
27107 this.words[j] |= (w << off) & 0x3ffffff;
27108 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
27109 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27110 off += 24;
27111 if (off >= 26) {
27112 off -= 26;
27113 j++;
27114 }
27115 }
27116 if (i + 6 !== start) {
27117 w = parseHex(number, start, i + 6);
27118 this.words[j] |= (w << off) & 0x3ffffff;
27119 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27120 }
27121 this.strip();
27122 };
ebd8d4e8 27123
8b095871
IC
27124 function parseBase (str, start, end, mul) {
27125 var r = 0;
27126 var len = Math.min(str.length, end);
27127 for (var i = start; i < len; i++) {
27128 var c = str.charCodeAt(i) - 48;
ebd8d4e8 27129
8b095871 27130 r *= mul;
ebd8d4e8 27131
8b095871
IC
27132 // 'a'
27133 if (c >= 49) {
27134 r += c - 49 + 0xa;
ebd8d4e8 27135
8b095871
IC
27136 // 'A'
27137 } else if (c >= 17) {
27138 r += c - 17 + 0xa;
ebd8d4e8 27139
8b095871
IC
27140 // '0' - '9'
27141 } else {
27142 r += c;
27143 }
27144 }
27145 return r;
27146 }
ebd8d4e8 27147
8b095871
IC
27148 BN.prototype._parseBase = function _parseBase (number, base, start) {
27149 // Initialize as zero
27150 this.words = [ 0 ];
27151 this.length = 1;
ebd8d4e8 27152
8b095871
IC
27153 // Find length of limb in base
27154 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
27155 limbLen++;
27156 }
27157 limbLen--;
27158 limbPow = (limbPow / base) | 0;
ebd8d4e8 27159
8b095871
IC
27160 var total = number.length - start;
27161 var mod = total % limbLen;
27162 var end = Math.min(total, total - mod) + start;
ebd8d4e8 27163
8b095871
IC
27164 var word = 0;
27165 for (var i = start; i < end; i += limbLen) {
27166 word = parseBase(number, i, i + limbLen, base);
ebd8d4e8 27167
8b095871
IC
27168 this.imuln(limbPow);
27169 if (this.words[0] + word < 0x4000000) {
27170 this.words[0] += word;
27171 } else {
27172 this._iaddn(word);
27173 }
27174 }
ebd8d4e8 27175
8b095871
IC
27176 if (mod !== 0) {
27177 var pow = 1;
27178 word = parseBase(number, i, number.length, base);
ebd8d4e8 27179
8b095871
IC
27180 for (i = 0; i < mod; i++) {
27181 pow *= base;
27182 }
ab78acc6 27183
8b095871
IC
27184 this.imuln(pow);
27185 if (this.words[0] + word < 0x4000000) {
27186 this.words[0] += word;
27187 } else {
27188 this._iaddn(word);
27189 }
27190 }
27191 };
ab78acc6 27192
8b095871
IC
27193 BN.prototype.copy = function copy (dest) {
27194 dest.words = new Array(this.length);
27195 for (var i = 0; i < this.length; i++) {
27196 dest.words[i] = this.words[i];
ab78acc6 27197 }
8b095871
IC
27198 dest.length = this.length;
27199 dest.negative = this.negative;
27200 dest.red = this.red;
27201 };
ab78acc6 27202
8b095871
IC
27203 BN.prototype.clone = function clone () {
27204 var r = new BN(null);
27205 this.copy(r);
27206 return r;
27207 };
ab78acc6 27208
8b095871
IC
27209 BN.prototype._expand = function _expand (size) {
27210 while (this.length < size) {
27211 this.words[this.length++] = 0;
27212 }
27213 return this;
27214 };
ab78acc6 27215
8b095871
IC
27216 // Remove leading `0` from `this`
27217 BN.prototype.strip = function strip () {
27218 while (this.length > 1 && this.words[this.length - 1] === 0) {
27219 this.length--;
ab78acc6 27220 }
8b095871
IC
27221 return this._normSign();
27222 };
ebd8d4e8 27223
8b095871
IC
27224 BN.prototype._normSign = function _normSign () {
27225 // -0 = 0
27226 if (this.length === 1 && this.words[0] === 0) {
27227 this.negative = 0;
ab78acc6 27228 }
8b095871
IC
27229 return this;
27230 };
ebd8d4e8 27231
8b095871
IC
27232 BN.prototype.inspect = function inspect () {
27233 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
27234 };
ebd8d4e8 27235
8b095871 27236 /*
ebd8d4e8 27237
8b095871
IC
27238 var zeros = [];
27239 var groupSizes = [];
27240 var groupBases = [];
ebd8d4e8 27241
8b095871
IC
27242 var s = '';
27243 var i = -1;
27244 while (++i < BN.wordSize) {
27245 zeros[i] = s;
27246 s += '0';
27247 }
27248 groupSizes[0] = 0;
27249 groupSizes[1] = 0;
27250 groupBases[0] = 0;
27251 groupBases[1] = 0;
27252 var base = 2 - 1;
27253 while (++base < 36 + 1) {
27254 var groupSize = 0;
27255 var groupBase = 1;
27256 while (groupBase < (1 << BN.wordSize) / base) {
27257 groupBase *= base;
27258 groupSize += 1;
27259 }
27260 groupSizes[base] = groupSize;
27261 groupBases[base] = groupBase;
ebd8d4e8
IC
27262 }
27263
8b095871 27264 */
ebd8d4e8 27265
8b095871
IC
27266 var zeros = [
27267 '',
27268 '0',
27269 '00',
27270 '000',
27271 '0000',
27272 '00000',
27273 '000000',
27274 '0000000',
27275 '00000000',
27276 '000000000',
27277 '0000000000',
27278 '00000000000',
27279 '000000000000',
27280 '0000000000000',
27281 '00000000000000',
27282 '000000000000000',
27283 '0000000000000000',
27284 '00000000000000000',
27285 '000000000000000000',
27286 '0000000000000000000',
27287 '00000000000000000000',
27288 '000000000000000000000',
27289 '0000000000000000000000',
27290 '00000000000000000000000',
27291 '000000000000000000000000',
27292 '0000000000000000000000000'
27293 ];
27294
27295 var groupSizes = [
27296 0, 0,
27297 25, 16, 12, 11, 10, 9, 8,
27298 8, 7, 7, 7, 7, 6, 6,
27299 6, 6, 6, 6, 6, 5, 5,
27300 5, 5, 5, 5, 5, 5, 5,
27301 5, 5, 5, 5, 5, 5, 5
27302 ];
27303
27304 var groupBases = [
27305 0, 0,
27306 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
27307 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
27308 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
27309 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
27310 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
27311 ];
27312
27313 BN.prototype.toString = function toString (base, padding) {
27314 base = base || 10;
27315 padding = padding | 0 || 1;
27316
27317 var out;
27318 if (base === 16 || base === 'hex') {
27319 out = '';
27320 var off = 0;
27321 var carry = 0;
27322 for (var i = 0; i < this.length; i++) {
27323 var w = this.words[i];
27324 var word = (((w << off) | carry) & 0xffffff).toString(16);
27325 carry = (w >>> (24 - off)) & 0xffffff;
27326 if (carry !== 0 || i !== this.length - 1) {
27327 out = zeros[6 - word.length] + word + out;
27328 } else {
27329 out = word + out;
27330 }
27331 off += 2;
27332 if (off >= 26) {
27333 off -= 26;
27334 i--;
27335 }
27336 }
27337 if (carry !== 0) {
27338 out = carry.toString(16) + out;
27339 }
27340 while (out.length % padding !== 0) {
27341 out = '0' + out;
27342 }
27343 if (this.negative !== 0) {
27344 out = '-' + out;
27345 }
27346 return out;
27347 }
27348
27349 if (base === (base | 0) && base >= 2 && base <= 36) {
27350 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
27351 var groupSize = groupSizes[base];
27352 // var groupBase = Math.pow(base, groupSize);
27353 var groupBase = groupBases[base];
27354 out = '';
27355 var c = this.clone();
27356 c.negative = 0;
27357 while (!c.isZero()) {
27358 var r = c.modn(groupBase).toString(base);
27359 c = c.idivn(groupBase);
27360
27361 if (!c.isZero()) {
27362 out = zeros[groupSize - r.length] + r + out;
27363 } else {
27364 out = r + out;
27365 }
27366 }
27367 if (this.isZero()) {
27368 out = '0' + out;
27369 }
27370 while (out.length % padding !== 0) {
27371 out = '0' + out;
27372 }
27373 if (this.negative !== 0) {
27374 out = '-' + out;
27375 }
27376 return out;
27377 }
27378
27379 assert(false, 'Base should be between 2 and 36');
27380 };
27381
27382 BN.prototype.toNumber = function toNumber () {
27383 var ret = this.words[0];
27384 if (this.length === 2) {
27385 ret += this.words[1] * 0x4000000;
27386 } else if (this.length === 3 && this.words[2] === 0x01) {
27387 // NOTE: at this stage it is known that the top bit is set
27388 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
27389 } else if (this.length > 2) {
27390 assert(false, 'Number can only safely store up to 53 bits');
27391 }
27392 return (this.negative !== 0) ? -ret : ret;
27393 };
27394
27395 BN.prototype.toJSON = function toJSON () {
27396 return this.toString(16);
27397 };
27398
27399 BN.prototype.toBuffer = function toBuffer (endian, length) {
27400 assert(typeof Buffer !== 'undefined');
27401 return this.toArrayLike(Buffer, endian, length);
27402 };
ebd8d4e8 27403
8b095871
IC
27404 BN.prototype.toArray = function toArray (endian, length) {
27405 return this.toArrayLike(Array, endian, length);
27406 };
ebd8d4e8 27407
8b095871
IC
27408 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
27409 var byteLength = this.byteLength();
27410 var reqLength = length || Math.max(1, byteLength);
27411 assert(byteLength <= reqLength, 'byte array longer than desired length');
27412 assert(reqLength > 0, 'Requested array length <= 0');
27413
27414 this.strip();
27415 var littleEndian = endian === 'le';
27416 var res = new ArrayType(reqLength);
27417
27418 var b, i;
27419 var q = this.clone();
27420 if (!littleEndian) {
27421 // Assume big-endian
27422 for (i = 0; i < reqLength - byteLength; i++) {
27423 res[i] = 0;
27424 }
ebd8d4e8 27425
8b095871
IC
27426 for (i = 0; !q.isZero(); i++) {
27427 b = q.andln(0xff);
27428 q.iushrn(8);
ebd8d4e8 27429
8b095871
IC
27430 res[reqLength - i - 1] = b;
27431 }
27432 } else {
27433 for (i = 0; !q.isZero(); i++) {
27434 b = q.andln(0xff);
27435 q.iushrn(8);
ebd8d4e8 27436
8b095871
IC
27437 res[i] = b;
27438 }
27439
27440 for (; i < reqLength; i++) {
27441 res[i] = 0;
27442 }
ab78acc6 27443 }
ebd8d4e8 27444
8b095871
IC
27445 return res;
27446 };
ebd8d4e8 27447
8b095871
IC
27448 if (Math.clz32) {
27449 BN.prototype._countBits = function _countBits (w) {
27450 return 32 - Math.clz32(w);
27451 };
27452 } else {
27453 BN.prototype._countBits = function _countBits (w) {
27454 var t = w;
27455 var r = 0;
27456 if (t >= 0x1000) {
27457 r += 13;
27458 t >>>= 13;
27459 }
27460 if (t >= 0x40) {
27461 r += 7;
27462 t >>>= 7;
27463 }
27464 if (t >= 0x8) {
27465 r += 4;
27466 t >>>= 4;
27467 }
27468 if (t >= 0x02) {
27469 r += 2;
27470 t >>>= 2;
27471 }
27472 return r + t;
27473 };
ebd8d4e8
IC
27474 }
27475
8b095871
IC
27476 BN.prototype._zeroBits = function _zeroBits (w) {
27477 // Short-cut
27478 if (w === 0) return 26;
ebd8d4e8 27479
8b095871
IC
27480 var t = w;
27481 var r = 0;
27482 if ((t & 0x1fff) === 0) {
27483 r += 13;
27484 t >>>= 13;
27485 }
27486 if ((t & 0x7f) === 0) {
27487 r += 7;
27488 t >>>= 7;
27489 }
27490 if ((t & 0xf) === 0) {
27491 r += 4;
27492 t >>>= 4;
27493 }
27494 if ((t & 0x3) === 0) {
27495 r += 2;
27496 t >>>= 2;
27497 }
27498 if ((t & 0x1) === 0) {
27499 r++;
27500 }
27501 return r;
27502 };
ebd8d4e8 27503
8b095871
IC
27504 // Return number of used bits in a BN
27505 BN.prototype.bitLength = function bitLength () {
27506 var w = this.words[this.length - 1];
27507 var hi = this._countBits(w);
27508 return (this.length - 1) * 26 + hi;
27509 };
ebd8d4e8 27510
8b095871
IC
27511 function toBitArray (num) {
27512 var w = new Array(num.bitLength());
ebd8d4e8 27513
8b095871
IC
27514 for (var bit = 0; bit < w.length; bit++) {
27515 var off = (bit / 26) | 0;
27516 var wbit = bit % 26;
ebd8d4e8 27517
8b095871 27518 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
ab78acc6 27519 }
8b095871
IC
27520
27521 return w;
ab78acc6 27522 }
ebd8d4e8 27523
8b095871
IC
27524 // Number of trailing zero bits
27525 BN.prototype.zeroBits = function zeroBits () {
27526 if (this.isZero()) return 0;
27527
27528 var r = 0;
27529 for (var i = 0; i < this.length; i++) {
27530 var b = this._zeroBits(this.words[i]);
27531 r += b;
27532 if (b !== 26) break;
ab78acc6 27533 }
8b095871
IC
27534 return r;
27535 };
27536
27537 BN.prototype.byteLength = function byteLength () {
27538 return Math.ceil(this.bitLength() / 8);
27539 };
27540
27541 BN.prototype.toTwos = function toTwos (width) {
27542 if (this.negative !== 0) {
27543 return this.abs().inotn(width).iaddn(1);
ab78acc6 27544 }
8b095871
IC
27545 return this.clone();
27546 };
ebd8d4e8 27547
8b095871
IC
27548 BN.prototype.fromTwos = function fromTwos (width) {
27549 if (this.testn(width - 1)) {
27550 return this.notn(width).iaddn(1).ineg();
27551 }
27552 return this.clone();
27553 };
ebd8d4e8 27554
8b095871
IC
27555 BN.prototype.isNeg = function isNeg () {
27556 return this.negative !== 0;
27557 };
ebd8d4e8 27558
8b095871
IC
27559 // Return negative clone of `this`
27560 BN.prototype.neg = function neg () {
27561 return this.clone().ineg();
27562 };
ebd8d4e8 27563
8b095871
IC
27564 BN.prototype.ineg = function ineg () {
27565 if (!this.isZero()) {
27566 this.negative ^= 1;
ab78acc6 27567 }
ebd8d4e8 27568
8b095871
IC
27569 return this;
27570 };
ebd8d4e8 27571
8b095871
IC
27572 // Or `num` with `this` in-place
27573 BN.prototype.iuor = function iuor (num) {
27574 while (this.length < num.length) {
27575 this.words[this.length++] = 0;
27576 }
ebd8d4e8 27577
8b095871
IC
27578 for (var i = 0; i < num.length; i++) {
27579 this.words[i] = this.words[i] | num.words[i];
ebd8d4e8 27580 }
ebd8d4e8 27581
8b095871
IC
27582 return this.strip();
27583 };
ebd8d4e8 27584
8b095871
IC
27585 BN.prototype.ior = function ior (num) {
27586 assert((this.negative | num.negative) === 0);
27587 return this.iuor(num);
ab78acc6 27588 };
ebd8d4e8 27589
8b095871
IC
27590 // Or `num` with `this`
27591 BN.prototype.or = function or (num) {
27592 if (this.length > num.length) return this.clone().ior(num);
27593 return num.clone().ior(this);
27594 };
ebd8d4e8 27595
8b095871
IC
27596 BN.prototype.uor = function uor (num) {
27597 if (this.length > num.length) return this.clone().iuor(num);
27598 return num.clone().iuor(this);
27599 };
ebd8d4e8 27600
8b095871
IC
27601 // And `num` with `this` in-place
27602 BN.prototype.iuand = function iuand (num) {
27603 // b = min-length(num, this)
27604 var b;
27605 if (this.length > num.length) {
27606 b = num;
27607 } else {
27608 b = this;
27609 }
27610
27611 for (var i = 0; i < b.length; i++) {
27612 this.words[i] = this.words[i] & num.words[i];
27613 }
ebd8d4e8 27614
8b095871 27615 this.length = b.length;
ebd8d4e8 27616
8b095871
IC
27617 return this.strip();
27618 };
ebd8d4e8 27619
8b095871
IC
27620 BN.prototype.iand = function iand (num) {
27621 assert((this.negative | num.negative) === 0);
27622 return this.iuand(num);
27623 };
ebd8d4e8 27624
8b095871
IC
27625 // And `num` with `this`
27626 BN.prototype.and = function and (num) {
27627 if (this.length > num.length) return this.clone().iand(num);
27628 return num.clone().iand(this);
27629 };
ebd8d4e8 27630
8b095871
IC
27631 BN.prototype.uand = function uand (num) {
27632 if (this.length > num.length) return this.clone().iuand(num);
27633 return num.clone().iuand(this);
27634 };
ebd8d4e8 27635
8b095871
IC
27636 // Xor `num` with `this` in-place
27637 BN.prototype.iuxor = function iuxor (num) {
27638 // a.length > b.length
27639 var a;
27640 var b;
27641 if (this.length > num.length) {
27642 a = this;
27643 b = num;
27644 } else {
27645 a = num;
27646 b = this;
27647 }
ebd8d4e8 27648
8b095871
IC
27649 for (var i = 0; i < b.length; i++) {
27650 this.words[i] = a.words[i] ^ b.words[i];
27651 }
ebd8d4e8 27652
8b095871
IC
27653 if (this !== a) {
27654 for (; i < a.length; i++) {
27655 this.words[i] = a.words[i];
27656 }
27657 }
ebd8d4e8 27658
8b095871 27659 this.length = a.length;
ebd8d4e8 27660
8b095871
IC
27661 return this.strip();
27662 };
ebd8d4e8 27663
8b095871
IC
27664 BN.prototype.ixor = function ixor (num) {
27665 assert((this.negative | num.negative) === 0);
27666 return this.iuxor(num);
27667 };
ebd8d4e8 27668
8b095871
IC
27669 // Xor `num` with `this`
27670 BN.prototype.xor = function xor (num) {
27671 if (this.length > num.length) return this.clone().ixor(num);
27672 return num.clone().ixor(this);
27673 };
ebd8d4e8 27674
8b095871
IC
27675 BN.prototype.uxor = function uxor (num) {
27676 if (this.length > num.length) return this.clone().iuxor(num);
27677 return num.clone().iuxor(this);
27678 };
ebd8d4e8 27679
8b095871
IC
27680 // Not ``this`` with ``width`` bitwidth
27681 BN.prototype.inotn = function inotn (width) {
27682 assert(typeof width === 'number' && width >= 0);
ebd8d4e8 27683
8b095871
IC
27684 var bytesNeeded = Math.ceil(width / 26) | 0;
27685 var bitsLeft = width % 26;
ebd8d4e8 27686
8b095871
IC
27687 // Extend the buffer with leading zeroes
27688 this._expand(bytesNeeded);
27689
27690 if (bitsLeft > 0) {
27691 bytesNeeded--;
ab78acc6 27692 }
8b095871
IC
27693
27694 // Handle complete words
27695 for (var i = 0; i < bytesNeeded; i++) {
27696 this.words[i] = ~this.words[i] & 0x3ffffff;
ab78acc6 27697 }
8b095871
IC
27698
27699 // Handle the residue
27700 if (bitsLeft > 0) {
27701 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
ab78acc6 27702 }
ebd8d4e8 27703
8b095871
IC
27704 // And remove leading zeroes
27705 return this.strip();
27706 };
ebd8d4e8 27707
8b095871
IC
27708 BN.prototype.notn = function notn (width) {
27709 return this.clone().inotn(width);
27710 };
ebd8d4e8 27711
8b095871
IC
27712 // Set `bit` of `this`
27713 BN.prototype.setn = function setn (bit, val) {
27714 assert(typeof bit === 'number' && bit >= 0);
ebd8d4e8 27715
8b095871
IC
27716 var off = (bit / 26) | 0;
27717 var wbit = bit % 26;
ebd8d4e8 27718
8b095871 27719 this._expand(off + 1);
ebd8d4e8 27720
8b095871
IC
27721 if (val) {
27722 this.words[off] = this.words[off] | (1 << wbit);
27723 } else {
27724 this.words[off] = this.words[off] & ~(1 << wbit);
27725 }
ebd8d4e8 27726
8b095871
IC
27727 return this.strip();
27728 };
ebd8d4e8 27729
8b095871
IC
27730 // Add `num` to `this` in-place
27731 BN.prototype.iadd = function iadd (num) {
27732 var r;
27733
27734 // negative + positive
27735 if (this.negative !== 0 && num.negative === 0) {
27736 this.negative = 0;
27737 r = this.isub(num);
27738 this.negative ^= 1;
27739 return this._normSign();
27740
27741 // positive + negative
27742 } else if (this.negative === 0 && num.negative !== 0) {
27743 num.negative = 0;
27744 r = this.isub(num);
27745 num.negative = 1;
27746 return r._normSign();
27747 }
27748
27749 // a.length > b.length
27750 var a, b;
27751 if (this.length > num.length) {
27752 a = this;
27753 b = num;
ab78acc6 27754 } else {
8b095871
IC
27755 a = num;
27756 b = this;
27757 }
27758
27759 var carry = 0;
27760 for (var i = 0; i < b.length; i++) {
27761 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
27762 this.words[i] = r & 0x3ffffff;
27763 carry = r >>> 26;
27764 }
27765 for (; carry !== 0 && i < a.length; i++) {
27766 r = (a.words[i] | 0) + carry;
27767 this.words[i] = r & 0x3ffffff;
27768 carry = r >>> 26;
27769 }
27770
27771 this.length = a.length;
27772 if (carry !== 0) {
27773 this.words[this.length] = carry;
27774 this.length++;
27775 // Copy the rest of the words
27776 } else if (a !== this) {
27777 for (; i < a.length; i++) {
27778 this.words[i] = a.words[i];
27779 }
ab78acc6 27780 }
ebd8d4e8 27781
8b095871
IC
27782 return this;
27783 };
ebd8d4e8 27784
8b095871
IC
27785 // Add `num` to `this`
27786 BN.prototype.add = function add (num) {
27787 var res;
27788 if (num.negative !== 0 && this.negative === 0) {
27789 num.negative = 0;
27790 res = this.sub(num);
27791 num.negative ^= 1;
27792 return res;
27793 } else if (num.negative === 0 && this.negative !== 0) {
27794 this.negative = 0;
27795 res = num.sub(this);
27796 this.negative = 1;
27797 return res;
27798 }
ebd8d4e8 27799
8b095871 27800 if (this.length > num.length) return this.clone().iadd(num);
ebd8d4e8 27801
8b095871
IC
27802 return num.clone().iadd(this);
27803 };
ebd8d4e8 27804
8b095871
IC
27805 // Subtract `num` from `this` in-place
27806 BN.prototype.isub = function isub (num) {
27807 // this - (-num) = this + num
27808 if (num.negative !== 0) {
27809 num.negative = 0;
27810 var r = this.iadd(num);
27811 num.negative = 1;
27812 return r._normSign();
27813
27814 // -this - num = -(this + num)
27815 } else if (this.negative !== 0) {
27816 this.negative = 0;
27817 this.iadd(num);
27818 this.negative = 1;
27819 return this._normSign();
27820 }
27821
27822 // At this point both numbers are positive
27823 var cmp = this.cmp(num);
27824
27825 // Optimization - zeroify
27826 if (cmp === 0) {
27827 this.negative = 0;
27828 this.length = 1;
27829 this.words[0] = 0;
27830 return this;
27831 }
ebd8d4e8 27832
8b095871
IC
27833 // a > b
27834 var a, b;
27835 if (cmp > 0) {
27836 a = this;
27837 b = num;
27838 } else {
27839 a = num;
27840 b = this;
27841 }
ebd8d4e8 27842
8b095871
IC
27843 var carry = 0;
27844 for (var i = 0; i < b.length; i++) {
27845 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
27846 carry = r >> 26;
27847 this.words[i] = r & 0x3ffffff;
27848 }
27849 for (; carry !== 0 && i < a.length; i++) {
27850 r = (a.words[i] | 0) + carry;
27851 carry = r >> 26;
27852 this.words[i] = r & 0x3ffffff;
27853 }
ebd8d4e8 27854
8b095871
IC
27855 // Copy rest of the words
27856 if (carry === 0 && i < a.length && a !== this) {
27857 for (; i < a.length; i++) {
27858 this.words[i] = a.words[i];
27859 }
27860 }
ebd8d4e8 27861
8b095871 27862 this.length = Math.max(this.length, i);
ebd8d4e8 27863
8b095871
IC
27864 if (a !== this) {
27865 this.negative = 1;
ab78acc6 27866 }
ebd8d4e8 27867
8b095871
IC
27868 return this.strip();
27869 };
ebd8d4e8 27870
8b095871
IC
27871 // Subtract `num` from `this`
27872 BN.prototype.sub = function sub (num) {
27873 return this.clone().isub(num);
27874 };
27875
27876 function smallMulTo (self, num, out) {
27877 out.negative = num.negative ^ self.negative;
27878 var len = (self.length + num.length) | 0;
27879 out.length = len;
27880 len = (len - 1) | 0;
27881
27882 // Peel one iteration (compiler can't do it, because of code complexity)
27883 var a = self.words[0] | 0;
27884 var b = num.words[0] | 0;
27885 var r = a * b;
27886
27887 var lo = r & 0x3ffffff;
27888 var carry = (r / 0x4000000) | 0;
27889 out.words[0] = lo;
27890
27891 for (var k = 1; k < len; k++) {
27892 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
27893 // note that ncarry could be >= 0x3ffffff
27894 var ncarry = carry >>> 26;
27895 var rword = carry & 0x3ffffff;
27896 var maxJ = Math.min(k, num.length - 1);
27897 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
27898 var i = (k - j) | 0;
27899 a = self.words[i] | 0;
27900 b = num.words[j] | 0;
27901 r = a * b + rword;
27902 ncarry += (r / 0x4000000) | 0;
27903 rword = r & 0x3ffffff;
27904 }
27905 out.words[k] = rword | 0;
27906 carry = ncarry | 0;
27907 }
27908 if (carry !== 0) {
27909 out.words[k] = carry | 0;
ab78acc6 27910 } else {
8b095871
IC
27911 out.length--;
27912 }
27913
27914 return out.strip();
27915 }
27916
27917 // TODO(indutny): it may be reasonable to omit it for users who don't need
27918 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
27919 // multiplication (like elliptic secp256k1).
27920 var comb10MulTo = function comb10MulTo (self, num, out) {
27921 var a = self.words;
27922 var b = num.words;
27923 var o = out.words;
27924 var c = 0;
27925 var lo;
27926 var mid;
27927 var hi;
27928 var a0 = a[0] | 0;
27929 var al0 = a0 & 0x1fff;
27930 var ah0 = a0 >>> 13;
27931 var a1 = a[1] | 0;
27932 var al1 = a1 & 0x1fff;
27933 var ah1 = a1 >>> 13;
27934 var a2 = a[2] | 0;
27935 var al2 = a2 & 0x1fff;
27936 var ah2 = a2 >>> 13;
27937 var a3 = a[3] | 0;
27938 var al3 = a3 & 0x1fff;
27939 var ah3 = a3 >>> 13;
27940 var a4 = a[4] | 0;
27941 var al4 = a4 & 0x1fff;
27942 var ah4 = a4 >>> 13;
27943 var a5 = a[5] | 0;
27944 var al5 = a5 & 0x1fff;
27945 var ah5 = a5 >>> 13;
27946 var a6 = a[6] | 0;
27947 var al6 = a6 & 0x1fff;
27948 var ah6 = a6 >>> 13;
27949 var a7 = a[7] | 0;
27950 var al7 = a7 & 0x1fff;
27951 var ah7 = a7 >>> 13;
27952 var a8 = a[8] | 0;
27953 var al8 = a8 & 0x1fff;
27954 var ah8 = a8 >>> 13;
27955 var a9 = a[9] | 0;
27956 var al9 = a9 & 0x1fff;
27957 var ah9 = a9 >>> 13;
27958 var b0 = b[0] | 0;
27959 var bl0 = b0 & 0x1fff;
27960 var bh0 = b0 >>> 13;
27961 var b1 = b[1] | 0;
27962 var bl1 = b1 & 0x1fff;
27963 var bh1 = b1 >>> 13;
27964 var b2 = b[2] | 0;
27965 var bl2 = b2 & 0x1fff;
27966 var bh2 = b2 >>> 13;
27967 var b3 = b[3] | 0;
27968 var bl3 = b3 & 0x1fff;
27969 var bh3 = b3 >>> 13;
27970 var b4 = b[4] | 0;
27971 var bl4 = b4 & 0x1fff;
27972 var bh4 = b4 >>> 13;
27973 var b5 = b[5] | 0;
27974 var bl5 = b5 & 0x1fff;
27975 var bh5 = b5 >>> 13;
27976 var b6 = b[6] | 0;
27977 var bl6 = b6 & 0x1fff;
27978 var bh6 = b6 >>> 13;
27979 var b7 = b[7] | 0;
27980 var bl7 = b7 & 0x1fff;
27981 var bh7 = b7 >>> 13;
27982 var b8 = b[8] | 0;
27983 var bl8 = b8 & 0x1fff;
27984 var bh8 = b8 >>> 13;
27985 var b9 = b[9] | 0;
27986 var bl9 = b9 & 0x1fff;
27987 var bh9 = b9 >>> 13;
27988
27989 out.negative = self.negative ^ num.negative;
27990 out.length = 19;
27991 /* k = 0 */
27992 lo = Math.imul(al0, bl0);
27993 mid = Math.imul(al0, bh0);
27994 mid = (mid + Math.imul(ah0, bl0)) | 0;
27995 hi = Math.imul(ah0, bh0);
27996 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27997 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
27998 w0 &= 0x3ffffff;
27999 /* k = 1 */
28000 lo = Math.imul(al1, bl0);
28001 mid = Math.imul(al1, bh0);
28002 mid = (mid + Math.imul(ah1, bl0)) | 0;
28003 hi = Math.imul(ah1, bh0);
28004 lo = (lo + Math.imul(al0, bl1)) | 0;
28005 mid = (mid + Math.imul(al0, bh1)) | 0;
28006 mid = (mid + Math.imul(ah0, bl1)) | 0;
28007 hi = (hi + Math.imul(ah0, bh1)) | 0;
28008 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28009 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
28010 w1 &= 0x3ffffff;
28011 /* k = 2 */
28012 lo = Math.imul(al2, bl0);
28013 mid = Math.imul(al2, bh0);
28014 mid = (mid + Math.imul(ah2, bl0)) | 0;
28015 hi = Math.imul(ah2, bh0);
28016 lo = (lo + Math.imul(al1, bl1)) | 0;
28017 mid = (mid + Math.imul(al1, bh1)) | 0;
28018 mid = (mid + Math.imul(ah1, bl1)) | 0;
28019 hi = (hi + Math.imul(ah1, bh1)) | 0;
28020 lo = (lo + Math.imul(al0, bl2)) | 0;
28021 mid = (mid + Math.imul(al0, bh2)) | 0;
28022 mid = (mid + Math.imul(ah0, bl2)) | 0;
28023 hi = (hi + Math.imul(ah0, bh2)) | 0;
28024 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28025 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
28026 w2 &= 0x3ffffff;
28027 /* k = 3 */
28028 lo = Math.imul(al3, bl0);
28029 mid = Math.imul(al3, bh0);
28030 mid = (mid + Math.imul(ah3, bl0)) | 0;
28031 hi = Math.imul(ah3, bh0);
28032 lo = (lo + Math.imul(al2, bl1)) | 0;
28033 mid = (mid + Math.imul(al2, bh1)) | 0;
28034 mid = (mid + Math.imul(ah2, bl1)) | 0;
28035 hi = (hi + Math.imul(ah2, bh1)) | 0;
28036 lo = (lo + Math.imul(al1, bl2)) | 0;
28037 mid = (mid + Math.imul(al1, bh2)) | 0;
28038 mid = (mid + Math.imul(ah1, bl2)) | 0;
28039 hi = (hi + Math.imul(ah1, bh2)) | 0;
28040 lo = (lo + Math.imul(al0, bl3)) | 0;
28041 mid = (mid + Math.imul(al0, bh3)) | 0;
28042 mid = (mid + Math.imul(ah0, bl3)) | 0;
28043 hi = (hi + Math.imul(ah0, bh3)) | 0;
28044 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28045 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
28046 w3 &= 0x3ffffff;
28047 /* k = 4 */
28048 lo = Math.imul(al4, bl0);
28049 mid = Math.imul(al4, bh0);
28050 mid = (mid + Math.imul(ah4, bl0)) | 0;
28051 hi = Math.imul(ah4, bh0);
28052 lo = (lo + Math.imul(al3, bl1)) | 0;
28053 mid = (mid + Math.imul(al3, bh1)) | 0;
28054 mid = (mid + Math.imul(ah3, bl1)) | 0;
28055 hi = (hi + Math.imul(ah3, bh1)) | 0;
28056 lo = (lo + Math.imul(al2, bl2)) | 0;
28057 mid = (mid + Math.imul(al2, bh2)) | 0;
28058 mid = (mid + Math.imul(ah2, bl2)) | 0;
28059 hi = (hi + Math.imul(ah2, bh2)) | 0;
28060 lo = (lo + Math.imul(al1, bl3)) | 0;
28061 mid = (mid + Math.imul(al1, bh3)) | 0;
28062 mid = (mid + Math.imul(ah1, bl3)) | 0;
28063 hi = (hi + Math.imul(ah1, bh3)) | 0;
28064 lo = (lo + Math.imul(al0, bl4)) | 0;
28065 mid = (mid + Math.imul(al0, bh4)) | 0;
28066 mid = (mid + Math.imul(ah0, bl4)) | 0;
28067 hi = (hi + Math.imul(ah0, bh4)) | 0;
28068 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28069 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
28070 w4 &= 0x3ffffff;
28071 /* k = 5 */
28072 lo = Math.imul(al5, bl0);
28073 mid = Math.imul(al5, bh0);
28074 mid = (mid + Math.imul(ah5, bl0)) | 0;
28075 hi = Math.imul(ah5, bh0);
28076 lo = (lo + Math.imul(al4, bl1)) | 0;
28077 mid = (mid + Math.imul(al4, bh1)) | 0;
28078 mid = (mid + Math.imul(ah4, bl1)) | 0;
28079 hi = (hi + Math.imul(ah4, bh1)) | 0;
28080 lo = (lo + Math.imul(al3, bl2)) | 0;
28081 mid = (mid + Math.imul(al3, bh2)) | 0;
28082 mid = (mid + Math.imul(ah3, bl2)) | 0;
28083 hi = (hi + Math.imul(ah3, bh2)) | 0;
28084 lo = (lo + Math.imul(al2, bl3)) | 0;
28085 mid = (mid + Math.imul(al2, bh3)) | 0;
28086 mid = (mid + Math.imul(ah2, bl3)) | 0;
28087 hi = (hi + Math.imul(ah2, bh3)) | 0;
28088 lo = (lo + Math.imul(al1, bl4)) | 0;
28089 mid = (mid + Math.imul(al1, bh4)) | 0;
28090 mid = (mid + Math.imul(ah1, bl4)) | 0;
28091 hi = (hi + Math.imul(ah1, bh4)) | 0;
28092 lo = (lo + Math.imul(al0, bl5)) | 0;
28093 mid = (mid + Math.imul(al0, bh5)) | 0;
28094 mid = (mid + Math.imul(ah0, bl5)) | 0;
28095 hi = (hi + Math.imul(ah0, bh5)) | 0;
28096 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28097 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
28098 w5 &= 0x3ffffff;
28099 /* k = 6 */
28100 lo = Math.imul(al6, bl0);
28101 mid = Math.imul(al6, bh0);
28102 mid = (mid + Math.imul(ah6, bl0)) | 0;
28103 hi = Math.imul(ah6, bh0);
28104 lo = (lo + Math.imul(al5, bl1)) | 0;
28105 mid = (mid + Math.imul(al5, bh1)) | 0;
28106 mid = (mid + Math.imul(ah5, bl1)) | 0;
28107 hi = (hi + Math.imul(ah5, bh1)) | 0;
28108 lo = (lo + Math.imul(al4, bl2)) | 0;
28109 mid = (mid + Math.imul(al4, bh2)) | 0;
28110 mid = (mid + Math.imul(ah4, bl2)) | 0;
28111 hi = (hi + Math.imul(ah4, bh2)) | 0;
28112 lo = (lo + Math.imul(al3, bl3)) | 0;
28113 mid = (mid + Math.imul(al3, bh3)) | 0;
28114 mid = (mid + Math.imul(ah3, bl3)) | 0;
28115 hi = (hi + Math.imul(ah3, bh3)) | 0;
28116 lo = (lo + Math.imul(al2, bl4)) | 0;
28117 mid = (mid + Math.imul(al2, bh4)) | 0;
28118 mid = (mid + Math.imul(ah2, bl4)) | 0;
28119 hi = (hi + Math.imul(ah2, bh4)) | 0;
28120 lo = (lo + Math.imul(al1, bl5)) | 0;
28121 mid = (mid + Math.imul(al1, bh5)) | 0;
28122 mid = (mid + Math.imul(ah1, bl5)) | 0;
28123 hi = (hi + Math.imul(ah1, bh5)) | 0;
28124 lo = (lo + Math.imul(al0, bl6)) | 0;
28125 mid = (mid + Math.imul(al0, bh6)) | 0;
28126 mid = (mid + Math.imul(ah0, bl6)) | 0;
28127 hi = (hi + Math.imul(ah0, bh6)) | 0;
28128 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28129 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
28130 w6 &= 0x3ffffff;
28131 /* k = 7 */
28132 lo = Math.imul(al7, bl0);
28133 mid = Math.imul(al7, bh0);
28134 mid = (mid + Math.imul(ah7, bl0)) | 0;
28135 hi = Math.imul(ah7, bh0);
28136 lo = (lo + Math.imul(al6, bl1)) | 0;
28137 mid = (mid + Math.imul(al6, bh1)) | 0;
28138 mid = (mid + Math.imul(ah6, bl1)) | 0;
28139 hi = (hi + Math.imul(ah6, bh1)) | 0;
28140 lo = (lo + Math.imul(al5, bl2)) | 0;
28141 mid = (mid + Math.imul(al5, bh2)) | 0;
28142 mid = (mid + Math.imul(ah5, bl2)) | 0;
28143 hi = (hi + Math.imul(ah5, bh2)) | 0;
28144 lo = (lo + Math.imul(al4, bl3)) | 0;
28145 mid = (mid + Math.imul(al4, bh3)) | 0;
28146 mid = (mid + Math.imul(ah4, bl3)) | 0;
28147 hi = (hi + Math.imul(ah4, bh3)) | 0;
28148 lo = (lo + Math.imul(al3, bl4)) | 0;
28149 mid = (mid + Math.imul(al3, bh4)) | 0;
28150 mid = (mid + Math.imul(ah3, bl4)) | 0;
28151 hi = (hi + Math.imul(ah3, bh4)) | 0;
28152 lo = (lo + Math.imul(al2, bl5)) | 0;
28153 mid = (mid + Math.imul(al2, bh5)) | 0;
28154 mid = (mid + Math.imul(ah2, bl5)) | 0;
28155 hi = (hi + Math.imul(ah2, bh5)) | 0;
28156 lo = (lo + Math.imul(al1, bl6)) | 0;
28157 mid = (mid + Math.imul(al1, bh6)) | 0;
28158 mid = (mid + Math.imul(ah1, bl6)) | 0;
28159 hi = (hi + Math.imul(ah1, bh6)) | 0;
28160 lo = (lo + Math.imul(al0, bl7)) | 0;
28161 mid = (mid + Math.imul(al0, bh7)) | 0;
28162 mid = (mid + Math.imul(ah0, bl7)) | 0;
28163 hi = (hi + Math.imul(ah0, bh7)) | 0;
28164 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28165 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
28166 w7 &= 0x3ffffff;
28167 /* k = 8 */
28168 lo = Math.imul(al8, bl0);
28169 mid = Math.imul(al8, bh0);
28170 mid = (mid + Math.imul(ah8, bl0)) | 0;
28171 hi = Math.imul(ah8, bh0);
28172 lo = (lo + Math.imul(al7, bl1)) | 0;
28173 mid = (mid + Math.imul(al7, bh1)) | 0;
28174 mid = (mid + Math.imul(ah7, bl1)) | 0;
28175 hi = (hi + Math.imul(ah7, bh1)) | 0;
28176 lo = (lo + Math.imul(al6, bl2)) | 0;
28177 mid = (mid + Math.imul(al6, bh2)) | 0;
28178 mid = (mid + Math.imul(ah6, bl2)) | 0;
28179 hi = (hi + Math.imul(ah6, bh2)) | 0;
28180 lo = (lo + Math.imul(al5, bl3)) | 0;
28181 mid = (mid + Math.imul(al5, bh3)) | 0;
28182 mid = (mid + Math.imul(ah5, bl3)) | 0;
28183 hi = (hi + Math.imul(ah5, bh3)) | 0;
28184 lo = (lo + Math.imul(al4, bl4)) | 0;
28185 mid = (mid + Math.imul(al4, bh4)) | 0;
28186 mid = (mid + Math.imul(ah4, bl4)) | 0;
28187 hi = (hi + Math.imul(ah4, bh4)) | 0;
28188 lo = (lo + Math.imul(al3, bl5)) | 0;
28189 mid = (mid + Math.imul(al3, bh5)) | 0;
28190 mid = (mid + Math.imul(ah3, bl5)) | 0;
28191 hi = (hi + Math.imul(ah3, bh5)) | 0;
28192 lo = (lo + Math.imul(al2, bl6)) | 0;
28193 mid = (mid + Math.imul(al2, bh6)) | 0;
28194 mid = (mid + Math.imul(ah2, bl6)) | 0;
28195 hi = (hi + Math.imul(ah2, bh6)) | 0;
28196 lo = (lo + Math.imul(al1, bl7)) | 0;
28197 mid = (mid + Math.imul(al1, bh7)) | 0;
28198 mid = (mid + Math.imul(ah1, bl7)) | 0;
28199 hi = (hi + Math.imul(ah1, bh7)) | 0;
28200 lo = (lo + Math.imul(al0, bl8)) | 0;
28201 mid = (mid + Math.imul(al0, bh8)) | 0;
28202 mid = (mid + Math.imul(ah0, bl8)) | 0;
28203 hi = (hi + Math.imul(ah0, bh8)) | 0;
28204 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28205 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
28206 w8 &= 0x3ffffff;
28207 /* k = 9 */
28208 lo = Math.imul(al9, bl0);
28209 mid = Math.imul(al9, bh0);
28210 mid = (mid + Math.imul(ah9, bl0)) | 0;
28211 hi = Math.imul(ah9, bh0);
28212 lo = (lo + Math.imul(al8, bl1)) | 0;
28213 mid = (mid + Math.imul(al8, bh1)) | 0;
28214 mid = (mid + Math.imul(ah8, bl1)) | 0;
28215 hi = (hi + Math.imul(ah8, bh1)) | 0;
28216 lo = (lo + Math.imul(al7, bl2)) | 0;
28217 mid = (mid + Math.imul(al7, bh2)) | 0;
28218 mid = (mid + Math.imul(ah7, bl2)) | 0;
28219 hi = (hi + Math.imul(ah7, bh2)) | 0;
28220 lo = (lo + Math.imul(al6, bl3)) | 0;
28221 mid = (mid + Math.imul(al6, bh3)) | 0;
28222 mid = (mid + Math.imul(ah6, bl3)) | 0;
28223 hi = (hi + Math.imul(ah6, bh3)) | 0;
28224 lo = (lo + Math.imul(al5, bl4)) | 0;
28225 mid = (mid + Math.imul(al5, bh4)) | 0;
28226 mid = (mid + Math.imul(ah5, bl4)) | 0;
28227 hi = (hi + Math.imul(ah5, bh4)) | 0;
28228 lo = (lo + Math.imul(al4, bl5)) | 0;
28229 mid = (mid + Math.imul(al4, bh5)) | 0;
28230 mid = (mid + Math.imul(ah4, bl5)) | 0;
28231 hi = (hi + Math.imul(ah4, bh5)) | 0;
28232 lo = (lo + Math.imul(al3, bl6)) | 0;
28233 mid = (mid + Math.imul(al3, bh6)) | 0;
28234 mid = (mid + Math.imul(ah3, bl6)) | 0;
28235 hi = (hi + Math.imul(ah3, bh6)) | 0;
28236 lo = (lo + Math.imul(al2, bl7)) | 0;
28237 mid = (mid + Math.imul(al2, bh7)) | 0;
28238 mid = (mid + Math.imul(ah2, bl7)) | 0;
28239 hi = (hi + Math.imul(ah2, bh7)) | 0;
28240 lo = (lo + Math.imul(al1, bl8)) | 0;
28241 mid = (mid + Math.imul(al1, bh8)) | 0;
28242 mid = (mid + Math.imul(ah1, bl8)) | 0;
28243 hi = (hi + Math.imul(ah1, bh8)) | 0;
28244 lo = (lo + Math.imul(al0, bl9)) | 0;
28245 mid = (mid + Math.imul(al0, bh9)) | 0;
28246 mid = (mid + Math.imul(ah0, bl9)) | 0;
28247 hi = (hi + Math.imul(ah0, bh9)) | 0;
28248 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28249 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
28250 w9 &= 0x3ffffff;
28251 /* k = 10 */
28252 lo = Math.imul(al9, bl1);
28253 mid = Math.imul(al9, bh1);
28254 mid = (mid + Math.imul(ah9, bl1)) | 0;
28255 hi = Math.imul(ah9, bh1);
28256 lo = (lo + Math.imul(al8, bl2)) | 0;
28257 mid = (mid + Math.imul(al8, bh2)) | 0;
28258 mid = (mid + Math.imul(ah8, bl2)) | 0;
28259 hi = (hi + Math.imul(ah8, bh2)) | 0;
28260 lo = (lo + Math.imul(al7, bl3)) | 0;
28261 mid = (mid + Math.imul(al7, bh3)) | 0;
28262 mid = (mid + Math.imul(ah7, bl3)) | 0;
28263 hi = (hi + Math.imul(ah7, bh3)) | 0;
28264 lo = (lo + Math.imul(al6, bl4)) | 0;
28265 mid = (mid + Math.imul(al6, bh4)) | 0;
28266 mid = (mid + Math.imul(ah6, bl4)) | 0;
28267 hi = (hi + Math.imul(ah6, bh4)) | 0;
28268 lo = (lo + Math.imul(al5, bl5)) | 0;
28269 mid = (mid + Math.imul(al5, bh5)) | 0;
28270 mid = (mid + Math.imul(ah5, bl5)) | 0;
28271 hi = (hi + Math.imul(ah5, bh5)) | 0;
28272 lo = (lo + Math.imul(al4, bl6)) | 0;
28273 mid = (mid + Math.imul(al4, bh6)) | 0;
28274 mid = (mid + Math.imul(ah4, bl6)) | 0;
28275 hi = (hi + Math.imul(ah4, bh6)) | 0;
28276 lo = (lo + Math.imul(al3, bl7)) | 0;
28277 mid = (mid + Math.imul(al3, bh7)) | 0;
28278 mid = (mid + Math.imul(ah3, bl7)) | 0;
28279 hi = (hi + Math.imul(ah3, bh7)) | 0;
28280 lo = (lo + Math.imul(al2, bl8)) | 0;
28281 mid = (mid + Math.imul(al2, bh8)) | 0;
28282 mid = (mid + Math.imul(ah2, bl8)) | 0;
28283 hi = (hi + Math.imul(ah2, bh8)) | 0;
28284 lo = (lo + Math.imul(al1, bl9)) | 0;
28285 mid = (mid + Math.imul(al1, bh9)) | 0;
28286 mid = (mid + Math.imul(ah1, bl9)) | 0;
28287 hi = (hi + Math.imul(ah1, bh9)) | 0;
28288 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28289 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
28290 w10 &= 0x3ffffff;
28291 /* k = 11 */
28292 lo = Math.imul(al9, bl2);
28293 mid = Math.imul(al9, bh2);
28294 mid = (mid + Math.imul(ah9, bl2)) | 0;
28295 hi = Math.imul(ah9, bh2);
28296 lo = (lo + Math.imul(al8, bl3)) | 0;
28297 mid = (mid + Math.imul(al8, bh3)) | 0;
28298 mid = (mid + Math.imul(ah8, bl3)) | 0;
28299 hi = (hi + Math.imul(ah8, bh3)) | 0;
28300 lo = (lo + Math.imul(al7, bl4)) | 0;
28301 mid = (mid + Math.imul(al7, bh4)) | 0;
28302 mid = (mid + Math.imul(ah7, bl4)) | 0;
28303 hi = (hi + Math.imul(ah7, bh4)) | 0;
28304 lo = (lo + Math.imul(al6, bl5)) | 0;
28305 mid = (mid + Math.imul(al6, bh5)) | 0;
28306 mid = (mid + Math.imul(ah6, bl5)) | 0;
28307 hi = (hi + Math.imul(ah6, bh5)) | 0;
28308 lo = (lo + Math.imul(al5, bl6)) | 0;
28309 mid = (mid + Math.imul(al5, bh6)) | 0;
28310 mid = (mid + Math.imul(ah5, bl6)) | 0;
28311 hi = (hi + Math.imul(ah5, bh6)) | 0;
28312 lo = (lo + Math.imul(al4, bl7)) | 0;
28313 mid = (mid + Math.imul(al4, bh7)) | 0;
28314 mid = (mid + Math.imul(ah4, bl7)) | 0;
28315 hi = (hi + Math.imul(ah4, bh7)) | 0;
28316 lo = (lo + Math.imul(al3, bl8)) | 0;
28317 mid = (mid + Math.imul(al3, bh8)) | 0;
28318 mid = (mid + Math.imul(ah3, bl8)) | 0;
28319 hi = (hi + Math.imul(ah3, bh8)) | 0;
28320 lo = (lo + Math.imul(al2, bl9)) | 0;
28321 mid = (mid + Math.imul(al2, bh9)) | 0;
28322 mid = (mid + Math.imul(ah2, bl9)) | 0;
28323 hi = (hi + Math.imul(ah2, bh9)) | 0;
28324 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28325 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
28326 w11 &= 0x3ffffff;
28327 /* k = 12 */
28328 lo = Math.imul(al9, bl3);
28329 mid = Math.imul(al9, bh3);
28330 mid = (mid + Math.imul(ah9, bl3)) | 0;
28331 hi = Math.imul(ah9, bh3);
28332 lo = (lo + Math.imul(al8, bl4)) | 0;
28333 mid = (mid + Math.imul(al8, bh4)) | 0;
28334 mid = (mid + Math.imul(ah8, bl4)) | 0;
28335 hi = (hi + Math.imul(ah8, bh4)) | 0;
28336 lo = (lo + Math.imul(al7, bl5)) | 0;
28337 mid = (mid + Math.imul(al7, bh5)) | 0;
28338 mid = (mid + Math.imul(ah7, bl5)) | 0;
28339 hi = (hi + Math.imul(ah7, bh5)) | 0;
28340 lo = (lo + Math.imul(al6, bl6)) | 0;
28341 mid = (mid + Math.imul(al6, bh6)) | 0;
28342 mid = (mid + Math.imul(ah6, bl6)) | 0;
28343 hi = (hi + Math.imul(ah6, bh6)) | 0;
28344 lo = (lo + Math.imul(al5, bl7)) | 0;
28345 mid = (mid + Math.imul(al5, bh7)) | 0;
28346 mid = (mid + Math.imul(ah5, bl7)) | 0;
28347 hi = (hi + Math.imul(ah5, bh7)) | 0;
28348 lo = (lo + Math.imul(al4, bl8)) | 0;
28349 mid = (mid + Math.imul(al4, bh8)) | 0;
28350 mid = (mid + Math.imul(ah4, bl8)) | 0;
28351 hi = (hi + Math.imul(ah4, bh8)) | 0;
28352 lo = (lo + Math.imul(al3, bl9)) | 0;
28353 mid = (mid + Math.imul(al3, bh9)) | 0;
28354 mid = (mid + Math.imul(ah3, bl9)) | 0;
28355 hi = (hi + Math.imul(ah3, bh9)) | 0;
28356 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28357 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
28358 w12 &= 0x3ffffff;
28359 /* k = 13 */
28360 lo = Math.imul(al9, bl4);
28361 mid = Math.imul(al9, bh4);
28362 mid = (mid + Math.imul(ah9, bl4)) | 0;
28363 hi = Math.imul(ah9, bh4);
28364 lo = (lo + Math.imul(al8, bl5)) | 0;
28365 mid = (mid + Math.imul(al8, bh5)) | 0;
28366 mid = (mid + Math.imul(ah8, bl5)) | 0;
28367 hi = (hi + Math.imul(ah8, bh5)) | 0;
28368 lo = (lo + Math.imul(al7, bl6)) | 0;
28369 mid = (mid + Math.imul(al7, bh6)) | 0;
28370 mid = (mid + Math.imul(ah7, bl6)) | 0;
28371 hi = (hi + Math.imul(ah7, bh6)) | 0;
28372 lo = (lo + Math.imul(al6, bl7)) | 0;
28373 mid = (mid + Math.imul(al6, bh7)) | 0;
28374 mid = (mid + Math.imul(ah6, bl7)) | 0;
28375 hi = (hi + Math.imul(ah6, bh7)) | 0;
28376 lo = (lo + Math.imul(al5, bl8)) | 0;
28377 mid = (mid + Math.imul(al5, bh8)) | 0;
28378 mid = (mid + Math.imul(ah5, bl8)) | 0;
28379 hi = (hi + Math.imul(ah5, bh8)) | 0;
28380 lo = (lo + Math.imul(al4, bl9)) | 0;
28381 mid = (mid + Math.imul(al4, bh9)) | 0;
28382 mid = (mid + Math.imul(ah4, bl9)) | 0;
28383 hi = (hi + Math.imul(ah4, bh9)) | 0;
28384 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28385 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
28386 w13 &= 0x3ffffff;
28387 /* k = 14 */
28388 lo = Math.imul(al9, bl5);
28389 mid = Math.imul(al9, bh5);
28390 mid = (mid + Math.imul(ah9, bl5)) | 0;
28391 hi = Math.imul(ah9, bh5);
28392 lo = (lo + Math.imul(al8, bl6)) | 0;
28393 mid = (mid + Math.imul(al8, bh6)) | 0;
28394 mid = (mid + Math.imul(ah8, bl6)) | 0;
28395 hi = (hi + Math.imul(ah8, bh6)) | 0;
28396 lo = (lo + Math.imul(al7, bl7)) | 0;
28397 mid = (mid + Math.imul(al7, bh7)) | 0;
28398 mid = (mid + Math.imul(ah7, bl7)) | 0;
28399 hi = (hi + Math.imul(ah7, bh7)) | 0;
28400 lo = (lo + Math.imul(al6, bl8)) | 0;
28401 mid = (mid + Math.imul(al6, bh8)) | 0;
28402 mid = (mid + Math.imul(ah6, bl8)) | 0;
28403 hi = (hi + Math.imul(ah6, bh8)) | 0;
28404 lo = (lo + Math.imul(al5, bl9)) | 0;
28405 mid = (mid + Math.imul(al5, bh9)) | 0;
28406 mid = (mid + Math.imul(ah5, bl9)) | 0;
28407 hi = (hi + Math.imul(ah5, bh9)) | 0;
28408 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28409 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
28410 w14 &= 0x3ffffff;
28411 /* k = 15 */
28412 lo = Math.imul(al9, bl6);
28413 mid = Math.imul(al9, bh6);
28414 mid = (mid + Math.imul(ah9, bl6)) | 0;
28415 hi = Math.imul(ah9, bh6);
28416 lo = (lo + Math.imul(al8, bl7)) | 0;
28417 mid = (mid + Math.imul(al8, bh7)) | 0;
28418 mid = (mid + Math.imul(ah8, bl7)) | 0;
28419 hi = (hi + Math.imul(ah8, bh7)) | 0;
28420 lo = (lo + Math.imul(al7, bl8)) | 0;
28421 mid = (mid + Math.imul(al7, bh8)) | 0;
28422 mid = (mid + Math.imul(ah7, bl8)) | 0;
28423 hi = (hi + Math.imul(ah7, bh8)) | 0;
28424 lo = (lo + Math.imul(al6, bl9)) | 0;
28425 mid = (mid + Math.imul(al6, bh9)) | 0;
28426 mid = (mid + Math.imul(ah6, bl9)) | 0;
28427 hi = (hi + Math.imul(ah6, bh9)) | 0;
28428 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28429 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
28430 w15 &= 0x3ffffff;
28431 /* k = 16 */
28432 lo = Math.imul(al9, bl7);
28433 mid = Math.imul(al9, bh7);
28434 mid = (mid + Math.imul(ah9, bl7)) | 0;
28435 hi = Math.imul(ah9, bh7);
28436 lo = (lo + Math.imul(al8, bl8)) | 0;
28437 mid = (mid + Math.imul(al8, bh8)) | 0;
28438 mid = (mid + Math.imul(ah8, bl8)) | 0;
28439 hi = (hi + Math.imul(ah8, bh8)) | 0;
28440 lo = (lo + Math.imul(al7, bl9)) | 0;
28441 mid = (mid + Math.imul(al7, bh9)) | 0;
28442 mid = (mid + Math.imul(ah7, bl9)) | 0;
28443 hi = (hi + Math.imul(ah7, bh9)) | 0;
28444 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28445 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
28446 w16 &= 0x3ffffff;
28447 /* k = 17 */
28448 lo = Math.imul(al9, bl8);
28449 mid = Math.imul(al9, bh8);
28450 mid = (mid + Math.imul(ah9, bl8)) | 0;
28451 hi = Math.imul(ah9, bh8);
28452 lo = (lo + Math.imul(al8, bl9)) | 0;
28453 mid = (mid + Math.imul(al8, bh9)) | 0;
28454 mid = (mid + Math.imul(ah8, bl9)) | 0;
28455 hi = (hi + Math.imul(ah8, bh9)) | 0;
28456 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28457 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
28458 w17 &= 0x3ffffff;
28459 /* k = 18 */
28460 lo = Math.imul(al9, bl9);
28461 mid = Math.imul(al9, bh9);
28462 mid = (mid + Math.imul(ah9, bl9)) | 0;
28463 hi = Math.imul(ah9, bh9);
28464 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28465 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
28466 w18 &= 0x3ffffff;
28467 o[0] = w0;
28468 o[1] = w1;
28469 o[2] = w2;
28470 o[3] = w3;
28471 o[4] = w4;
28472 o[5] = w5;
28473 o[6] = w6;
28474 o[7] = w7;
28475 o[8] = w8;
28476 o[9] = w9;
28477 o[10] = w10;
28478 o[11] = w11;
28479 o[12] = w12;
28480 o[13] = w13;
28481 o[14] = w14;
28482 o[15] = w15;
28483 o[16] = w16;
28484 o[17] = w17;
28485 o[18] = w18;
28486 if (c !== 0) {
28487 o[19] = c;
28488 out.length++;
ab78acc6 28489 }
8b095871
IC
28490 return out;
28491 };
28492
28493 // Polyfill comb
28494 if (!Math.imul) {
28495 comb10MulTo = smallMulTo;
28496 }
28497
28498 function bigMulTo (self, num, out) {
28499 out.negative = num.negative ^ self.negative;
28500 out.length = self.length + num.length;
28501
28502 var carry = 0;
28503 var hncarry = 0;
28504 for (var k = 0; k < out.length - 1; k++) {
28505 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
28506 // note that ncarry could be >= 0x3ffffff
28507 var ncarry = hncarry;
28508 hncarry = 0;
28509 var rword = carry & 0x3ffffff;
28510 var maxJ = Math.min(k, num.length - 1);
28511 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
28512 var i = k - j;
28513 var a = self.words[i] | 0;
28514 var b = num.words[j] | 0;
28515 var r = a * b;
28516
28517 var lo = r & 0x3ffffff;
28518 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
28519 lo = (lo + rword) | 0;
28520 rword = lo & 0x3ffffff;
28521 ncarry = (ncarry + (lo >>> 26)) | 0;
28522
28523 hncarry += ncarry >>> 26;
28524 ncarry &= 0x3ffffff;
28525 }
28526 out.words[k] = rword;
28527 carry = ncarry;
28528 ncarry = hncarry;
28529 }
28530 if (carry !== 0) {
28531 out.words[k] = carry;
28532 } else {
28533 out.length--;
ab78acc6 28534 }
8b095871
IC
28535
28536 return out.strip();
ab78acc6 28537 }
8b095871
IC
28538
28539 function jumboMulTo (self, num, out) {
28540 var fftm = new FFTM();
28541 return fftm.mulp(self, num, out);
ab78acc6 28542 }
8b095871
IC
28543
28544 BN.prototype.mulTo = function mulTo (num, out) {
28545 var res;
28546 var len = this.length + num.length;
28547 if (this.length === 10 && num.length === 10) {
28548 res = comb10MulTo(this, num, out);
28549 } else if (len < 63) {
28550 res = smallMulTo(this, num, out);
28551 } else if (len < 1024) {
28552 res = bigMulTo(this, num, out);
ab78acc6 28553 } else {
8b095871 28554 res = jumboMulTo(this, num, out);
ab78acc6 28555 }
8b095871
IC
28556
28557 return res;
28558 };
28559
28560 // Cooley-Tukey algorithm for FFT
28561 // slightly revisited to rely on looping instead of recursion
28562
28563 function FFTM (x, y) {
28564 this.x = x;
28565 this.y = y;
ab78acc6 28566 }
8b095871
IC
28567
28568 FFTM.prototype.makeRBT = function makeRBT (N) {
28569 var t = new Array(N);
28570 var l = BN.prototype._countBits(N) - 1;
28571 for (var i = 0; i < N; i++) {
28572 t[i] = this.revBin(i, l, N);
28573 }
28574
28575 return t;
28576 };
28577
28578 // Returns binary-reversed representation of `x`
28579 FFTM.prototype.revBin = function revBin (x, l, N) {
28580 if (x === 0 || x === N - 1) return x;
28581
28582 var rb = 0;
28583 for (var i = 0; i < l; i++) {
28584 rb |= (x & 1) << (l - i - 1);
28585 x >>= 1;
28586 }
28587
28588 return rb;
28589 };
28590
28591 // Performs "tweedling" phase, therefore 'emulating'
28592 // behaviour of the recursive algorithm
28593 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
28594 for (var i = 0; i < N; i++) {
28595 rtws[i] = rws[rbt[i]];
28596 itws[i] = iws[rbt[i]];
28597 }
28598 };
28599
28600 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
28601 this.permute(rbt, rws, iws, rtws, itws, N);
28602
28603 for (var s = 1; s < N; s <<= 1) {
28604 var l = s << 1;
28605
28606 var rtwdf = Math.cos(2 * Math.PI / l);
28607 var itwdf = Math.sin(2 * Math.PI / l);
28608
28609 for (var p = 0; p < N; p += l) {
28610 var rtwdf_ = rtwdf;
28611 var itwdf_ = itwdf;
28612
28613 for (var j = 0; j < s; j++) {
28614 var re = rtws[p + j];
28615 var ie = itws[p + j];
28616
28617 var ro = rtws[p + j + s];
28618 var io = itws[p + j + s];
28619
28620 var rx = rtwdf_ * ro - itwdf_ * io;
28621
28622 io = rtwdf_ * io + itwdf_ * ro;
28623 ro = rx;
28624
28625 rtws[p + j] = re + ro;
28626 itws[p + j] = ie + io;
28627
28628 rtws[p + j + s] = re - ro;
28629 itws[p + j + s] = ie - io;
28630
28631 /* jshint maxdepth : false */
28632 if (j !== l) {
28633 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
28634
28635 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
28636 rtwdf_ = rx;
28637 }
28638 }
28639 }
ab78acc6 28640 }
8b095871
IC
28641 };
28642
28643 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
28644 var N = Math.max(m, n) | 1;
28645 var odd = N & 1;
28646 var i = 0;
28647 for (N = N / 2 | 0; N; N = N >>> 1) {
28648 i++;
ab78acc6 28649 }
ebd8d4e8 28650
8b095871
IC
28651 return 1 << i + 1 + odd;
28652 };
ebd8d4e8 28653
8b095871
IC
28654 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
28655 if (N <= 1) return;
ebd8d4e8 28656
8b095871
IC
28657 for (var i = 0; i < N / 2; i++) {
28658 var t = rws[i];
ebd8d4e8 28659
8b095871
IC
28660 rws[i] = rws[N - i - 1];
28661 rws[N - i - 1] = t;
ebd8d4e8 28662
8b095871 28663 t = iws[i];
ebd8d4e8 28664
8b095871
IC
28665 iws[i] = -iws[N - i - 1];
28666 iws[N - i - 1] = -t;
28667 }
28668 };
ebd8d4e8 28669
8b095871
IC
28670 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
28671 var carry = 0;
28672 for (var i = 0; i < N / 2; i++) {
28673 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
28674 Math.round(ws[2 * i] / N) +
28675 carry;
ebd8d4e8 28676
8b095871 28677 ws[i] = w & 0x3ffffff;
ebd8d4e8 28678
8b095871
IC
28679 if (w < 0x4000000) {
28680 carry = 0;
28681 } else {
28682 carry = w / 0x4000000 | 0;
28683 }
28684 }
ebd8d4e8 28685
8b095871
IC
28686 return ws;
28687 };
ebd8d4e8 28688
8b095871
IC
28689 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
28690 var carry = 0;
28691 for (var i = 0; i < len; i++) {
28692 carry = carry + (ws[i] | 0);
ebd8d4e8 28693
8b095871
IC
28694 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
28695 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
28696 }
ebd8d4e8 28697
8b095871
IC
28698 // Pad with zeroes
28699 for (i = 2 * len; i < N; ++i) {
28700 rws[i] = 0;
28701 }
ebd8d4e8 28702
8b095871
IC
28703 assert(carry === 0);
28704 assert((carry & ~0x1fff) === 0);
28705 };
ebd8d4e8 28706
8b095871
IC
28707 FFTM.prototype.stub = function stub (N) {
28708 var ph = new Array(N);
28709 for (var i = 0; i < N; i++) {
28710 ph[i] = 0;
28711 }
ebd8d4e8 28712
8b095871
IC
28713 return ph;
28714 };
ebd8d4e8 28715
8b095871
IC
28716 FFTM.prototype.mulp = function mulp (x, y, out) {
28717 var N = 2 * this.guessLen13b(x.length, y.length);
ebd8d4e8 28718
8b095871 28719 var rbt = this.makeRBT(N);
ebd8d4e8 28720
8b095871 28721 var _ = this.stub(N);
ebd8d4e8 28722
8b095871
IC
28723 var rws = new Array(N);
28724 var rwst = new Array(N);
28725 var iwst = new Array(N);
ebd8d4e8 28726
8b095871
IC
28727 var nrws = new Array(N);
28728 var nrwst = new Array(N);
28729 var niwst = new Array(N);
ebd8d4e8 28730
8b095871
IC
28731 var rmws = out.words;
28732 rmws.length = N;
ebd8d4e8 28733
8b095871
IC
28734 this.convert13b(x.words, x.length, rws, N);
28735 this.convert13b(y.words, y.length, nrws, N);
ebd8d4e8 28736
8b095871
IC
28737 this.transform(rws, _, rwst, iwst, N, rbt);
28738 this.transform(nrws, _, nrwst, niwst, N, rbt);
ebd8d4e8 28739
8b095871
IC
28740 for (var i = 0; i < N; i++) {
28741 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
28742 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
28743 rwst[i] = rx;
28744 }
ebd8d4e8 28745
8b095871
IC
28746 this.conjugate(rwst, iwst, N);
28747 this.transform(rwst, iwst, rmws, _, N, rbt);
28748 this.conjugate(rmws, _, N);
28749 this.normalize13b(rmws, N);
ebd8d4e8 28750
8b095871
IC
28751 out.negative = x.negative ^ y.negative;
28752 out.length = x.length + y.length;
28753 return out.strip();
28754 };
ebd8d4e8 28755
8b095871
IC
28756 // Multiply `this` by `num`
28757 BN.prototype.mul = function mul (num) {
28758 var out = new BN(null);
28759 out.words = new Array(this.length + num.length);
28760 return this.mulTo(num, out);
28761 };
ab78acc6 28762
8b095871
IC
28763 // Multiply employing FFT
28764 BN.prototype.mulf = function mulf (num) {
28765 var out = new BN(null);
28766 out.words = new Array(this.length + num.length);
28767 return jumboMulTo(this, num, out);
28768 };
ebd8d4e8 28769
8b095871
IC
28770 // In-place Multiplication
28771 BN.prototype.imul = function imul (num) {
28772 return this.clone().mulTo(num, this);
28773 };
ab78acc6 28774
8b095871
IC
28775 BN.prototype.imuln = function imuln (num) {
28776 assert(typeof num === 'number');
28777 assert(num < 0x4000000);
ab78acc6 28778
8b095871
IC
28779 // Carry
28780 var carry = 0;
28781 for (var i = 0; i < this.length; i++) {
28782 var w = (this.words[i] | 0) * num;
28783 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
28784 carry >>= 26;
28785 carry += (w / 0x4000000) | 0;
28786 // NOTE: lo is 27bit maximum
28787 carry += lo >>> 26;
28788 this.words[i] = lo & 0x3ffffff;
28789 }
ab78acc6 28790
8b095871
IC
28791 if (carry !== 0) {
28792 this.words[i] = carry;
28793 this.length++;
28794 }
ab78acc6 28795
8b095871
IC
28796 return this;
28797 };
ab78acc6 28798
8b095871
IC
28799 BN.prototype.muln = function muln (num) {
28800 return this.clone().imuln(num);
28801 };
ebd8d4e8 28802
8b095871
IC
28803 // `this` * `this`
28804 BN.prototype.sqr = function sqr () {
28805 return this.mul(this);
28806 };
ebd8d4e8 28807
8b095871
IC
28808 // `this` * `this` in-place
28809 BN.prototype.isqr = function isqr () {
28810 return this.imul(this.clone());
28811 };
ab78acc6 28812
8b095871
IC
28813 // Math.pow(`this`, `num`)
28814 BN.prototype.pow = function pow (num) {
28815 var w = toBitArray(num);
28816 if (w.length === 0) return new BN(1);
ab78acc6 28817
8b095871
IC
28818 // Skip leading zeroes
28819 var res = this;
28820 for (var i = 0; i < w.length; i++, res = res.sqr()) {
28821 if (w[i] !== 0) break;
28822 }
ebd8d4e8 28823
8b095871
IC
28824 if (++i < w.length) {
28825 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
28826 if (w[i] === 0) continue;
ebd8d4e8 28827
8b095871
IC
28828 res = res.mul(q);
28829 }
ab78acc6
IC
28830 }
28831
8b095871
IC
28832 return res;
28833 };
ab78acc6 28834
8b095871
IC
28835 // Shift-left in-place
28836 BN.prototype.iushln = function iushln (bits) {
28837 assert(typeof bits === 'number' && bits >= 0);
28838 var r = bits % 26;
28839 var s = (bits - r) / 26;
28840 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
28841 var i;
28842
28843 if (r !== 0) {
28844 var carry = 0;
28845
28846 for (i = 0; i < this.length; i++) {
28847 var newCarry = this.words[i] & carryMask;
28848 var c = ((this.words[i] | 0) - newCarry) << r;
28849 this.words[i] = c | carry;
28850 carry = newCarry >>> (26 - r);
28851 }
28852
28853 if (carry) {
28854 this.words[i] = carry;
28855 this.length++;
28856 }
ab78acc6 28857 }
ebd8d4e8 28858
8b095871
IC
28859 if (s !== 0) {
28860 for (i = this.length - 1; i >= 0; i--) {
28861 this.words[i + s] = this.words[i];
28862 }
ebd8d4e8 28863
8b095871
IC
28864 for (i = 0; i < s; i++) {
28865 this.words[i] = 0;
28866 }
ebd8d4e8 28867
8b095871
IC
28868 this.length += s;
28869 }
ebd8d4e8 28870
8b095871
IC
28871 return this.strip();
28872 };
ebd8d4e8 28873
8b095871
IC
28874 BN.prototype.ishln = function ishln (bits) {
28875 // TODO(indutny): implement me
28876 assert(this.negative === 0);
28877 return this.iushln(bits);
28878 };
ebd8d4e8 28879
8b095871
IC
28880 // Shift-right in-place
28881 // NOTE: `hint` is a lowest bit before trailing zeroes
28882 // NOTE: if `extended` is present - it will be filled with destroyed bits
28883 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
28884 assert(typeof bits === 'number' && bits >= 0);
28885 var h;
28886 if (hint) {
28887 h = (hint - (hint % 26)) / 26;
28888 } else {
28889 h = 0;
28890 }
ebd8d4e8 28891
8b095871
IC
28892 var r = bits % 26;
28893 var s = Math.min((bits - r) / 26, this.length);
28894 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28895 var maskedWords = extended;
28896
28897 h -= s;
28898 h = Math.max(0, h);
28899
28900 // Extended mode, copy masked part
28901 if (maskedWords) {
28902 for (var i = 0; i < s; i++) {
28903 maskedWords.words[i] = this.words[i];
28904 }
28905 maskedWords.length = s;
ab78acc6 28906 }
ebd8d4e8 28907
8b095871
IC
28908 if (s === 0) {
28909 // No-op, we should not move anything at all
28910 } else if (this.length > s) {
28911 this.length -= s;
28912 for (i = 0; i < this.length; i++) {
28913 this.words[i] = this.words[i + s];
28914 }
28915 } else {
28916 this.words[0] = 0;
28917 this.length = 1;
28918 }
ab78acc6 28919
8b095871
IC
28920 var carry = 0;
28921 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
28922 var word = this.words[i] | 0;
28923 this.words[i] = (carry << (26 - r)) | (word >>> r);
28924 carry = word & mask;
ab78acc6 28925 }
ebd8d4e8 28926
8b095871
IC
28927 // Push carried bits as a mask
28928 if (maskedWords && carry !== 0) {
28929 maskedWords.words[maskedWords.length++] = carry;
28930 }
28931
28932 if (this.length === 0) {
28933 this.words[0] = 0;
28934 this.length = 1;
28935 }
28936
28937 return this.strip();
28938 };
28939
28940 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
28941 // TODO(indutny): implement me
28942 assert(this.negative === 0);
28943 return this.iushrn(bits, hint, extended);
28944 };
28945
28946 // Shift-left
28947 BN.prototype.shln = function shln (bits) {
28948 return this.clone().ishln(bits);
28949 };
28950
28951 BN.prototype.ushln = function ushln (bits) {
28952 return this.clone().iushln(bits);
28953 };
28954
28955 // Shift-right
28956 BN.prototype.shrn = function shrn (bits) {
28957 return this.clone().ishrn(bits);
28958 };
ebd8d4e8 28959
8b095871
IC
28960 BN.prototype.ushrn = function ushrn (bits) {
28961 return this.clone().iushrn(bits);
28962 };
ebd8d4e8 28963
8b095871
IC
28964 // Test if n bit is set
28965 BN.prototype.testn = function testn (bit) {
28966 assert(typeof bit === 'number' && bit >= 0);
28967 var r = bit % 26;
28968 var s = (bit - r) / 26;
28969 var q = 1 << r;
ebd8d4e8 28970
8b095871
IC
28971 // Fast case: bit is much higher than all existing words
28972 if (this.length <= s) return false;
ab78acc6 28973
8b095871
IC
28974 // Check bit and return
28975 var w = this.words[s];
ab78acc6 28976
8b095871
IC
28977 return !!(w & q);
28978 };
ab78acc6 28979
8b095871
IC
28980 // Return only lowers bits of number (in-place)
28981 BN.prototype.imaskn = function imaskn (bits) {
28982 assert(typeof bits === 'number' && bits >= 0);
28983 var r = bits % 26;
28984 var s = (bits - r) / 26;
ab78acc6 28985
8b095871 28986 assert(this.negative === 0, 'imaskn works only with positive numbers');
ab78acc6 28987
8b095871
IC
28988 if (this.length <= s) {
28989 return this;
28990 }
ab78acc6 28991
8b095871
IC
28992 if (r !== 0) {
28993 s++;
28994 }
28995 this.length = Math.min(s, this.length);
ab78acc6 28996
8b095871
IC
28997 if (r !== 0) {
28998 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28999 this.words[this.length - 1] &= mask;
29000 }
ab78acc6 29001
8b095871
IC
29002 return this.strip();
29003 };
ab78acc6 29004
8b095871
IC
29005 // Return only lowers bits of number
29006 BN.prototype.maskn = function maskn (bits) {
29007 return this.clone().imaskn(bits);
29008 };
ebd8d4e8 29009
8b095871
IC
29010 // Add plain number `num` to `this`
29011 BN.prototype.iaddn = function iaddn (num) {
29012 assert(typeof num === 'number');
29013 assert(num < 0x4000000);
29014 if (num < 0) return this.isubn(-num);
29015
29016 // Possible sign change
29017 if (this.negative !== 0) {
29018 if (this.length === 1 && (this.words[0] | 0) < num) {
29019 this.words[0] = num - (this.words[0] | 0);
29020 this.negative = 0;
29021 return this;
29022 }
ebd8d4e8 29023
8b095871
IC
29024 this.negative = 0;
29025 this.isubn(num);
29026 this.negative = 1;
29027 return this;
29028 }
ebd8d4e8 29029
8b095871
IC
29030 // Add without checks
29031 return this._iaddn(num);
29032 };
ebd8d4e8 29033
8b095871
IC
29034 BN.prototype._iaddn = function _iaddn (num) {
29035 this.words[0] += num;
ebd8d4e8 29036
8b095871
IC
29037 // Carry
29038 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
29039 this.words[i] -= 0x4000000;
29040 if (i === this.length - 1) {
29041 this.words[i + 1] = 1;
29042 } else {
29043 this.words[i + 1]++;
29044 }
29045 }
29046 this.length = Math.max(this.length, i + 1);
ebd8d4e8 29047
8b095871
IC
29048 return this;
29049 };
ebd8d4e8 29050
8b095871
IC
29051 // Subtract plain number `num` from `this`
29052 BN.prototype.isubn = function isubn (num) {
29053 assert(typeof num === 'number');
29054 assert(num < 0x4000000);
29055 if (num < 0) return this.iaddn(-num);
ebd8d4e8 29056
8b095871
IC
29057 if (this.negative !== 0) {
29058 this.negative = 0;
29059 this.iaddn(num);
29060 this.negative = 1;
29061 return this;
29062 }
ebd8d4e8 29063
8b095871 29064 this.words[0] -= num;
ab78acc6 29065
8b095871
IC
29066 if (this.length === 1 && this.words[0] < 0) {
29067 this.words[0] = -this.words[0];
29068 this.negative = 1;
29069 } else {
29070 // Carry
29071 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
29072 this.words[i] += 0x4000000;
29073 this.words[i + 1] -= 1;
29074 }
29075 }
ebd8d4e8 29076
8b095871
IC
29077 return this.strip();
29078 };
ab78acc6 29079
8b095871
IC
29080 BN.prototype.addn = function addn (num) {
29081 return this.clone().iaddn(num);
29082 };
ab78acc6 29083
8b095871
IC
29084 BN.prototype.subn = function subn (num) {
29085 return this.clone().isubn(num);
29086 };
ab78acc6 29087
8b095871
IC
29088 BN.prototype.iabs = function iabs () {
29089 this.negative = 0;
ab78acc6 29090
8b095871
IC
29091 return this;
29092 };
ab78acc6 29093
8b095871
IC
29094 BN.prototype.abs = function abs () {
29095 return this.clone().iabs();
29096 };
ab78acc6 29097
8b095871
IC
29098 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
29099 var len = num.length + shift;
29100 var i;
ab78acc6 29101
8b095871 29102 this._expand(len);
ab78acc6 29103
8b095871
IC
29104 var w;
29105 var carry = 0;
29106 for (i = 0; i < num.length; i++) {
29107 w = (this.words[i + shift] | 0) + carry;
29108 var right = (num.words[i] | 0) * mul;
29109 w -= right & 0x3ffffff;
29110 carry = (w >> 26) - ((right / 0x4000000) | 0);
29111 this.words[i + shift] = w & 0x3ffffff;
29112 }
29113 for (; i < this.length - shift; i++) {
29114 w = (this.words[i + shift] | 0) + carry;
29115 carry = w >> 26;
29116 this.words[i + shift] = w & 0x3ffffff;
29117 }
ebd8d4e8 29118
8b095871 29119 if (carry === 0) return this.strip();
ab78acc6 29120
8b095871
IC
29121 // Subtraction overflow
29122 assert(carry === -1);
29123 carry = 0;
29124 for (i = 0; i < this.length; i++) {
29125 w = -(this.words[i] | 0) + carry;
29126 carry = w >> 26;
29127 this.words[i] = w & 0x3ffffff;
29128 }
29129 this.negative = 1;
ab78acc6 29130
8b095871
IC
29131 return this.strip();
29132 };
ab78acc6 29133
8b095871
IC
29134 BN.prototype._wordDiv = function _wordDiv (num, mode) {
29135 var shift = this.length - num.length;
ebd8d4e8 29136
8b095871
IC
29137 var a = this.clone();
29138 var b = num;
ab78acc6 29139
8b095871
IC
29140 // Normalize
29141 var bhi = b.words[b.length - 1] | 0;
29142 var bhiBits = this._countBits(bhi);
29143 shift = 26 - bhiBits;
29144 if (shift !== 0) {
29145 b = b.ushln(shift);
29146 a.iushln(shift);
29147 bhi = b.words[b.length - 1] | 0;
29148 }
ebd8d4e8 29149
8b095871
IC
29150 // Initialize quotient
29151 var m = a.length - b.length;
29152 var q;
ab78acc6 29153
8b095871
IC
29154 if (mode !== 'mod') {
29155 q = new BN(null);
29156 q.length = m + 1;
29157 q.words = new Array(q.length);
29158 for (var i = 0; i < q.length; i++) {
29159 q.words[i] = 0;
29160 }
29161 }
ebd8d4e8 29162
8b095871
IC
29163 var diff = a.clone()._ishlnsubmul(b, 1, m);
29164 if (diff.negative === 0) {
29165 a = diff;
29166 if (q) {
29167 q.words[m] = 1;
29168 }
29169 }
ebd8d4e8 29170
8b095871
IC
29171 for (var j = m - 1; j >= 0; j--) {
29172 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
29173 (a.words[b.length + j - 1] | 0);
ebd8d4e8 29174
8b095871
IC
29175 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
29176 // (0x7ffffff)
29177 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
ebd8d4e8 29178
8b095871
IC
29179 a._ishlnsubmul(b, qj, j);
29180 while (a.negative !== 0) {
29181 qj--;
29182 a.negative = 0;
29183 a._ishlnsubmul(b, 1, j);
29184 if (!a.isZero()) {
29185 a.negative ^= 1;
29186 }
29187 }
29188 if (q) {
29189 q.words[j] = qj;
29190 }
29191 }
29192 if (q) {
29193 q.strip();
29194 }
29195 a.strip();
ebd8d4e8 29196
8b095871
IC
29197 // Denormalize
29198 if (mode !== 'div' && shift !== 0) {
29199 a.iushrn(shift);
29200 }
ebd8d4e8 29201
8b095871
IC
29202 return {
29203 div: q || null,
29204 mod: a
29205 };
29206 };
ebd8d4e8 29207
8b095871
IC
29208 // NOTE: 1) `mode` can be set to `mod` to request mod only,
29209 // to `div` to request div only, or be absent to
29210 // request both div & mod
29211 // 2) `positive` is true if unsigned mod is requested
29212 BN.prototype.divmod = function divmod (num, mode, positive) {
29213 assert(!num.isZero());
29214
29215 if (this.isZero()) {
29216 return {
29217 div: new BN(0),
29218 mod: new BN(0)
29219 };
29220 }
ebd8d4e8 29221
8b095871
IC
29222 var div, mod, res;
29223 if (this.negative !== 0 && num.negative === 0) {
29224 res = this.neg().divmod(num, mode);
ebd8d4e8 29225
8b095871
IC
29226 if (mode !== 'mod') {
29227 div = res.div.neg();
29228 }
ebd8d4e8 29229
8b095871
IC
29230 if (mode !== 'div') {
29231 mod = res.mod.neg();
29232 if (positive && mod.negative !== 0) {
29233 mod.iadd(num);
29234 }
29235 }
ebd8d4e8 29236
8b095871
IC
29237 return {
29238 div: div,
29239 mod: mod
29240 };
29241 }
ebd8d4e8 29242
8b095871
IC
29243 if (this.negative === 0 && num.negative !== 0) {
29244 res = this.divmod(num.neg(), mode);
ebd8d4e8 29245
8b095871
IC
29246 if (mode !== 'mod') {
29247 div = res.div.neg();
29248 }
ebd8d4e8 29249
8b095871
IC
29250 return {
29251 div: div,
29252 mod: res.mod
29253 };
29254 }
ebd8d4e8 29255
8b095871
IC
29256 if ((this.negative & num.negative) !== 0) {
29257 res = this.neg().divmod(num.neg(), mode);
ebd8d4e8 29258
8b095871
IC
29259 if (mode !== 'div') {
29260 mod = res.mod.neg();
29261 if (positive && mod.negative !== 0) {
29262 mod.isub(num);
29263 }
29264 }
ebd8d4e8 29265
8b095871
IC
29266 return {
29267 div: res.div,
29268 mod: mod
29269 };
29270 }
ebd8d4e8 29271
8b095871 29272 // Both numbers are positive at this point
ebd8d4e8 29273
8b095871
IC
29274 // Strip both numbers to approximate shift value
29275 if (num.length > this.length || this.cmp(num) < 0) {
29276 return {
29277 div: new BN(0),
29278 mod: this
29279 };
29280 }
ebd8d4e8 29281
8b095871
IC
29282 // Very short reduction
29283 if (num.length === 1) {
29284 if (mode === 'div') {
29285 return {
29286 div: this.divn(num.words[0]),
29287 mod: null
29288 };
29289 }
ebd8d4e8 29290
8b095871
IC
29291 if (mode === 'mod') {
29292 return {
29293 div: null,
29294 mod: new BN(this.modn(num.words[0]))
29295 };
29296 }
ebd8d4e8 29297
8b095871
IC
29298 return {
29299 div: this.divn(num.words[0]),
29300 mod: new BN(this.modn(num.words[0]))
29301 };
29302 }
ebd8d4e8 29303
8b095871
IC
29304 return this._wordDiv(num, mode);
29305 };
ab78acc6 29306
8b095871
IC
29307 // Find `this` / `num`
29308 BN.prototype.div = function div (num) {
29309 return this.divmod(num, 'div', false).div;
29310 };
ab78acc6 29311
8b095871
IC
29312 // Find `this` % `num`
29313 BN.prototype.mod = function mod (num) {
29314 return this.divmod(num, 'mod', false).mod;
29315 };
ab78acc6 29316
8b095871
IC
29317 BN.prototype.umod = function umod (num) {
29318 return this.divmod(num, 'mod', true).mod;
29319 };
ebd8d4e8 29320
8b095871
IC
29321 // Find Round(`this` / `num`)
29322 BN.prototype.divRound = function divRound (num) {
29323 var dm = this.divmod(num);
ebd8d4e8 29324
8b095871
IC
29325 // Fast case - exact division
29326 if (dm.mod.isZero()) return dm.div;
ebd8d4e8 29327
8b095871 29328 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
ebd8d4e8 29329
8b095871
IC
29330 var half = num.ushrn(1);
29331 var r2 = num.andln(1);
29332 var cmp = mod.cmp(half);
ebd8d4e8 29333
8b095871
IC
29334 // Round down
29335 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
ebd8d4e8 29336
8b095871
IC
29337 // Round up
29338 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
29339 };
ab78acc6 29340
8b095871
IC
29341 BN.prototype.modn = function modn (num) {
29342 assert(num <= 0x3ffffff);
29343 var p = (1 << 26) % num;
ab78acc6 29344
8b095871
IC
29345 var acc = 0;
29346 for (var i = this.length - 1; i >= 0; i--) {
29347 acc = (p * acc + (this.words[i] | 0)) % num;
ab78acc6 29348 }
ab78acc6 29349
8b095871
IC
29350 return acc;
29351 };
29352
29353 // In-place division by number
29354 BN.prototype.idivn = function idivn (num) {
29355 assert(num <= 0x3ffffff);
29356
29357 var carry = 0;
29358 for (var i = this.length - 1; i >= 0; i--) {
29359 var w = (this.words[i] | 0) + carry * 0x4000000;
29360 this.words[i] = (w / num) | 0;
29361 carry = w % num;
ebd8d4e8 29362 }
ebd8d4e8 29363
8b095871
IC
29364 return this.strip();
29365 };
ab78acc6 29366
8b095871
IC
29367 BN.prototype.divn = function divn (num) {
29368 return this.clone().idivn(num);
29369 };
ebd8d4e8 29370
8b095871
IC
29371 BN.prototype.egcd = function egcd (p) {
29372 assert(p.negative === 0);
29373 assert(!p.isZero());
ebd8d4e8 29374
8b095871
IC
29375 var x = this;
29376 var y = p.clone();
29377
29378 if (x.negative !== 0) {
29379 x = x.umod(p);
29380 } else {
29381 x = x.clone();
29382 }
29383
29384 // A * x + B * y = x
29385 var A = new BN(1);
29386 var B = new BN(0);
29387
29388 // C * x + D * y = y
29389 var C = new BN(0);
29390 var D = new BN(1);
29391
29392 var g = 0;
29393
29394 while (x.isEven() && y.isEven()) {
29395 x.iushrn(1);
29396 y.iushrn(1);
29397 ++g;
29398 }
ebd8d4e8 29399
8b095871
IC
29400 var yp = y.clone();
29401 var xp = x.clone();
ebd8d4e8 29402
8b095871
IC
29403 while (!x.isZero()) {
29404 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29405 if (i > 0) {
29406 x.iushrn(i);
29407 while (i-- > 0) {
29408 if (A.isOdd() || B.isOdd()) {
29409 A.iadd(yp);
29410 B.isub(xp);
29411 }
ebd8d4e8 29412
8b095871
IC
29413 A.iushrn(1);
29414 B.iushrn(1);
29415 }
29416 }
ebd8d4e8 29417
8b095871
IC
29418 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29419 if (j > 0) {
29420 y.iushrn(j);
29421 while (j-- > 0) {
29422 if (C.isOdd() || D.isOdd()) {
29423 C.iadd(yp);
29424 D.isub(xp);
29425 }
ab78acc6 29426
8b095871
IC
29427 C.iushrn(1);
29428 D.iushrn(1);
29429 }
29430 }
ebd8d4e8 29431
8b095871
IC
29432 if (x.cmp(y) >= 0) {
29433 x.isub(y);
29434 A.isub(C);
29435 B.isub(D);
29436 } else {
29437 y.isub(x);
29438 C.isub(A);
29439 D.isub(B);
29440 }
29441 }
ebd8d4e8 29442
8b095871
IC
29443 return {
29444 a: C,
29445 b: D,
29446 gcd: y.iushln(g)
29447 };
29448 };
ebd8d4e8 29449
8b095871
IC
29450 // This is reduced incarnation of the binary EEA
29451 // above, designated to invert members of the
29452 // _prime_ fields F(p) at a maximal speed
29453 BN.prototype._invmp = function _invmp (p) {
29454 assert(p.negative === 0);
29455 assert(!p.isZero());
ebd8d4e8 29456
8b095871
IC
29457 var a = this;
29458 var b = p.clone();
ebd8d4e8 29459
8b095871
IC
29460 if (a.negative !== 0) {
29461 a = a.umod(p);
29462 } else {
29463 a = a.clone();
29464 }
ebd8d4e8 29465
8b095871
IC
29466 var x1 = new BN(1);
29467 var x2 = new BN(0);
ebd8d4e8 29468
8b095871 29469 var delta = b.clone();
ebd8d4e8 29470
8b095871
IC
29471 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
29472 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29473 if (i > 0) {
29474 a.iushrn(i);
29475 while (i-- > 0) {
29476 if (x1.isOdd()) {
29477 x1.iadd(delta);
29478 }
ebd8d4e8 29479
8b095871
IC
29480 x1.iushrn(1);
29481 }
29482 }
ab78acc6 29483
8b095871
IC
29484 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29485 if (j > 0) {
29486 b.iushrn(j);
29487 while (j-- > 0) {
29488 if (x2.isOdd()) {
29489 x2.iadd(delta);
29490 }
ebd8d4e8 29491
8b095871
IC
29492 x2.iushrn(1);
29493 }
29494 }
ebd8d4e8 29495
8b095871
IC
29496 if (a.cmp(b) >= 0) {
29497 a.isub(b);
29498 x1.isub(x2);
29499 } else {
29500 b.isub(a);
29501 x2.isub(x1);
29502 }
29503 }
ebd8d4e8 29504
8b095871
IC
29505 var res;
29506 if (a.cmpn(1) === 0) {
29507 res = x1;
29508 } else {
29509 res = x2;
29510 }
ebd8d4e8 29511
8b095871
IC
29512 if (res.cmpn(0) < 0) {
29513 res.iadd(p);
ab78acc6
IC
29514 }
29515
8b095871
IC
29516 return res;
29517 };
ebd8d4e8 29518
8b095871
IC
29519 BN.prototype.gcd = function gcd (num) {
29520 if (this.isZero()) return num.abs();
29521 if (num.isZero()) return this.abs();
29522
29523 var a = this.clone();
29524 var b = num.clone();
29525 a.negative = 0;
29526 b.negative = 0;
29527
29528 // Remove common factor of two
29529 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
29530 a.iushrn(1);
29531 b.iushrn(1);
ab78acc6 29532 }
ab78acc6 29533
8b095871
IC
29534 do {
29535 while (a.isEven()) {
29536 a.iushrn(1);
29537 }
29538 while (b.isEven()) {
29539 b.iushrn(1);
29540 }
ebd8d4e8 29541
8b095871
IC
29542 var r = a.cmp(b);
29543 if (r < 0) {
29544 // Swap `a` and `b` to make `a` always bigger than `b`
29545 var t = a;
29546 a = b;
29547 b = t;
29548 } else if (r === 0 || b.cmpn(1) === 0) {
29549 break;
29550 }
ab78acc6 29551
8b095871
IC
29552 a.isub(b);
29553 } while (true);
ab78acc6 29554
8b095871
IC
29555 return b.iushln(shift);
29556 };
ab78acc6 29557
8b095871
IC
29558 // Invert number in the field F(num)
29559 BN.prototype.invm = function invm (num) {
29560 return this.egcd(num).a.umod(num);
29561 };
ebd8d4e8 29562
8b095871
IC
29563 BN.prototype.isEven = function isEven () {
29564 return (this.words[0] & 1) === 0;
29565 };
ab78acc6 29566
8b095871
IC
29567 BN.prototype.isOdd = function isOdd () {
29568 return (this.words[0] & 1) === 1;
29569 };
ebd8d4e8 29570
8b095871
IC
29571 // And first word and num
29572 BN.prototype.andln = function andln (num) {
29573 return this.words[0] & num;
29574 };
ebd8d4e8 29575
8b095871
IC
29576 // Increment at the bit position in-line
29577 BN.prototype.bincn = function bincn (bit) {
29578 assert(typeof bit === 'number');
29579 var r = bit % 26;
29580 var s = (bit - r) / 26;
29581 var q = 1 << r;
29582
29583 // Fast case: bit is much higher than all existing words
29584 if (this.length <= s) {
29585 this._expand(s + 1);
29586 this.words[s] |= q;
29587 return this;
29588 }
ebd8d4e8 29589
8b095871
IC
29590 // Add bit and propagate, if needed
29591 var carry = q;
29592 for (var i = s; carry !== 0 && i < this.length; i++) {
29593 var w = this.words[i] | 0;
29594 w += carry;
29595 carry = w >>> 26;
29596 w &= 0x3ffffff;
29597 this.words[i] = w;
29598 }
29599 if (carry !== 0) {
29600 this.words[i] = carry;
29601 this.length++;
29602 }
29603 return this;
29604 };
ebd8d4e8 29605
8b095871
IC
29606 BN.prototype.isZero = function isZero () {
29607 return this.length === 1 && this.words[0] === 0;
29608 };
ebd8d4e8 29609
8b095871
IC
29610 BN.prototype.cmpn = function cmpn (num) {
29611 var negative = num < 0;
ebd8d4e8 29612
8b095871
IC
29613 if (this.negative !== 0 && !negative) return -1;
29614 if (this.negative === 0 && negative) return 1;
ab78acc6 29615
8b095871 29616 this.strip();
ab78acc6 29617
8b095871
IC
29618 var res;
29619 if (this.length > 1) {
29620 res = 1;
29621 } else {
29622 if (negative) {
29623 num = -num;
29624 }
ebd8d4e8 29625
8b095871 29626 assert(num <= 0x3ffffff, 'Number is too big');
ebd8d4e8 29627
8b095871
IC
29628 var w = this.words[0] | 0;
29629 res = w === num ? 0 : w < num ? -1 : 1;
29630 }
29631 if (this.negative !== 0) return -res | 0;
29632 return res;
29633 };
ebd8d4e8 29634
8b095871
IC
29635 // Compare two numbers and return:
29636 // 1 - if `this` > `num`
29637 // 0 - if `this` == `num`
29638 // -1 - if `this` < `num`
29639 BN.prototype.cmp = function cmp (num) {
29640 if (this.negative !== 0 && num.negative === 0) return -1;
29641 if (this.negative === 0 && num.negative !== 0) return 1;
29642
29643 var res = this.ucmp(num);
29644 if (this.negative !== 0) return -res | 0;
29645 return res;
29646 };
ebd8d4e8 29647
8b095871
IC
29648 // Unsigned comparison
29649 BN.prototype.ucmp = function ucmp (num) {
29650 // At this point both numbers have the same sign
29651 if (this.length > num.length) return 1;
29652 if (this.length < num.length) return -1;
29653
29654 var res = 0;
29655 for (var i = this.length - 1; i >= 0; i--) {
29656 var a = this.words[i] | 0;
29657 var b = num.words[i] | 0;
29658
29659 if (a === b) continue;
29660 if (a < b) {
29661 res = -1;
29662 } else if (a > b) {
29663 res = 1;
29664 }
29665 break;
29666 }
29667 return res;
29668 };
ebd8d4e8 29669
8b095871
IC
29670 BN.prototype.gtn = function gtn (num) {
29671 return this.cmpn(num) === 1;
29672 };
ebd8d4e8 29673
8b095871
IC
29674 BN.prototype.gt = function gt (num) {
29675 return this.cmp(num) === 1;
29676 };
ebd8d4e8 29677
8b095871
IC
29678 BN.prototype.gten = function gten (num) {
29679 return this.cmpn(num) >= 0;
29680 };
ab78acc6 29681
8b095871
IC
29682 BN.prototype.gte = function gte (num) {
29683 return this.cmp(num) >= 0;
29684 };
ab78acc6 29685
8b095871
IC
29686 BN.prototype.ltn = function ltn (num) {
29687 return this.cmpn(num) === -1;
29688 };
ab78acc6 29689
8b095871
IC
29690 BN.prototype.lt = function lt (num) {
29691 return this.cmp(num) === -1;
29692 };
ebd8d4e8 29693
8b095871
IC
29694 BN.prototype.lten = function lten (num) {
29695 return this.cmpn(num) <= 0;
29696 };
ab78acc6 29697
8b095871
IC
29698 BN.prototype.lte = function lte (num) {
29699 return this.cmp(num) <= 0;
29700 };
ab78acc6 29701
8b095871
IC
29702 BN.prototype.eqn = function eqn (num) {
29703 return this.cmpn(num) === 0;
29704 };
ab78acc6 29705
8b095871
IC
29706 BN.prototype.eq = function eq (num) {
29707 return this.cmp(num) === 0;
29708 };
ebd8d4e8 29709
8b095871
IC
29710 //
29711 // A reduce context, could be using montgomery or something better, depending
29712 // on the `m` itself.
29713 //
29714 BN.red = function red (num) {
29715 return new Red(num);
29716 };
ab78acc6 29717
8b095871
IC
29718 BN.prototype.toRed = function toRed (ctx) {
29719 assert(!this.red, 'Already a number in reduction context');
29720 assert(this.negative === 0, 'red works only with positives');
29721 return ctx.convertTo(this)._forceRed(ctx);
29722 };
29723
29724 BN.prototype.fromRed = function fromRed () {
29725 assert(this.red, 'fromRed works only with numbers in reduction context');
29726 return this.red.convertFrom(this);
29727 };
29728
29729 BN.prototype._forceRed = function _forceRed (ctx) {
29730 this.red = ctx;
29731 return this;
29732 };
29733
29734 BN.prototype.forceRed = function forceRed (ctx) {
29735 assert(!this.red, 'Already a number in reduction context');
29736 return this._forceRed(ctx);
29737 };
29738
29739 BN.prototype.redAdd = function redAdd (num) {
29740 assert(this.red, 'redAdd works only with red numbers');
29741 return this.red.add(this, num);
29742 };
ebd8d4e8 29743
8b095871
IC
29744 BN.prototype.redIAdd = function redIAdd (num) {
29745 assert(this.red, 'redIAdd works only with red numbers');
29746 return this.red.iadd(this, num);
29747 };
ab78acc6 29748
8b095871
IC
29749 BN.prototype.redSub = function redSub (num) {
29750 assert(this.red, 'redSub works only with red numbers');
29751 return this.red.sub(this, num);
29752 };
ab78acc6 29753
8b095871
IC
29754 BN.prototype.redISub = function redISub (num) {
29755 assert(this.red, 'redISub works only with red numbers');
29756 return this.red.isub(this, num);
29757 };
ebd8d4e8 29758
8b095871
IC
29759 BN.prototype.redShl = function redShl (num) {
29760 assert(this.red, 'redShl works only with red numbers');
29761 return this.red.shl(this, num);
29762 };
ebd8d4e8 29763
8b095871
IC
29764 BN.prototype.redMul = function redMul (num) {
29765 assert(this.red, 'redMul works only with red numbers');
29766 this.red._verify2(this, num);
29767 return this.red.mul(this, num);
29768 };
ebd8d4e8 29769
8b095871
IC
29770 BN.prototype.redIMul = function redIMul (num) {
29771 assert(this.red, 'redMul works only with red numbers');
29772 this.red._verify2(this, num);
29773 return this.red.imul(this, num);
29774 };
ebd8d4e8 29775
8b095871
IC
29776 BN.prototype.redSqr = function redSqr () {
29777 assert(this.red, 'redSqr works only with red numbers');
29778 this.red._verify1(this);
29779 return this.red.sqr(this);
29780 };
ebd8d4e8 29781
8b095871
IC
29782 BN.prototype.redISqr = function redISqr () {
29783 assert(this.red, 'redISqr works only with red numbers');
29784 this.red._verify1(this);
29785 return this.red.isqr(this);
29786 };
ebd8d4e8 29787
8b095871
IC
29788 // Square root over p
29789 BN.prototype.redSqrt = function redSqrt () {
29790 assert(this.red, 'redSqrt works only with red numbers');
29791 this.red._verify1(this);
29792 return this.red.sqrt(this);
29793 };
ebd8d4e8 29794
8b095871
IC
29795 BN.prototype.redInvm = function redInvm () {
29796 assert(this.red, 'redInvm works only with red numbers');
29797 this.red._verify1(this);
29798 return this.red.invm(this);
29799 };
ebd8d4e8 29800
8b095871
IC
29801 // Return negative clone of `this` % `red modulo`
29802 BN.prototype.redNeg = function redNeg () {
29803 assert(this.red, 'redNeg works only with red numbers');
29804 this.red._verify1(this);
29805 return this.red.neg(this);
29806 };
ebd8d4e8 29807
8b095871
IC
29808 BN.prototype.redPow = function redPow (num) {
29809 assert(this.red && !num.red, 'redPow(normalNum)');
29810 this.red._verify1(this);
29811 return this.red.pow(this, num);
29812 };
ebd8d4e8 29813
8b095871
IC
29814 // Prime numbers with efficient reduction
29815 var primes = {
29816 k256: null,
29817 p224: null,
29818 p192: null,
29819 p25519: null
29820 };
ebd8d4e8 29821
8b095871
IC
29822 // Pseudo-Mersenne prime
29823 function MPrime (name, p) {
29824 // P = 2 ^ N - K
29825 this.name = name;
29826 this.p = new BN(p, 16);
29827 this.n = this.p.bitLength();
29828 this.k = new BN(1).iushln(this.n).isub(this.p);
ebd8d4e8 29829
8b095871
IC
29830 this.tmp = this._tmp();
29831 }
ebd8d4e8 29832
8b095871
IC
29833 MPrime.prototype._tmp = function _tmp () {
29834 var tmp = new BN(null);
29835 tmp.words = new Array(Math.ceil(this.n / 13));
29836 return tmp;
29837 };
ebd8d4e8 29838
8b095871
IC
29839 MPrime.prototype.ireduce = function ireduce (num) {
29840 // Assumes that `num` is less than `P^2`
29841 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
29842 var r = num;
29843 var rlen;
ebd8d4e8 29844
8b095871
IC
29845 do {
29846 this.split(r, this.tmp);
29847 r = this.imulK(r);
29848 r = r.iadd(this.tmp);
29849 rlen = r.bitLength();
29850 } while (rlen > this.n);
29851
29852 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
29853 if (cmp === 0) {
29854 r.words[0] = 0;
29855 r.length = 1;
29856 } else if (cmp > 0) {
29857 r.isub(this.p);
29858 } else {
29859 r.strip();
29860 }
ebd8d4e8 29861
8b095871
IC
29862 return r;
29863 };
ebd8d4e8 29864
8b095871
IC
29865 MPrime.prototype.split = function split (input, out) {
29866 input.iushrn(this.n, 0, out);
29867 };
ebd8d4e8 29868
8b095871
IC
29869 MPrime.prototype.imulK = function imulK (num) {
29870 return num.imul(this.k);
29871 };
ebd8d4e8 29872
8b095871
IC
29873 function K256 () {
29874 MPrime.call(
29875 this,
29876 'k256',
29877 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
29878 }
29879 inherits(K256, MPrime);
ebd8d4e8 29880
8b095871
IC
29881 K256.prototype.split = function split (input, output) {
29882 // 256 = 9 * 26 + 22
29883 var mask = 0x3fffff;
ebd8d4e8 29884
8b095871
IC
29885 var outLen = Math.min(input.length, 9);
29886 for (var i = 0; i < outLen; i++) {
29887 output.words[i] = input.words[i];
29888 }
29889 output.length = outLen;
ebd8d4e8 29890
8b095871
IC
29891 if (input.length <= 9) {
29892 input.words[0] = 0;
29893 input.length = 1;
29894 return;
29895 }
ebd8d4e8 29896
8b095871
IC
29897 // Shift by 9 limbs
29898 var prev = input.words[9];
29899 output.words[output.length++] = prev & mask;
ebd8d4e8 29900
8b095871
IC
29901 for (i = 10; i < input.length; i++) {
29902 var next = input.words[i] | 0;
29903 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
29904 prev = next;
29905 }
29906 prev >>>= 22;
29907 input.words[i - 10] = prev;
29908 if (prev === 0 && input.length > 10) {
29909 input.length -= 10;
29910 } else {
29911 input.length -= 9;
29912 }
29913 };
ebd8d4e8 29914
8b095871
IC
29915 K256.prototype.imulK = function imulK (num) {
29916 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
29917 num.words[num.length] = 0;
29918 num.words[num.length + 1] = 0;
29919 num.length += 2;
29920
29921 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
29922 var lo = 0;
29923 for (var i = 0; i < num.length; i++) {
29924 var w = num.words[i] | 0;
29925 lo += w * 0x3d1;
29926 num.words[i] = lo & 0x3ffffff;
29927 lo = w * 0x40 + ((lo / 0x4000000) | 0);
29928 }
29929
29930 // Fast length reduction
29931 if (num.words[num.length - 1] === 0) {
29932 num.length--;
29933 if (num.words[num.length - 1] === 0) {
29934 num.length--;
29935 }
29936 }
29937 return num;
29938 };
ebd8d4e8 29939
8b095871
IC
29940 function P224 () {
29941 MPrime.call(
29942 this,
29943 'p224',
29944 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
29945 }
29946 inherits(P224, MPrime);
ebd8d4e8 29947
8b095871
IC
29948 function P192 () {
29949 MPrime.call(
29950 this,
29951 'p192',
29952 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
29953 }
29954 inherits(P192, MPrime);
ebd8d4e8 29955
8b095871
IC
29956 function P25519 () {
29957 // 2 ^ 255 - 19
29958 MPrime.call(
29959 this,
29960 '25519',
29961 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
29962 }
29963 inherits(P25519, MPrime);
ebd8d4e8 29964
8b095871
IC
29965 P25519.prototype.imulK = function imulK (num) {
29966 // K = 0x13
29967 var carry = 0;
29968 for (var i = 0; i < num.length; i++) {
29969 var hi = (num.words[i] | 0) * 0x13 + carry;
29970 var lo = hi & 0x3ffffff;
29971 hi >>>= 26;
ebd8d4e8 29972
8b095871
IC
29973 num.words[i] = lo;
29974 carry = hi;
29975 }
29976 if (carry !== 0) {
29977 num.words[num.length++] = carry;
29978 }
29979 return num;
29980 };
ebd8d4e8 29981
8b095871
IC
29982 // Exported mostly for testing purposes, use plain name instead
29983 BN._prime = function prime (name) {
29984 // Cached version of prime
29985 if (primes[name]) return primes[name];
29986
29987 var prime;
29988 if (name === 'k256') {
29989 prime = new K256();
29990 } else if (name === 'p224') {
29991 prime = new P224();
29992 } else if (name === 'p192') {
29993 prime = new P192();
29994 } else if (name === 'p25519') {
29995 prime = new P25519();
29996 } else {
29997 throw new Error('Unknown prime ' + name);
29998 }
29999 primes[name] = prime;
ab78acc6 30000
8b095871
IC
30001 return prime;
30002 };
ab78acc6 30003
8b095871
IC
30004 //
30005 // Base reduction engine
30006 //
30007 function Red (m) {
30008 if (typeof m === 'string') {
30009 var prime = BN._prime(m);
30010 this.m = prime.p;
30011 this.prime = prime;
30012 } else {
30013 assert(m.gtn(1), 'modulus must be greater than 1');
30014 this.m = m;
30015 this.prime = null;
30016 }
30017 }
ab78acc6 30018
8b095871
IC
30019 Red.prototype._verify1 = function _verify1 (a) {
30020 assert(a.negative === 0, 'red works only with positives');
30021 assert(a.red, 'red works only with red numbers');
30022 };
ab78acc6 30023
8b095871
IC
30024 Red.prototype._verify2 = function _verify2 (a, b) {
30025 assert((a.negative | b.negative) === 0, 'red works only with positives');
30026 assert(a.red && a.red === b.red,
30027 'red works only with red numbers');
30028 };
ebd8d4e8 30029
8b095871
IC
30030 Red.prototype.imod = function imod (a) {
30031 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
30032 return a.umod(this.m)._forceRed(this);
30033 };
ebd8d4e8 30034
8b095871
IC
30035 Red.prototype.neg = function neg (a) {
30036 if (a.isZero()) {
30037 return a.clone();
30038 }
ebd8d4e8 30039
8b095871
IC
30040 return this.m.sub(a)._forceRed(this);
30041 };
ab78acc6 30042
8b095871
IC
30043 Red.prototype.add = function add (a, b) {
30044 this._verify2(a, b);
ab78acc6 30045
8b095871
IC
30046 var res = a.add(b);
30047 if (res.cmp(this.m) >= 0) {
30048 res.isub(this.m);
30049 }
30050 return res._forceRed(this);
30051 };
ab78acc6 30052
8b095871
IC
30053 Red.prototype.iadd = function iadd (a, b) {
30054 this._verify2(a, b);
ab78acc6 30055
8b095871
IC
30056 var res = a.iadd(b);
30057 if (res.cmp(this.m) >= 0) {
30058 res.isub(this.m);
30059 }
30060 return res;
30061 };
ab78acc6 30062
8b095871
IC
30063 Red.prototype.sub = function sub (a, b) {
30064 this._verify2(a, b);
ab78acc6 30065
8b095871
IC
30066 var res = a.sub(b);
30067 if (res.cmpn(0) < 0) {
30068 res.iadd(this.m);
30069 }
30070 return res._forceRed(this);
30071 };
ab78acc6 30072
8b095871
IC
30073 Red.prototype.isub = function isub (a, b) {
30074 this._verify2(a, b);
ebd8d4e8 30075
8b095871
IC
30076 var res = a.isub(b);
30077 if (res.cmpn(0) < 0) {
30078 res.iadd(this.m);
30079 }
30080 return res;
30081 };
ebd8d4e8 30082
8b095871
IC
30083 Red.prototype.shl = function shl (a, num) {
30084 this._verify1(a);
30085 return this.imod(a.ushln(num));
30086 };
ebd8d4e8 30087
8b095871
IC
30088 Red.prototype.imul = function imul (a, b) {
30089 this._verify2(a, b);
30090 return this.imod(a.imul(b));
30091 };
ebd8d4e8 30092
8b095871
IC
30093 Red.prototype.mul = function mul (a, b) {
30094 this._verify2(a, b);
30095 return this.imod(a.mul(b));
30096 };
ebd8d4e8 30097
8b095871
IC
30098 Red.prototype.isqr = function isqr (a) {
30099 return this.imul(a, a.clone());
30100 };
30101
30102 Red.prototype.sqr = function sqr (a) {
30103 return this.mul(a, a);
30104 };
ebd8d4e8 30105
8b095871
IC
30106 Red.prototype.sqrt = function sqrt (a) {
30107 if (a.isZero()) return a.clone();
ebd8d4e8 30108
8b095871
IC
30109 var mod3 = this.m.andln(3);
30110 assert(mod3 % 2 === 1);
ebd8d4e8 30111
8b095871
IC
30112 // Fast case
30113 if (mod3 === 3) {
30114 var pow = this.m.add(new BN(1)).iushrn(2);
30115 return this.pow(a, pow);
30116 }
ebd8d4e8 30117
8b095871
IC
30118 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
30119 //
30120 // Find Q and S, that Q * 2 ^ S = (P - 1)
30121 var q = this.m.subn(1);
30122 var s = 0;
30123 while (!q.isZero() && q.andln(1) === 0) {
30124 s++;
30125 q.iushrn(1);
30126 }
30127 assert(!q.isZero());
ebd8d4e8 30128
8b095871
IC
30129 var one = new BN(1).toRed(this);
30130 var nOne = one.redNeg();
ebd8d4e8 30131
8b095871
IC
30132 // Find quadratic non-residue
30133 // NOTE: Max is such because of generalized Riemann hypothesis.
30134 var lpow = this.m.subn(1).iushrn(1);
30135 var z = this.m.bitLength();
30136 z = new BN(2 * z * z).toRed(this);
ebd8d4e8 30137
8b095871
IC
30138 while (this.pow(z, lpow).cmp(nOne) !== 0) {
30139 z.redIAdd(nOne);
30140 }
ebd8d4e8 30141
8b095871
IC
30142 var c = this.pow(z, q);
30143 var r = this.pow(a, q.addn(1).iushrn(1));
30144 var t = this.pow(a, q);
30145 var m = s;
30146 while (t.cmp(one) !== 0) {
30147 var tmp = t;
30148 for (var i = 0; tmp.cmp(one) !== 0; i++) {
30149 tmp = tmp.redSqr();
30150 }
30151 assert(i < m);
30152 var b = this.pow(c, new BN(1).iushln(m - i - 1));
ebd8d4e8 30153
8b095871
IC
30154 r = r.redMul(b);
30155 c = b.redSqr();
30156 t = t.redMul(c);
30157 m = i;
30158 }
ebd8d4e8 30159
8b095871
IC
30160 return r;
30161 };
ebd8d4e8 30162
8b095871
IC
30163 Red.prototype.invm = function invm (a) {
30164 var inv = a._invmp(this.m);
30165 if (inv.negative !== 0) {
30166 inv.negative = 0;
30167 return this.imod(inv).redNeg();
30168 } else {
30169 return this.imod(inv);
30170 }
30171 };
ebd8d4e8 30172
8b095871
IC
30173 Red.prototype.pow = function pow (a, num) {
30174 if (num.isZero()) return new BN(1);
30175 if (num.cmpn(1) === 0) return a.clone();
ebd8d4e8 30176
8b095871
IC
30177 var windowSize = 4;
30178 var wnd = new Array(1 << windowSize);
30179 wnd[0] = new BN(1).toRed(this);
30180 wnd[1] = a;
30181 for (var i = 2; i < wnd.length; i++) {
30182 wnd[i] = this.mul(wnd[i - 1], a);
30183 }
ebd8d4e8 30184
8b095871
IC
30185 var res = wnd[0];
30186 var current = 0;
30187 var currentLen = 0;
30188 var start = num.bitLength() % 26;
30189 if (start === 0) {
30190 start = 26;
30191 }
ebd8d4e8 30192
8b095871
IC
30193 for (i = num.length - 1; i >= 0; i--) {
30194 var word = num.words[i];
30195 for (var j = start - 1; j >= 0; j--) {
30196 var bit = (word >> j) & 1;
30197 if (res !== wnd[0]) {
30198 res = this.sqr(res);
30199 }
ebd8d4e8 30200
8b095871
IC
30201 if (bit === 0 && current === 0) {
30202 currentLen = 0;
30203 continue;
30204 }
ebd8d4e8 30205
8b095871
IC
30206 current <<= 1;
30207 current |= bit;
30208 currentLen++;
30209 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
ebd8d4e8 30210
8b095871
IC
30211 res = this.mul(res, wnd[current]);
30212 currentLen = 0;
30213 current = 0;
30214 }
30215 start = 26;
30216 }
ebd8d4e8 30217
8b095871
IC
30218 return res;
30219 };
ebd8d4e8 30220
8b095871
IC
30221 Red.prototype.convertTo = function convertTo (num) {
30222 var r = num.umod(this.m);
ebd8d4e8 30223
8b095871
IC
30224 return r === num ? r.clone() : r;
30225 };
ebd8d4e8 30226
8b095871
IC
30227 Red.prototype.convertFrom = function convertFrom (num) {
30228 var res = num.clone();
30229 res.red = null;
30230 return res;
30231 };
ebd8d4e8 30232
8b095871
IC
30233 //
30234 // Montgomery method engine
30235 //
ebd8d4e8 30236
8b095871
IC
30237 BN.mont = function mont (num) {
30238 return new Mont(num);
30239 };
ebd8d4e8 30240
8b095871
IC
30241 function Mont (m) {
30242 Red.call(this, m);
ebd8d4e8 30243
8b095871
IC
30244 this.shift = this.m.bitLength();
30245 if (this.shift % 26 !== 0) {
30246 this.shift += 26 - (this.shift % 26);
30247 }
ebd8d4e8 30248
8b095871
IC
30249 this.r = new BN(1).iushln(this.shift);
30250 this.r2 = this.imod(this.r.sqr());
30251 this.rinv = this.r._invmp(this.m);
30252
30253 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
30254 this.minv = this.minv.umod(this.r);
30255 this.minv = this.r.sub(this.minv);
ebd8d4e8 30256 }
8b095871 30257 inherits(Mont, Red);
ebd8d4e8 30258
8b095871
IC
30259 Mont.prototype.convertTo = function convertTo (num) {
30260 return this.imod(num.ushln(this.shift));
30261 };
ab78acc6 30262
8b095871
IC
30263 Mont.prototype.convertFrom = function convertFrom (num) {
30264 var r = this.imod(num.mul(this.rinv));
30265 r.red = null;
30266 return r;
30267 };
ebd8d4e8 30268
8b095871
IC
30269 Mont.prototype.imul = function imul (a, b) {
30270 if (a.isZero() || b.isZero()) {
30271 a.words[0] = 0;
30272 a.length = 1;
30273 return a;
30274 }
ebd8d4e8 30275
8b095871
IC
30276 var t = a.imul(b);
30277 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30278 var u = t.isub(c).iushrn(this.shift);
30279 var res = u;
ab78acc6 30280
8b095871
IC
30281 if (u.cmp(this.m) >= 0) {
30282 res = u.isub(this.m);
30283 } else if (u.cmpn(0) < 0) {
30284 res = u.iadd(this.m);
30285 }
ab78acc6 30286
8b095871
IC
30287 return res._forceRed(this);
30288 };
ab78acc6 30289
8b095871
IC
30290 Mont.prototype.mul = function mul (a, b) {
30291 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
ab78acc6 30292
8b095871
IC
30293 var t = a.mul(b);
30294 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30295 var u = t.isub(c).iushrn(this.shift);
30296 var res = u;
30297 if (u.cmp(this.m) >= 0) {
30298 res = u.isub(this.m);
30299 } else if (u.cmpn(0) < 0) {
30300 res = u.iadd(this.m);
30301 }
ab78acc6 30302
8b095871
IC
30303 return res._forceRed(this);
30304 };
ab78acc6 30305
8b095871
IC
30306 Mont.prototype.invm = function invm (a) {
30307 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
30308 var res = this.imod(a._invmp(this.m).mul(this.r2));
30309 return res._forceRed(this);
30310 };
30311})(typeof module === 'undefined' || module, this);
ab78acc6 30312
8b095871
IC
30313},{}],34:[function(require,module,exports){
30314var r;
ebd8d4e8 30315
8b095871
IC
30316module.exports = function rand(len) {
30317 if (!r)
30318 r = new Rand(null);
ebd8d4e8 30319
8b095871
IC
30320 return r.generate(len);
30321};
ab78acc6 30322
8b095871
IC
30323function Rand(rand) {
30324 this.rand = rand;
ab78acc6 30325}
8b095871 30326module.exports.Rand = Rand;
ab78acc6 30327
8b095871
IC
30328Rand.prototype.generate = function generate(len) {
30329 return this._rand(len);
30330};
ab78acc6 30331
8b095871
IC
30332if (typeof self === 'object') {
30333 if (self.crypto && self.crypto.getRandomValues) {
30334 // Modern browsers
30335 Rand.prototype._rand = function _rand(n) {
30336 var arr = new Uint8Array(n);
30337 self.crypto.getRandomValues(arr);
30338 return arr;
30339 };
30340 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
30341 // IE
30342 Rand.prototype._rand = function _rand(n) {
30343 var arr = new Uint8Array(n);
30344 self.msCrypto.getRandomValues(arr);
30345 return arr;
30346 };
30347 } else {
30348 // Old junk
30349 Rand.prototype._rand = function() {
30350 throw new Error('Not implemented yet');
30351 };
30352 }
30353} else {
30354 // Node.js or Web worker with no crypto support
30355 try {
30356 var crypto = require('crypto');
ab78acc6 30357
8b095871
IC
30358 Rand.prototype._rand = function _rand(n) {
30359 return crypto.randomBytes(n);
30360 };
30361 } catch (e) {
30362 // Emulate crypto API using randy
30363 Rand.prototype._rand = function _rand(n) {
30364 var res = new Uint8Array(n);
30365 for (var i = 0; i < res.length; i++)
30366 res[i] = this.rand.getByte();
30367 return res;
30368 };
30369 }
30370}
30371
30372},{"crypto":3}],35:[function(require,module,exports){
30373(function (Buffer){
30374var Transform = require('stream').Transform
30375var inherits = require('inherits')
30376var StringDecoder = require('string_decoder').StringDecoder
30377module.exports = CipherBase
30378inherits(CipherBase, Transform)
30379function CipherBase (hashMode) {
30380 Transform.call(this)
30381 this.hashMode = typeof hashMode === 'string'
30382 if (this.hashMode) {
30383 this[hashMode] = this._finalOrDigest
30384 } else {
30385 this.final = this._finalOrDigest
30386 }
30387 this._decoder = null
30388 this._encoding = null
30389}
30390CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
30391 if (typeof data === 'string') {
30392 data = new Buffer(data, inputEnc)
30393 }
30394 var outData = this._update(data)
30395 if (this.hashMode) {
30396 return this
30397 }
30398 if (outputEnc) {
30399 outData = this._toString(outData, outputEnc)
30400 }
30401 return outData
30402}
ab78acc6 30403
8b095871 30404CipherBase.prototype.setAutoPadding = function () {}
ab78acc6 30405
8b095871
IC
30406CipherBase.prototype.getAuthTag = function () {
30407 throw new Error('trying to get auth tag in unsupported state')
30408}
ab78acc6 30409
8b095871
IC
30410CipherBase.prototype.setAuthTag = function () {
30411 throw new Error('trying to set auth tag in unsupported state')
30412}
ab78acc6 30413
8b095871
IC
30414CipherBase.prototype.setAAD = function () {
30415 throw new Error('trying to set aad in unsupported state')
30416}
ab78acc6 30417
8b095871
IC
30418CipherBase.prototype._transform = function (data, _, next) {
30419 var err
30420 try {
30421 if (this.hashMode) {
30422 this._update(data)
30423 } else {
30424 this.push(this._update(data))
30425 }
30426 } catch (e) {
30427 err = e
30428 } finally {
30429 next(err)
30430 }
30431}
30432CipherBase.prototype._flush = function (done) {
30433 var err
30434 try {
30435 this.push(this._final())
30436 } catch (e) {
30437 err = e
30438 } finally {
30439 done(err)
30440 }
30441}
30442CipherBase.prototype._finalOrDigest = function (outputEnc) {
30443 var outData = this._final() || new Buffer('')
30444 if (outputEnc) {
30445 outData = this._toString(outData, outputEnc, true)
30446 }
30447 return outData
30448}
ebd8d4e8 30449
8b095871
IC
30450CipherBase.prototype._toString = function (value, enc, fin) {
30451 if (!this._decoder) {
30452 this._decoder = new StringDecoder(enc)
30453 this._encoding = enc
30454 }
30455 if (this._encoding !== enc) {
30456 throw new Error('can\'t switch encodings')
30457 }
30458 var out = this._decoder.write(value)
30459 if (fin) {
30460 out += this._decoder.end()
ab78acc6 30461 }
8b095871
IC
30462 return out
30463}
ab78acc6 30464
8b095871
IC
30465}).call(this,require("buffer").Buffer)
30466},{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
30467(function (Buffer){
30468'use strict';
30469var inherits = require('inherits')
30470var md5 = require('./md5')
30471var rmd160 = require('ripemd160')
30472var sha = require('sha.js')
ebd8d4e8 30473
8b095871 30474var Base = require('cipher-base')
ebd8d4e8 30475
8b095871
IC
30476function HashNoConstructor(hash) {
30477 Base.call(this, 'digest')
ebd8d4e8 30478
8b095871
IC
30479 this._hash = hash
30480 this.buffers = []
30481}
ebd8d4e8 30482
8b095871 30483inherits(HashNoConstructor, Base)
ebd8d4e8 30484
8b095871
IC
30485HashNoConstructor.prototype._update = function (data) {
30486 this.buffers.push(data)
30487}
ebd8d4e8 30488
8b095871
IC
30489HashNoConstructor.prototype._final = function () {
30490 var buf = Buffer.concat(this.buffers)
30491 var r = this._hash(buf)
30492 this.buffers = null
ebd8d4e8 30493
8b095871
IC
30494 return r
30495}
ab78acc6 30496
8b095871
IC
30497function Hash(hash) {
30498 Base.call(this, 'digest')
ab78acc6 30499
8b095871
IC
30500 this._hash = hash
30501}
ab78acc6 30502
8b095871 30503inherits(Hash, Base)
ab78acc6 30504
8b095871
IC
30505Hash.prototype._update = function (data) {
30506 this._hash.update(data)
30507}
ab78acc6 30508
8b095871
IC
30509Hash.prototype._final = function () {
30510 return this._hash.digest()
30511}
ab78acc6 30512
8b095871
IC
30513module.exports = function createHash (alg) {
30514 alg = alg.toLowerCase()
30515 if ('md5' === alg) return new HashNoConstructor(md5)
30516 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
30517
30518 return new Hash(sha(alg))
ab78acc6
IC
30519}
30520
8b095871
IC
30521}).call(this,require("buffer").Buffer)
30522},{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
30523(function (Buffer){
30524'use strict';
30525var intSize = 4;
30526var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
30527var chrsz = 8;
ab78acc6 30528
8b095871
IC
30529function toArray(buf, bigEndian) {
30530 if ((buf.length % intSize) !== 0) {
30531 var len = buf.length + (intSize - (buf.length % intSize));
30532 buf = Buffer.concat([buf, zeroBuffer], len);
ab78acc6
IC
30533 }
30534
8b095871
IC
30535 var arr = [];
30536 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
30537 for (var i = 0; i < buf.length; i += intSize) {
30538 arr.push(fn.call(buf, i));
30539 }
30540 return arr;
ab78acc6
IC
30541}
30542
8b095871
IC
30543function toBuffer(arr, size, bigEndian) {
30544 var buf = new Buffer(size);
30545 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
30546 for (var i = 0; i < arr.length; i++) {
30547 fn.call(buf, arr[i], i * 4, true);
30548 }
30549 return buf;
30550}
ab78acc6 30551
8b095871
IC
30552function hash(buf, fn, hashSize, bigEndian) {
30553 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
30554 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
30555 return toBuffer(arr, hashSize, bigEndian);
30556}
30557exports.hash = hash;
ab78acc6 30558}).call(this,require("buffer").Buffer)
8b095871 30559},{"buffer":5}],38:[function(require,module,exports){
ab78acc6 30560'use strict';
8b095871
IC
30561/*
30562 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
30563 * Digest Algorithm, as defined in RFC 1321.
30564 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
30565 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30566 * Distributed under the BSD License
30567 * See http://pajhome.org.uk/crypt/md5 for more info.
30568 */
ebd8d4e8 30569
8b095871 30570var helpers = require('./helpers');
ebd8d4e8 30571
8b095871
IC
30572/*
30573 * Calculate the MD5 of an array of little-endian words, and a bit length
30574 */
30575function core_md5(x, len)
30576{
30577 /* append padding */
30578 x[len >> 5] |= 0x80 << ((len) % 32);
30579 x[(((len + 64) >>> 9) << 4) + 14] = len;
ebd8d4e8 30580
8b095871
IC
30581 var a = 1732584193;
30582 var b = -271733879;
30583 var c = -1732584194;
30584 var d = 271733878;
ebd8d4e8 30585
8b095871
IC
30586 for(var i = 0; i < x.length; i += 16)
30587 {
30588 var olda = a;
30589 var oldb = b;
30590 var oldc = c;
30591 var oldd = d;
ebd8d4e8 30592
8b095871
IC
30593 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
30594 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
30595 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
30596 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
30597 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
30598 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
30599 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
30600 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
30601 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
30602 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
30603 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
30604 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
30605 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
30606 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
30607 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
30608 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
ebd8d4e8 30609
8b095871
IC
30610 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
30611 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
30612 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
30613 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
30614 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
30615 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
30616 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
30617 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
30618 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
30619 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
30620 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
30621 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
30622 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
30623 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
30624 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
30625 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
ebd8d4e8 30626
8b095871
IC
30627 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
30628 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
30629 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
30630 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
30631 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
30632 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
30633 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
30634 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
30635 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
30636 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
30637 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
30638 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
30639 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
30640 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
30641 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
30642 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
ebd8d4e8 30643
8b095871
IC
30644 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
30645 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
30646 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
30647 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
30648 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
30649 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
30650 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
30651 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
30652 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
30653 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
30654 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
30655 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
30656 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
30657 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
30658 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
30659 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
ebd8d4e8 30660
8b095871
IC
30661 a = safe_add(a, olda);
30662 b = safe_add(b, oldb);
30663 c = safe_add(c, oldc);
30664 d = safe_add(d, oldd);
ab78acc6 30665 }
8b095871 30666 return Array(a, b, c, d);
ebd8d4e8 30667
ab78acc6 30668}
ebd8d4e8 30669
8b095871
IC
30670/*
30671 * These functions implement the four basic operations the algorithm uses.
30672 */
30673function md5_cmn(q, a, b, x, s, t)
30674{
30675 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
ab78acc6 30676}
8b095871
IC
30677function md5_ff(a, b, c, d, x, s, t)
30678{
30679 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
ab78acc6 30680}
8b095871
IC
30681function md5_gg(a, b, c, d, x, s, t)
30682{
30683 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
ab78acc6 30684}
8b095871
IC
30685function md5_hh(a, b, c, d, x, s, t)
30686{
30687 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
30688}
30689function md5_ii(a, b, c, d, x, s, t)
30690{
30691 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
ab78acc6 30692}
ebd8d4e8 30693
8b095871
IC
30694/*
30695 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
30696 * to work around bugs in some JS interpreters.
30697 */
30698function safe_add(x, y)
30699{
30700 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
30701 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
30702 return (msw << 16) | (lsw & 0xFFFF);
ab78acc6 30703}
ebd8d4e8 30704
8b095871
IC
30705/*
30706 * Bitwise rotate a 32-bit number to the left.
30707 */
30708function bit_rol(num, cnt)
30709{
30710 return (num << cnt) | (num >>> (32 - cnt));
30711}
ebd8d4e8 30712
8b095871
IC
30713module.exports = function md5(buf) {
30714 return helpers.hash(buf, core_md5, 16);
30715};
30716},{"./helpers":37}],39:[function(require,module,exports){
30717'use strict';
ebd8d4e8 30718
8b095871 30719var elliptic = exports;
ebd8d4e8 30720
8b095871
IC
30721elliptic.version = require('../package.json').version;
30722elliptic.utils = require('./elliptic/utils');
30723elliptic.rand = require('brorand');
30724elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
30725elliptic.curve = require('./elliptic/curve');
30726elliptic.curves = require('./elliptic/curves');
ebd8d4e8 30727
8b095871
IC
30728// Protocols
30729elliptic.ec = require('./elliptic/ec');
30730elliptic.eddsa = require('./elliptic/eddsa');
ebd8d4e8 30731
8b095871
IC
30732},{"../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){
30733'use strict';
ebd8d4e8 30734
8b095871
IC
30735var BN = require('bn.js');
30736var elliptic = require('../../elliptic');
30737var utils = elliptic.utils;
30738var getNAF = utils.getNAF;
30739var getJSF = utils.getJSF;
30740var assert = utils.assert;
30741
30742function BaseCurve(type, conf) {
30743 this.type = type;
30744 this.p = new BN(conf.p, 16);
30745
30746 // Use Montgomery, when there is no fast reduction for the prime
30747 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
30748
30749 // Useful for many curves
30750 this.zero = new BN(0).toRed(this.red);
30751 this.one = new BN(1).toRed(this.red);
30752 this.two = new BN(2).toRed(this.red);
30753
30754 // Curve configuration, optional
30755 this.n = conf.n && new BN(conf.n, 16);
30756 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
30757
30758 // Temporary arrays
30759 this._wnafT1 = new Array(4);
30760 this._wnafT2 = new Array(4);
30761 this._wnafT3 = new Array(4);
30762 this._wnafT4 = new Array(4);
30763
30764 // Generalized Greg Maxwell's trick
30765 var adjustCount = this.n && this.p.div(this.n);
30766 if (!adjustCount || adjustCount.cmpn(100) > 0) {
30767 this.redN = null;
30768 } else {
30769 this._maxwellTrick = true;
30770 this.redN = this.n.toRed(this.red);
ebd8d4e8 30771 }
ebd8d4e8 30772}
8b095871 30773module.exports = BaseCurve;
ebd8d4e8 30774
8b095871
IC
30775BaseCurve.prototype.point = function point() {
30776 throw new Error('Not implemented');
30777};
ebd8d4e8 30778
8b095871
IC
30779BaseCurve.prototype.validate = function validate() {
30780 throw new Error('Not implemented');
30781};
ebd8d4e8 30782
8b095871
IC
30783BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
30784 assert(p.precomputed);
30785 var doubles = p._getDoubles();
ebd8d4e8 30786
8b095871
IC
30787 var naf = getNAF(k, 1);
30788 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
30789 I /= 3;
ebd8d4e8 30790
8b095871
IC
30791 // Translate into more windowed form
30792 var repr = [];
30793 for (var j = 0; j < naf.length; j += doubles.step) {
30794 var nafW = 0;
30795 for (var k = j + doubles.step - 1; k >= j; k--)
30796 nafW = (nafW << 1) + naf[k];
30797 repr.push(nafW);
30798 }
ebd8d4e8 30799
8b095871
IC
30800 var a = this.jpoint(null, null, null);
30801 var b = this.jpoint(null, null, null);
30802 for (var i = I; i > 0; i--) {
30803 for (var j = 0; j < repr.length; j++) {
30804 var nafW = repr[j];
30805 if (nafW === i)
30806 b = b.mixedAdd(doubles.points[j]);
30807 else if (nafW === -i)
30808 b = b.mixedAdd(doubles.points[j].neg());
30809 }
30810 a = a.add(b);
30811 }
30812 return a.toP();
30813};
ebd8d4e8 30814
8b095871
IC
30815BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
30816 var w = 4;
ebd8d4e8 30817
8b095871
IC
30818 // Precompute window
30819 var nafPoints = p._getNAFPoints(w);
30820 w = nafPoints.wnd;
30821 var wnd = nafPoints.points;
ebd8d4e8 30822
8b095871
IC
30823 // Get NAF form
30824 var naf = getNAF(k, w);
ebd8d4e8 30825
8b095871
IC
30826 // Add `this`*(N+1) for every w-NAF index
30827 var acc = this.jpoint(null, null, null);
30828 for (var i = naf.length - 1; i >= 0; i--) {
30829 // Count zeroes
30830 for (var k = 0; i >= 0 && naf[i] === 0; i--)
30831 k++;
30832 if (i >= 0)
30833 k++;
30834 acc = acc.dblp(k);
ebd8d4e8 30835
8b095871
IC
30836 if (i < 0)
30837 break;
30838 var z = naf[i];
30839 assert(z !== 0);
30840 if (p.type === 'affine') {
30841 // J +- P
30842 if (z > 0)
30843 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
30844 else
30845 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
30846 } else {
30847 // J +- J
30848 if (z > 0)
30849 acc = acc.add(wnd[(z - 1) >> 1]);
30850 else
30851 acc = acc.add(wnd[(-z - 1) >> 1].neg());
30852 }
ebd8d4e8 30853 }
8b095871
IC
30854 return p.type === 'affine' ? acc.toP() : acc;
30855};
ebd8d4e8 30856
8b095871
IC
30857BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
30858 points,
30859 coeffs,
30860 len,
30861 jacobianResult) {
30862 var wndWidth = this._wnafT1;
30863 var wnd = this._wnafT2;
30864 var naf = this._wnafT3;
30865
30866 // Fill all arrays
30867 var max = 0;
30868 for (var i = 0; i < len; i++) {
30869 var p = points[i];
30870 var nafPoints = p._getNAFPoints(defW);
30871 wndWidth[i] = nafPoints.wnd;
30872 wnd[i] = nafPoints.points;
30873 }
30874
30875 // Comb small window NAFs
30876 for (var i = len - 1; i >= 1; i -= 2) {
30877 var a = i - 1;
30878 var b = i;
30879 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
30880 naf[a] = getNAF(coeffs[a], wndWidth[a]);
30881 naf[b] = getNAF(coeffs[b], wndWidth[b]);
30882 max = Math.max(naf[a].length, max);
30883 max = Math.max(naf[b].length, max);
30884 continue;
30885 }
ebd8d4e8 30886
8b095871
IC
30887 var comb = [
30888 points[a], /* 1 */
30889 null, /* 3 */
30890 null, /* 5 */
30891 points[b] /* 7 */
30892 ];
30893
30894 // Try to avoid Projective points, if possible
30895 if (points[a].y.cmp(points[b].y) === 0) {
30896 comb[1] = points[a].add(points[b]);
30897 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30898 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
30899 comb[1] = points[a].toJ().mixedAdd(points[b]);
30900 comb[2] = points[a].add(points[b].neg());
30901 } else {
30902 comb[1] = points[a].toJ().mixedAdd(points[b]);
30903 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30904 }
ebd8d4e8 30905
8b095871
IC
30906 var index = [
30907 -3, /* -1 -1 */
30908 -1, /* -1 0 */
30909 -5, /* -1 1 */
30910 -7, /* 0 -1 */
30911 0, /* 0 0 */
30912 7, /* 0 1 */
30913 5, /* 1 -1 */
30914 1, /* 1 0 */
30915 3 /* 1 1 */
30916 ];
ebd8d4e8 30917
8b095871
IC
30918 var jsf = getJSF(coeffs[a], coeffs[b]);
30919 max = Math.max(jsf[0].length, max);
30920 naf[a] = new Array(max);
30921 naf[b] = new Array(max);
30922 for (var j = 0; j < max; j++) {
30923 var ja = jsf[0][j] | 0;
30924 var jb = jsf[1][j] | 0;
ebd8d4e8 30925
8b095871
IC
30926 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
30927 naf[b][j] = 0;
30928 wnd[a] = comb;
30929 }
30930 }
ebd8d4e8 30931
8b095871
IC
30932 var acc = this.jpoint(null, null, null);
30933 var tmp = this._wnafT4;
30934 for (var i = max; i >= 0; i--) {
30935 var k = 0;
ebd8d4e8 30936
8b095871
IC
30937 while (i >= 0) {
30938 var zero = true;
30939 for (var j = 0; j < len; j++) {
30940 tmp[j] = naf[j][i] | 0;
30941 if (tmp[j] !== 0)
30942 zero = false;
30943 }
30944 if (!zero)
30945 break;
30946 k++;
30947 i--;
30948 }
30949 if (i >= 0)
30950 k++;
30951 acc = acc.dblp(k);
30952 if (i < 0)
30953 break;
ebd8d4e8 30954
8b095871
IC
30955 for (var j = 0; j < len; j++) {
30956 var z = tmp[j];
30957 var p;
30958 if (z === 0)
30959 continue;
30960 else if (z > 0)
30961 p = wnd[j][(z - 1) >> 1];
30962 else if (z < 0)
30963 p = wnd[j][(-z - 1) >> 1].neg();
30964
30965 if (p.type === 'affine')
30966 acc = acc.mixedAdd(p);
30967 else
30968 acc = acc.add(p);
30969 }
30970 }
30971 // Zeroify references
30972 for (var i = 0; i < len; i++)
30973 wnd[i] = null;
ebd8d4e8 30974
8b095871
IC
30975 if (jacobianResult)
30976 return acc;
30977 else
30978 return acc.toP();
30979};
ebd8d4e8 30980
8b095871
IC
30981function BasePoint(curve, type) {
30982 this.curve = curve;
30983 this.type = type;
30984 this.precomputed = null;
30985}
30986BaseCurve.BasePoint = BasePoint;
ebd8d4e8 30987
8b095871
IC
30988BasePoint.prototype.eq = function eq(/*other*/) {
30989 throw new Error('Not implemented');
30990};
ebd8d4e8 30991
8b095871
IC
30992BasePoint.prototype.validate = function validate() {
30993 return this.curve.validate(this);
30994};
ebd8d4e8 30995
8b095871
IC
30996BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
30997 bytes = utils.toArray(bytes, enc);
ebd8d4e8 30998
8b095871 30999 var len = this.p.byteLength();
ebd8d4e8 31000
8b095871
IC
31001 // uncompressed, hybrid-odd, hybrid-even
31002 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
31003 bytes.length - 1 === 2 * len) {
31004 if (bytes[0] === 0x06)
31005 assert(bytes[bytes.length - 1] % 2 === 0);
31006 else if (bytes[0] === 0x07)
31007 assert(bytes[bytes.length - 1] % 2 === 1);
ebd8d4e8 31008
8b095871
IC
31009 var res = this.point(bytes.slice(1, 1 + len),
31010 bytes.slice(1 + len, 1 + 2 * len));
ebd8d4e8 31011
8b095871
IC
31012 return res;
31013 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
31014 bytes.length - 1 === len) {
31015 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
ebd8d4e8 31016 }
8b095871
IC
31017 throw new Error('Unknown point format');
31018};
ebd8d4e8 31019
8b095871
IC
31020BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
31021 return this.encode(enc, true);
31022};
31023
31024BasePoint.prototype._encode = function _encode(compact) {
31025 var len = this.curve.p.byteLength();
31026 var x = this.getX().toArray('be', len);
31027
31028 if (compact)
31029 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
31030
31031 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
31032};
31033
31034BasePoint.prototype.encode = function encode(enc, compact) {
31035 return utils.encode(this._encode(compact), enc);
31036};
31037
31038BasePoint.prototype.precompute = function precompute(power) {
31039 if (this.precomputed)
31040 return this;
31041
31042 var precomputed = {
31043 doubles: null,
31044 naf: null,
31045 beta: null
31046 };
31047 precomputed.naf = this._getNAFPoints(8);
31048 precomputed.doubles = this._getDoubles(4, power);
31049 precomputed.beta = this._getBeta();
31050 this.precomputed = precomputed;
31051
31052 return this;
31053};
31054
31055BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
31056 if (!this.precomputed)
31057 return false;
31058
31059 var doubles = this.precomputed.doubles;
31060 if (!doubles)
31061 return false;
31062
31063 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
31064};
31065
31066BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
31067 if (this.precomputed && this.precomputed.doubles)
31068 return this.precomputed.doubles;
31069
31070 var doubles = [ this ];
31071 var acc = this;
31072 for (var i = 0; i < power; i += step) {
31073 for (var j = 0; j < step; j++)
31074 acc = acc.dbl();
31075 doubles.push(acc);
ebd8d4e8 31076 }
8b095871
IC
31077 return {
31078 step: step,
31079 points: doubles
31080 };
31081};
ebd8d4e8 31082
8b095871
IC
31083BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
31084 if (this.precomputed && this.precomputed.naf)
31085 return this.precomputed.naf;
ebd8d4e8 31086
8b095871
IC
31087 var res = [ this ];
31088 var max = (1 << wnd) - 1;
31089 var dbl = max === 1 ? null : this.dbl();
31090 for (var i = 1; i < max; i++)
31091 res[i] = res[i - 1].add(dbl);
31092 return {
31093 wnd: wnd,
31094 points: res
31095 };
31096};
ebd8d4e8 31097
8b095871
IC
31098BasePoint.prototype._getBeta = function _getBeta() {
31099 return null;
31100};
ebd8d4e8 31101
8b095871
IC
31102BasePoint.prototype.dblp = function dblp(k) {
31103 var r = this;
31104 for (var i = 0; i < k; i++)
31105 r = r.dbl();
31106 return r;
31107};
ebd8d4e8 31108
8b095871
IC
31109},{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
31110'use strict';
ebd8d4e8 31111
8b095871
IC
31112var curve = require('../curve');
31113var elliptic = require('../../elliptic');
31114var BN = require('bn.js');
31115var inherits = require('inherits');
31116var Base = curve.base;
ebd8d4e8 31117
8b095871 31118var assert = elliptic.utils.assert;
ebd8d4e8 31119
8b095871
IC
31120function EdwardsCurve(conf) {
31121 // NOTE: Important as we are creating point in Base.call()
31122 this.twisted = (conf.a | 0) !== 1;
31123 this.mOneA = this.twisted && (conf.a | 0) === -1;
31124 this.extended = this.mOneA;
31125
31126 Base.call(this, 'edwards', conf);
31127
31128 this.a = new BN(conf.a, 16).umod(this.red.m);
31129 this.a = this.a.toRed(this.red);
31130 this.c = new BN(conf.c, 16).toRed(this.red);
31131 this.c2 = this.c.redSqr();
31132 this.d = new BN(conf.d, 16).toRed(this.red);
31133 this.dd = this.d.redAdd(this.d);
31134
31135 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
31136 this.oneC = (conf.c | 0) === 1;
ebd8d4e8 31137}
8b095871
IC
31138inherits(EdwardsCurve, Base);
31139module.exports = EdwardsCurve;
ebd8d4e8 31140
8b095871
IC
31141EdwardsCurve.prototype._mulA = function _mulA(num) {
31142 if (this.mOneA)
31143 return num.redNeg();
31144 else
31145 return this.a.redMul(num);
31146};
ebd8d4e8 31147
8b095871
IC
31148EdwardsCurve.prototype._mulC = function _mulC(num) {
31149 if (this.oneC)
31150 return num;
31151 else
31152 return this.c.redMul(num);
31153};
ebd8d4e8 31154
8b095871
IC
31155// Just for compatibility with Short curve
31156EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
31157 return this.point(x, y, z, t);
31158};
ebd8d4e8 31159
8b095871
IC
31160EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
31161 x = new BN(x, 16);
31162 if (!x.red)
31163 x = x.toRed(this.red);
ebd8d4e8 31164
8b095871
IC
31165 var x2 = x.redSqr();
31166 var rhs = this.c2.redSub(this.a.redMul(x2));
31167 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
31168
31169 var y2 = rhs.redMul(lhs.redInvm());
31170 var y = y2.redSqrt();
31171 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31172 throw new Error('invalid point');
31173
31174 var isOdd = y.fromRed().isOdd();
31175 if (odd && !isOdd || !odd && isOdd)
31176 y = y.redNeg();
31177
31178 return this.point(x, y);
31179};
31180
31181EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
31182 y = new BN(y, 16);
31183 if (!y.red)
31184 y = y.toRed(this.red);
31185
31186 // x^2 = (y^2 - 1) / (d y^2 + 1)
31187 var y2 = y.redSqr();
31188 var lhs = y2.redSub(this.one);
31189 var rhs = y2.redMul(this.d).redAdd(this.one);
31190 var x2 = lhs.redMul(rhs.redInvm());
31191
31192 if (x2.cmp(this.zero) === 0) {
31193 if (odd)
31194 throw new Error('invalid point');
31195 else
31196 return this.point(this.zero, y);
ebd8d4e8
IC
31197 }
31198
8b095871
IC
31199 var x = x2.redSqrt();
31200 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
31201 throw new Error('invalid point');
ebd8d4e8 31202
8b095871
IC
31203 if (x.isOdd() !== odd)
31204 x = x.redNeg();
ebd8d4e8 31205
8b095871
IC
31206 return this.point(x, y);
31207};
ebd8d4e8 31208
8b095871
IC
31209EdwardsCurve.prototype.validate = function validate(point) {
31210 if (point.isInfinity())
31211 return true;
ebd8d4e8 31212
8b095871
IC
31213 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
31214 point.normalize();
ebd8d4e8 31215
8b095871
IC
31216 var x2 = point.x.redSqr();
31217 var y2 = point.y.redSqr();
31218 var lhs = x2.redMul(this.a).redAdd(y2);
31219 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
ebd8d4e8 31220
8b095871
IC
31221 return lhs.cmp(rhs) === 0;
31222};
ebd8d4e8 31223
8b095871
IC
31224function Point(curve, x, y, z, t) {
31225 Base.BasePoint.call(this, curve, 'projective');
31226 if (x === null && y === null && z === null) {
31227 this.x = this.curve.zero;
31228 this.y = this.curve.one;
31229 this.z = this.curve.one;
31230 this.t = this.curve.zero;
31231 this.zOne = true;
31232 } else {
31233 this.x = new BN(x, 16);
31234 this.y = new BN(y, 16);
31235 this.z = z ? new BN(z, 16) : this.curve.one;
31236 this.t = t && new BN(t, 16);
31237 if (!this.x.red)
31238 this.x = this.x.toRed(this.curve.red);
31239 if (!this.y.red)
31240 this.y = this.y.toRed(this.curve.red);
31241 if (!this.z.red)
31242 this.z = this.z.toRed(this.curve.red);
31243 if (this.t && !this.t.red)
31244 this.t = this.t.toRed(this.curve.red);
31245 this.zOne = this.z === this.curve.one;
31246
31247 // Use extended coordinates
31248 if (this.curve.extended && !this.t) {
31249 this.t = this.x.redMul(this.y);
31250 if (!this.zOne)
31251 this.t = this.t.redMul(this.z.redInvm());
31252 }
31253 }
31254}
31255inherits(Point, Base.BasePoint);
31256
31257EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31258 return Point.fromJSON(this, obj);
31259};
31260
31261EdwardsCurve.prototype.point = function point(x, y, z, t) {
31262 return new Point(this, x, y, z, t);
31263};
31264
31265Point.fromJSON = function fromJSON(curve, obj) {
31266 return new Point(curve, obj[0], obj[1], obj[2]);
31267};
31268
31269Point.prototype.inspect = function inspect() {
31270 if (this.isInfinity())
31271 return '<EC Point Infinity>';
31272 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31273 ' y: ' + this.y.fromRed().toString(16, 2) +
31274 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31275};
31276
31277Point.prototype.isInfinity = function isInfinity() {
31278 // XXX This code assumes that zero is always zero in red
31279 return this.x.cmpn(0) === 0 &&
31280 this.y.cmp(this.z) === 0;
31281};
31282
31283Point.prototype._extDbl = function _extDbl() {
31284 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31285 // #doubling-dbl-2008-hwcd
31286 // 4M + 4S
31287
31288 // A = X1^2
31289 var a = this.x.redSqr();
31290 // B = Y1^2
31291 var b = this.y.redSqr();
31292 // C = 2 * Z1^2
31293 var c = this.z.redSqr();
31294 c = c.redIAdd(c);
31295 // D = a * A
31296 var d = this.curve._mulA(a);
31297 // E = (X1 + Y1)^2 - A - B
31298 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
31299 // G = D + B
31300 var g = d.redAdd(b);
31301 // F = G - C
31302 var f = g.redSub(c);
31303 // H = D - B
31304 var h = d.redSub(b);
31305 // X3 = E * F
31306 var nx = e.redMul(f);
31307 // Y3 = G * H
31308 var ny = g.redMul(h);
31309 // T3 = E * H
31310 var nt = e.redMul(h);
31311 // Z3 = F * G
31312 var nz = f.redMul(g);
31313 return this.curve.point(nx, ny, nz, nt);
31314};
31315
31316Point.prototype._projDbl = function _projDbl() {
31317 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31318 // #doubling-dbl-2008-bbjlp
31319 // #doubling-dbl-2007-bl
31320 // and others
31321 // Generally 3M + 4S or 2M + 4S
31322
31323 // B = (X1 + Y1)^2
31324 var b = this.x.redAdd(this.y).redSqr();
31325 // C = X1^2
31326 var c = this.x.redSqr();
31327 // D = Y1^2
31328 var d = this.y.redSqr();
31329
31330 var nx;
31331 var ny;
31332 var nz;
31333 if (this.curve.twisted) {
31334 // E = a * C
31335 var e = this.curve._mulA(c);
31336 // F = E + D
31337 var f = e.redAdd(d);
31338 if (this.zOne) {
31339 // X3 = (B - C - D) * (F - 2)
31340 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
31341 // Y3 = F * (E - D)
31342 ny = f.redMul(e.redSub(d));
31343 // Z3 = F^2 - 2 * F
31344 nz = f.redSqr().redSub(f).redSub(f);
31345 } else {
31346 // H = Z1^2
31347 var h = this.z.redSqr();
31348 // J = F - 2 * H
31349 var j = f.redSub(h).redISub(h);
31350 // X3 = (B-C-D)*J
31351 nx = b.redSub(c).redISub(d).redMul(j);
31352 // Y3 = F * (E - D)
31353 ny = f.redMul(e.redSub(d));
31354 // Z3 = F * J
31355 nz = f.redMul(j);
31356 }
31357 } else {
31358 // E = C + D
31359 var e = c.redAdd(d);
31360 // H = (c * Z1)^2
31361 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
31362 // J = E - 2 * H
31363 var j = e.redSub(h).redSub(h);
31364 // X3 = c * (B - E) * J
31365 nx = this.curve._mulC(b.redISub(e)).redMul(j);
31366 // Y3 = c * E * (C - D)
31367 ny = this.curve._mulC(e).redMul(c.redISub(d));
31368 // Z3 = E * J
31369 nz = e.redMul(j);
31370 }
31371 return this.curve.point(nx, ny, nz);
31372};
31373
31374Point.prototype.dbl = function dbl() {
31375 if (this.isInfinity())
31376 return this;
31377
31378 // Double in extended coordinates
31379 if (this.curve.extended)
31380 return this._extDbl();
31381 else
31382 return this._projDbl();
31383};
31384
31385Point.prototype._extAdd = function _extAdd(p) {
31386 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31387 // #addition-add-2008-hwcd-3
31388 // 8M
31389
31390 // A = (Y1 - X1) * (Y2 - X2)
31391 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
31392 // B = (Y1 + X1) * (Y2 + X2)
31393 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
31394 // C = T1 * k * T2
31395 var c = this.t.redMul(this.curve.dd).redMul(p.t);
31396 // D = Z1 * 2 * Z2
31397 var d = this.z.redMul(p.z.redAdd(p.z));
31398 // E = B - A
31399 var e = b.redSub(a);
31400 // F = D - C
31401 var f = d.redSub(c);
31402 // G = D + C
31403 var g = d.redAdd(c);
31404 // H = B + A
31405 var h = b.redAdd(a);
31406 // X3 = E * F
31407 var nx = e.redMul(f);
31408 // Y3 = G * H
31409 var ny = g.redMul(h);
31410 // T3 = E * H
31411 var nt = e.redMul(h);
31412 // Z3 = F * G
31413 var nz = f.redMul(g);
31414 return this.curve.point(nx, ny, nz, nt);
31415};
31416
31417Point.prototype._projAdd = function _projAdd(p) {
31418 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31419 // #addition-add-2008-bbjlp
31420 // #addition-add-2007-bl
31421 // 10M + 1S
31422
31423 // A = Z1 * Z2
31424 var a = this.z.redMul(p.z);
31425 // B = A^2
31426 var b = a.redSqr();
31427 // C = X1 * X2
31428 var c = this.x.redMul(p.x);
31429 // D = Y1 * Y2
31430 var d = this.y.redMul(p.y);
31431 // E = d * C * D
31432 var e = this.curve.d.redMul(c).redMul(d);
31433 // F = B - E
31434 var f = b.redSub(e);
31435 // G = B + E
31436 var g = b.redAdd(e);
31437 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
31438 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
31439 var nx = a.redMul(f).redMul(tmp);
31440 var ny;
31441 var nz;
31442 if (this.curve.twisted) {
31443 // Y3 = A * G * (D - a * C)
31444 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
31445 // Z3 = F * G
31446 nz = f.redMul(g);
31447 } else {
31448 // Y3 = A * G * (D - C)
31449 ny = a.redMul(g).redMul(d.redSub(c));
31450 // Z3 = c * F * G
31451 nz = this.curve._mulC(f).redMul(g);
ebd8d4e8 31452 }
8b095871
IC
31453 return this.curve.point(nx, ny, nz);
31454};
ebd8d4e8 31455
8b095871
IC
31456Point.prototype.add = function add(p) {
31457 if (this.isInfinity())
31458 return p;
31459 if (p.isInfinity())
31460 return this;
ebd8d4e8 31461
8b095871
IC
31462 if (this.curve.extended)
31463 return this._extAdd(p);
31464 else
31465 return this._projAdd(p);
31466};
ebd8d4e8 31467
8b095871
IC
31468Point.prototype.mul = function mul(k) {
31469 if (this._hasDoubles(k))
31470 return this.curve._fixedNafMul(this, k);
31471 else
31472 return this.curve._wnafMul(this, k);
31473};
ebd8d4e8 31474
8b095871
IC
31475Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
31476 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
31477};
ebd8d4e8 31478
8b095871
IC
31479Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
31480 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
31481};
ebd8d4e8 31482
8b095871
IC
31483Point.prototype.normalize = function normalize() {
31484 if (this.zOne)
31485 return this;
31486
31487 // Normalize coordinates
31488 var zi = this.z.redInvm();
31489 this.x = this.x.redMul(zi);
31490 this.y = this.y.redMul(zi);
31491 if (this.t)
31492 this.t = this.t.redMul(zi);
31493 this.z = this.curve.one;
31494 this.zOne = true;
31495 return this;
31496};
31497
31498Point.prototype.neg = function neg() {
31499 return this.curve.point(this.x.redNeg(),
31500 this.y,
31501 this.z,
31502 this.t && this.t.redNeg());
31503};
31504
31505Point.prototype.getX = function getX() {
31506 this.normalize();
31507 return this.x.fromRed();
31508};
31509
31510Point.prototype.getY = function getY() {
31511 this.normalize();
31512 return this.y.fromRed();
31513};
31514
31515Point.prototype.eq = function eq(other) {
31516 return this === other ||
31517 this.getX().cmp(other.getX()) === 0 &&
31518 this.getY().cmp(other.getY()) === 0;
31519};
31520
31521Point.prototype.eqXToP = function eqXToP(x) {
31522 var rx = x.toRed(this.curve.red).redMul(this.z);
31523 if (this.x.cmp(rx) === 0)
31524 return true;
ebd8d4e8 31525
8b095871
IC
31526 var xc = x.clone();
31527 var t = this.curve.redN.redMul(this.z);
31528 for (;;) {
31529 xc.iadd(this.curve.n);
31530 if (xc.cmp(this.curve.p) >= 0)
31531 return false;
ebd8d4e8 31532
8b095871
IC
31533 rx.redIAdd(t);
31534 if (this.x.cmp(rx) === 0)
31535 return true;
ebd8d4e8 31536 }
8b095871
IC
31537 return false;
31538};
ebd8d4e8 31539
8b095871
IC
31540// Compatibility with BaseCurve
31541Point.prototype.toP = Point.prototype.normalize;
31542Point.prototype.mixedAdd = Point.prototype.add;
ebd8d4e8 31543
8b095871
IC
31544},{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
31545'use strict';
ebd8d4e8 31546
8b095871 31547var curve = exports;
ebd8d4e8 31548
8b095871
IC
31549curve.base = require('./base');
31550curve.short = require('./short');
31551curve.mont = require('./mont');
31552curve.edwards = require('./edwards');
ebd8d4e8 31553
8b095871
IC
31554},{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
31555'use strict';
ebd8d4e8 31556
8b095871
IC
31557var curve = require('../curve');
31558var BN = require('bn.js');
31559var inherits = require('inherits');
31560var Base = curve.base;
ebd8d4e8 31561
8b095871
IC
31562var elliptic = require('../../elliptic');
31563var utils = elliptic.utils;
ebd8d4e8 31564
8b095871
IC
31565function MontCurve(conf) {
31566 Base.call(this, 'mont', conf);
ebd8d4e8 31567
8b095871
IC
31568 this.a = new BN(conf.a, 16).toRed(this.red);
31569 this.b = new BN(conf.b, 16).toRed(this.red);
31570 this.i4 = new BN(4).toRed(this.red).redInvm();
31571 this.two = new BN(2).toRed(this.red);
31572 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
ebd8d4e8 31573}
8b095871
IC
31574inherits(MontCurve, Base);
31575module.exports = MontCurve;
ebd8d4e8 31576
8b095871
IC
31577MontCurve.prototype.validate = function validate(point) {
31578 var x = point.normalize().x;
31579 var x2 = x.redSqr();
31580 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
31581 var y = rhs.redSqrt();
ebd8d4e8 31582
8b095871
IC
31583 return y.redSqr().cmp(rhs) === 0;
31584};
ebd8d4e8 31585
8b095871
IC
31586function Point(curve, x, z) {
31587 Base.BasePoint.call(this, curve, 'projective');
31588 if (x === null && z === null) {
31589 this.x = this.curve.one;
31590 this.z = this.curve.zero;
31591 } else {
31592 this.x = new BN(x, 16);
31593 this.z = new BN(z, 16);
31594 if (!this.x.red)
31595 this.x = this.x.toRed(this.curve.red);
31596 if (!this.z.red)
31597 this.z = this.z.toRed(this.curve.red);
31598 }
31599}
31600inherits(Point, Base.BasePoint);
ebd8d4e8 31601
8b095871
IC
31602MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31603 return this.point(utils.toArray(bytes, enc), 1);
31604};
ebd8d4e8 31605
8b095871
IC
31606MontCurve.prototype.point = function point(x, z) {
31607 return new Point(this, x, z);
31608};
ebd8d4e8 31609
8b095871
IC
31610MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31611 return Point.fromJSON(this, obj);
31612};
ebd8d4e8 31613
8b095871
IC
31614Point.prototype.precompute = function precompute() {
31615 // No-op
31616};
ebd8d4e8 31617
8b095871
IC
31618Point.prototype._encode = function _encode() {
31619 return this.getX().toArray('be', this.curve.p.byteLength());
31620};
ebd8d4e8 31621
8b095871
IC
31622Point.fromJSON = function fromJSON(curve, obj) {
31623 return new Point(curve, obj[0], obj[1] || curve.one);
31624};
ebd8d4e8 31625
8b095871
IC
31626Point.prototype.inspect = function inspect() {
31627 if (this.isInfinity())
31628 return '<EC Point Infinity>';
31629 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31630 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31631};
ebd8d4e8 31632
8b095871
IC
31633Point.prototype.isInfinity = function isInfinity() {
31634 // XXX This code assumes that zero is always zero in red
31635 return this.z.cmpn(0) === 0;
31636};
ebd8d4e8 31637
8b095871
IC
31638Point.prototype.dbl = function dbl() {
31639 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
31640 // 2M + 2S + 4A
31641
31642 // A = X1 + Z1
31643 var a = this.x.redAdd(this.z);
31644 // AA = A^2
31645 var aa = a.redSqr();
31646 // B = X1 - Z1
31647 var b = this.x.redSub(this.z);
31648 // BB = B^2
31649 var bb = b.redSqr();
31650 // C = AA - BB
31651 var c = aa.redSub(bb);
31652 // X3 = AA * BB
31653 var nx = aa.redMul(bb);
31654 // Z3 = C * (BB + A24 * C)
31655 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
31656 return this.curve.point(nx, nz);
31657};
ebd8d4e8 31658
8b095871
IC
31659Point.prototype.add = function add() {
31660 throw new Error('Not supported on Montgomery curve');
31661};
ebd8d4e8 31662
8b095871
IC
31663Point.prototype.diffAdd = function diffAdd(p, diff) {
31664 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
31665 // 4M + 2S + 6A
31666
31667 // A = X2 + Z2
31668 var a = this.x.redAdd(this.z);
31669 // B = X2 - Z2
31670 var b = this.x.redSub(this.z);
31671 // C = X3 + Z3
31672 var c = p.x.redAdd(p.z);
31673 // D = X3 - Z3
31674 var d = p.x.redSub(p.z);
31675 // DA = D * A
31676 var da = d.redMul(a);
31677 // CB = C * B
31678 var cb = c.redMul(b);
31679 // X5 = Z1 * (DA + CB)^2
31680 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
31681 // Z5 = X1 * (DA - CB)^2
31682 var nz = diff.x.redMul(da.redISub(cb).redSqr());
31683 return this.curve.point(nx, nz);
31684};
ebd8d4e8 31685
8b095871
IC
31686Point.prototype.mul = function mul(k) {
31687 var t = k.clone();
31688 var a = this; // (N / 2) * Q + Q
31689 var b = this.curve.point(null, null); // (N / 2) * Q
31690 var c = this; // Q
31691
31692 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
31693 bits.push(t.andln(1));
31694
31695 for (var i = bits.length - 1; i >= 0; i--) {
31696 if (bits[i] === 0) {
31697 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
31698 a = a.diffAdd(b, c);
31699 // N * Q = 2 * ((N / 2) * Q + Q))
31700 b = b.dbl();
31701 } else {
31702 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
31703 b = a.diffAdd(b, c);
31704 // N * Q + Q = 2 * ((N / 2) * Q + Q)
31705 a = a.dbl();
31706 }
ebd8d4e8 31707 }
8b095871
IC
31708 return b;
31709};
ebd8d4e8 31710
8b095871
IC
31711Point.prototype.mulAdd = function mulAdd() {
31712 throw new Error('Not supported on Montgomery curve');
31713};
ebd8d4e8 31714
8b095871
IC
31715Point.prototype.jumlAdd = function jumlAdd() {
31716 throw new Error('Not supported on Montgomery curve');
31717};
ebd8d4e8 31718
8b095871
IC
31719Point.prototype.eq = function eq(other) {
31720 return this.getX().cmp(other.getX()) === 0;
31721};
ebd8d4e8 31722
8b095871
IC
31723Point.prototype.normalize = function normalize() {
31724 this.x = this.x.redMul(this.z.redInvm());
31725 this.z = this.curve.one;
31726 return this;
31727};
ebd8d4e8 31728
8b095871
IC
31729Point.prototype.getX = function getX() {
31730 // Normalize coordinates
31731 this.normalize();
31732
31733 return this.x.fromRed();
31734};
31735
31736},{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
ab78acc6 31737'use strict';
ebd8d4e8 31738
8b095871
IC
31739var curve = require('../curve');
31740var elliptic = require('../../elliptic');
31741var BN = require('bn.js');
31742var inherits = require('inherits');
31743var Base = curve.base;
ab78acc6 31744
8b095871 31745var assert = elliptic.utils.assert;
ebd8d4e8 31746
8b095871
IC
31747function ShortCurve(conf) {
31748 Base.call(this, 'short', conf);
ebd8d4e8 31749
8b095871
IC
31750 this.a = new BN(conf.a, 16).toRed(this.red);
31751 this.b = new BN(conf.b, 16).toRed(this.red);
31752 this.tinv = this.two.redInvm();
ab78acc6 31753
8b095871
IC
31754 this.zeroA = this.a.fromRed().cmpn(0) === 0;
31755 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
ab78acc6 31756
8b095871
IC
31757 // If the curve is endomorphic, precalculate beta and lambda
31758 this.endo = this._getEndomorphism(conf);
31759 this._endoWnafT1 = new Array(4);
31760 this._endoWnafT2 = new Array(4);
ebd8d4e8 31761}
8b095871
IC
31762inherits(ShortCurve, Base);
31763module.exports = ShortCurve;
ebd8d4e8 31764
8b095871
IC
31765ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
31766 // No efficient endomorphism
31767 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
31768 return;
ebd8d4e8 31769
8b095871
IC
31770 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
31771 var beta;
31772 var lambda;
31773 if (conf.beta) {
31774 beta = new BN(conf.beta, 16).toRed(this.red);
31775 } else {
31776 var betas = this._getEndoRoots(this.p);
31777 // Choose the smallest beta
31778 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
31779 beta = beta.toRed(this.red);
31780 }
31781 if (conf.lambda) {
31782 lambda = new BN(conf.lambda, 16);
31783 } else {
31784 // Choose the lambda that is matching selected beta
31785 var lambdas = this._getEndoRoots(this.n);
31786 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
31787 lambda = lambdas[0];
31788 } else {
31789 lambda = lambdas[1];
31790 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
31791 }
31792 }
ab78acc6 31793
8b095871
IC
31794 // Get basis vectors, used for balanced length-two representation
31795 var basis;
31796 if (conf.basis) {
31797 basis = conf.basis.map(function(vec) {
31798 return {
31799 a: new BN(vec.a, 16),
31800 b: new BN(vec.b, 16)
31801 };
31802 });
31803 } else {
31804 basis = this._getEndoBasis(lambda);
31805 }
ab78acc6 31806
8b095871
IC
31807 return {
31808 beta: beta,
31809 lambda: lambda,
31810 basis: basis
31811 };
31812};
ab78acc6 31813
8b095871
IC
31814ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
31815 // Find roots of for x^2 + x + 1 in F
31816 // Root = (-1 +- Sqrt(-3)) / 2
31817 //
31818 var red = num === this.p ? this.red : BN.mont(num);
31819 var tinv = new BN(2).toRed(red).redInvm();
31820 var ntinv = tinv.redNeg();
ab78acc6 31821
8b095871 31822 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
ab78acc6 31823
8b095871
IC
31824 var l1 = ntinv.redAdd(s).fromRed();
31825 var l2 = ntinv.redSub(s).fromRed();
31826 return [ l1, l2 ];
31827};
ab78acc6 31828
8b095871
IC
31829ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
31830 // aprxSqrt >= sqrt(this.n)
31831 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
31832
31833 // 3.74
31834 // Run EGCD, until r(L + 1) < aprxSqrt
31835 var u = lambda;
31836 var v = this.n.clone();
31837 var x1 = new BN(1);
31838 var y1 = new BN(0);
31839 var x2 = new BN(0);
31840 var y2 = new BN(1);
31841
31842 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
31843 var a0;
31844 var b0;
31845 // First vector
31846 var a1;
31847 var b1;
31848 // Second vector
31849 var a2;
31850 var b2;
31851
31852 var prevR;
31853 var i = 0;
31854 var r;
31855 var x;
31856 while (u.cmpn(0) !== 0) {
31857 var q = v.div(u);
31858 r = v.sub(q.mul(u));
31859 x = x2.sub(q.mul(x1));
31860 var y = y2.sub(q.mul(y1));
31861
31862 if (!a1 && r.cmp(aprxSqrt) < 0) {
31863 a0 = prevR.neg();
31864 b0 = x1;
31865 a1 = r.neg();
31866 b1 = x;
31867 } else if (a1 && ++i === 2) {
31868 break;
ab78acc6 31869 }
8b095871 31870 prevR = r;
ab78acc6 31871
8b095871
IC
31872 v = u;
31873 u = r;
31874 x2 = x1;
31875 x1 = x;
31876 y2 = y1;
31877 y1 = y;
ebd8d4e8 31878 }
8b095871
IC
31879 a2 = r.neg();
31880 b2 = x;
ab78acc6 31881
8b095871
IC
31882 var len1 = a1.sqr().add(b1.sqr());
31883 var len2 = a2.sqr().add(b2.sqr());
31884 if (len2.cmp(len1) >= 0) {
31885 a2 = a0;
31886 b2 = b0;
31887 }
ebd8d4e8 31888
8b095871
IC
31889 // Normalize signs
31890 if (a1.negative) {
31891 a1 = a1.neg();
31892 b1 = b1.neg();
31893 }
31894 if (a2.negative) {
31895 a2 = a2.neg();
31896 b2 = b2.neg();
31897 }
ebd8d4e8 31898
8b095871
IC
31899 return [
31900 { a: a1, b: b1 },
31901 { a: a2, b: b2 }
31902 ];
31903};
ab78acc6 31904
8b095871
IC
31905ShortCurve.prototype._endoSplit = function _endoSplit(k) {
31906 var basis = this.endo.basis;
31907 var v1 = basis[0];
31908 var v2 = basis[1];
ab78acc6 31909
8b095871
IC
31910 var c1 = v2.b.mul(k).divRound(this.n);
31911 var c2 = v1.b.neg().mul(k).divRound(this.n);
ab78acc6 31912
8b095871
IC
31913 var p1 = c1.mul(v1.a);
31914 var p2 = c2.mul(v2.a);
31915 var q1 = c1.mul(v1.b);
31916 var q2 = c2.mul(v2.b);
ab78acc6 31917
8b095871
IC
31918 // Calculate answer
31919 var k1 = k.sub(p1).sub(p2);
31920 var k2 = q1.add(q2).neg();
31921 return { k1: k1, k2: k2 };
31922};
ab78acc6 31923
8b095871
IC
31924ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
31925 x = new BN(x, 16);
31926 if (!x.red)
31927 x = x.toRed(this.red);
ab78acc6 31928
8b095871
IC
31929 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
31930 var y = y2.redSqrt();
31931 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31932 throw new Error('invalid point');
ab78acc6 31933
8b095871
IC
31934 // XXX Is there any way to tell if the number is odd without converting it
31935 // to non-red form?
31936 var isOdd = y.fromRed().isOdd();
31937 if (odd && !isOdd || !odd && isOdd)
31938 y = y.redNeg();
ab78acc6 31939
8b095871
IC
31940 return this.point(x, y);
31941};
ab78acc6 31942
8b095871
IC
31943ShortCurve.prototype.validate = function validate(point) {
31944 if (point.inf)
31945 return true;
ab78acc6 31946
8b095871
IC
31947 var x = point.x;
31948 var y = point.y;
ab78acc6 31949
8b095871
IC
31950 var ax = this.a.redMul(x);
31951 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
31952 return y.redSqr().redISub(rhs).cmpn(0) === 0;
31953};
ab78acc6 31954
8b095871
IC
31955ShortCurve.prototype._endoWnafMulAdd =
31956 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
31957 var npoints = this._endoWnafT1;
31958 var ncoeffs = this._endoWnafT2;
31959 for (var i = 0; i < points.length; i++) {
31960 var split = this._endoSplit(coeffs[i]);
31961 var p = points[i];
31962 var beta = p._getBeta();
ab78acc6 31963
8b095871
IC
31964 if (split.k1.negative) {
31965 split.k1.ineg();
31966 p = p.neg(true);
31967 }
31968 if (split.k2.negative) {
31969 split.k2.ineg();
31970 beta = beta.neg(true);
ab78acc6 31971 }
ab78acc6 31972
8b095871
IC
31973 npoints[i * 2] = p;
31974 npoints[i * 2 + 1] = beta;
31975 ncoeffs[i * 2] = split.k1;
31976 ncoeffs[i * 2 + 1] = split.k2;
31977 }
31978 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
ab78acc6 31979
8b095871
IC
31980 // Clean-up references to points and coefficients
31981 for (var j = 0; j < i * 2; j++) {
31982 npoints[j] = null;
31983 ncoeffs[j] = null;
31984 }
31985 return res;
31986};
31987
31988function Point(curve, x, y, isRed) {
31989 Base.BasePoint.call(this, curve, 'affine');
31990 if (x === null && y === null) {
31991 this.x = null;
31992 this.y = null;
31993 this.inf = true;
31994 } else {
31995 this.x = new BN(x, 16);
31996 this.y = new BN(y, 16);
31997 // Force redgomery representation when loading from JSON
31998 if (isRed) {
31999 this.x.forceRed(this.curve.red);
32000 this.y.forceRed(this.curve.red);
ab78acc6 32001 }
8b095871
IC
32002 if (!this.x.red)
32003 this.x = this.x.toRed(this.curve.red);
32004 if (!this.y.red)
32005 this.y = this.y.toRed(this.curve.red);
32006 this.inf = false;
32007 }
32008}
32009inherits(Point, Base.BasePoint);
ab78acc6 32010
8b095871
IC
32011ShortCurve.prototype.point = function point(x, y, isRed) {
32012 return new Point(this, x, y, isRed);
32013};
ab78acc6 32014
8b095871
IC
32015ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
32016 return Point.fromJSON(this, obj, red);
32017};
ab78acc6 32018
8b095871
IC
32019Point.prototype._getBeta = function _getBeta() {
32020 if (!this.curve.endo)
32021 return;
ab78acc6 32022
8b095871
IC
32023 var pre = this.precomputed;
32024 if (pre && pre.beta)
32025 return pre.beta;
ab78acc6 32026
8b095871
IC
32027 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
32028 if (pre) {
32029 var curve = this.curve;
32030 var endoMul = function(p) {
32031 return curve.point(p.x.redMul(curve.endo.beta), p.y);
32032 };
32033 pre.beta = beta;
32034 beta.precomputed = {
32035 beta: null,
32036 naf: pre.naf && {
32037 wnd: pre.naf.wnd,
32038 points: pre.naf.points.map(endoMul)
32039 },
32040 doubles: pre.doubles && {
32041 step: pre.doubles.step,
32042 points: pre.doubles.points.map(endoMul)
32043 }
ab78acc6 32044 };
ab78acc6 32045 }
8b095871 32046 return beta;
ab78acc6
IC
32047};
32048
8b095871
IC
32049Point.prototype.toJSON = function toJSON() {
32050 if (!this.precomputed)
32051 return [ this.x, this.y ];
ab78acc6 32052
8b095871
IC
32053 return [ this.x, this.y, this.precomputed && {
32054 doubles: this.precomputed.doubles && {
32055 step: this.precomputed.doubles.step,
32056 points: this.precomputed.doubles.points.slice(1)
32057 },
32058 naf: this.precomputed.naf && {
32059 wnd: this.precomputed.naf.wnd,
32060 points: this.precomputed.naf.points.slice(1)
32061 }
32062 } ];
32063};
ab78acc6 32064
8b095871
IC
32065Point.fromJSON = function fromJSON(curve, obj, red) {
32066 if (typeof obj === 'string')
32067 obj = JSON.parse(obj);
32068 var res = curve.point(obj[0], obj[1], red);
32069 if (!obj[2])
32070 return res;
ab78acc6 32071
8b095871
IC
32072 function obj2point(obj) {
32073 return curve.point(obj[0], obj[1], red);
32074 }
32075
32076 var pre = obj[2];
32077 res.precomputed = {
32078 beta: null,
32079 doubles: pre.doubles && {
32080 step: pre.doubles.step,
32081 points: [ res ].concat(pre.doubles.points.map(obj2point))
32082 },
32083 naf: pre.naf && {
32084 wnd: pre.naf.wnd,
32085 points: [ res ].concat(pre.naf.points.map(obj2point))
ab78acc6 32086 }
8b095871
IC
32087 };
32088 return res;
32089};
ab78acc6 32090
8b095871
IC
32091Point.prototype.inspect = function inspect() {
32092 if (this.isInfinity())
32093 return '<EC Point Infinity>';
32094 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
32095 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
32096};
ab78acc6 32097
8b095871
IC
32098Point.prototype.isInfinity = function isInfinity() {
32099 return this.inf;
32100};
ebd8d4e8 32101
8b095871
IC
32102Point.prototype.add = function add(p) {
32103 // O + P = P
32104 if (this.inf)
32105 return p;
ab78acc6 32106
8b095871
IC
32107 // P + O = P
32108 if (p.inf)
32109 return this;
ab78acc6 32110
8b095871
IC
32111 // P + P = 2P
32112 if (this.eq(p))
32113 return this.dbl();
ab78acc6 32114
8b095871
IC
32115 // P + (-P) = O
32116 if (this.neg().eq(p))
32117 return this.curve.point(null, null);
ab78acc6 32118
8b095871
IC
32119 // P + Q = O
32120 if (this.x.cmp(p.x) === 0)
32121 return this.curve.point(null, null);
ebd8d4e8 32122
8b095871
IC
32123 var c = this.y.redSub(p.y);
32124 if (c.cmpn(0) !== 0)
32125 c = c.redMul(this.x.redSub(p.x).redInvm());
32126 var nx = c.redSqr().redISub(this.x).redISub(p.x);
32127 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32128 return this.curve.point(nx, ny);
32129};
ab78acc6 32130
8b095871
IC
32131Point.prototype.dbl = function dbl() {
32132 if (this.inf)
32133 return this;
ebd8d4e8 32134
8b095871
IC
32135 // 2P = O
32136 var ys1 = this.y.redAdd(this.y);
32137 if (ys1.cmpn(0) === 0)
32138 return this.curve.point(null, null);
ebd8d4e8 32139
8b095871 32140 var a = this.curve.a;
ebd8d4e8 32141
8b095871
IC
32142 var x2 = this.x.redSqr();
32143 var dyinv = ys1.redInvm();
32144 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
ebd8d4e8 32145
8b095871
IC
32146 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
32147 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32148 return this.curve.point(nx, ny);
32149};
ebd8d4e8 32150
8b095871
IC
32151Point.prototype.getX = function getX() {
32152 return this.x.fromRed();
32153};
ab78acc6 32154
8b095871
IC
32155Point.prototype.getY = function getY() {
32156 return this.y.fromRed();
32157};
ebd8d4e8 32158
8b095871
IC
32159Point.prototype.mul = function mul(k) {
32160 k = new BN(k, 16);
ebd8d4e8 32161
8b095871
IC
32162 if (this._hasDoubles(k))
32163 return this.curve._fixedNafMul(this, k);
32164 else if (this.curve.endo)
32165 return this.curve._endoWnafMulAdd([ this ], [ k ]);
32166 else
32167 return this.curve._wnafMul(this, k);
32168};
ebd8d4e8 32169
8b095871
IC
32170Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
32171 var points = [ this, p2 ];
32172 var coeffs = [ k1, k2 ];
32173 if (this.curve.endo)
32174 return this.curve._endoWnafMulAdd(points, coeffs);
32175 else
32176 return this.curve._wnafMulAdd(1, points, coeffs, 2);
32177};
ebd8d4e8 32178
8b095871
IC
32179Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
32180 var points = [ this, p2 ];
32181 var coeffs = [ k1, k2 ];
32182 if (this.curve.endo)
32183 return this.curve._endoWnafMulAdd(points, coeffs, true);
32184 else
32185 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
32186};
ebd8d4e8 32187
8b095871
IC
32188Point.prototype.eq = function eq(p) {
32189 return this === p ||
32190 this.inf === p.inf &&
32191 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
32192};
ebd8d4e8 32193
8b095871
IC
32194Point.prototype.neg = function neg(_precompute) {
32195 if (this.inf)
32196 return this;
ebd8d4e8 32197
8b095871
IC
32198 var res = this.curve.point(this.x, this.y.redNeg());
32199 if (_precompute && this.precomputed) {
32200 var pre = this.precomputed;
32201 var negate = function(p) {
32202 return p.neg();
32203 };
32204 res.precomputed = {
32205 naf: pre.naf && {
32206 wnd: pre.naf.wnd,
32207 points: pre.naf.points.map(negate)
32208 },
32209 doubles: pre.doubles && {
32210 step: pre.doubles.step,
32211 points: pre.doubles.points.map(negate)
32212 }
32213 };
32214 }
32215 return res;
32216};
ebd8d4e8 32217
8b095871
IC
32218Point.prototype.toJ = function toJ() {
32219 if (this.inf)
32220 return this.curve.jpoint(null, null, null);
ebd8d4e8 32221
8b095871
IC
32222 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
32223 return res;
32224};
ebd8d4e8 32225
8b095871
IC
32226function JPoint(curve, x, y, z) {
32227 Base.BasePoint.call(this, curve, 'jacobian');
32228 if (x === null && y === null && z === null) {
32229 this.x = this.curve.one;
32230 this.y = this.curve.one;
32231 this.z = new BN(0);
32232 } else {
32233 this.x = new BN(x, 16);
32234 this.y = new BN(y, 16);
32235 this.z = new BN(z, 16);
32236 }
32237 if (!this.x.red)
32238 this.x = this.x.toRed(this.curve.red);
32239 if (!this.y.red)
32240 this.y = this.y.toRed(this.curve.red);
32241 if (!this.z.red)
32242 this.z = this.z.toRed(this.curve.red);
ebd8d4e8 32243
8b095871 32244 this.zOne = this.z === this.curve.one;
ab78acc6 32245}
8b095871 32246inherits(JPoint, Base.BasePoint);
ab78acc6 32247
8b095871
IC
32248ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
32249 return new JPoint(this, x, y, z);
32250};
ab78acc6 32251
8b095871
IC
32252JPoint.prototype.toP = function toP() {
32253 if (this.isInfinity())
32254 return this.curve.point(null, null);
ab78acc6 32255
8b095871
IC
32256 var zinv = this.z.redInvm();
32257 var zinv2 = zinv.redSqr();
32258 var ax = this.x.redMul(zinv2);
32259 var ay = this.y.redMul(zinv2).redMul(zinv);
ab78acc6 32260
8b095871
IC
32261 return this.curve.point(ax, ay);
32262};
ab78acc6 32263
8b095871
IC
32264JPoint.prototype.neg = function neg() {
32265 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
32266};
ab78acc6 32267
8b095871
IC
32268JPoint.prototype.add = function add(p) {
32269 // O + P = P
32270 if (this.isInfinity())
32271 return p;
ab78acc6 32272
8b095871
IC
32273 // P + O = P
32274 if (p.isInfinity())
32275 return this;
ab78acc6 32276
8b095871
IC
32277 // 12M + 4S + 7A
32278 var pz2 = p.z.redSqr();
32279 var z2 = this.z.redSqr();
32280 var u1 = this.x.redMul(pz2);
32281 var u2 = p.x.redMul(z2);
32282 var s1 = this.y.redMul(pz2.redMul(p.z));
32283 var s2 = p.y.redMul(z2.redMul(this.z));
32284
32285 var h = u1.redSub(u2);
32286 var r = s1.redSub(s2);
32287 if (h.cmpn(0) === 0) {
32288 if (r.cmpn(0) !== 0)
32289 return this.curve.jpoint(null, null, null);
32290 else
32291 return this.dbl();
32292 }
ab78acc6 32293
8b095871
IC
32294 var h2 = h.redSqr();
32295 var h3 = h2.redMul(h);
32296 var v = u1.redMul(h2);
ab78acc6 32297
8b095871
IC
32298 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32299 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32300 var nz = this.z.redMul(p.z).redMul(h);
ab78acc6 32301
8b095871
IC
32302 return this.curve.jpoint(nx, ny, nz);
32303};
ab78acc6 32304
8b095871
IC
32305JPoint.prototype.mixedAdd = function mixedAdd(p) {
32306 // O + P = P
32307 if (this.isInfinity())
32308 return p.toJ();
ab78acc6 32309
8b095871
IC
32310 // P + O = P
32311 if (p.isInfinity())
32312 return this;
ab78acc6 32313
8b095871
IC
32314 // 8M + 3S + 7A
32315 var z2 = this.z.redSqr();
32316 var u1 = this.x;
32317 var u2 = p.x.redMul(z2);
32318 var s1 = this.y;
32319 var s2 = p.y.redMul(z2).redMul(this.z);
32320
32321 var h = u1.redSub(u2);
32322 var r = s1.redSub(s2);
32323 if (h.cmpn(0) === 0) {
32324 if (r.cmpn(0) !== 0)
32325 return this.curve.jpoint(null, null, null);
32326 else
32327 return this.dbl();
ab78acc6
IC
32328 }
32329
8b095871
IC
32330 var h2 = h.redSqr();
32331 var h3 = h2.redMul(h);
32332 var v = u1.redMul(h2);
ab78acc6 32333
8b095871
IC
32334 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32335 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32336 var nz = this.z.redMul(h);
ab78acc6 32337
8b095871
IC
32338 return this.curve.jpoint(nx, ny, nz);
32339};
ab78acc6 32340
8b095871
IC
32341JPoint.prototype.dblp = function dblp(pow) {
32342 if (pow === 0)
32343 return this;
32344 if (this.isInfinity())
32345 return this;
32346 if (!pow)
32347 return this.dbl();
32348
32349 if (this.curve.zeroA || this.curve.threeA) {
32350 var r = this;
32351 for (var i = 0; i < pow; i++)
32352 r = r.dbl();
32353 return r;
32354 }
32355
32356 // 1M + 2S + 1A + N * (4S + 5M + 8A)
32357 // N = 1 => 6M + 6S + 9A
32358 var a = this.curve.a;
32359 var tinv = this.curve.tinv;
32360
32361 var jx = this.x;
32362 var jy = this.y;
32363 var jz = this.z;
32364 var jz4 = jz.redSqr().redSqr();
32365
32366 // Reuse results
32367 var jyd = jy.redAdd(jy);
32368 for (var i = 0; i < pow; i++) {
32369 var jx2 = jx.redSqr();
32370 var jyd2 = jyd.redSqr();
32371 var jyd4 = jyd2.redSqr();
32372 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32373
32374 var t1 = jx.redMul(jyd2);
32375 var nx = c.redSqr().redISub(t1.redAdd(t1));
32376 var t2 = t1.redISub(nx);
32377 var dny = c.redMul(t2);
32378 dny = dny.redIAdd(dny).redISub(jyd4);
32379 var nz = jyd.redMul(jz);
32380 if (i + 1 < pow)
32381 jz4 = jz4.redMul(jyd4);
32382
32383 jx = nx;
32384 jz = nz;
32385 jyd = dny;
32386 }
32387
32388 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
32389};
ab78acc6 32390
8b095871
IC
32391JPoint.prototype.dbl = function dbl() {
32392 if (this.isInfinity())
32393 return this;
ab78acc6 32394
8b095871
IC
32395 if (this.curve.zeroA)
32396 return this._zeroDbl();
32397 else if (this.curve.threeA)
32398 return this._threeDbl();
32399 else
32400 return this._dbl();
32401};
ab78acc6 32402
8b095871
IC
32403JPoint.prototype._zeroDbl = function _zeroDbl() {
32404 var nx;
32405 var ny;
32406 var nz;
32407 // Z = 1
32408 if (this.zOne) {
32409 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32410 // #doubling-mdbl-2007-bl
32411 // 1M + 5S + 14A
32412
32413 // XX = X1^2
32414 var xx = this.x.redSqr();
32415 // YY = Y1^2
32416 var yy = this.y.redSqr();
32417 // YYYY = YY^2
32418 var yyyy = yy.redSqr();
32419 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32420 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32421 s = s.redIAdd(s);
32422 // M = 3 * XX + a; a = 0
32423 var m = xx.redAdd(xx).redIAdd(xx);
32424 // T = M ^ 2 - 2*S
32425 var t = m.redSqr().redISub(s).redISub(s);
32426
32427 // 8 * YYYY
32428 var yyyy8 = yyyy.redIAdd(yyyy);
32429 yyyy8 = yyyy8.redIAdd(yyyy8);
32430 yyyy8 = yyyy8.redIAdd(yyyy8);
32431
32432 // X3 = T
32433 nx = t;
32434 // Y3 = M * (S - T) - 8 * YYYY
32435 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32436 // Z3 = 2*Y1
32437 nz = this.y.redAdd(this.y);
32438 } else {
32439 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32440 // #doubling-dbl-2009-l
32441 // 2M + 5S + 13A
32442
32443 // A = X1^2
32444 var a = this.x.redSqr();
32445 // B = Y1^2
32446 var b = this.y.redSqr();
32447 // C = B^2
32448 var c = b.redSqr();
32449 // D = 2 * ((X1 + B)^2 - A - C)
32450 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
32451 d = d.redIAdd(d);
32452 // E = 3 * A
32453 var e = a.redAdd(a).redIAdd(a);
32454 // F = E^2
32455 var f = e.redSqr();
32456
32457 // 8 * C
32458 var c8 = c.redIAdd(c);
32459 c8 = c8.redIAdd(c8);
32460 c8 = c8.redIAdd(c8);
32461
32462 // X3 = F - 2 * D
32463 nx = f.redISub(d).redISub(d);
32464 // Y3 = E * (D - X3) - 8 * C
32465 ny = e.redMul(d.redISub(nx)).redISub(c8);
32466 // Z3 = 2 * Y1 * Z1
32467 nz = this.y.redMul(this.z);
32468 nz = nz.redIAdd(nz);
32469 }
32470
32471 return this.curve.jpoint(nx, ny, nz);
32472};
ab78acc6 32473
8b095871
IC
32474JPoint.prototype._threeDbl = function _threeDbl() {
32475 var nx;
32476 var ny;
32477 var nz;
32478 // Z = 1
32479 if (this.zOne) {
32480 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
32481 // #doubling-mdbl-2007-bl
32482 // 1M + 5S + 15A
32483
32484 // XX = X1^2
32485 var xx = this.x.redSqr();
32486 // YY = Y1^2
32487 var yy = this.y.redSqr();
32488 // YYYY = YY^2
32489 var yyyy = yy.redSqr();
32490 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32491 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32492 s = s.redIAdd(s);
32493 // M = 3 * XX + a
32494 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
32495 // T = M^2 - 2 * S
32496 var t = m.redSqr().redISub(s).redISub(s);
32497 // X3 = T
32498 nx = t;
32499 // Y3 = M * (S - T) - 8 * YYYY
32500 var yyyy8 = yyyy.redIAdd(yyyy);
32501 yyyy8 = yyyy8.redIAdd(yyyy8);
32502 yyyy8 = yyyy8.redIAdd(yyyy8);
32503 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32504 // Z3 = 2 * Y1
32505 nz = this.y.redAdd(this.y);
32506 } else {
32507 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
32508 // 3M + 5S
32509
32510 // delta = Z1^2
32511 var delta = this.z.redSqr();
32512 // gamma = Y1^2
32513 var gamma = this.y.redSqr();
32514 // beta = X1 * gamma
32515 var beta = this.x.redMul(gamma);
32516 // alpha = 3 * (X1 - delta) * (X1 + delta)
32517 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
32518 alpha = alpha.redAdd(alpha).redIAdd(alpha);
32519 // X3 = alpha^2 - 8 * beta
32520 var beta4 = beta.redIAdd(beta);
32521 beta4 = beta4.redIAdd(beta4);
32522 var beta8 = beta4.redAdd(beta4);
32523 nx = alpha.redSqr().redISub(beta8);
32524 // Z3 = (Y1 + Z1)^2 - gamma - delta
32525 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
32526 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
32527 var ggamma8 = gamma.redSqr();
32528 ggamma8 = ggamma8.redIAdd(ggamma8);
32529 ggamma8 = ggamma8.redIAdd(ggamma8);
32530 ggamma8 = ggamma8.redIAdd(ggamma8);
32531 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
32532 }
32533
32534 return this.curve.jpoint(nx, ny, nz);
32535};
ab78acc6 32536
8b095871
IC
32537JPoint.prototype._dbl = function _dbl() {
32538 var a = this.curve.a;
ab78acc6 32539
8b095871
IC
32540 // 4M + 6S + 10A
32541 var jx = this.x;
32542 var jy = this.y;
32543 var jz = this.z;
32544 var jz4 = jz.redSqr().redSqr();
ab78acc6 32545
8b095871
IC
32546 var jx2 = jx.redSqr();
32547 var jy2 = jy.redSqr();
ebd8d4e8 32548
8b095871 32549 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
ebd8d4e8 32550
8b095871
IC
32551 var jxd4 = jx.redAdd(jx);
32552 jxd4 = jxd4.redIAdd(jxd4);
32553 var t1 = jxd4.redMul(jy2);
32554 var nx = c.redSqr().redISub(t1.redAdd(t1));
32555 var t2 = t1.redISub(nx);
ebd8d4e8 32556
8b095871
IC
32557 var jyd8 = jy2.redSqr();
32558 jyd8 = jyd8.redIAdd(jyd8);
32559 jyd8 = jyd8.redIAdd(jyd8);
32560 jyd8 = jyd8.redIAdd(jyd8);
32561 var ny = c.redMul(t2).redISub(jyd8);
32562 var nz = jy.redAdd(jy).redMul(jz);
ebd8d4e8 32563
8b095871
IC
32564 return this.curve.jpoint(nx, ny, nz);
32565};
ebd8d4e8 32566
8b095871
IC
32567JPoint.prototype.trpl = function trpl() {
32568 if (!this.curve.zeroA)
32569 return this.dbl().add(this);
32570
32571 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
32572 // 5M + 10S + ...
32573
32574 // XX = X1^2
32575 var xx = this.x.redSqr();
32576 // YY = Y1^2
32577 var yy = this.y.redSqr();
32578 // ZZ = Z1^2
32579 var zz = this.z.redSqr();
32580 // YYYY = YY^2
32581 var yyyy = yy.redSqr();
32582 // M = 3 * XX + a * ZZ2; a = 0
32583 var m = xx.redAdd(xx).redIAdd(xx);
32584 // MM = M^2
32585 var mm = m.redSqr();
32586 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
32587 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32588 e = e.redIAdd(e);
32589 e = e.redAdd(e).redIAdd(e);
32590 e = e.redISub(mm);
32591 // EE = E^2
32592 var ee = e.redSqr();
32593 // T = 16*YYYY
32594 var t = yyyy.redIAdd(yyyy);
32595 t = t.redIAdd(t);
32596 t = t.redIAdd(t);
32597 t = t.redIAdd(t);
32598 // U = (M + E)^2 - MM - EE - T
32599 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
32600 // X3 = 4 * (X1 * EE - 4 * YY * U)
32601 var yyu4 = yy.redMul(u);
32602 yyu4 = yyu4.redIAdd(yyu4);
32603 yyu4 = yyu4.redIAdd(yyu4);
32604 var nx = this.x.redMul(ee).redISub(yyu4);
32605 nx = nx.redIAdd(nx);
32606 nx = nx.redIAdd(nx);
32607 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
32608 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
32609 ny = ny.redIAdd(ny);
32610 ny = ny.redIAdd(ny);
32611 ny = ny.redIAdd(ny);
32612 // Z3 = (Z1 + E)^2 - ZZ - EE
32613 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
32614
32615 return this.curve.jpoint(nx, ny, nz);
32616};
ebd8d4e8 32617
8b095871
IC
32618JPoint.prototype.mul = function mul(k, kbase) {
32619 k = new BN(k, kbase);
ebd8d4e8 32620
8b095871
IC
32621 return this.curve._wnafMul(this, k);
32622};
ebd8d4e8 32623
8b095871
IC
32624JPoint.prototype.eq = function eq(p) {
32625 if (p.type === 'affine')
32626 return this.eq(p.toJ());
ebd8d4e8 32627
8b095871
IC
32628 if (this === p)
32629 return true;
ebd8d4e8 32630
8b095871
IC
32631 // x1 * z2^2 == x2 * z1^2
32632 var z2 = this.z.redSqr();
32633 var pz2 = p.z.redSqr();
32634 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
32635 return false;
ebd8d4e8 32636
8b095871
IC
32637 // y1 * z2^3 == y2 * z1^3
32638 var z3 = z2.redMul(this.z);
32639 var pz3 = pz2.redMul(p.z);
32640 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
32641};
ab78acc6 32642
8b095871
IC
32643JPoint.prototype.eqXToP = function eqXToP(x) {
32644 var zs = this.z.redSqr();
32645 var rx = x.toRed(this.curve.red).redMul(zs);
32646 if (this.x.cmp(rx) === 0)
32647 return true;
ebd8d4e8 32648
8b095871
IC
32649 var xc = x.clone();
32650 var t = this.curve.redN.redMul(zs);
32651 for (;;) {
32652 xc.iadd(this.curve.n);
32653 if (xc.cmp(this.curve.p) >= 0)
32654 return false;
ebd8d4e8 32655
8b095871
IC
32656 rx.redIAdd(t);
32657 if (this.x.cmp(rx) === 0)
32658 return true;
32659 }
32660 return false;
32661};
ebd8d4e8 32662
8b095871
IC
32663JPoint.prototype.inspect = function inspect() {
32664 if (this.isInfinity())
32665 return '<EC JPoint Infinity>';
32666 return '<EC JPoint x: ' + this.x.toString(16, 2) +
32667 ' y: ' + this.y.toString(16, 2) +
32668 ' z: ' + this.z.toString(16, 2) + '>';
32669};
ebd8d4e8 32670
8b095871
IC
32671JPoint.prototype.isInfinity = function isInfinity() {
32672 // XXX This code assumes that zero is always zero in red
32673 return this.z.cmpn(0) === 0;
32674};
ebd8d4e8 32675
8b095871
IC
32676},{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
32677'use strict';
ebd8d4e8 32678
8b095871 32679var curves = exports;
ebd8d4e8 32680
8b095871
IC
32681var hash = require('hash.js');
32682var elliptic = require('../elliptic');
ebd8d4e8 32683
8b095871 32684var assert = elliptic.utils.assert;
ebd8d4e8 32685
8b095871
IC
32686function PresetCurve(options) {
32687 if (options.type === 'short')
32688 this.curve = new elliptic.curve.short(options);
32689 else if (options.type === 'edwards')
32690 this.curve = new elliptic.curve.edwards(options);
32691 else
32692 this.curve = new elliptic.curve.mont(options);
32693 this.g = this.curve.g;
32694 this.n = this.curve.n;
32695 this.hash = options.hash;
32696
32697 assert(this.g.validate(), 'Invalid curve');
32698 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
32699}
32700curves.PresetCurve = PresetCurve;
32701
32702function defineCurve(name, options) {
32703 Object.defineProperty(curves, name, {
32704 configurable: true,
32705 enumerable: true,
32706 get: function() {
32707 var curve = new PresetCurve(options);
32708 Object.defineProperty(curves, name, {
32709 configurable: true,
32710 enumerable: true,
32711 value: curve
32712 });
32713 return curve;
32714 }
32715 });
ebd8d4e8
IC
32716}
32717
8b095871
IC
32718defineCurve('p192', {
32719 type: 'short',
32720 prime: 'p192',
32721 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
32722 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
32723 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
32724 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
32725 hash: hash.sha256,
32726 gRed: false,
32727 g: [
32728 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
32729 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
32730 ]
32731});
ebd8d4e8 32732
8b095871
IC
32733defineCurve('p224', {
32734 type: 'short',
32735 prime: 'p224',
32736 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
32737 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
32738 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
32739 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
32740 hash: hash.sha256,
32741 gRed: false,
32742 g: [
32743 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
32744 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
32745 ]
32746});
ebd8d4e8 32747
8b095871
IC
32748defineCurve('p256', {
32749 type: 'short',
32750 prime: null,
32751 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
32752 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
32753 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
32754 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
32755 hash: hash.sha256,
32756 gRed: false,
32757 g: [
32758 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
32759 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
32760 ]
32761});
ebd8d4e8 32762
8b095871
IC
32763defineCurve('p384', {
32764 type: 'short',
32765 prime: null,
32766 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32767 'fffffffe ffffffff 00000000 00000000 ffffffff',
32768 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32769 'fffffffe ffffffff 00000000 00000000 fffffffc',
32770 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
32771 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
32772 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
32773 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
32774 hash: hash.sha384,
32775 gRed: false,
32776 g: [
32777 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
32778 '5502f25d bf55296c 3a545e38 72760ab7',
32779 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
32780 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
32781 ]
32782});
ebd8d4e8 32783
8b095871
IC
32784defineCurve('p521', {
32785 type: 'short',
32786 prime: null,
32787 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32788 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32789 'ffffffff ffffffff ffffffff ffffffff ffffffff',
32790 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32791 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32792 'ffffffff ffffffff ffffffff ffffffff fffffffc',
32793 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
32794 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
32795 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
32796 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32797 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
32798 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
32799 hash: hash.sha512,
32800 gRed: false,
32801 g: [
32802 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
32803 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
32804 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
32805 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
32806 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
32807 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
32808 ]
32809});
ebd8d4e8 32810
8b095871
IC
32811defineCurve('curve25519', {
32812 type: 'mont',
32813 prime: 'p25519',
32814 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32815 a: '76d06',
32816 b: '1',
32817 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32818 hash: hash.sha256,
32819 gRed: false,
32820 g: [
32821 '9'
32822 ]
32823});
ebd8d4e8 32824
8b095871
IC
32825defineCurve('ed25519', {
32826 type: 'edwards',
32827 prime: 'p25519',
32828 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32829 a: '-1',
32830 c: '1',
32831 // -121665 * (121666^(-1)) (mod P)
32832 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
32833 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32834 hash: hash.sha256,
32835 gRed: false,
32836 g: [
32837 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
32838
32839 // 4/5
32840 '6666666666666666666666666666666666666666666666666666666666666658'
32841 ]
32842});
ebd8d4e8 32843
8b095871
IC
32844var pre;
32845try {
32846 pre = require('./precomputed/secp256k1');
32847} catch (e) {
32848 pre = undefined;
32849}
32850
32851defineCurve('secp256k1', {
32852 type: 'short',
32853 prime: 'k256',
32854 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
32855 a: '0',
32856 b: '7',
32857 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
32858 h: '1',
32859 hash: hash.sha256,
32860
32861 // Precomputed endomorphism
32862 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
32863 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
32864 basis: [
32865 {
32866 a: '3086d221a7d46bcde86c90e49284eb15',
32867 b: '-e4437ed6010e88286f547fa90abfe4c3'
32868 },
32869 {
32870 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
32871 b: '3086d221a7d46bcde86c90e49284eb15'
32872 }
32873 ],
ebd8d4e8 32874
8b095871
IC
32875 gRed: false,
32876 g: [
32877 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
32878 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
32879 pre
32880 ]
32881});
ebd8d4e8 32882
8b095871
IC
32883},{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
32884'use strict';
ebd8d4e8 32885
8b095871
IC
32886var BN = require('bn.js');
32887var elliptic = require('../../elliptic');
32888var utils = elliptic.utils;
32889var assert = utils.assert;
ebd8d4e8 32890
8b095871
IC
32891var KeyPair = require('./key');
32892var Signature = require('./signature');
ebd8d4e8 32893
8b095871
IC
32894function EC(options) {
32895 if (!(this instanceof EC))
32896 return new EC(options);
ebd8d4e8 32897
8b095871
IC
32898 // Shortcut `elliptic.ec(curve-name)`
32899 if (typeof options === 'string') {
32900 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
32901
32902 options = elliptic.curves[options];
ebd8d4e8
IC
32903 }
32904
8b095871
IC
32905 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
32906 if (options instanceof elliptic.curves.PresetCurve)
32907 options = { curve: options };
ebd8d4e8 32908
8b095871
IC
32909 this.curve = options.curve.curve;
32910 this.n = this.curve.n;
32911 this.nh = this.n.ushrn(1);
32912 this.g = this.curve.g;
ebd8d4e8 32913
8b095871
IC
32914 // Point on curve
32915 this.g = options.curve.g;
32916 this.g.precompute(options.curve.n.bitLength() + 1);
ebd8d4e8 32917
8b095871
IC
32918 // Hash for function for DRBG
32919 this.hash = options.hash || options.curve.hash;
ebd8d4e8 32920}
8b095871 32921module.exports = EC;
ebd8d4e8 32922
8b095871
IC
32923EC.prototype.keyPair = function keyPair(options) {
32924 return new KeyPair(this, options);
32925};
32926
32927EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
32928 return KeyPair.fromPrivate(this, priv, enc);
32929};
32930
32931EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
32932 return KeyPair.fromPublic(this, pub, enc);
32933};
32934
32935EC.prototype.genKeyPair = function genKeyPair(options) {
32936 if (!options)
32937 options = {};
32938
32939 // Instantiate Hmac_DRBG
32940 var drbg = new elliptic.hmacDRBG({
32941 hash: this.hash,
32942 pers: options.pers,
32943 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
32944 nonce: this.n.toArray()
32945 });
ebd8d4e8 32946
8b095871
IC
32947 var bytes = this.n.byteLength();
32948 var ns2 = this.n.sub(new BN(2));
32949 do {
32950 var priv = new BN(drbg.generate(bytes));
32951 if (priv.cmp(ns2) > 0)
32952 continue;
ebd8d4e8 32953
8b095871
IC
32954 priv.iaddn(1);
32955 return this.keyFromPrivate(priv);
32956 } while (true);
32957};
ebd8d4e8 32958
8b095871
IC
32959EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
32960 var delta = msg.byteLength() * 8 - this.n.bitLength();
32961 if (delta > 0)
32962 msg = msg.ushrn(delta);
32963 if (!truncOnly && msg.cmp(this.n) >= 0)
32964 return msg.sub(this.n);
32965 else
32966 return msg;
32967};
ebd8d4e8 32968
8b095871
IC
32969EC.prototype.sign = function sign(msg, key, enc, options) {
32970 if (typeof enc === 'object') {
32971 options = enc;
32972 enc = null;
ebd8d4e8 32973 }
8b095871
IC
32974 if (!options)
32975 options = {};
ebd8d4e8 32976
8b095871
IC
32977 key = this.keyFromPrivate(key, enc);
32978 msg = this._truncateToN(new BN(msg, 16));
ebd8d4e8 32979
8b095871
IC
32980 // Zero-extend key to provide enough entropy
32981 var bytes = this.n.byteLength();
32982 var bkey = key.getPrivate().toArray('be', bytes);
ab78acc6 32983
8b095871
IC
32984 // Zero-extend nonce to have the same byte size as N
32985 var nonce = msg.toArray('be', bytes);
ab78acc6 32986
8b095871
IC
32987 // Instantiate Hmac_DRBG
32988 var drbg = new elliptic.hmacDRBG({
32989 hash: this.hash,
32990 entropy: bkey,
32991 nonce: nonce,
32992 pers: options.pers,
32993 persEnc: options.persEnc
32994 });
ab78acc6 32995
8b095871
IC
32996 // Number of bytes to generate
32997 var ns1 = this.n.sub(new BN(1));
ebd8d4e8 32998
8b095871
IC
32999 for (var iter = 0; true; iter++) {
33000 var k = options.k ?
33001 options.k(iter) :
33002 new BN(drbg.generate(this.n.byteLength()));
33003 k = this._truncateToN(k, true);
33004 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
33005 continue;
ebd8d4e8 33006
8b095871
IC
33007 var kp = this.g.mul(k);
33008 if (kp.isInfinity())
33009 continue;
ebd8d4e8 33010
8b095871
IC
33011 var kpX = kp.getX();
33012 var r = kpX.umod(this.n);
33013 if (r.cmpn(0) === 0)
33014 continue;
ebd8d4e8 33015
8b095871
IC
33016 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
33017 s = s.umod(this.n);
33018 if (s.cmpn(0) === 0)
33019 continue;
ebd8d4e8 33020
8b095871
IC
33021 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
33022 (kpX.cmp(r) !== 0 ? 2 : 0);
ebd8d4e8 33023
8b095871
IC
33024 // Use complement of `s`, if it is > `n / 2`
33025 if (options.canonical && s.cmp(this.nh) > 0) {
33026 s = this.n.sub(s);
33027 recoveryParam ^= 1;
33028 }
ebd8d4e8 33029
8b095871
IC
33030 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
33031 }
33032};
ebd8d4e8 33033
8b095871
IC
33034EC.prototype.verify = function verify(msg, signature, key, enc) {
33035 msg = this._truncateToN(new BN(msg, 16));
33036 key = this.keyFromPublic(key, enc);
33037 signature = new Signature(signature, 'hex');
ebd8d4e8 33038
8b095871
IC
33039 // Perform primitive values validation
33040 var r = signature.r;
33041 var s = signature.s;
33042 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
33043 return false;
33044 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
33045 return false;
ebd8d4e8 33046
8b095871
IC
33047 // Validate signature
33048 var sinv = s.invm(this.n);
33049 var u1 = sinv.mul(msg).umod(this.n);
33050 var u2 = sinv.mul(r).umod(this.n);
ebd8d4e8 33051
8b095871
IC
33052 if (!this.curve._maxwellTrick) {
33053 var p = this.g.mulAdd(u1, key.getPublic(), u2);
33054 if (p.isInfinity())
33055 return false;
ebd8d4e8 33056
8b095871
IC
33057 return p.getX().umod(this.n).cmp(r) === 0;
33058 }
ab78acc6 33059
8b095871
IC
33060 // NOTE: Greg Maxwell's trick, inspired by:
33061 // https://git.io/vad3K
ebd8d4e8 33062
8b095871
IC
33063 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
33064 if (p.isInfinity())
33065 return false;
ab78acc6 33066
8b095871
IC
33067 // Compare `p.x` of Jacobian point with `r`,
33068 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
33069 // inverse of `p.z^2`
33070 return p.eqXToP(r);
33071};
ab78acc6 33072
8b095871
IC
33073EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
33074 assert((3 & j) === j, 'The recovery param is more than two bits');
33075 signature = new Signature(signature, enc);
ab78acc6 33076
8b095871
IC
33077 var n = this.n;
33078 var e = new BN(msg);
33079 var r = signature.r;
33080 var s = signature.s;
ab78acc6 33081
8b095871
IC
33082 // A set LSB signifies that the y-coordinate is odd
33083 var isYOdd = j & 1;
33084 var isSecondKey = j >> 1;
33085 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
33086 throw new Error('Unable to find sencond key candinate');
33087
33088 // 1.1. Let x = r + jn.
33089 if (isSecondKey)
33090 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
33091 else
33092 r = this.curve.pointFromX(r, isYOdd);
ab78acc6 33093
8b095871
IC
33094 var rInv = signature.r.invm(n);
33095 var s1 = n.sub(e).mul(rInv).umod(n);
33096 var s2 = s.mul(rInv).umod(n);
ab78acc6 33097
8b095871
IC
33098 // 1.6.1 Compute Q = r^-1 (sR - eG)
33099 // Q = r^-1 (sR + -eG)
33100 return this.g.mulAdd(s1, r, s2);
33101};
ab78acc6 33102
8b095871
IC
33103EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
33104 signature = new Signature(signature, enc);
33105 if (signature.recoveryParam !== null)
33106 return signature.recoveryParam;
ab78acc6 33107
8b095871
IC
33108 for (var i = 0; i < 4; i++) {
33109 var Qprime;
33110 try {
33111 Qprime = this.recoverPubKey(e, signature, i);
33112 } catch (e) {
33113 continue;
ab78acc6 33114 }
ab78acc6 33115
8b095871
IC
33116 if (Qprime.eq(Q))
33117 return i;
33118 }
33119 throw new Error('Unable to find valid recovery factor');
33120};
ebd8d4e8 33121
8b095871
IC
33122},{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
33123'use strict';
ebd8d4e8 33124
8b095871
IC
33125var BN = require('bn.js');
33126var elliptic = require('../../elliptic');
33127var utils = elliptic.utils;
33128var assert = utils.assert;
ebd8d4e8 33129
8b095871
IC
33130function KeyPair(ec, options) {
33131 this.ec = ec;
33132 this.priv = null;
33133 this.pub = null;
ebd8d4e8 33134
8b095871
IC
33135 // KeyPair(ec, { priv: ..., pub: ... })
33136 if (options.priv)
33137 this._importPrivate(options.priv, options.privEnc);
33138 if (options.pub)
33139 this._importPublic(options.pub, options.pubEnc);
33140}
33141module.exports = KeyPair;
ebd8d4e8 33142
8b095871
IC
33143KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
33144 if (pub instanceof KeyPair)
33145 return pub;
ebd8d4e8 33146
8b095871
IC
33147 return new KeyPair(ec, {
33148 pub: pub,
33149 pubEnc: enc
33150 });
33151};
ebd8d4e8 33152
8b095871
IC
33153KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
33154 if (priv instanceof KeyPair)
33155 return priv;
ebd8d4e8 33156
8b095871
IC
33157 return new KeyPair(ec, {
33158 priv: priv,
33159 privEnc: enc
33160 });
33161};
ebd8d4e8 33162
8b095871
IC
33163KeyPair.prototype.validate = function validate() {
33164 var pub = this.getPublic();
ebd8d4e8 33165
8b095871
IC
33166 if (pub.isInfinity())
33167 return { result: false, reason: 'Invalid public key' };
33168 if (!pub.validate())
33169 return { result: false, reason: 'Public key is not a point' };
33170 if (!pub.mul(this.ec.curve.n).isInfinity())
33171 return { result: false, reason: 'Public key * N != O' };
ab78acc6 33172
8b095871
IC
33173 return { result: true, reason: null };
33174};
ebd8d4e8 33175
8b095871
IC
33176KeyPair.prototype.getPublic = function getPublic(compact, enc) {
33177 // compact is optional argument
33178 if (typeof compact === 'string') {
33179 enc = compact;
33180 compact = null;
ebd8d4e8
IC
33181 }
33182
8b095871
IC
33183 if (!this.pub)
33184 this.pub = this.ec.g.mul(this.priv);
ebd8d4e8 33185
8b095871
IC
33186 if (!enc)
33187 return this.pub;
ebd8d4e8 33188
8b095871
IC
33189 return this.pub.encode(enc, compact);
33190};
ebd8d4e8 33191
8b095871
IC
33192KeyPair.prototype.getPrivate = function getPrivate(enc) {
33193 if (enc === 'hex')
33194 return this.priv.toString(16, 2);
33195 else
33196 return this.priv;
33197};
ab78acc6 33198
8b095871
IC
33199KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
33200 this.priv = new BN(key, enc || 16);
ab78acc6 33201
8b095871
IC
33202 // Ensure that the priv won't be bigger than n, otherwise we may fail
33203 // in fixed multiplication method
33204 this.priv = this.priv.umod(this.ec.curve.n);
33205};
ab78acc6 33206
8b095871
IC
33207KeyPair.prototype._importPublic = function _importPublic(key, enc) {
33208 if (key.x || key.y) {
33209 // Montgomery points only have an `x` coordinate.
33210 // Weierstrass/Edwards points on the other hand have both `x` and
33211 // `y` coordinates.
33212 if (this.ec.curve.type === 'mont') {
33213 assert(key.x, 'Need x coordinate');
33214 } else if (this.ec.curve.type === 'short' ||
33215 this.ec.curve.type === 'edwards') {
33216 assert(key.x && key.y, 'Need both x and y coordinate');
33217 }
33218 this.pub = this.ec.curve.point(key.x, key.y);
33219 return;
33220 }
33221 this.pub = this.ec.curve.decodePoint(key, enc);
33222};
ebd8d4e8 33223
8b095871
IC
33224// ECDH
33225KeyPair.prototype.derive = function derive(pub) {
33226 return pub.mul(this.priv).getX();
33227};
ebd8d4e8 33228
8b095871
IC
33229// ECDSA
33230KeyPair.prototype.sign = function sign(msg, enc, options) {
33231 return this.ec.sign(msg, this, enc, options);
33232};
ebd8d4e8 33233
8b095871
IC
33234KeyPair.prototype.verify = function verify(msg, signature) {
33235 return this.ec.verify(msg, signature, this);
33236};
ebd8d4e8 33237
8b095871
IC
33238KeyPair.prototype.inspect = function inspect() {
33239 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
33240 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
33241};
ebd8d4e8 33242
8b095871
IC
33243},{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
33244'use strict';
ebd8d4e8 33245
8b095871 33246var BN = require('bn.js');
ebd8d4e8 33247
8b095871
IC
33248var elliptic = require('../../elliptic');
33249var utils = elliptic.utils;
33250var assert = utils.assert;
ebd8d4e8 33251
8b095871
IC
33252function Signature(options, enc) {
33253 if (options instanceof Signature)
33254 return options;
ebd8d4e8 33255
8b095871
IC
33256 if (this._importDER(options, enc))
33257 return;
ebd8d4e8 33258
8b095871
IC
33259 assert(options.r && options.s, 'Signature without r or s');
33260 this.r = new BN(options.r, 16);
33261 this.s = new BN(options.s, 16);
33262 if (options.recoveryParam === undefined)
33263 this.recoveryParam = null;
33264 else
33265 this.recoveryParam = options.recoveryParam;
33266}
33267module.exports = Signature;
33268
33269function Position() {
33270 this.place = 0;
33271}
33272
33273function getLength(buf, p) {
33274 var initial = buf[p.place++];
33275 if (!(initial & 0x80)) {
33276 return initial;
33277 }
33278 var octetLen = initial & 0xf;
33279 var val = 0;
33280 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
33281 val <<= 8;
33282 val |= buf[off];
33283 }
33284 p.place = off;
33285 return val;
33286}
33287
33288function rmPadding(buf) {
33289 var i = 0;
33290 var len = buf.length - 1;
33291 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
33292 i++;
33293 }
33294 if (i === 0) {
33295 return buf;
33296 }
33297 return buf.slice(i);
33298}
ebd8d4e8 33299
8b095871
IC
33300Signature.prototype._importDER = function _importDER(data, enc) {
33301 data = utils.toArray(data, enc);
33302 var p = new Position();
33303 if (data[p.place++] !== 0x30) {
33304 return false;
33305 }
33306 var len = getLength(data, p);
33307 if ((len + p.place) !== data.length) {
33308 return false;
33309 }
33310 if (data[p.place++] !== 0x02) {
33311 return false;
33312 }
33313 var rlen = getLength(data, p);
33314 var r = data.slice(p.place, rlen + p.place);
33315 p.place += rlen;
33316 if (data[p.place++] !== 0x02) {
33317 return false;
33318 }
33319 var slen = getLength(data, p);
33320 if (data.length !== slen + p.place) {
33321 return false;
33322 }
33323 var s = data.slice(p.place, slen + p.place);
33324 if (r[0] === 0 && (r[1] & 0x80)) {
33325 r = r.slice(1);
33326 }
33327 if (s[0] === 0 && (s[1] & 0x80)) {
33328 s = s.slice(1);
33329 }
ab78acc6 33330
8b095871
IC
33331 this.r = new BN(r);
33332 this.s = new BN(s);
33333 this.recoveryParam = null;
ebd8d4e8 33334
8b095871
IC
33335 return true;
33336};
ab78acc6 33337
8b095871
IC
33338function constructLength(arr, len) {
33339 if (len < 0x80) {
33340 arr.push(len);
33341 return;
33342 }
33343 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
33344 arr.push(octets | 0x80);
33345 while (--octets) {
33346 arr.push((len >>> (octets << 3)) & 0xff);
33347 }
33348 arr.push(len);
33349}
33350
33351Signature.prototype.toDER = function toDER(enc) {
33352 var r = this.r.toArray();
33353 var s = this.s.toArray();
33354
33355 // Pad values
33356 if (r[0] & 0x80)
33357 r = [ 0 ].concat(r);
33358 // Pad values
33359 if (s[0] & 0x80)
33360 s = [ 0 ].concat(s);
33361
33362 r = rmPadding(r);
33363 s = rmPadding(s);
33364
33365 while (!s[0] && !(s[1] & 0x80)) {
33366 s = s.slice(1);
33367 }
33368 var arr = [ 0x02 ];
33369 constructLength(arr, r.length);
33370 arr = arr.concat(r);
33371 arr.push(0x02);
33372 constructLength(arr, s.length);
33373 var backHalf = arr.concat(s);
33374 var res = [ 0x30 ];
33375 constructLength(res, backHalf.length);
33376 res = res.concat(backHalf);
33377 return utils.encode(res, enc);
33378};
ab78acc6 33379
8b095871
IC
33380},{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
33381'use strict';
ebd8d4e8 33382
8b095871
IC
33383var hash = require('hash.js');
33384var elliptic = require('../../elliptic');
33385var utils = elliptic.utils;
33386var assert = utils.assert;
33387var parseBytes = utils.parseBytes;
33388var KeyPair = require('./key');
33389var Signature = require('./signature');
ab78acc6 33390
8b095871
IC
33391function EDDSA(curve) {
33392 assert(curve === 'ed25519', 'only tested with ed25519 so far');
ebd8d4e8 33393
8b095871
IC
33394 if (!(this instanceof EDDSA))
33395 return new EDDSA(curve);
ab78acc6 33396
8b095871
IC
33397 var curve = elliptic.curves[curve].curve;
33398 this.curve = curve;
33399 this.g = curve.g;
33400 this.g.precompute(curve.n.bitLength() + 1);
ebd8d4e8 33401
8b095871
IC
33402 this.pointClass = curve.point().constructor;
33403 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
33404 this.hash = hash.sha512;
33405}
ebd8d4e8 33406
8b095871 33407module.exports = EDDSA;
ebd8d4e8 33408
8b095871
IC
33409/**
33410* @param {Array|String} message - message bytes
33411* @param {Array|String|KeyPair} secret - secret bytes or a keypair
33412* @returns {Signature} - signature
33413*/
33414EDDSA.prototype.sign = function sign(message, secret) {
33415 message = parseBytes(message);
33416 var key = this.keyFromSecret(secret);
33417 var r = this.hashInt(key.messagePrefix(), message);
33418 var R = this.g.mul(r);
33419 var Rencoded = this.encodePoint(R);
33420 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
33421 .mul(key.priv());
33422 var S = r.add(s_).umod(this.curve.n);
33423 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
33424};
ebd8d4e8 33425
8b095871
IC
33426/**
33427* @param {Array} message - message bytes
33428* @param {Array|String|Signature} sig - sig bytes
33429* @param {Array|String|Point|KeyPair} pub - public key
33430* @returns {Boolean} - true if public key matches sig of message
33431*/
33432EDDSA.prototype.verify = function verify(message, sig, pub) {
33433 message = parseBytes(message);
33434 sig = this.makeSignature(sig);
33435 var key = this.keyFromPublic(pub);
33436 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
33437 var SG = this.g.mul(sig.S());
33438 var RplusAh = sig.R().add(key.pub().mul(h));
33439 return RplusAh.eq(SG);
33440};
ebd8d4e8 33441
8b095871
IC
33442EDDSA.prototype.hashInt = function hashInt() {
33443 var hash = this.hash();
33444 for (var i = 0; i < arguments.length; i++)
33445 hash.update(arguments[i]);
33446 return utils.intFromLE(hash.digest()).umod(this.curve.n);
33447};
ebd8d4e8 33448
8b095871
IC
33449EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
33450 return KeyPair.fromPublic(this, pub);
33451};
ebd8d4e8 33452
8b095871
IC
33453EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
33454 return KeyPair.fromSecret(this, secret);
33455};
33456
33457EDDSA.prototype.makeSignature = function makeSignature(sig) {
33458 if (sig instanceof Signature)
33459 return sig;
33460 return new Signature(this, sig);
33461};
ebd8d4e8
IC
33462
33463/**
8b095871
IC
33464* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
33465*
33466* EDDSA defines methods for encoding and decoding points and integers. These are
33467* helper convenience methods, that pass along to utility functions implied
33468* parameters.
33469*
33470*/
33471EDDSA.prototype.encodePoint = function encodePoint(point) {
33472 var enc = point.getY().toArray('le', this.encodingLength);
33473 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
33474 return enc;
33475};
ebd8d4e8 33476
8b095871
IC
33477EDDSA.prototype.decodePoint = function decodePoint(bytes) {
33478 bytes = utils.parseBytes(bytes);
ebd8d4e8 33479
8b095871
IC
33480 var lastIx = bytes.length - 1;
33481 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
33482 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
ebd8d4e8 33483
8b095871
IC
33484 var y = utils.intFromLE(normed);
33485 return this.curve.pointFromY(y, xIsOdd);
33486};
ebd8d4e8 33487
8b095871
IC
33488EDDSA.prototype.encodeInt = function encodeInt(num) {
33489 return num.toArray('le', this.encodingLength);
33490};
ebd8d4e8 33491
8b095871
IC
33492EDDSA.prototype.decodeInt = function decodeInt(bytes) {
33493 return utils.intFromLE(bytes);
33494};
ebd8d4e8 33495
8b095871
IC
33496EDDSA.prototype.isPoint = function isPoint(val) {
33497 return val instanceof this.pointClass;
33498};
ebd8d4e8 33499
8b095871
IC
33500},{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
33501'use strict';
ebd8d4e8 33502
8b095871
IC
33503var elliptic = require('../../elliptic');
33504var utils = elliptic.utils;
33505var assert = utils.assert;
33506var parseBytes = utils.parseBytes;
33507var cachedProperty = utils.cachedProperty;
ebd8d4e8 33508
8b095871
IC
33509/**
33510* @param {EDDSA} eddsa - instance
33511* @param {Object} params - public/private key parameters
33512*
33513* @param {Array<Byte>} [params.secret] - secret seed bytes
33514* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
33515* @param {Array<Byte>} [params.pub] - public key point encoded as bytes
33516*
33517*/
33518function KeyPair(eddsa, params) {
33519 this.eddsa = eddsa;
33520 this._secret = parseBytes(params.secret);
33521 if (eddsa.isPoint(params.pub))
33522 this._pub = params.pub;
33523 else
33524 this._pubBytes = parseBytes(params.pub);
ebd8d4e8
IC
33525}
33526
8b095871
IC
33527KeyPair.fromPublic = function fromPublic(eddsa, pub) {
33528 if (pub instanceof KeyPair)
33529 return pub;
33530 return new KeyPair(eddsa, { pub: pub });
33531};
ebd8d4e8 33532
8b095871
IC
33533KeyPair.fromSecret = function fromSecret(eddsa, secret) {
33534 if (secret instanceof KeyPair)
33535 return secret;
33536 return new KeyPair(eddsa, { secret: secret });
33537};
ebd8d4e8 33538
8b095871
IC
33539KeyPair.prototype.secret = function secret() {
33540 return this._secret;
33541};
ebd8d4e8 33542
8b095871
IC
33543cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
33544 return this.eddsa.encodePoint(this.pub());
33545});
ebd8d4e8 33546
8b095871
IC
33547cachedProperty(KeyPair, 'pub', function pub() {
33548 if (this._pubBytes)
33549 return this.eddsa.decodePoint(this._pubBytes);
33550 return this.eddsa.g.mul(this.priv());
33551});
ebd8d4e8 33552
8b095871
IC
33553cachedProperty(KeyPair, 'privBytes', function privBytes() {
33554 var eddsa = this.eddsa;
33555 var hash = this.hash();
33556 var lastIx = eddsa.encodingLength - 1;
ebd8d4e8 33557
8b095871
IC
33558 var a = hash.slice(0, eddsa.encodingLength);
33559 a[0] &= 248;
33560 a[lastIx] &= 127;
33561 a[lastIx] |= 64;
ebd8d4e8 33562
8b095871
IC
33563 return a;
33564});
ebd8d4e8 33565
8b095871
IC
33566cachedProperty(KeyPair, 'priv', function priv() {
33567 return this.eddsa.decodeInt(this.privBytes());
33568});
ebd8d4e8 33569
8b095871
IC
33570cachedProperty(KeyPair, 'hash', function hash() {
33571 return this.eddsa.hash().update(this.secret()).digest();
33572});
ebd8d4e8 33573
8b095871
IC
33574cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
33575 return this.hash().slice(this.eddsa.encodingLength);
33576});
ebd8d4e8 33577
8b095871
IC
33578KeyPair.prototype.sign = function sign(message) {
33579 assert(this._secret, 'KeyPair can only verify');
33580 return this.eddsa.sign(message, this);
33581};
ebd8d4e8 33582
8b095871
IC
33583KeyPair.prototype.verify = function verify(message, sig) {
33584 return this.eddsa.verify(message, sig, this);
33585};
ebd8d4e8 33586
8b095871
IC
33587KeyPair.prototype.getSecret = function getSecret(enc) {
33588 assert(this._secret, 'KeyPair is public only');
33589 return utils.encode(this.secret(), enc);
33590};
ebd8d4e8 33591
8b095871
IC
33592KeyPair.prototype.getPublic = function getPublic(enc) {
33593 return utils.encode(this.pubBytes(), enc);
33594};
ebd8d4e8 33595
8b095871 33596module.exports = KeyPair;
ebd8d4e8 33597
8b095871
IC
33598},{"../../elliptic":39}],51:[function(require,module,exports){
33599'use strict';
ebd8d4e8 33600
8b095871
IC
33601var BN = require('bn.js');
33602var elliptic = require('../../elliptic');
33603var utils = elliptic.utils;
33604var assert = utils.assert;
33605var cachedProperty = utils.cachedProperty;
33606var parseBytes = utils.parseBytes;
ebd8d4e8 33607
8b095871
IC
33608/**
33609* @param {EDDSA} eddsa - eddsa instance
33610* @param {Array<Bytes>|Object} sig -
33611* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
33612* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
33613* @param {Array<Bytes>} [sig.Rencoded] - R point encoded
33614* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
33615*/
33616function Signature(eddsa, sig) {
33617 this.eddsa = eddsa;
ebd8d4e8 33618
8b095871
IC
33619 if (typeof sig !== 'object')
33620 sig = parseBytes(sig);
ebd8d4e8 33621
8b095871
IC
33622 if (Array.isArray(sig)) {
33623 sig = {
33624 R: sig.slice(0, eddsa.encodingLength),
33625 S: sig.slice(eddsa.encodingLength)
33626 };
ab78acc6 33627 }
ebd8d4e8 33628
8b095871 33629 assert(sig.R && sig.S, 'Signature without R or S');
ebd8d4e8 33630
8b095871
IC
33631 if (eddsa.isPoint(sig.R))
33632 this._R = sig.R;
33633 if (sig.S instanceof BN)
33634 this._S = sig.S;
33635
33636 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
33637 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
ebd8d4e8
IC
33638}
33639
8b095871
IC
33640cachedProperty(Signature, 'S', function S() {
33641 return this.eddsa.decodeInt(this.Sencoded());
33642});
ab78acc6 33643
8b095871
IC
33644cachedProperty(Signature, 'R', function R() {
33645 return this.eddsa.decodePoint(this.Rencoded());
33646});
ebd8d4e8 33647
8b095871
IC
33648cachedProperty(Signature, 'Rencoded', function Rencoded() {
33649 return this.eddsa.encodePoint(this.R());
33650});
ebd8d4e8 33651
8b095871
IC
33652cachedProperty(Signature, 'Sencoded', function Sencoded() {
33653 return this.eddsa.encodeInt(this.S());
33654});
ebd8d4e8 33655
8b095871
IC
33656Signature.prototype.toBytes = function toBytes() {
33657 return this.Rencoded().concat(this.Sencoded());
33658};
ebd8d4e8 33659
8b095871
IC
33660Signature.prototype.toHex = function toHex() {
33661 return utils.encode(this.toBytes(), 'hex').toUpperCase();
33662};
ebd8d4e8 33663
8b095871 33664module.exports = Signature;
ebd8d4e8 33665
8b095871
IC
33666},{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
33667'use strict';
ebd8d4e8 33668
8b095871
IC
33669var hash = require('hash.js');
33670var elliptic = require('../elliptic');
33671var utils = elliptic.utils;
33672var assert = utils.assert;
ebd8d4e8 33673
8b095871
IC
33674function HmacDRBG(options) {
33675 if (!(this instanceof HmacDRBG))
33676 return new HmacDRBG(options);
33677 this.hash = options.hash;
33678 this.predResist = !!options.predResist;
ab78acc6 33679
8b095871
IC
33680 this.outLen = this.hash.outSize;
33681 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
ab78acc6 33682
8b095871
IC
33683 this.reseed = null;
33684 this.reseedInterval = null;
33685 this.K = null;
33686 this.V = null;
ebd8d4e8 33687
8b095871
IC
33688 var entropy = utils.toArray(options.entropy, options.entropyEnc);
33689 var nonce = utils.toArray(options.nonce, options.nonceEnc);
33690 var pers = utils.toArray(options.pers, options.persEnc);
33691 assert(entropy.length >= (this.minEntropy / 8),
33692 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33693 this._init(entropy, nonce, pers);
ebd8d4e8 33694}
8b095871 33695module.exports = HmacDRBG;
ebd8d4e8 33696
8b095871
IC
33697HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
33698 var seed = entropy.concat(nonce).concat(pers);
ebd8d4e8 33699
8b095871
IC
33700 this.K = new Array(this.outLen / 8);
33701 this.V = new Array(this.outLen / 8);
33702 for (var i = 0; i < this.V.length; i++) {
33703 this.K[i] = 0x00;
33704 this.V[i] = 0x01;
33705 }
ebd8d4e8 33706
8b095871
IC
33707 this._update(seed);
33708 this.reseed = 1;
33709 this.reseedInterval = 0x1000000000000; // 2^48
33710};
ebd8d4e8 33711
8b095871
IC
33712HmacDRBG.prototype._hmac = function hmac() {
33713 return new hash.hmac(this.hash, this.K);
33714};
ebd8d4e8 33715
8b095871
IC
33716HmacDRBG.prototype._update = function update(seed) {
33717 var kmac = this._hmac()
33718 .update(this.V)
33719 .update([ 0x00 ]);
33720 if (seed)
33721 kmac = kmac.update(seed);
33722 this.K = kmac.digest();
33723 this.V = this._hmac().update(this.V).digest();
33724 if (!seed)
33725 return;
33726
33727 this.K = this._hmac()
33728 .update(this.V)
33729 .update([ 0x01 ])
33730 .update(seed)
33731 .digest();
33732 this.V = this._hmac().update(this.V).digest();
33733};
33734
33735HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
33736 // Optional entropy enc
33737 if (typeof entropyEnc !== 'string') {
33738 addEnc = add;
33739 add = entropyEnc;
33740 entropyEnc = null;
ebd8d4e8 33741 }
ebd8d4e8 33742
8b095871
IC
33743 entropy = utils.toBuffer(entropy, entropyEnc);
33744 add = utils.toBuffer(add, addEnc);
ebd8d4e8 33745
8b095871
IC
33746 assert(entropy.length >= (this.minEntropy / 8),
33747 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
ebd8d4e8 33748
8b095871
IC
33749 this._update(entropy.concat(add || []));
33750 this.reseed = 1;
33751};
ebd8d4e8 33752
8b095871
IC
33753HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
33754 if (this.reseed > this.reseedInterval)
33755 throw new Error('Reseed is required');
ebd8d4e8 33756
8b095871
IC
33757 // Optional encoding
33758 if (typeof enc !== 'string') {
33759 addEnc = add;
33760 add = enc;
33761 enc = null;
33762 }
ebd8d4e8 33763
8b095871
IC
33764 // Optional additional data
33765 if (add) {
33766 add = utils.toArray(add, addEnc);
33767 this._update(add);
ebd8d4e8
IC
33768 }
33769
8b095871
IC
33770 var temp = [];
33771 while (temp.length < len) {
33772 this.V = this._hmac().update(this.V).digest();
33773 temp = temp.concat(this.V);
ebd8d4e8
IC
33774 }
33775
8b095871
IC
33776 var res = temp.slice(0, len);
33777 this._update(add);
33778 this.reseed++;
33779 return utils.encode(res, enc);
33780};
ebd8d4e8 33781
8b095871
IC
33782},{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
33783module.exports = {
33784 doubles: {
33785 step: 4,
33786 points: [
33787 [
33788 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
33789 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
33790 ],
33791 [
33792 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
33793 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
33794 ],
33795 [
33796 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
33797 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
33798 ],
33799 [
33800 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
33801 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
33802 ],
33803 [
33804 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
33805 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
33806 ],
33807 [
33808 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
33809 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
33810 ],
33811 [
33812 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
33813 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
33814 ],
33815 [
33816 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
33817 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
33818 ],
33819 [
33820 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
33821 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
33822 ],
33823 [
33824 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
33825 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
33826 ],
33827 [
33828 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
33829 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
33830 ],
33831 [
33832 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
33833 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
33834 ],
33835 [
33836 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
33837 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
33838 ],
33839 [
33840 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
33841 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
33842 ],
33843 [
33844 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
33845 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
33846 ],
33847 [
33848 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
33849 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
33850 ],
33851 [
33852 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
33853 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
33854 ],
33855 [
33856 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
33857 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
33858 ],
33859 [
33860 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
33861 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
33862 ],
33863 [
33864 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
33865 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
33866 ],
33867 [
33868 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
33869 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
33870 ],
33871 [
33872 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
33873 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
33874 ],
33875 [
33876 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
33877 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
33878 ],
33879 [
33880 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
33881 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
33882 ],
33883 [
33884 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
33885 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
33886 ],
33887 [
33888 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
33889 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
33890 ],
33891 [
33892 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
33893 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
33894 ],
33895 [
33896 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
33897 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
33898 ],
33899 [
33900 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
33901 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
33902 ],
33903 [
33904 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
33905 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
33906 ],
33907 [
33908 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
33909 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
33910 ],
33911 [
33912 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
33913 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
33914 ],
33915 [
33916 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
33917 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
33918 ],
33919 [
33920 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
33921 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
33922 ],
33923 [
33924 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
33925 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
33926 ],
33927 [
33928 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
33929 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
33930 ],
33931 [
33932 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
33933 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
33934 ],
33935 [
33936 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
33937 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
33938 ],
33939 [
33940 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
33941 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
33942 ],
33943 [
33944 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
33945 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
33946 ],
33947 [
33948 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
33949 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
33950 ],
33951 [
33952 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
33953 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
33954 ],
33955 [
33956 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
33957 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
33958 ],
33959 [
33960 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
33961 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
33962 ],
33963 [
33964 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
33965 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
33966 ],
33967 [
33968 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
33969 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
33970 ],
33971 [
33972 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
33973 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
33974 ],
33975 [
33976 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
33977 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
33978 ],
33979 [
33980 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
33981 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
33982 ],
33983 [
33984 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
33985 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
33986 ],
33987 [
33988 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
33989 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
33990 ],
33991 [
33992 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
33993 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
33994 ],
33995 [
33996 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
33997 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
33998 ],
33999 [
34000 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
34001 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
34002 ],
34003 [
34004 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
34005 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
34006 ],
34007 [
34008 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
34009 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
34010 ],
34011 [
34012 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
34013 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
34014 ],
34015 [
34016 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
34017 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
34018 ],
34019 [
34020 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
34021 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
34022 ],
34023 [
34024 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
34025 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
34026 ],
34027 [
34028 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
34029 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
34030 ],
34031 [
34032 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
34033 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
34034 ],
34035 [
34036 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
34037 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
34038 ],
34039 [
34040 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
34041 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
34042 ],
34043 [
34044 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
34045 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
34046 ]
34047 ]
34048 },
34049 naf: {
34050 wnd: 7,
34051 points: [
34052 [
34053 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
34054 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
34055 ],
34056 [
34057 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
34058 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
34059 ],
34060 [
34061 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
34062 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
34063 ],
34064 [
34065 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
34066 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
34067 ],
34068 [
34069 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
34070 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
34071 ],
34072 [
34073 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
34074 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
34075 ],
34076 [
34077 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
34078 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
34079 ],
34080 [
34081 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
34082 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
34083 ],
34084 [
34085 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
34086 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
34087 ],
34088 [
34089 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
34090 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
34091 ],
34092 [
34093 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
34094 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
34095 ],
34096 [
34097 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
34098 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
34099 ],
34100 [
34101 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
34102 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
34103 ],
34104 [
34105 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
34106 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
34107 ],
34108 [
34109 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
34110 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
34111 ],
34112 [
34113 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
34114 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
34115 ],
34116 [
34117 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
34118 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
34119 ],
34120 [
34121 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
34122 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
34123 ],
34124 [
34125 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
34126 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
34127 ],
34128 [
34129 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
34130 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
34131 ],
34132 [
34133 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
34134 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
34135 ],
34136 [
34137 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
34138 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
34139 ],
34140 [
34141 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
34142 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
34143 ],
34144 [
34145 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
34146 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
34147 ],
34148 [
34149 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
34150 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
34151 ],
34152 [
34153 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
34154 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
34155 ],
34156 [
34157 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
34158 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
34159 ],
34160 [
34161 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
34162 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
34163 ],
34164 [
34165 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
34166 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
34167 ],
34168 [
34169 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
34170 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
34171 ],
34172 [
34173 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
34174 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
34175 ],
34176 [
34177 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
34178 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
34179 ],
34180 [
34181 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
34182 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
34183 ],
34184 [
34185 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
34186 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
34187 ],
34188 [
34189 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
34190 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
34191 ],
34192 [
34193 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
34194 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
34195 ],
34196 [
34197 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
34198 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
34199 ],
34200 [
34201 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
34202 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
34203 ],
34204 [
34205 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
34206 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
34207 ],
34208 [
34209 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
34210 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
34211 ],
34212 [
34213 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
34214 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
34215 ],
34216 [
34217 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
34218 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
34219 ],
34220 [
34221 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
34222 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
34223 ],
34224 [
34225 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
34226 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
34227 ],
34228 [
34229 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
34230 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
34231 ],
34232 [
34233 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
34234 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
34235 ],
34236 [
34237 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
34238 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
34239 ],
34240 [
34241 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
34242 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
34243 ],
34244 [
34245 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
34246 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
34247 ],
34248 [
34249 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
34250 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
34251 ],
34252 [
34253 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
34254 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
34255 ],
34256 [
34257 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
34258 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
34259 ],
34260 [
34261 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
34262 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
34263 ],
34264 [
34265 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
34266 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
34267 ],
34268 [
34269 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
34270 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
34271 ],
34272 [
34273 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
34274 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
34275 ],
34276 [
34277 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
34278 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
34279 ],
34280 [
34281 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
34282 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
34283 ],
34284 [
34285 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
34286 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
34287 ],
34288 [
34289 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
34290 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
34291 ],
34292 [
34293 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
34294 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
34295 ],
34296 [
34297 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
34298 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
34299 ],
34300 [
34301 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
34302 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
34303 ],
34304 [
34305 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
34306 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
34307 ],
34308 [
34309 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
34310 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
34311 ],
34312 [
34313 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
34314 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
34315 ],
34316 [
34317 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
34318 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
34319 ],
34320 [
34321 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
34322 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
34323 ],
34324 [
34325 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
34326 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
34327 ],
34328 [
34329 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
34330 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
34331 ],
34332 [
34333 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
34334 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
34335 ],
34336 [
34337 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
34338 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
34339 ],
34340 [
34341 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
34342 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
34343 ],
34344 [
34345 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
34346 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
34347 ],
34348 [
34349 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
34350 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
34351 ],
34352 [
34353 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
34354 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
34355 ],
34356 [
34357 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
34358 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
34359 ],
34360 [
34361 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
34362 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
34363 ],
34364 [
34365 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
34366 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
34367 ],
34368 [
34369 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
34370 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
34371 ],
34372 [
34373 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
34374 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
34375 ],
34376 [
34377 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
34378 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
34379 ],
34380 [
34381 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
34382 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
34383 ],
34384 [
34385 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
34386 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
34387 ],
34388 [
34389 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
34390 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
34391 ],
34392 [
34393 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
34394 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
34395 ],
34396 [
34397 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
34398 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
34399 ],
34400 [
34401 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
34402 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
34403 ],
34404 [
34405 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
34406 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
34407 ],
34408 [
34409 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
34410 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
34411 ],
34412 [
34413 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
34414 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
34415 ],
34416 [
34417 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
34418 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
34419 ],
34420 [
34421 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
34422 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
34423 ],
34424 [
34425 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
34426 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
34427 ],
34428 [
34429 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
34430 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
34431 ],
34432 [
34433 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
34434 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
34435 ],
34436 [
34437 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
34438 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
34439 ],
34440 [
34441 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
34442 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
34443 ],
34444 [
34445 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
34446 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
34447 ],
34448 [
34449 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
34450 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
34451 ],
34452 [
34453 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
34454 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
34455 ],
34456 [
34457 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
34458 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
34459 ],
34460 [
34461 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
34462 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
34463 ],
34464 [
34465 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
34466 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
34467 ],
34468 [
34469 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
34470 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
34471 ],
34472 [
34473 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
34474 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
34475 ],
34476 [
34477 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
34478 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
34479 ],
34480 [
34481 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
34482 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
34483 ],
34484 [
34485 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
34486 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
34487 ],
34488 [
34489 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
34490 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
34491 ],
34492 [
34493 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
34494 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
34495 ],
34496 [
34497 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
34498 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
34499 ],
34500 [
34501 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
34502 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
34503 ],
34504 [
34505 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
34506 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
34507 ],
34508 [
34509 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
34510 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
34511 ],
34512 [
34513 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
34514 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
34515 ],
34516 [
34517 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
34518 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
34519 ],
34520 [
34521 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
34522 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
34523 ],
34524 [
34525 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
34526 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
34527 ],
34528 [
34529 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
34530 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
34531 ],
34532 [
34533 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
34534 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
34535 ],
34536 [
34537 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
34538 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
34539 ],
34540 [
34541 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
34542 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
34543 ],
34544 [
34545 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
34546 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
34547 ],
34548 [
34549 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
34550 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
34551 ],
34552 [
34553 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
34554 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
34555 ],
34556 [
34557 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
34558 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
34559 ]
34560 ]
34561 }
34562};
ebd8d4e8 34563
8b095871
IC
34564},{}],54:[function(require,module,exports){
34565'use strict';
ebd8d4e8 34566
8b095871
IC
34567var utils = exports;
34568var BN = require('bn.js');
ebd8d4e8 34569
8b095871
IC
34570utils.assert = function assert(val, msg) {
34571 if (!val)
34572 throw new Error(msg || 'Assertion failed');
34573};
ebd8d4e8 34574
8b095871
IC
34575function toArray(msg, enc) {
34576 if (Array.isArray(msg))
34577 return msg.slice();
34578 if (!msg)
34579 return [];
34580 var res = [];
34581 if (typeof msg !== 'string') {
34582 for (var i = 0; i < msg.length; i++)
34583 res[i] = msg[i] | 0;
34584 return res;
34585 }
34586 if (!enc) {
34587 for (var i = 0; i < msg.length; i++) {
34588 var c = msg.charCodeAt(i);
34589 var hi = c >> 8;
34590 var lo = c & 0xff;
34591 if (hi)
34592 res.push(hi, lo);
34593 else
34594 res.push(lo);
34595 }
34596 } else if (enc === 'hex') {
34597 msg = msg.replace(/[^a-z0-9]+/ig, '');
34598 if (msg.length % 2 !== 0)
34599 msg = '0' + msg;
34600 for (var i = 0; i < msg.length; i += 2)
34601 res.push(parseInt(msg[i] + msg[i + 1], 16));
ebd8d4e8 34602 }
8b095871 34603 return res;
ebd8d4e8 34604}
8b095871 34605utils.toArray = toArray;
ebd8d4e8 34606
8b095871
IC
34607function zero2(word) {
34608 if (word.length === 1)
34609 return '0' + word;
34610 else
34611 return word;
34612}
34613utils.zero2 = zero2;
ab78acc6 34614
8b095871
IC
34615function toHex(msg) {
34616 var res = '';
34617 for (var i = 0; i < msg.length; i++)
34618 res += zero2(msg[i].toString(16));
34619 return res;
34620}
34621utils.toHex = toHex;
ebd8d4e8 34622
8b095871
IC
34623utils.encode = function encode(arr, enc) {
34624 if (enc === 'hex')
34625 return toHex(arr);
34626 else
34627 return arr;
34628};
ebd8d4e8 34629
8b095871
IC
34630// Represent num in a w-NAF form
34631function getNAF(num, w) {
34632 var naf = [];
34633 var ws = 1 << (w + 1);
34634 var k = num.clone();
34635 while (k.cmpn(1) >= 0) {
34636 var z;
34637 if (k.isOdd()) {
34638 var mod = k.andln(ws - 1);
34639 if (mod > (ws >> 1) - 1)
34640 z = (ws >> 1) - mod;
34641 else
34642 z = mod;
34643 k.isubn(z);
34644 } else {
34645 z = 0;
34646 }
34647 naf.push(z);
34648
34649 // Optimization, shift by word if possible
34650 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
34651 for (var i = 1; i < shift; i++)
34652 naf.push(0);
34653 k.iushrn(shift);
34654 }
34655
34656 return naf;
34657}
34658utils.getNAF = getNAF;
34659
34660// Represent k1, k2 in a Joint Sparse Form
34661function getJSF(k1, k2) {
34662 var jsf = [
34663 [],
34664 []
34665 ];
34666
34667 k1 = k1.clone();
34668 k2 = k2.clone();
34669 var d1 = 0;
34670 var d2 = 0;
34671 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
34672
34673 // First phase
34674 var m14 = (k1.andln(3) + d1) & 3;
34675 var m24 = (k2.andln(3) + d2) & 3;
34676 if (m14 === 3)
34677 m14 = -1;
34678 if (m24 === 3)
34679 m24 = -1;
34680 var u1;
34681 if ((m14 & 1) === 0) {
34682 u1 = 0;
34683 } else {
34684 var m8 = (k1.andln(7) + d1) & 7;
34685 if ((m8 === 3 || m8 === 5) && m24 === 2)
34686 u1 = -m14;
34687 else
34688 u1 = m14;
34689 }
34690 jsf[0].push(u1);
ebd8d4e8 34691
8b095871
IC
34692 var u2;
34693 if ((m24 & 1) === 0) {
34694 u2 = 0;
34695 } else {
34696 var m8 = (k2.andln(7) + d2) & 7;
34697 if ((m8 === 3 || m8 === 5) && m14 === 2)
34698 u2 = -m24;
34699 else
34700 u2 = m24;
34701 }
34702 jsf[1].push(u2);
ebd8d4e8 34703
8b095871
IC
34704 // Second phase
34705 if (2 * d1 === u1 + 1)
34706 d1 = 1 - d1;
34707 if (2 * d2 === u2 + 1)
34708 d2 = 1 - d2;
34709 k1.iushrn(1);
34710 k2.iushrn(1);
34711 }
ebd8d4e8 34712
8b095871
IC
34713 return jsf;
34714}
34715utils.getJSF = getJSF;
ab78acc6 34716
8b095871
IC
34717function cachedProperty(obj, name, computer) {
34718 var key = '_' + name;
34719 obj.prototype[name] = function cachedProperty() {
34720 return this[key] !== undefined ? this[key] :
34721 this[key] = computer.call(this);
34722 };
34723}
34724utils.cachedProperty = cachedProperty;
ebd8d4e8 34725
8b095871
IC
34726function parseBytes(bytes) {
34727 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
34728 bytes;
34729}
34730utils.parseBytes = parseBytes;
ebd8d4e8 34731
8b095871
IC
34732function intFromLE(bytes) {
34733 return new BN(bytes, 'hex', 'le');
34734}
34735utils.intFromLE = intFromLE;
ebd8d4e8 34736
8b095871
IC
34737
34738},{"bn.js":33}],55:[function(require,module,exports){
34739module.exports={
34740 "_args": [
34741 [
34742 {
34743 "raw": "elliptic@^6.2.3",
34744 "scope": null,
34745 "escapedName": "elliptic",
34746 "name": "elliptic",
34747 "rawSpec": "^6.2.3",
34748 "spec": ">=6.2.3 <7.0.0",
34749 "type": "range"
34750 },
34751 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
34752 ]
34753 ],
34754 "_from": "elliptic@>=6.2.3 <7.0.0",
34755 "_id": "elliptic@6.3.3",
34756 "_inCache": true,
34757 "_location": "/elliptic",
34758 "_nodeVersion": "7.0.0",
34759 "_npmOperationalInternal": {
34760 "host": "packages-18-east.internal.npmjs.com",
34761 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
34762 },
34763 "_npmUser": {
34764 "name": "indutny",
34765 "email": "fedor@indutny.com"
34766 },
34767 "_npmVersion": "3.10.8",
34768 "_phantomChildren": {},
34769 "_requested": {
34770 "raw": "elliptic@^6.2.3",
34771 "scope": null,
34772 "escapedName": "elliptic",
34773 "name": "elliptic",
34774 "rawSpec": "^6.2.3",
34775 "spec": ">=6.2.3 <7.0.0",
34776 "type": "range"
34777 },
34778 "_requiredBy": [
34779 "/browserify-sign",
34780 "/create-ecdh",
34781 "/secp256k1"
34782 ],
34783 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
34784 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34785 "_shrinkwrap": null,
34786 "_spec": "elliptic@^6.2.3",
34787 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
34788 "author": {
34789 "name": "Fedor Indutny",
34790 "email": "fedor@indutny.com"
34791 },
34792 "bugs": {
34793 "url": "https://github.com/indutny/elliptic/issues"
34794 },
34795 "dependencies": {
34796 "bn.js": "^4.4.0",
34797 "brorand": "^1.0.1",
34798 "hash.js": "^1.0.0",
34799 "inherits": "^2.0.1"
34800 },
34801 "description": "EC cryptography",
34802 "devDependencies": {
34803 "brfs": "^1.4.3",
34804 "coveralls": "^2.11.3",
34805 "grunt": "^0.4.5",
34806 "grunt-browserify": "^5.0.0",
34807 "grunt-cli": "^1.2.0",
34808 "grunt-contrib-connect": "^1.0.0",
34809 "grunt-contrib-copy": "^1.0.0",
34810 "grunt-contrib-uglify": "^1.0.1",
34811 "grunt-mocha-istanbul": "^3.0.1",
34812 "grunt-saucelabs": "^8.6.2",
34813 "istanbul": "^0.4.2",
34814 "jscs": "^2.9.0",
34815 "jshint": "^2.6.0",
34816 "mocha": "^2.1.0"
34817 },
34818 "directories": {},
34819 "dist": {
34820 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34821 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
34822 },
34823 "files": [
34824 "lib"
34825 ],
34826 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
34827 "homepage": "https://github.com/indutny/elliptic",
34828 "keywords": [
34829 "EC",
34830 "Elliptic",
34831 "curve",
34832 "Cryptography"
34833 ],
34834 "license": "MIT",
34835 "main": "lib/elliptic.js",
34836 "maintainers": [
34837 {
34838 "name": "indutny",
34839 "email": "fedor@indutny.com"
34840 }
34841 ],
34842 "name": "elliptic",
34843 "optionalDependencies": {},
34844 "readme": "ERROR: No README data found!",
34845 "repository": {
34846 "type": "git",
34847 "url": "git+ssh://git@github.com/indutny/elliptic.git"
34848 },
34849 "scripts": {
34850 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34851 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34852 "lint": "npm run jscs && npm run jshint",
34853 "test": "npm run lint && npm run unit",
34854 "unit": "istanbul test _mocha --reporter=spec test/index.js",
34855 "version": "grunt dist && git add dist/"
34856 },
34857 "version": "6.3.3"
ebd8d4e8
IC
34858}
34859
8b095871
IC
34860},{}],56:[function(require,module,exports){
34861(function (Buffer){
34862'use strict';
ab78acc6 34863
8b095871
IC
34864var isHexPrefixed = require('is-hex-prefixed');
34865var stripHexPrefix = require('strip-hex-prefix');
ebd8d4e8 34866
8b095871
IC
34867/**
34868 * Pads a `String` to have an even length
34869 * @param {String} value
34870 * @return {String} output
34871 */
34872function padToEven(value) {
34873 var a = value; // eslint-disable-line
34874
34875 if (typeof a !== 'string') {
34876 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
34877 }
34878
34879 if (a.length % 2) {
34880 a = '0' + a;
34881 }
34882
34883 return a;
ebd8d4e8
IC
34884}
34885
8b095871
IC
34886/**
34887 * Converts a `Number` into a hex `String`
34888 * @param {Number} i
34889 * @return {String}
34890 */
34891function intToHex(i) {
34892 var hex = i.toString(16); // eslint-disable-line
ebd8d4e8 34893
8b095871
IC
34894 return '0x' + padToEven(hex);
34895}
ab78acc6 34896
8b095871
IC
34897/**
34898 * Converts an `Number` to a `Buffer`
34899 * @param {Number} i
34900 * @return {Buffer}
34901 */
34902function intToBuffer(i) {
34903 var hex = intToHex(i);
ab78acc6 34904
8b095871
IC
34905 return new Buffer(hex.slice(2), 'hex');
34906}
ebd8d4e8 34907
8b095871
IC
34908/**
34909 * Get the binary size of a string
34910 * @param {String} str
34911 * @return {Number}
34912 */
34913function getBinarySize(str) {
34914 if (typeof str !== 'string') {
34915 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
34916 }
ebd8d4e8 34917
8b095871
IC
34918 return Buffer.byteLength(str, 'utf8');
34919}
34920
34921/**
34922 * Returns TRUE if the first specified array contains all elements
34923 * from the second one. FALSE otherwise.
34924 *
34925 * @param {array} superset
34926 * @param {array} subset
34927 *
34928 * @returns {boolean}
34929 */
34930function arrayContainsArray(superset, subset, some) {
34931 if (Array.isArray(superset) !== true) {
34932 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
34933 }
34934 if (Array.isArray(subset) !== true) {
34935 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
ebd8d4e8
IC
34936 }
34937
8b095871
IC
34938 return subset[Boolean(some) && 'some' || 'every'](function (value) {
34939 return superset.indexOf(value) >= 0;
34940 });
ebd8d4e8
IC
34941}
34942
8b095871
IC
34943/**
34944 * Should be called to get utf8 from it's hex representation
34945 *
34946 * @method toUtf8
34947 * @param {String} string in hex
34948 * @returns {String} ascii string representation of hex value
34949 */
34950function toUtf8(hex) {
34951 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
ebd8d4e8 34952
8b095871
IC
34953 return bufferValue.toString('utf8');
34954}
ab78acc6 34955
8b095871
IC
34956/**
34957 * Should be called to get ascii from it's hex representation
34958 *
34959 * @method toAscii
34960 * @param {String} string in hex
34961 * @returns {String} ascii string representation of hex value
34962 */
34963function toAscii(hex) {
34964 var str = ''; // eslint-disable-line
34965 var i = 0,
34966 l = hex.length; // eslint-disable-line
ebd8d4e8 34967
8b095871
IC
34968 if (hex.substring(0, 2) === '0x') {
34969 i = 2;
34970 }
ebd8d4e8 34971
8b095871
IC
34972 for (; i < l; i += 2) {
34973 var code = parseInt(hex.substr(i, 2), 16);
34974 str += String.fromCharCode(code);
ebd8d4e8 34975 }
8b095871
IC
34976
34977 return str;
ebd8d4e8
IC
34978}
34979
8b095871
IC
34980/**
34981 * Should be called to get hex representation (prefixed by 0x) of utf8 string
34982 *
34983 * @method fromUtf8
34984 * @param {String} string
34985 * @param {Number} optional padding
34986 * @returns {String} hex representation of input string
34987 */
34988function fromUtf8(stringValue) {
34989 var str = new Buffer(stringValue, 'utf8');
ebd8d4e8 34990
8b095871
IC
34991 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
34992}
ab78acc6 34993
8b095871
IC
34994/**
34995 * Should be called to get hex representation (prefixed by 0x) of ascii string
34996 *
34997 * @method fromAscii
34998 * @param {String} string
34999 * @param {Number} optional padding
35000 * @returns {String} hex representation of input string
35001 */
35002function fromAscii(stringValue) {
35003 var hex = ''; // eslint-disable-line
35004 for (var i = 0; i < stringValue.length; i++) {
35005 // eslint-disable-line
35006 var code = stringValue.charCodeAt(i);
35007 var n = code.toString(16);
35008 hex += n.length < 2 ? '0' + n : n;
35009 }
ab78acc6 35010
8b095871
IC
35011 return '0x' + hex;
35012}
ebd8d4e8 35013
8b095871
IC
35014/**
35015 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
35016 *
35017 * @method getKeys get specific key from inner object array of objects
35018 * @param {String} params
35019 * @param {String} key
35020 * @param {Boolean} allowEmpty
35021 * @returns {Array} output just a simple array of output keys
35022 */
35023function getKeys(params, key, allowEmpty) {
35024 if (!Array.isArray(params)) {
35025 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
35026 }
35027 if (typeof key !== 'string') {
35028 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
35029 }
ebd8d4e8 35030
8b095871 35031 var result = []; // eslint-disable-line
ebd8d4e8 35032
8b095871
IC
35033 for (var i = 0; i < params.length; i++) {
35034 // eslint-disable-line
35035 var value = params[i][key]; // eslint-disable-line
35036 if (allowEmpty && !value) {
35037 value = '';
35038 } else if (typeof value !== 'string') {
35039 throw new Error('invalid abi');
35040 }
35041 result.push(value);
35042 }
ebd8d4e8 35043
8b095871 35044 return result;
ebd8d4e8
IC
35045}
35046
8b095871
IC
35047/**
35048 * Is the string a hex string.
35049 *
35050 * @method check if string is hex string of specific length
35051 * @param {String} value
35052 * @param {Number} length
35053 * @returns {Boolean} output the string is a hex string
35054 */
35055function isHexString(value, length) {
35056 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
35057 return false;
ab78acc6
IC
35058 }
35059
8b095871
IC
35060 if (length && value.length !== 2 + 2 * length) {
35061 return false;
35062 }
ebd8d4e8 35063
8b095871
IC
35064 return true;
35065}
ab78acc6 35066
8b095871
IC
35067module.exports = {
35068 arrayContainsArray: arrayContainsArray,
35069 intToBuffer: intToBuffer,
35070 getBinarySize: getBinarySize,
35071 isHexPrefixed: isHexPrefixed,
35072 stripHexPrefix: stripHexPrefix,
35073 padToEven: padToEven,
35074 intToHex: intToHex,
35075 fromAscii: fromAscii,
35076 fromUtf8: fromUtf8,
35077 toAscii: toAscii,
35078 toUtf8: toUtf8,
35079 getKeys: getKeys,
35080 isHexString: isHexString
35081};
35082}).call(this,require("buffer").Buffer)
35083},{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
35084var hash = exports;
35085
35086hash.utils = require('./hash/utils');
35087hash.common = require('./hash/common');
35088hash.sha = require('./hash/sha');
35089hash.ripemd = require('./hash/ripemd');
35090hash.hmac = require('./hash/hmac');
35091
35092// Proxy hash functions to the main object
35093hash.sha1 = hash.sha.sha1;
35094hash.sha256 = hash.sha.sha256;
35095hash.sha224 = hash.sha.sha224;
35096hash.sha384 = hash.sha.sha384;
35097hash.sha512 = hash.sha.sha512;
35098hash.ripemd160 = hash.ripemd.ripemd160;
35099
35100},{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
35101var hash = require('../hash');
35102var utils = hash.utils;
35103var assert = utils.assert;
35104
35105function BlockHash() {
35106 this.pending = null;
35107 this.pendingTotal = 0;
35108 this.blockSize = this.constructor.blockSize;
35109 this.outSize = this.constructor.outSize;
35110 this.hmacStrength = this.constructor.hmacStrength;
35111 this.padLength = this.constructor.padLength / 8;
35112 this.endian = 'big';
35113
35114 this._delta8 = this.blockSize / 8;
35115 this._delta32 = this.blockSize / 32;
35116}
35117exports.BlockHash = BlockHash;
35118
35119BlockHash.prototype.update = function update(msg, enc) {
35120 // Convert message to array, pad it, and join into 32bit blocks
35121 msg = utils.toArray(msg, enc);
35122 if (!this.pending)
35123 this.pending = msg;
35124 else
35125 this.pending = this.pending.concat(msg);
35126 this.pendingTotal += msg.length;
ab78acc6 35127
8b095871
IC
35128 // Enough data, try updating
35129 if (this.pending.length >= this._delta8) {
35130 msg = this.pending;
ebd8d4e8 35131
8b095871
IC
35132 // Process pending data in blocks
35133 var r = msg.length % this._delta8;
35134 this.pending = msg.slice(msg.length - r, msg.length);
35135 if (this.pending.length === 0)
35136 this.pending = null;
ebd8d4e8 35137
8b095871
IC
35138 msg = utils.join32(msg, 0, msg.length - r, this.endian);
35139 for (var i = 0; i < msg.length; i += this._delta32)
35140 this._update(msg, i, i + this._delta32);
ebd8d4e8
IC
35141 }
35142
8b095871
IC
35143 return this;
35144};
ebd8d4e8 35145
8b095871
IC
35146BlockHash.prototype.digest = function digest(enc) {
35147 this.update(this._pad());
35148 assert(this.pending === null);
ebd8d4e8 35149
8b095871
IC
35150 return this._digest(enc);
35151};
ebd8d4e8 35152
8b095871
IC
35153BlockHash.prototype._pad = function pad() {
35154 var len = this.pendingTotal;
35155 var bytes = this._delta8;
35156 var k = bytes - ((len + this.padLength) % bytes);
35157 var res = new Array(k + this.padLength);
35158 res[0] = 0x80;
35159 for (var i = 1; i < k; i++)
35160 res[i] = 0;
35161
35162 // Append length
35163 len <<= 3;
35164 if (this.endian === 'big') {
35165 for (var t = 8; t < this.padLength; t++)
35166 res[i++] = 0;
35167
35168 res[i++] = 0;
35169 res[i++] = 0;
35170 res[i++] = 0;
35171 res[i++] = 0;
35172 res[i++] = (len >>> 24) & 0xff;
35173 res[i++] = (len >>> 16) & 0xff;
35174 res[i++] = (len >>> 8) & 0xff;
35175 res[i++] = len & 0xff;
ebd8d4e8 35176 } else {
8b095871
IC
35177 res[i++] = len & 0xff;
35178 res[i++] = (len >>> 8) & 0xff;
35179 res[i++] = (len >>> 16) & 0xff;
35180 res[i++] = (len >>> 24) & 0xff;
35181 res[i++] = 0;
35182 res[i++] = 0;
35183 res[i++] = 0;
35184 res[i++] = 0;
ebd8d4e8 35185
8b095871
IC
35186 for (var t = 8; t < this.padLength; t++)
35187 res[i++] = 0;
ebd8d4e8
IC
35188 }
35189
8b095871
IC
35190 return res;
35191};
ebd8d4e8 35192
8b095871
IC
35193},{"../hash":57}],59:[function(require,module,exports){
35194var hmac = exports;
ebd8d4e8 35195
8b095871
IC
35196var hash = require('../hash');
35197var utils = hash.utils;
35198var assert = utils.assert;
ebd8d4e8 35199
8b095871
IC
35200function Hmac(hash, key, enc) {
35201 if (!(this instanceof Hmac))
35202 return new Hmac(hash, key, enc);
35203 this.Hash = hash;
35204 this.blockSize = hash.blockSize / 8;
35205 this.outSize = hash.outSize / 8;
35206 this.inner = null;
35207 this.outer = null;
ebd8d4e8 35208
8b095871 35209 this._init(utils.toArray(key, enc));
ebd8d4e8 35210}
8b095871 35211module.exports = Hmac;
ebd8d4e8 35212
8b095871
IC
35213Hmac.prototype._init = function init(key) {
35214 // Shorten key, if needed
35215 if (key.length > this.blockSize)
35216 key = new this.Hash().update(key).digest();
35217 assert(key.length <= this.blockSize);
ebd8d4e8 35218
8b095871
IC
35219 // Add padding to key
35220 for (var i = key.length; i < this.blockSize; i++)
35221 key.push(0);
ab78acc6 35222
8b095871
IC
35223 for (var i = 0; i < key.length; i++)
35224 key[i] ^= 0x36;
35225 this.inner = new this.Hash().update(key);
ab78acc6 35226
8b095871
IC
35227 // 0x36 ^ 0x5c = 0x6a
35228 for (var i = 0; i < key.length; i++)
35229 key[i] ^= 0x6a;
35230 this.outer = new this.Hash().update(key);
35231};
ebd8d4e8 35232
8b095871
IC
35233Hmac.prototype.update = function update(msg, enc) {
35234 this.inner.update(msg, enc);
35235 return this;
35236};
ab78acc6 35237
8b095871
IC
35238Hmac.prototype.digest = function digest(enc) {
35239 this.outer.update(this.inner.digest());
35240 return this.outer.digest(enc);
35241};
ab78acc6 35242
8b095871
IC
35243},{"../hash":57}],60:[function(require,module,exports){
35244var hash = require('../hash');
35245var utils = hash.utils;
35246
35247var rotl32 = utils.rotl32;
35248var sum32 = utils.sum32;
35249var sum32_3 = utils.sum32_3;
35250var sum32_4 = utils.sum32_4;
35251var BlockHash = hash.common.BlockHash;
35252
35253function RIPEMD160() {
35254 if (!(this instanceof RIPEMD160))
35255 return new RIPEMD160();
35256
35257 BlockHash.call(this);
35258
35259 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
35260 this.endian = 'little';
35261}
35262utils.inherits(RIPEMD160, BlockHash);
35263exports.ripemd160 = RIPEMD160;
35264
35265RIPEMD160.blockSize = 512;
35266RIPEMD160.outSize = 160;
35267RIPEMD160.hmacStrength = 192;
35268RIPEMD160.padLength = 64;
35269
35270RIPEMD160.prototype._update = function update(msg, start) {
35271 var A = this.h[0];
35272 var B = this.h[1];
35273 var C = this.h[2];
35274 var D = this.h[3];
35275 var E = this.h[4];
35276 var Ah = A;
35277 var Bh = B;
35278 var Ch = C;
35279 var Dh = D;
35280 var Eh = E;
35281 for (var j = 0; j < 80; j++) {
35282 var T = sum32(
35283 rotl32(
35284 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
35285 s[j]),
35286 E);
35287 A = E;
35288 E = D;
35289 D = rotl32(C, 10);
35290 C = B;
35291 B = T;
35292 T = sum32(
35293 rotl32(
35294 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
35295 sh[j]),
35296 Eh);
35297 Ah = Eh;
35298 Eh = Dh;
35299 Dh = rotl32(Ch, 10);
35300 Ch = Bh;
35301 Bh = T;
35302 }
35303 T = sum32_3(this.h[1], C, Dh);
35304 this.h[1] = sum32_3(this.h[2], D, Eh);
35305 this.h[2] = sum32_3(this.h[3], E, Ah);
35306 this.h[3] = sum32_3(this.h[4], A, Bh);
35307 this.h[4] = sum32_3(this.h[0], B, Ch);
35308 this.h[0] = T;
35309};
ebd8d4e8 35310
8b095871
IC
35311RIPEMD160.prototype._digest = function digest(enc) {
35312 if (enc === 'hex')
35313 return utils.toHex32(this.h, 'little');
35314 else
35315 return utils.split32(this.h, 'little');
35316};
ebd8d4e8 35317
8b095871
IC
35318function f(j, x, y, z) {
35319 if (j <= 15)
35320 return x ^ y ^ z;
35321 else if (j <= 31)
35322 return (x & y) | ((~x) & z);
35323 else if (j <= 47)
35324 return (x | (~y)) ^ z;
35325 else if (j <= 63)
35326 return (x & z) | (y & (~z));
35327 else
35328 return x ^ (y | (~z));
35329}
35330
35331function K(j) {
35332 if (j <= 15)
35333 return 0x00000000;
35334 else if (j <= 31)
35335 return 0x5a827999;
35336 else if (j <= 47)
35337 return 0x6ed9eba1;
35338 else if (j <= 63)
35339 return 0x8f1bbcdc;
35340 else
35341 return 0xa953fd4e;
35342}
35343
35344function Kh(j) {
35345 if (j <= 15)
35346 return 0x50a28be6;
35347 else if (j <= 31)
35348 return 0x5c4dd124;
35349 else if (j <= 47)
35350 return 0x6d703ef3;
35351 else if (j <= 63)
35352 return 0x7a6d76e9;
35353 else
35354 return 0x00000000;
35355}
ebd8d4e8 35356
8b095871
IC
35357var r = [
35358 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35359 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
35360 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
35361 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
35362 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
35363];
ebd8d4e8 35364
8b095871
IC
35365var rh = [
35366 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
35367 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
35368 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
35369 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
35370 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
35371];
ebd8d4e8 35372
8b095871
IC
35373var s = [
35374 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
35375 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
35376 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
35377 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
35378 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
35379];
ebd8d4e8 35380
8b095871
IC
35381var sh = [
35382 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
35383 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
35384 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
35385 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
35386 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
35387];
ebd8d4e8 35388
8b095871
IC
35389},{"../hash":57}],61:[function(require,module,exports){
35390var hash = require('../hash');
35391var utils = hash.utils;
35392var assert = utils.assert;
35393
35394var rotr32 = utils.rotr32;
35395var rotl32 = utils.rotl32;
35396var sum32 = utils.sum32;
35397var sum32_4 = utils.sum32_4;
35398var sum32_5 = utils.sum32_5;
35399var rotr64_hi = utils.rotr64_hi;
35400var rotr64_lo = utils.rotr64_lo;
35401var shr64_hi = utils.shr64_hi;
35402var shr64_lo = utils.shr64_lo;
35403var sum64 = utils.sum64;
35404var sum64_hi = utils.sum64_hi;
35405var sum64_lo = utils.sum64_lo;
35406var sum64_4_hi = utils.sum64_4_hi;
35407var sum64_4_lo = utils.sum64_4_lo;
35408var sum64_5_hi = utils.sum64_5_hi;
35409var sum64_5_lo = utils.sum64_5_lo;
35410var BlockHash = hash.common.BlockHash;
35411
35412var sha256_K = [
35413 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
35414 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
35415 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
35416 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
35417 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
35418 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
35419 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
35420 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
35421 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
35422 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
35423 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
35424 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
35425 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
35426 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
35427 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
35428 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
35429];
ebd8d4e8 35430
8b095871
IC
35431var sha512_K = [
35432 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35433 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35434 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35435 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35436 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35437 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35438 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35439 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35440 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35441 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35442 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35443 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35444 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35445 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35446 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35447 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35448 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35449 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35450 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35451 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35452 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35453 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35454 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35455 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35456 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35457 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35458 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35459 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35460 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35461 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35462 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35463 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35464 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35465 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35466 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35467 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35468 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35469 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35470 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35471 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35472];
ebd8d4e8 35473
8b095871
IC
35474var sha1_K = [
35475 0x5A827999, 0x6ED9EBA1,
35476 0x8F1BBCDC, 0xCA62C1D6
35477];
ebd8d4e8 35478
8b095871
IC
35479function SHA256() {
35480 if (!(this instanceof SHA256))
35481 return new SHA256();
35482
35483 BlockHash.call(this);
35484 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
35485 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
35486 this.k = sha256_K;
35487 this.W = new Array(64);
35488}
35489utils.inherits(SHA256, BlockHash);
35490exports.sha256 = SHA256;
35491
35492SHA256.blockSize = 512;
35493SHA256.outSize = 256;
35494SHA256.hmacStrength = 192;
35495SHA256.padLength = 64;
35496
35497SHA256.prototype._update = function _update(msg, start) {
35498 var W = this.W;
35499
35500 for (var i = 0; i < 16; i++)
35501 W[i] = msg[start + i];
35502 for (; i < W.length; i++)
35503 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
35504
35505 var a = this.h[0];
35506 var b = this.h[1];
35507 var c = this.h[2];
35508 var d = this.h[3];
35509 var e = this.h[4];
35510 var f = this.h[5];
35511 var g = this.h[6];
35512 var h = this.h[7];
35513
35514 assert(this.k.length === W.length);
35515 for (var i = 0; i < W.length; i++) {
35516 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
35517 var T2 = sum32(s0_256(a), maj32(a, b, c));
35518 h = g;
35519 g = f;
35520 f = e;
35521 e = sum32(d, T1);
35522 d = c;
35523 c = b;
35524 b = a;
35525 a = sum32(T1, T2);
35526 }
35527
35528 this.h[0] = sum32(this.h[0], a);
35529 this.h[1] = sum32(this.h[1], b);
35530 this.h[2] = sum32(this.h[2], c);
35531 this.h[3] = sum32(this.h[3], d);
35532 this.h[4] = sum32(this.h[4], e);
35533 this.h[5] = sum32(this.h[5], f);
35534 this.h[6] = sum32(this.h[6], g);
35535 this.h[7] = sum32(this.h[7], h);
35536};
ebd8d4e8 35537
8b095871
IC
35538SHA256.prototype._digest = function digest(enc) {
35539 if (enc === 'hex')
35540 return utils.toHex32(this.h, 'big');
35541 else
35542 return utils.split32(this.h, 'big');
35543};
ebd8d4e8 35544
8b095871
IC
35545function SHA224() {
35546 if (!(this instanceof SHA224))
35547 return new SHA224();
ebd8d4e8 35548
8b095871
IC
35549 SHA256.call(this);
35550 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
35551 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
35552}
35553utils.inherits(SHA224, SHA256);
35554exports.sha224 = SHA224;
ebd8d4e8 35555
8b095871
IC
35556SHA224.blockSize = 512;
35557SHA224.outSize = 224;
35558SHA224.hmacStrength = 192;
35559SHA224.padLength = 64;
ebd8d4e8 35560
8b095871
IC
35561SHA224.prototype._digest = function digest(enc) {
35562 // Just truncate output
35563 if (enc === 'hex')
35564 return utils.toHex32(this.h.slice(0, 7), 'big');
35565 else
35566 return utils.split32(this.h.slice(0, 7), 'big');
35567};
35568
35569function SHA512() {
35570 if (!(this instanceof SHA512))
35571 return new SHA512();
35572
35573 BlockHash.call(this);
35574 this.h = [ 0x6a09e667, 0xf3bcc908,
35575 0xbb67ae85, 0x84caa73b,
35576 0x3c6ef372, 0xfe94f82b,
35577 0xa54ff53a, 0x5f1d36f1,
35578 0x510e527f, 0xade682d1,
35579 0x9b05688c, 0x2b3e6c1f,
35580 0x1f83d9ab, 0xfb41bd6b,
35581 0x5be0cd19, 0x137e2179 ];
35582 this.k = sha512_K;
35583 this.W = new Array(160);
35584}
35585utils.inherits(SHA512, BlockHash);
35586exports.sha512 = SHA512;
35587
35588SHA512.blockSize = 1024;
35589SHA512.outSize = 512;
35590SHA512.hmacStrength = 192;
35591SHA512.padLength = 128;
35592
35593SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
35594 var W = this.W;
35595
35596 // 32 x 32bit words
35597 for (var i = 0; i < 32; i++)
35598 W[i] = msg[start + i];
35599 for (; i < W.length; i += 2) {
35600 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
35601 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
35602 var c1_hi = W[i - 14]; // i - 7
35603 var c1_lo = W[i - 13];
35604 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
35605 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
35606 var c3_hi = W[i - 32]; // i - 16
35607 var c3_lo = W[i - 31];
35608
35609 W[i] = sum64_4_hi(c0_hi, c0_lo,
35610 c1_hi, c1_lo,
35611 c2_hi, c2_lo,
35612 c3_hi, c3_lo);
35613 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
35614 c1_hi, c1_lo,
35615 c2_hi, c2_lo,
35616 c3_hi, c3_lo);
ebd8d4e8 35617 }
8b095871
IC
35618};
35619
35620SHA512.prototype._update = function _update(msg, start) {
35621 this._prepareBlock(msg, start);
35622
35623 var W = this.W;
35624
35625 var ah = this.h[0];
35626 var al = this.h[1];
35627 var bh = this.h[2];
35628 var bl = this.h[3];
35629 var ch = this.h[4];
35630 var cl = this.h[5];
35631 var dh = this.h[6];
35632 var dl = this.h[7];
35633 var eh = this.h[8];
35634 var el = this.h[9];
35635 var fh = this.h[10];
35636 var fl = this.h[11];
35637 var gh = this.h[12];
35638 var gl = this.h[13];
35639 var hh = this.h[14];
35640 var hl = this.h[15];
35641
35642 assert(this.k.length === W.length);
35643 for (var i = 0; i < W.length; i += 2) {
35644 var c0_hi = hh;
35645 var c0_lo = hl;
35646 var c1_hi = s1_512_hi(eh, el);
35647 var c1_lo = s1_512_lo(eh, el);
35648 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
35649 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
35650 var c3_hi = this.k[i];
35651 var c3_lo = this.k[i + 1];
35652 var c4_hi = W[i];
35653 var c4_lo = W[i + 1];
35654
35655 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
35656 c1_hi, c1_lo,
35657 c2_hi, c2_lo,
35658 c3_hi, c3_lo,
35659 c4_hi, c4_lo);
35660 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
35661 c1_hi, c1_lo,
35662 c2_hi, c2_lo,
35663 c3_hi, c3_lo,
35664 c4_hi, c4_lo);
35665
35666 var c0_hi = s0_512_hi(ah, al);
35667 var c0_lo = s0_512_lo(ah, al);
35668 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
35669 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
35670
35671 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
35672 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
35673
35674 hh = gh;
35675 hl = gl;
35676
35677 gh = fh;
35678 gl = fl;
35679
35680 fh = eh;
35681 fl = el;
35682
35683 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
35684 el = sum64_lo(dl, dl, T1_hi, T1_lo);
35685
35686 dh = ch;
35687 dl = cl;
35688
35689 ch = bh;
35690 cl = bl;
35691
35692 bh = ah;
35693 bl = al;
35694
35695 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
35696 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
35697 }
35698
35699 sum64(this.h, 0, ah, al);
35700 sum64(this.h, 2, bh, bl);
35701 sum64(this.h, 4, ch, cl);
35702 sum64(this.h, 6, dh, dl);
35703 sum64(this.h, 8, eh, el);
35704 sum64(this.h, 10, fh, fl);
35705 sum64(this.h, 12, gh, gl);
35706 sum64(this.h, 14, hh, hl);
35707};
35708
35709SHA512.prototype._digest = function digest(enc) {
35710 if (enc === 'hex')
35711 return utils.toHex32(this.h, 'big');
35712 else
35713 return utils.split32(this.h, 'big');
35714};
35715
35716function SHA384() {
35717 if (!(this instanceof SHA384))
35718 return new SHA384();
35719
35720 SHA512.call(this);
35721 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
35722 0x629a292a, 0x367cd507,
35723 0x9159015a, 0x3070dd17,
35724 0x152fecd8, 0xf70e5939,
35725 0x67332667, 0xffc00b31,
35726 0x8eb44a87, 0x68581511,
35727 0xdb0c2e0d, 0x64f98fa7,
35728 0x47b5481d, 0xbefa4fa4 ];
35729}
35730utils.inherits(SHA384, SHA512);
35731exports.sha384 = SHA384;
35732
35733SHA384.blockSize = 1024;
35734SHA384.outSize = 384;
35735SHA384.hmacStrength = 192;
35736SHA384.padLength = 128;
35737
35738SHA384.prototype._digest = function digest(enc) {
35739 if (enc === 'hex')
35740 return utils.toHex32(this.h.slice(0, 12), 'big');
35741 else
35742 return utils.split32(this.h.slice(0, 12), 'big');
35743};
ebd8d4e8 35744
8b095871
IC
35745function SHA1() {
35746 if (!(this instanceof SHA1))
35747 return new SHA1();
ebd8d4e8 35748
8b095871
IC
35749 BlockHash.call(this);
35750 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
35751 0x10325476, 0xc3d2e1f0 ];
35752 this.W = new Array(80);
35753}
ebd8d4e8 35754
8b095871
IC
35755utils.inherits(SHA1, BlockHash);
35756exports.sha1 = SHA1;
ebd8d4e8 35757
8b095871
IC
35758SHA1.blockSize = 512;
35759SHA1.outSize = 160;
35760SHA1.hmacStrength = 80;
35761SHA1.padLength = 64;
ebd8d4e8 35762
8b095871
IC
35763SHA1.prototype._update = function _update(msg, start) {
35764 var W = this.W;
ebd8d4e8 35765
8b095871
IC
35766 for (var i = 0; i < 16; i++)
35767 W[i] = msg[start + i];
ebd8d4e8 35768
8b095871
IC
35769 for(; i < W.length; i++)
35770 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
ebd8d4e8 35771
8b095871
IC
35772 var a = this.h[0];
35773 var b = this.h[1];
35774 var c = this.h[2];
35775 var d = this.h[3];
35776 var e = this.h[4];
ebd8d4e8 35777
8b095871
IC
35778 for (var i = 0; i < W.length; i++) {
35779 var s = ~~(i / 20);
35780 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
35781 e = d;
35782 d = c;
35783 c = rotl32(b, 30);
35784 b = a;
35785 a = t;
ebd8d4e8
IC
35786 }
35787
8b095871
IC
35788 this.h[0] = sum32(this.h[0], a);
35789 this.h[1] = sum32(this.h[1], b);
35790 this.h[2] = sum32(this.h[2], c);
35791 this.h[3] = sum32(this.h[3], d);
35792 this.h[4] = sum32(this.h[4], e);
35793};
ebd8d4e8 35794
8b095871
IC
35795SHA1.prototype._digest = function digest(enc) {
35796 if (enc === 'hex')
35797 return utils.toHex32(this.h, 'big');
35798 else
35799 return utils.split32(this.h, 'big');
35800};
35801
35802function ch32(x, y, z) {
35803 return (x & y) ^ ((~x) & z);
ebd8d4e8
IC
35804}
35805
8b095871
IC
35806function maj32(x, y, z) {
35807 return (x & y) ^ (x & z) ^ (y & z);
ebd8d4e8
IC
35808}
35809
8b095871
IC
35810function p32(x, y, z) {
35811 return x ^ y ^ z;
35812}
ebd8d4e8 35813
8b095871
IC
35814function s0_256(x) {
35815 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
35816}
ebd8d4e8 35817
8b095871
IC
35818function s1_256(x) {
35819 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
ab78acc6
IC
35820}
35821
8b095871
IC
35822function g0_256(x) {
35823 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
35824}
ab78acc6 35825
8b095871
IC
35826function g1_256(x) {
35827 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
35828}
ab78acc6 35829
8b095871
IC
35830function ft_1(s, x, y, z) {
35831 if (s === 0)
35832 return ch32(x, y, z);
35833 if (s === 1 || s === 3)
35834 return p32(x, y, z);
35835 if (s === 2)
35836 return maj32(x, y, z);
35837}
ebd8d4e8 35838
8b095871
IC
35839function ch64_hi(xh, xl, yh, yl, zh, zl) {
35840 var r = (xh & yh) ^ ((~xh) & zh);
35841 if (r < 0)
35842 r += 0x100000000;
35843 return r;
35844}
ebd8d4e8 35845
8b095871
IC
35846function ch64_lo(xh, xl, yh, yl, zh, zl) {
35847 var r = (xl & yl) ^ ((~xl) & zl);
35848 if (r < 0)
35849 r += 0x100000000;
35850 return r;
ebd8d4e8
IC
35851}
35852
8b095871
IC
35853function maj64_hi(xh, xl, yh, yl, zh, zl) {
35854 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
35855 if (r < 0)
35856 r += 0x100000000;
35857 return r;
35858}
ebd8d4e8 35859
8b095871
IC
35860function maj64_lo(xh, xl, yh, yl, zh, zl) {
35861 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
35862 if (r < 0)
35863 r += 0x100000000;
35864 return r;
35865}
ebd8d4e8 35866
8b095871
IC
35867function s0_512_hi(xh, xl) {
35868 var c0_hi = rotr64_hi(xh, xl, 28);
35869 var c1_hi = rotr64_hi(xl, xh, 2); // 34
35870 var c2_hi = rotr64_hi(xl, xh, 7); // 39
35871
35872 var r = c0_hi ^ c1_hi ^ c2_hi;
35873 if (r < 0)
35874 r += 0x100000000;
35875 return r;
ebd8d4e8
IC
35876}
35877
8b095871
IC
35878function s0_512_lo(xh, xl) {
35879 var c0_lo = rotr64_lo(xh, xl, 28);
35880 var c1_lo = rotr64_lo(xl, xh, 2); // 34
35881 var c2_lo = rotr64_lo(xl, xh, 7); // 39
ab78acc6 35882
8b095871
IC
35883 var r = c0_lo ^ c1_lo ^ c2_lo;
35884 if (r < 0)
35885 r += 0x100000000;
35886 return r;
35887}
ebd8d4e8 35888
8b095871
IC
35889function s1_512_hi(xh, xl) {
35890 var c0_hi = rotr64_hi(xh, xl, 14);
35891 var c1_hi = rotr64_hi(xh, xl, 18);
35892 var c2_hi = rotr64_hi(xl, xh, 9); // 41
ebd8d4e8 35893
8b095871
IC
35894 var r = c0_hi ^ c1_hi ^ c2_hi;
35895 if (r < 0)
35896 r += 0x100000000;
35897 return r;
ebd8d4e8
IC
35898}
35899
8b095871
IC
35900function s1_512_lo(xh, xl) {
35901 var c0_lo = rotr64_lo(xh, xl, 14);
35902 var c1_lo = rotr64_lo(xh, xl, 18);
35903 var c2_lo = rotr64_lo(xl, xh, 9); // 41
35904
35905 var r = c0_lo ^ c1_lo ^ c2_lo;
35906 if (r < 0)
35907 r += 0x100000000;
35908 return r;
ebd8d4e8
IC
35909}
35910
8b095871
IC
35911function g0_512_hi(xh, xl) {
35912 var c0_hi = rotr64_hi(xh, xl, 1);
35913 var c1_hi = rotr64_hi(xh, xl, 8);
35914 var c2_hi = shr64_hi(xh, xl, 7);
ebd8d4e8 35915
8b095871
IC
35916 var r = c0_hi ^ c1_hi ^ c2_hi;
35917 if (r < 0)
35918 r += 0x100000000;
35919 return r;
35920}
35921
35922function g0_512_lo(xh, xl) {
35923 var c0_lo = rotr64_lo(xh, xl, 1);
35924 var c1_lo = rotr64_lo(xh, xl, 8);
35925 var c2_lo = shr64_lo(xh, xl, 7);
35926
35927 var r = c0_lo ^ c1_lo ^ c2_lo;
35928 if (r < 0)
35929 r += 0x100000000;
35930 return r;
35931}
35932
35933function g1_512_hi(xh, xl) {
35934 var c0_hi = rotr64_hi(xh, xl, 19);
35935 var c1_hi = rotr64_hi(xl, xh, 29); // 61
35936 var c2_hi = shr64_hi(xh, xl, 6);
35937
35938 var r = c0_hi ^ c1_hi ^ c2_hi;
35939 if (r < 0)
35940 r += 0x100000000;
35941 return r;
35942}
35943
35944function g1_512_lo(xh, xl) {
35945 var c0_lo = rotr64_lo(xh, xl, 19);
35946 var c1_lo = rotr64_lo(xl, xh, 29); // 61
35947 var c2_lo = shr64_lo(xh, xl, 6);
35948
35949 var r = c0_lo ^ c1_lo ^ c2_lo;
35950 if (r < 0)
35951 r += 0x100000000;
35952 return r;
35953}
35954
35955},{"../hash":57}],62:[function(require,module,exports){
35956var utils = exports;
35957var inherits = require('inherits');
35958
35959function toArray(msg, enc) {
35960 if (Array.isArray(msg))
35961 return msg.slice();
35962 if (!msg)
35963 return [];
35964 var res = [];
35965 if (typeof msg === 'string') {
35966 if (!enc) {
35967 for (var i = 0; i < msg.length; i++) {
35968 var c = msg.charCodeAt(i);
35969 var hi = c >> 8;
35970 var lo = c & 0xff;
35971 if (hi)
35972 res.push(hi, lo);
35973 else
35974 res.push(lo);
35975 }
35976 } else if (enc === 'hex') {
35977 msg = msg.replace(/[^a-z0-9]+/ig, '');
35978 if (msg.length % 2 !== 0)
35979 msg = '0' + msg;
35980 for (var i = 0; i < msg.length; i += 2)
35981 res.push(parseInt(msg[i] + msg[i + 1], 16));
35982 }
35983 } else {
35984 for (var i = 0; i < msg.length; i++)
35985 res[i] = msg[i] | 0;
ebd8d4e8 35986 }
8b095871 35987 return res;
ebd8d4e8 35988}
8b095871 35989utils.toArray = toArray;
ebd8d4e8 35990
8b095871
IC
35991function toHex(msg) {
35992 var res = '';
35993 for (var i = 0; i < msg.length; i++)
35994 res += zero2(msg[i].toString(16));
35995 return res;
35996}
35997utils.toHex = toHex;
ebd8d4e8 35998
8b095871
IC
35999function htonl(w) {
36000 var res = (w >>> 24) |
36001 ((w >>> 8) & 0xff00) |
36002 ((w << 8) & 0xff0000) |
36003 ((w & 0xff) << 24);
36004 return res >>> 0;
36005}
36006utils.htonl = htonl;
ebd8d4e8 36007
8b095871
IC
36008function toHex32(msg, endian) {
36009 var res = '';
36010 for (var i = 0; i < msg.length; i++) {
36011 var w = msg[i];
36012 if (endian === 'little')
36013 w = htonl(w);
36014 res += zero8(w.toString(16));
36015 }
36016 return res;
36017}
36018utils.toHex32 = toHex32;
ebd8d4e8 36019
8b095871
IC
36020function zero2(word) {
36021 if (word.length === 1)
36022 return '0' + word;
36023 else
36024 return word;
36025}
36026utils.zero2 = zero2;
36027
36028function zero8(word) {
36029 if (word.length === 7)
36030 return '0' + word;
36031 else if (word.length === 6)
36032 return '00' + word;
36033 else if (word.length === 5)
36034 return '000' + word;
36035 else if (word.length === 4)
36036 return '0000' + word;
36037 else if (word.length === 3)
36038 return '00000' + word;
36039 else if (word.length === 2)
36040 return '000000' + word;
36041 else if (word.length === 1)
36042 return '0000000' + word;
36043 else
36044 return word;
36045}
36046utils.zero8 = zero8;
36047
36048function join32(msg, start, end, endian) {
36049 var len = end - start;
36050 assert(len % 4 === 0);
36051 var res = new Array(len / 4);
36052 for (var i = 0, k = start; i < res.length; i++, k += 4) {
36053 var w;
36054 if (endian === 'big')
36055 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
36056 else
36057 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
36058 res[i] = w >>> 0;
36059 }
36060 return res;
36061}
36062utils.join32 = join32;
36063
36064function split32(msg, endian) {
36065 var res = new Array(msg.length * 4);
36066 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
36067 var m = msg[i];
36068 if (endian === 'big') {
36069 res[k] = m >>> 24;
36070 res[k + 1] = (m >>> 16) & 0xff;
36071 res[k + 2] = (m >>> 8) & 0xff;
36072 res[k + 3] = m & 0xff;
36073 } else {
36074 res[k + 3] = m >>> 24;
36075 res[k + 2] = (m >>> 16) & 0xff;
36076 res[k + 1] = (m >>> 8) & 0xff;
36077 res[k] = m & 0xff;
36078 }
ebd8d4e8 36079 }
8b095871 36080 return res;
ebd8d4e8 36081}
8b095871 36082utils.split32 = split32;
ebd8d4e8 36083
8b095871
IC
36084function rotr32(w, b) {
36085 return (w >>> b) | (w << (32 - b));
36086}
36087utils.rotr32 = rotr32;
ebd8d4e8 36088
8b095871
IC
36089function rotl32(w, b) {
36090 return (w << b) | (w >>> (32 - b));
36091}
36092utils.rotl32 = rotl32;
ebd8d4e8 36093
8b095871
IC
36094function sum32(a, b) {
36095 return (a + b) >>> 0;
36096}
36097utils.sum32 = sum32;
ebd8d4e8 36098
8b095871
IC
36099function sum32_3(a, b, c) {
36100 return (a + b + c) >>> 0;
36101}
36102utils.sum32_3 = sum32_3;
ebd8d4e8 36103
8b095871
IC
36104function sum32_4(a, b, c, d) {
36105 return (a + b + c + d) >>> 0;
36106}
36107utils.sum32_4 = sum32_4;
ebd8d4e8 36108
8b095871
IC
36109function sum32_5(a, b, c, d, e) {
36110 return (a + b + c + d + e) >>> 0;
36111}
36112utils.sum32_5 = sum32_5;
ebd8d4e8 36113
8b095871
IC
36114function assert(cond, msg) {
36115 if (!cond)
36116 throw new Error(msg || 'Assertion failed');
36117}
36118utils.assert = assert;
ab78acc6 36119
8b095871 36120utils.inherits = inherits;
ab78acc6 36121
8b095871
IC
36122function sum64(buf, pos, ah, al) {
36123 var bh = buf[pos];
36124 var bl = buf[pos + 1];
ab78acc6 36125
8b095871
IC
36126 var lo = (al + bl) >>> 0;
36127 var hi = (lo < al ? 1 : 0) + ah + bh;
36128 buf[pos] = hi >>> 0;
36129 buf[pos + 1] = lo;
36130}
36131exports.sum64 = sum64;
ebd8d4e8 36132
8b095871
IC
36133function sum64_hi(ah, al, bh, bl) {
36134 var lo = (al + bl) >>> 0;
36135 var hi = (lo < al ? 1 : 0) + ah + bh;
36136 return hi >>> 0;
36137};
36138exports.sum64_hi = sum64_hi;
ebd8d4e8 36139
8b095871
IC
36140function sum64_lo(ah, al, bh, bl) {
36141 var lo = al + bl;
36142 return lo >>> 0;
36143};
36144exports.sum64_lo = sum64_lo;
36145
36146function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
36147 var carry = 0;
36148 var lo = al;
36149 lo = (lo + bl) >>> 0;
36150 carry += lo < al ? 1 : 0;
36151 lo = (lo + cl) >>> 0;
36152 carry += lo < cl ? 1 : 0;
36153 lo = (lo + dl) >>> 0;
36154 carry += lo < dl ? 1 : 0;
36155
36156 var hi = ah + bh + ch + dh + carry;
36157 return hi >>> 0;
36158};
36159exports.sum64_4_hi = sum64_4_hi;
ebd8d4e8 36160
8b095871
IC
36161function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
36162 var lo = al + bl + cl + dl;
36163 return lo >>> 0;
36164};
36165exports.sum64_4_lo = sum64_4_lo;
36166
36167function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36168 var carry = 0;
36169 var lo = al;
36170 lo = (lo + bl) >>> 0;
36171 carry += lo < al ? 1 : 0;
36172 lo = (lo + cl) >>> 0;
36173 carry += lo < cl ? 1 : 0;
36174 lo = (lo + dl) >>> 0;
36175 carry += lo < dl ? 1 : 0;
36176 lo = (lo + el) >>> 0;
36177 carry += lo < el ? 1 : 0;
36178
36179 var hi = ah + bh + ch + dh + eh + carry;
36180 return hi >>> 0;
36181};
36182exports.sum64_5_hi = sum64_5_hi;
36183
36184function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36185 var lo = al + bl + cl + dl + el;
36186
36187 return lo >>> 0;
36188};
36189exports.sum64_5_lo = sum64_5_lo;
36190
36191function rotr64_hi(ah, al, num) {
36192 var r = (al << (32 - num)) | (ah >>> num);
36193 return r >>> 0;
36194};
36195exports.rotr64_hi = rotr64_hi;
36196
36197function rotr64_lo(ah, al, num) {
36198 var r = (ah << (32 - num)) | (al >>> num);
36199 return r >>> 0;
36200};
36201exports.rotr64_lo = rotr64_lo;
36202
36203function shr64_hi(ah, al, num) {
36204 return ah >>> num;
36205};
36206exports.shr64_hi = shr64_hi;
36207
36208function shr64_lo(ah, al, num) {
36209 var r = (ah << (32 - num)) | (al >>> num);
36210 return r >>> 0;
36211};
36212exports.shr64_lo = shr64_lo;
36213
36214},{"inherits":63}],63:[function(require,module,exports){
36215arguments[4][9][0].apply(exports,arguments)
36216},{"dup":9}],64:[function(require,module,exports){
36217/**
36218 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
36219 * @param {String} str the string input value
36220 * @return {Boolean} a boolean if it is or is not hex prefixed
36221 * @throws if the str input is not a string
36222 */
36223module.exports = function isHexPrefixed(str) {
36224 if (typeof str !== 'string') {
36225 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
36226 }
36227
36228 return str.slice(0, 2) === '0x';
ebd8d4e8
IC
36229}
36230
8b095871
IC
36231},{}],65:[function(require,module,exports){
36232'use strict'
36233module.exports = require('./lib/api')(require('./lib/keccak'))
36234
36235},{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
36236'use strict'
36237var createKeccak = require('./keccak')
36238var createShake = require('./shake')
36239
36240module.exports = function (KeccakState) {
36241 var Keccak = createKeccak(KeccakState)
36242 var Shake = createShake(KeccakState)
36243
36244 return function (algorithm, options) {
36245 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
36246 switch (hash) {
36247 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
36248 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
36249 case 'keccak384': return new Keccak(832, 768, null, 384, options)
36250 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
36251
36252 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
36253 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
36254 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
36255 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
36256
36257 case 'shake128': return new Shake(1344, 256, 0x1f, options)
36258 case 'shake256': return new Shake(1088, 512, 0x1f, options)
36259
36260 default: throw new Error('Invald algorithm: ' + algorithm)
36261 }
36262 }
36263}
36264
36265},{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
ebd8d4e8 36266(function (Buffer){
8b095871
IC
36267'use strict'
36268var Transform = require('stream').Transform
36269var inherits = require('inherits')
36270
36271module.exports = function (KeccakState) {
36272 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
36273 Transform.call(this, options)
36274
36275 this._rate = rate
36276 this._capacity = capacity
36277 this._delimitedSuffix = delimitedSuffix
36278 this._hashBitLength = hashBitLength
36279 this._options = options
36280
36281 this._state = new KeccakState()
36282 this._state.initialize(rate, capacity)
36283 this._finalized = false
36284 }
36285
36286 inherits(Keccak, Transform)
36287
36288 Keccak.prototype._transform = function (chunk, encoding, callback) {
36289 var error = null
36290 try {
36291 this.update(chunk, encoding)
36292 } catch (err) {
36293 error = err
36294 }
36295
36296 callback(error)
36297 }
36298
36299 Keccak.prototype._flush = function (callback) {
36300 var error = null
36301 try {
36302 this.push(this.digest())
36303 } catch (err) {
36304 error = err
36305 }
36306
36307 callback(error)
36308 }
36309
36310 Keccak.prototype.update = function (data, encoding) {
36311 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36312 if (this._finalized) throw new Error('Digest already called')
36313 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36314
36315 this._state.absorb(data)
36316
36317 return this
36318 }
36319
36320 Keccak.prototype.digest = function (encoding) {
36321 if (this._finalized) throw new Error('Digest already called')
36322 this._finalized = true
36323
36324 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
36325 var digest = this._state.squeeze(this._hashBitLength / 8)
36326 if (encoding !== undefined) digest = digest.toString(encoding)
36327
36328 this._resetState()
36329
36330 return digest
36331 }
36332
36333 // remove result from memory
36334 Keccak.prototype._resetState = function () {
36335 this._state.initialize(this._rate, this._capacity)
36336 return this
36337 }
36338
36339 // because sometimes we need hash right now and little later
36340 Keccak.prototype._clone = function () {
36341 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
36342 this._state.copy(clone._state)
36343 clone._finalized = this._finalized
36344
36345 return clone
36346 }
36347
36348 return Keccak
36349}
36350
36351}).call(this,require("buffer").Buffer)
36352},{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
36353(function (Buffer){
36354'use strict'
36355var Transform = require('stream').Transform
36356var inherits = require('inherits')
36357
36358module.exports = function (KeccakState) {
36359 function Shake (rate, capacity, delimitedSuffix, options) {
36360 Transform.call(this, options)
36361
36362 this._rate = rate
36363 this._capacity = capacity
36364 this._delimitedSuffix = delimitedSuffix
36365 this._options = options
36366
36367 this._state = new KeccakState()
36368 this._state.initialize(rate, capacity)
36369 this._finalized = false
36370 }
36371
36372 inherits(Shake, Transform)
36373
36374 Shake.prototype._transform = function (chunk, encoding, callback) {
36375 var error = null
36376 try {
36377 this.update(chunk, encoding)
36378 } catch (err) {
36379 error = err
36380 }
ebd8d4e8 36381
8b095871
IC
36382 callback(error)
36383 }
ebd8d4e8 36384
8b095871 36385 Shake.prototype._flush = function () {}
ebd8d4e8 36386
8b095871
IC
36387 Shake.prototype._read = function (size) {
36388 this.push(this.squeeze(size))
36389 }
ebd8d4e8 36390
8b095871
IC
36391 Shake.prototype.update = function (data, encoding) {
36392 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36393 if (this._finalized) throw new Error('Squeeze already called')
36394 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36395
36396 this._state.absorb(data)
36397
36398 return this
36399 }
36400
36401 Shake.prototype.squeeze = function (dataByteLength, encoding) {
36402 if (!this._finalized) {
36403 this._finalized = true
36404 this._state.absorbLastFewBits(this._delimitedSuffix)
ebd8d4e8 36405 }
ebd8d4e8 36406
8b095871
IC
36407 var data = this._state.squeeze(dataByteLength)
36408 if (encoding !== undefined) data = data.toString(encoding)
ebd8d4e8 36409
8b095871
IC
36410 return data
36411 }
ebd8d4e8 36412
8b095871
IC
36413 Shake.prototype._resetState = function () {
36414 this._state.initialize(this._rate, this._capacity)
36415 return this
36416 }
ebd8d4e8 36417
8b095871
IC
36418 Shake.prototype._clone = function () {
36419 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
36420 this._state.copy(clone._state)
36421 clone._finalized = this._finalized
ab78acc6 36422
8b095871
IC
36423 return clone
36424 }
ebd8d4e8 36425
8b095871
IC
36426 return Shake
36427}
ab78acc6 36428
8b095871
IC
36429}).call(this,require("buffer").Buffer)
36430},{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
36431'use strict'
36432var 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]
36433
36434exports.p1600 = function (s) {
36435 for (var round = 0; round < 24; ++round) {
36436 // theta
36437 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
36438 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
36439 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
36440 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
36441 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
36442 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
36443 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
36444 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
36445 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
36446 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
36447
36448 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
36449 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
36450 var t1slo0 = s[0] ^ lo
36451 var t1shi0 = s[1] ^ hi
36452 var t1slo5 = s[10] ^ lo
36453 var t1shi5 = s[11] ^ hi
36454 var t1slo10 = s[20] ^ lo
36455 var t1shi10 = s[21] ^ hi
36456 var t1slo15 = s[30] ^ lo
36457 var t1shi15 = s[31] ^ hi
36458 var t1slo20 = s[40] ^ lo
36459 var t1shi20 = s[41] ^ hi
36460 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
36461 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
36462 var t1slo1 = s[2] ^ lo
36463 var t1shi1 = s[3] ^ hi
36464 var t1slo6 = s[12] ^ lo
36465 var t1shi6 = s[13] ^ hi
36466 var t1slo11 = s[22] ^ lo
36467 var t1shi11 = s[23] ^ hi
36468 var t1slo16 = s[32] ^ lo
36469 var t1shi16 = s[33] ^ hi
36470 var t1slo21 = s[42] ^ lo
36471 var t1shi21 = s[43] ^ hi
36472 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
36473 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
36474 var t1slo2 = s[4] ^ lo
36475 var t1shi2 = s[5] ^ hi
36476 var t1slo7 = s[14] ^ lo
36477 var t1shi7 = s[15] ^ hi
36478 var t1slo12 = s[24] ^ lo
36479 var t1shi12 = s[25] ^ hi
36480 var t1slo17 = s[34] ^ lo
36481 var t1shi17 = s[35] ^ hi
36482 var t1slo22 = s[44] ^ lo
36483 var t1shi22 = s[45] ^ hi
36484 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
36485 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
36486 var t1slo3 = s[6] ^ lo
36487 var t1shi3 = s[7] ^ hi
36488 var t1slo8 = s[16] ^ lo
36489 var t1shi8 = s[17] ^ hi
36490 var t1slo13 = s[26] ^ lo
36491 var t1shi13 = s[27] ^ hi
36492 var t1slo18 = s[36] ^ lo
36493 var t1shi18 = s[37] ^ hi
36494 var t1slo23 = s[46] ^ lo
36495 var t1shi23 = s[47] ^ hi
36496 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
36497 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
36498 var t1slo4 = s[8] ^ lo
36499 var t1shi4 = s[9] ^ hi
36500 var t1slo9 = s[18] ^ lo
36501 var t1shi9 = s[19] ^ hi
36502 var t1slo14 = s[28] ^ lo
36503 var t1shi14 = s[29] ^ hi
36504 var t1slo19 = s[38] ^ lo
36505 var t1shi19 = s[39] ^ hi
36506 var t1slo24 = s[48] ^ lo
36507 var t1shi24 = s[49] ^ hi
36508
36509 // rho & pi
36510 var t2slo0 = t1slo0
36511 var t2shi0 = t1shi0
36512 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
36513 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
36514 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
36515 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
36516 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
36517 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
36518 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
36519 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
36520 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
36521 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
36522 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
36523 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
36524 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
36525 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
36526 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
36527 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
36528 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
36529 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
36530 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
36531 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
36532 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
36533 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
36534 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
36535 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
36536 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
36537 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
36538 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
36539 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
36540 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
36541 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
36542 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
36543 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
36544 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
36545 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
36546 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
36547 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
36548 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
36549 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
36550 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
36551 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
36552 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
36553 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
36554 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
36555 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
36556 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
36557 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
36558 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
36559 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
36560
36561 // chi
36562 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
36563 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
36564 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
36565 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
36566 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
36567 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
36568 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
36569 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
36570 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
36571 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
36572 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
36573 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
36574 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
36575 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
36576 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
36577 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
36578 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
36579 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
36580 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
36581 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
36582 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
36583 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
36584 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
36585 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
36586 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
36587 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
36588 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
36589 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
36590 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
36591 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
36592 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
36593 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
36594 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
36595 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
36596 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
36597 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
36598 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
36599 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
36600 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
36601 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
36602 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
36603 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
36604 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
36605 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
36606 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
36607 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
36608 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
36609 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
36610 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
36611 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
36612
36613 // iota
36614 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
36615 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
36616 }
36617}
36618
36619},{}],70:[function(require,module,exports){
36620(function (Buffer){
36621'use strict'
36622var keccakState = require('./keccak-state-unroll')
ebd8d4e8 36623
8b095871
IC
36624function Keccak () {
36625 // much faster than `new Array(50)`
36626 this.state = [
36627 0, 0, 0, 0, 0,
36628 0, 0, 0, 0, 0,
36629 0, 0, 0, 0, 0,
36630 0, 0, 0, 0, 0,
36631 0, 0, 0, 0, 0
36632 ]
ebd8d4e8 36633
8b095871
IC
36634 this.blockSize = null
36635 this.count = 0
36636 this.squeezing = false
36637}
ebd8d4e8 36638
8b095871
IC
36639Keccak.prototype.initialize = function (rate, capacity) {
36640 for (var i = 0; i < 50; ++i) this.state[i] = 0
36641 this.blockSize = rate / 8
36642 this.count = 0
36643 this.squeezing = false
36644}
36645
36646Keccak.prototype.absorb = function (data) {
36647 for (var i = 0; i < data.length; ++i) {
36648 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
36649 this.count += 1
36650 if (this.count === this.blockSize) {
36651 keccakState.p1600(this.state)
36652 this.count = 0
ebd8d4e8
IC
36653 }
36654 }
8b095871 36655}
ebd8d4e8 36656
8b095871
IC
36657Keccak.prototype.absorbLastFewBits = function (bits) {
36658 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
36659 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
36660 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
36661 keccakState.p1600(this.state)
36662 this.count = 0
36663 this.squeezing = true
ebd8d4e8
IC
36664}
36665
8b095871
IC
36666Keccak.prototype.squeeze = function (length) {
36667 if (!this.squeezing) this.absorbLastFewBits(0x01)
ebd8d4e8 36668
8b095871
IC
36669 var output = Buffer.allocUnsafe(length)
36670 for (var i = 0; i < length; ++i) {
36671 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
36672 this.count += 1
36673 if (this.count === this.blockSize) {
36674 keccakState.p1600(this.state)
36675 this.count = 0
ebd8d4e8 36676 }
8b095871 36677 }
ebd8d4e8 36678
8b095871
IC
36679 return output
36680}
ebd8d4e8 36681
8b095871
IC
36682Keccak.prototype.copy = function (dest) {
36683 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
36684 dest.blockSize = this.blockSize
36685 dest.count = this.count
36686 dest.squeezing = this.squeezing
36687}
ebd8d4e8 36688
8b095871 36689module.exports = Keccak
ebd8d4e8 36690
8b095871
IC
36691}).call(this,require("buffer").Buffer)
36692},{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
36693(function (Buffer){
36694/*
36695CryptoJS v3.1.2
36696code.google.com/p/crypto-js
36697(c) 2009-2013 by Jeff Mott. All rights reserved.
36698code.google.com/p/crypto-js/wiki/License
36699*/
36700/** @preserve
36701(c) 2012 by Cédric Mesnil. All rights reserved.
ebd8d4e8 36702
8b095871 36703Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
ebd8d4e8 36704
8b095871
IC
36705 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
36706 - 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.
36707
36708THIS 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.
36709*/
36710
36711// constants table
36712var zl = [
36713 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
36714 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
36715 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
36716 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
36717 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
36718]
36719
36720var zr = [
36721 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
36722 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
36723 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
36724 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
36725 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
36726]
36727
36728var sl = [
36729 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
36730 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
36731 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
36732 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
36733 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
36734]
36735
36736var sr = [
36737 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
36738 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
36739 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
36740 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
36741 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
36742]
36743
36744var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
36745var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
36746
36747function bytesToWords (bytes) {
36748 var words = []
36749 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
36750 words[b >>> 5] |= bytes[i] << (24 - b % 32)
36751 }
36752 return words
ebd8d4e8
IC
36753}
36754
8b095871
IC
36755function wordsToBytes (words) {
36756 var bytes = []
36757 for (var b = 0; b < words.length * 32; b += 8) {
36758 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
36759 }
36760 return bytes
ebd8d4e8
IC
36761}
36762
8b095871
IC
36763function processBlock (H, M, offset) {
36764 // swap endian
36765 for (var i = 0; i < 16; i++) {
36766 var offset_i = offset + i
36767 var M_offset_i = M[offset_i]
ebd8d4e8 36768
8b095871
IC
36769 // Swap
36770 M[offset_i] = (
36771 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
36772 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
36773 )
36774 }
ebd8d4e8 36775
8b095871
IC
36776 // Working variables
36777 var al, bl, cl, dl, el
36778 var ar, br, cr, dr, er
36779
36780 ar = al = H[0]
36781 br = bl = H[1]
36782 cr = cl = H[2]
36783 dr = dl = H[3]
36784 er = el = H[4]
36785
36786 // computation
36787 var t
36788 for (i = 0; i < 80; i += 1) {
36789 t = (al + M[offset + zl[i]]) | 0
36790 if (i < 16) {
36791 t += f1(bl, cl, dl) + hl[0]
36792 } else if (i < 32) {
36793 t += f2(bl, cl, dl) + hl[1]
36794 } else if (i < 48) {
36795 t += f3(bl, cl, dl) + hl[2]
36796 } else if (i < 64) {
36797 t += f4(bl, cl, dl) + hl[3]
36798 } else {// if (i<80) {
36799 t += f5(bl, cl, dl) + hl[4]
36800 }
36801 t = t | 0
36802 t = rotl(t, sl[i])
36803 t = (t + el) | 0
36804 al = el
36805 el = dl
36806 dl = rotl(cl, 10)
36807 cl = bl
36808 bl = t
36809
36810 t = (ar + M[offset + zr[i]]) | 0
36811 if (i < 16) {
36812 t += f5(br, cr, dr) + hr[0]
36813 } else if (i < 32) {
36814 t += f4(br, cr, dr) + hr[1]
36815 } else if (i < 48) {
36816 t += f3(br, cr, dr) + hr[2]
36817 } else if (i < 64) {
36818 t += f2(br, cr, dr) + hr[3]
36819 } else {// if (i<80) {
36820 t += f1(br, cr, dr) + hr[4]
36821 }
36822
36823 t = t | 0
36824 t = rotl(t, sr[i])
36825 t = (t + er) | 0
36826 ar = er
36827 er = dr
36828 dr = rotl(cr, 10)
36829 cr = br
36830 br = t
36831 }
36832
36833 // intermediate hash value
36834 t = (H[1] + cl + dr) | 0
36835 H[1] = (H[2] + dl + er) | 0
36836 H[2] = (H[3] + el + ar) | 0
36837 H[3] = (H[4] + al + br) | 0
36838 H[4] = (H[0] + bl + cr) | 0
36839 H[0] = t
ebd8d4e8
IC
36840}
36841
8b095871
IC
36842function f1 (x, y, z) {
36843 return ((x) ^ (y) ^ (z))
ebd8d4e8
IC
36844}
36845
8b095871
IC
36846function f2 (x, y, z) {
36847 return (((x) & (y)) | ((~x) & (z)))
36848}
ebd8d4e8 36849
8b095871
IC
36850function f3 (x, y, z) {
36851 return (((x) | (~(y))) ^ (z))
ebd8d4e8
IC
36852}
36853
8b095871
IC
36854function f4 (x, y, z) {
36855 return (((x) & (z)) | ((y) & (~(z))))
ebd8d4e8
IC
36856}
36857
8b095871
IC
36858function f5 (x, y, z) {
36859 return ((x) ^ ((y) | (~(z))))
ebd8d4e8
IC
36860}
36861
8b095871
IC
36862function rotl (x, n) {
36863 return (x << n) | (x >>> (32 - n))
36864}
ebd8d4e8 36865
8b095871
IC
36866function ripemd160 (message) {
36867 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
ebd8d4e8 36868
8b095871
IC
36869 if (typeof message === 'string') {
36870 message = new Buffer(message, 'utf8')
36871 }
ebd8d4e8 36872
8b095871 36873 var m = bytesToWords(message)
ebd8d4e8 36874
8b095871
IC
36875 var nBitsLeft = message.length * 8
36876 var nBitsTotal = message.length * 8
ebd8d4e8 36877
8b095871
IC
36878 // Add padding
36879 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
36880 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
36881 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
36882 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
36883 )
ebd8d4e8 36884
8b095871
IC
36885 for (var i = 0; i < m.length; i += 16) {
36886 processBlock(H, m, i)
ebd8d4e8
IC
36887 }
36888
8b095871
IC
36889 // swap endian
36890 for (i = 0; i < 5; i++) {
36891 // shortcut
36892 var H_i = H[i]
ebd8d4e8 36893
8b095871
IC
36894 // Swap
36895 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
36896 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
ebd8d4e8
IC
36897 }
36898
8b095871
IC
36899 var digestbytes = wordsToBytes(H)
36900 return new Buffer(digestbytes)
ebd8d4e8
IC
36901}
36902
8b095871 36903module.exports = ripemd160
ebd8d4e8 36904
8b095871
IC
36905}).call(this,require("buffer").Buffer)
36906},{"buffer":5}],72:[function(require,module,exports){
36907(function (Buffer){
36908const assert = require('assert')
36909/**
36910 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
36911 * This function takes in a data, convert it to buffer if not, and a length for recursion
36912 *
36913 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36914 * @returns {Buffer} - returns buffer of encoded data
36915 **/
36916exports.encode = function (input) {
36917 if (input instanceof Array) {
36918 var output = []
36919 for (var i = 0; i < input.length; i++) {
36920 output.push(exports.encode(input[i]))
36921 }
36922 var buf = Buffer.concat(output)
36923 return Buffer.concat([encodeLength(buf.length, 192), buf])
36924 } else {
36925 input = toBuffer(input)
36926 if (input.length === 1 && input[0] < 128) {
36927 return input
36928 } else {
36929 return Buffer.concat([encodeLength(input.length, 128), input])
36930 }
36931 }
ebd8d4e8
IC
36932}
36933
8b095871
IC
36934function safeParseInt (v, base) {
36935 if (v.slice(0, 2) === '00') {
36936 throw (new Error('invalid RLP: extra zeros'))
36937 }
ebd8d4e8 36938
8b095871 36939 return parseInt(v, base)
ebd8d4e8
IC
36940}
36941
8b095871
IC
36942function encodeLength (len, offset) {
36943 if (len < 56) {
36944 return new Buffer([len + offset])
36945 } else {
36946 var hexLength = intToHex(len)
36947 var lLength = hexLength.length / 2
36948 var firstByte = intToHex(offset + 55 + lLength)
36949 return new Buffer(firstByte + hexLength, 'hex')
36950 }
36951}
ebd8d4e8 36952
8b095871
IC
36953/**
36954 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
36955 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36956 * @returns {Array} - returns decode Array of Buffers containg the original message
36957 **/
36958exports.decode = function (input, stream) {
36959 if (!input || input.length === 0) {
36960 return new Buffer([])
36961 }
ebd8d4e8 36962
8b095871
IC
36963 input = toBuffer(input)
36964 var decoded = _decode(input)
ab78acc6 36965
8b095871
IC
36966 if (stream) {
36967 return decoded
36968 }
ebd8d4e8 36969
8b095871
IC
36970 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
36971 return decoded.data
ebd8d4e8
IC
36972}
36973
8b095871
IC
36974exports.getLength = function (input) {
36975 if (!input || input.length === 0) {
36976 return new Buffer([])
ab78acc6
IC
36977 }
36978
8b095871
IC
36979 input = toBuffer(input)
36980 var firstByte = input[0]
36981 if (firstByte <= 0x7f) {
36982 return input.length
36983 } else if (firstByte <= 0xb7) {
36984 return firstByte - 0x7f
36985 } else if (firstByte <= 0xbf) {
36986 return firstByte - 0xb6
36987 } else if (firstByte <= 0xf7) {
36988 // a list between 0-55 bytes long
36989 return firstByte - 0xbf
36990 } else {
36991 // a list over 55 bytes long
36992 var llength = firstByte - 0xf6
36993 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
36994 return llength + length
36995 }
ebd8d4e8
IC
36996}
36997
8b095871
IC
36998function _decode (input) {
36999 var length, llength, data, innerRemainder, d
37000 var decoded = []
37001 var firstByte = input[0]
ebd8d4e8 37002
8b095871
IC
37003 if (firstByte <= 0x7f) {
37004 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
37005 return {
37006 data: input.slice(0, 1),
37007 remainder: input.slice(1)
37008 }
37009 } else if (firstByte <= 0xb7) {
37010 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
37011 // The range of the first byte is [0x80, 0xb7]
37012 length = firstByte - 0x7f
ebd8d4e8 37013
8b095871
IC
37014 // set 0x80 null to 0
37015 if (firstByte === 0x80) {
37016 data = new Buffer([])
37017 } else {
37018 data = input.slice(1, length)
37019 }
ebd8d4e8 37020
8b095871
IC
37021 if (length === 2 && data[0] < 0x80) {
37022 throw new Error('invalid rlp encoding: byte must be less 0x80')
37023 }
ebd8d4e8 37024
8b095871
IC
37025 return {
37026 data: data,
37027 remainder: input.slice(length)
37028 }
37029 } else if (firstByte <= 0xbf) {
37030 llength = firstByte - 0xb6
37031 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37032 data = input.slice(llength, length + llength)
37033 if (data.length < length) {
37034 throw (new Error('invalid RLP'))
37035 }
ebd8d4e8 37036
8b095871
IC
37037 return {
37038 data: data,
37039 remainder: input.slice(length + llength)
37040 }
37041 } else if (firstByte <= 0xf7) {
37042 // a list between 0-55 bytes long
37043 length = firstByte - 0xbf
37044 innerRemainder = input.slice(1, length)
37045 while (innerRemainder.length) {
37046 d = _decode(innerRemainder)
37047 decoded.push(d.data)
37048 innerRemainder = d.remainder
37049 }
ebd8d4e8 37050
8b095871
IC
37051 return {
37052 data: decoded,
37053 remainder: input.slice(length)
37054 }
37055 } else {
37056 // a list over 55 bytes long
37057 llength = firstByte - 0xf6
37058 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37059 var totalLength = llength + length
37060 if (totalLength > input.length) {
37061 throw new Error('invalid rlp: total length is larger than the data')
37062 }
ab78acc6 37063
8b095871
IC
37064 innerRemainder = input.slice(llength, totalLength)
37065 if (innerRemainder.length === 0) {
37066 throw new Error('invalid rlp, List has a invalid length')
37067 }
ab78acc6 37068
8b095871
IC
37069 while (innerRemainder.length) {
37070 d = _decode(innerRemainder)
37071 decoded.push(d.data)
37072 innerRemainder = d.remainder
37073 }
37074 return {
37075 data: decoded,
37076 remainder: input.slice(totalLength)
37077 }
ab78acc6 37078 }
8b095871 37079}
ab78acc6 37080
8b095871
IC
37081function isHexPrefixed (str) {
37082 return str.slice(0, 2) === '0x'
ab78acc6
IC
37083}
37084
8b095871
IC
37085// Removes 0x from a given String
37086function stripHexPrefix (str) {
37087 if (typeof str !== 'string') {
37088 return str
37089 }
37090 return isHexPrefixed(str) ? str.slice(2) : str
37091}
ab78acc6 37092
8b095871
IC
37093function intToHex (i) {
37094 var hex = i.toString(16)
37095 if (hex.length % 2) {
37096 hex = '0' + hex
ab78acc6
IC
37097 }
37098
8b095871 37099 return hex
ebd8d4e8
IC
37100}
37101
8b095871
IC
37102function padToEven (a) {
37103 if (a.length % 2) a = '0' + a
37104 return a
ebd8d4e8
IC
37105}
37106
8b095871
IC
37107function intToBuffer (i) {
37108 var hex = intToHex(i)
37109 return new Buffer(hex, 'hex')
ebd8d4e8
IC
37110}
37111
8b095871
IC
37112function toBuffer (v) {
37113 if (!Buffer.isBuffer(v)) {
37114 if (typeof v === 'string') {
37115 if (isHexPrefixed(v)) {
37116 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
37117 } else {
37118 v = new Buffer(v)
37119 }
37120 } else if (typeof v === 'number') {
37121 if (!v) {
37122 v = new Buffer([])
37123 } else {
37124 v = intToBuffer(v)
37125 }
37126 } else if (v === null || v === undefined) {
37127 v = new Buffer([])
37128 } else if (v.toArray) {
37129 // converts a BN to a Buffer
37130 v = new Buffer(v.toArray())
37131 } else {
37132 throw new Error('invalid type')
37133 }
37134 }
37135 return v
ebd8d4e8
IC
37136}
37137
8b095871
IC
37138}).call(this,require("buffer").Buffer)
37139},{"assert":1,"buffer":5}],73:[function(require,module,exports){
37140'use strict'
37141module.exports = require('./lib')(require('./lib/elliptic'))
ebd8d4e8 37142
8b095871
IC
37143},{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
37144(function (Buffer){
37145'use strict'
37146var toString = Object.prototype.toString
ebd8d4e8 37147
8b095871
IC
37148// TypeError
37149exports.isArray = function (value, message) {
37150 if (!Array.isArray(value)) throw TypeError(message)
ebd8d4e8
IC
37151}
37152
8b095871
IC
37153exports.isBoolean = function (value, message) {
37154 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
37155}
ebd8d4e8 37156
8b095871
IC
37157exports.isBuffer = function (value, message) {
37158 if (!Buffer.isBuffer(value)) throw TypeError(message)
ebd8d4e8
IC
37159}
37160
8b095871
IC
37161exports.isFunction = function (value, message) {
37162 if (toString.call(value) !== '[object Function]') throw TypeError(message)
ebd8d4e8
IC
37163}
37164
8b095871
IC
37165exports.isNumber = function (value, message) {
37166 if (toString.call(value) !== '[object Number]') throw TypeError(message)
37167}
ab78acc6 37168
8b095871
IC
37169exports.isObject = function (value, message) {
37170 if (toString.call(value) !== '[object Object]') throw TypeError(message)
37171}
ebd8d4e8 37172
8b095871
IC
37173// RangeError
37174exports.isBufferLength = function (buffer, length, message) {
37175 if (buffer.length !== length) throw RangeError(message)
37176}
ebd8d4e8 37177
8b095871
IC
37178exports.isBufferLength2 = function (buffer, length1, length2, message) {
37179 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
ab78acc6
IC
37180}
37181
8b095871
IC
37182exports.isLengthGTZero = function (value, message) {
37183 if (value.length === 0) throw RangeError(message)
ebd8d4e8
IC
37184}
37185
8b095871
IC
37186exports.isNumberInInterval = function (number, x, y, message) {
37187 if (number <= x || number >= y) throw RangeError(message)
ebd8d4e8
IC
37188}
37189
8b095871
IC
37190}).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
37191},{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
ebd8d4e8 37192(function (Buffer){
8b095871
IC
37193'use strict'
37194var bip66 = require('bip66')
37195
37196var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
37197 // begin
37198 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
37199 // private key
37200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37202 // middle
37203 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37204 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37205 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37206 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37207 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37208 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37209 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37210 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37211 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
37212 // public key
37213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37215 0x00
37216])
37217
37218var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
37219 // begin
37220 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
37221 // private key
37222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37224 // middle
37225 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37226 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37227 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37228 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37229 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37230 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37231 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
37232 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
37233 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37234 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37235 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
37236 // public key
37237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37241 0x00
37242])
37243
37244var ZERO_BUFFER_32 = new Buffer([
37245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
37247])
37248
37249exports.privateKeyExport = function (privateKey, publicKey, compressed) {
37250 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
37251 privateKey.copy(result, compressed ? 8 : 9)
37252 publicKey.copy(result, compressed ? 181 : 214)
37253 return result
37254}
37255
37256exports.privateKeyImport = function (privateKey) {
37257 var length = privateKey.length
37258
37259 // sequence header
37260 var index = 0
37261 if (length < index + 1 || privateKey[index] !== 0x30) return
37262 index += 1
37263
37264 // sequence length constructor
37265 if (length < index + 1 || !(privateKey[index] & 0x80)) return
37266
37267 var lenb = privateKey[index] & 0x7f
37268 index += 1
37269 if (lenb < 1 || lenb > 2) return
37270 if (length < index + lenb) return
37271
37272 // sequence length
37273 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
37274 index += lenb
37275 if (length < index + len) return
37276
37277 // sequence element 0: version number (=1)
37278 if (length < index + 3 ||
37279 privateKey[index] !== 0x02 ||
37280 privateKey[index + 1] !== 0x01 ||
37281 privateKey[index + 2] !== 0x01) {
37282 return
37283 }
37284 index += 3
ab78acc6 37285
8b095871
IC
37286 // sequence element 1: octet string, up to 32 bytes
37287 if (length < index + 2 ||
37288 privateKey[index] !== 0x04 ||
37289 privateKey[index + 1] > 0x20 ||
37290 length < index + 2 + privateKey[index + 1]) {
37291 return
37292 }
ab78acc6 37293
8b095871 37294 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
ab78acc6 37295}
ebd8d4e8 37296
8b095871
IC
37297exports.signatureExport = function (sigObj) {
37298 var r = Buffer.concat([new Buffer([0]), sigObj.r])
37299 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
ebd8d4e8 37300
8b095871
IC
37301 var s = Buffer.concat([new Buffer([0]), sigObj.s])
37302 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
ab78acc6 37303
8b095871
IC
37304 return bip66.encode(r.slice(posR), s.slice(posS))
37305}
ab78acc6 37306
8b095871
IC
37307exports.signatureImport = function (sig) {
37308 var r = new Buffer(ZERO_BUFFER_32)
37309 var s = new Buffer(ZERO_BUFFER_32)
ab78acc6 37310
8b095871
IC
37311 try {
37312 var sigObj = bip66.decode(sig)
37313 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
37314 if (sigObj.r.length > 32) throw new Error('R length is too long')
37315 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
37316 if (sigObj.s.length > 32) throw new Error('S length is too long')
37317 } catch (err) {
37318 return
ab78acc6
IC
37319 }
37320
8b095871
IC
37321 sigObj.r.copy(r, 32 - sigObj.r.length)
37322 sigObj.s.copy(s, 32 - sigObj.s.length)
ab78acc6 37323
8b095871
IC
37324 return { r: r, s: s }
37325}
ab78acc6 37326
8b095871
IC
37327exports.signatureImportLax = function (sig) {
37328 var r = new Buffer(ZERO_BUFFER_32)
37329 var s = new Buffer(ZERO_BUFFER_32)
ab78acc6 37330
8b095871
IC
37331 var length = sig.length
37332 var index = 0
ab78acc6 37333
8b095871
IC
37334 // sequence tag byte
37335 if (sig[index++] !== 0x30) return
37336
37337 // sequence length byte
37338 var lenbyte = sig[index++]
37339 if (lenbyte & 0x80) {
37340 index += lenbyte - 0x80
37341 if (index > length) return
ab78acc6
IC
37342 }
37343
8b095871
IC
37344 // sequence tag byte for r
37345 if (sig[index++] !== 0x02) return
37346
37347 // length for r
37348 var rlen = sig[index++]
37349 if (rlen & 0x80) {
37350 lenbyte = rlen - 0x80
37351 if (index + lenbyte > length) return
37352 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37353 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
ab78acc6 37354 }
8b095871
IC
37355 if (rlen > length - index) return
37356 var rindex = index
37357 index += rlen
ab78acc6 37358
8b095871
IC
37359 // sequence tag byte for s
37360 if (sig[index++] !== 0x02) return
ab78acc6 37361
8b095871
IC
37362 // length for s
37363 var slen = sig[index++]
37364 if (slen & 0x80) {
37365 lenbyte = slen - 0x80
37366 if (index + lenbyte > length) return
37367 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37368 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
ab78acc6 37369 }
8b095871
IC
37370 if (slen > length - index) return
37371 var sindex = index
37372 index += slen
ab78acc6 37373
8b095871
IC
37374 // ignore leading zeros in r
37375 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
37376 // copy r value
37377 if (rlen > 32) return
37378 var rvalue = sig.slice(rindex, rindex + rlen)
37379 rvalue.copy(r, 32 - rvalue.length)
ab78acc6 37380
8b095871
IC
37381 // ignore leading zeros in s
37382 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
37383 // copy s value
37384 if (slen > 32) return
37385 var svalue = sig.slice(sindex, sindex + slen)
37386 svalue.copy(s, 32 - svalue.length)
37387
37388 return { r: r, s: s }
ab78acc6
IC
37389}
37390
8b095871
IC
37391}).call(this,require("buffer").Buffer)
37392},{"bip66":32,"buffer":5}],76:[function(require,module,exports){
37393(function (Buffer){
37394'use strict'
37395var createHash = require('create-hash')
37396var BN = require('bn.js')
37397var EC = require('elliptic').ec
37398
37399var messages = require('../messages.json')
37400
37401var ec = new EC('secp256k1')
37402var ecparams = ec.curve
37403
37404function loadCompressedPublicKey (first, xBuffer) {
37405 var x = new BN(xBuffer)
37406
37407 // overflow
37408 if (x.cmp(ecparams.p) >= 0) return null
37409 x = x.toRed(ecparams.red)
37410
37411 // compute corresponding Y
37412 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
37413 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
37414
37415 return ec.keyPair({ pub: { x: x, y: y } })
ebd8d4e8
IC
37416}
37417
8b095871
IC
37418function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
37419 var x = new BN(xBuffer)
37420 var y = new BN(yBuffer)
ebd8d4e8 37421
8b095871
IC
37422 // overflow
37423 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
ebd8d4e8 37424
8b095871
IC
37425 x = x.toRed(ecparams.red)
37426 y = y.toRed(ecparams.red)
ebd8d4e8 37427
8b095871
IC
37428 // is odd flag
37429 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
ab78acc6 37430
8b095871
IC
37431 // x*x*x + b = y*y
37432 var x3 = x.redSqr().redIMul(x)
37433 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
ebd8d4e8 37434
8b095871 37435 return ec.keyPair({ pub: { x: x, y: y } })
ebd8d4e8
IC
37436}
37437
8b095871
IC
37438function loadPublicKey (publicKey) {
37439 var first = publicKey[0]
37440 switch (first) {
37441 case 0x02:
37442 case 0x03:
37443 if (publicKey.length !== 33) return null
37444 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
37445 case 0x04:
37446 case 0x06:
37447 case 0x07:
37448 if (publicKey.length !== 65) return null
37449 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
37450 default:
37451 return null
ebd8d4e8 37452 }
8b095871 37453}
ebd8d4e8 37454
8b095871
IC
37455exports.privateKeyVerify = function (privateKey) {
37456 var bn = new BN(privateKey)
37457 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
37458}
ebd8d4e8 37459
8b095871
IC
37460exports.privateKeyExport = function (privateKey, compressed) {
37461 var d = new BN(privateKey)
37462 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
ab78acc6 37463
8b095871 37464 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
ebd8d4e8
IC
37465}
37466
8b095871
IC
37467exports.privateKeyTweakAdd = function (privateKey, tweak) {
37468 var bn = new BN(tweak)
37469 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
ab78acc6 37470
8b095871
IC
37471 bn.iadd(new BN(privateKey))
37472 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
37473 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
ab78acc6 37474
8b095871
IC
37475 return bn.toArrayLike(Buffer, 'be', 32)
37476}
37477
37478exports.privateKeyTweakMul = function (privateKey, tweak) {
37479 var bn = new BN(tweak)
37480 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
37481
37482 bn.imul(new BN(privateKey))
37483 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
37484
37485 return bn.toArrayLike(Buffer, 'be', 32)
37486}
37487
37488exports.publicKeyCreate = function (privateKey, compressed) {
37489 var d = new BN(privateKey)
37490 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
37491
37492 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37493}
37494
37495exports.publicKeyConvert = function (publicKey, compressed) {
37496 var pair = loadPublicKey(publicKey)
37497 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 37498
8b095871 37499 return new Buffer(pair.getPublic(compressed, true))
ab78acc6
IC
37500}
37501
8b095871
IC
37502exports.publicKeyVerify = function (publicKey) {
37503 return loadPublicKey(publicKey) !== null
37504}
ab78acc6 37505
8b095871
IC
37506exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
37507 var pair = loadPublicKey(publicKey)
37508 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 37509
8b095871
IC
37510 tweak = new BN(tweak)
37511 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
ab78acc6 37512
8b095871
IC
37513 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
37514}
ab78acc6 37515
8b095871
IC
37516exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
37517 var pair = loadPublicKey(publicKey)
37518 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 37519
8b095871
IC
37520 tweak = new BN(tweak)
37521 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
ab78acc6 37522
8b095871
IC
37523 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
37524}
ab78acc6 37525
8b095871
IC
37526exports.publicKeyCombine = function (publicKeys, compressed) {
37527 var pairs = new Array(publicKeys.length)
37528 for (var i = 0; i < publicKeys.length; ++i) {
37529 pairs[i] = loadPublicKey(publicKeys[i])
37530 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6
IC
37531 }
37532
8b095871
IC
37533 var point = pairs[0].pub
37534 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
37535 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
ab78acc6 37536
8b095871
IC
37537 return new Buffer(point.encode(true, compressed))
37538}
ab78acc6 37539
8b095871
IC
37540exports.signatureNormalize = function (signature) {
37541 var r = new BN(signature.slice(0, 32))
37542 var s = new BN(signature.slice(32, 64))
37543 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37544
37545 var result = new Buffer(signature)
37546 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
37547
37548 return result
ab78acc6
IC
37549}
37550
8b095871
IC
37551exports.signatureExport = function (signature) {
37552 var r = signature.slice(0, 32)
37553 var s = signature.slice(32, 64)
37554 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37555
37556 return { r: r, s: s }
ab78acc6
IC
37557}
37558
8b095871
IC
37559exports.signatureImport = function (sigObj) {
37560 var r = new BN(sigObj.r)
37561 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
37562
37563 var s = new BN(sigObj.s)
37564 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
37565
37566 return Buffer.concat([
37567 r.toArrayLike(Buffer, 'be', 32),
37568 s.toArrayLike(Buffer, 'be', 32)
37569 ])
ab78acc6
IC
37570}
37571
8b095871
IC
37572exports.sign = function (message, privateKey, noncefn, data) {
37573 if (typeof noncefn === 'function') {
37574 var getNonce = noncefn
37575 noncefn = function (counter) {
37576 var nonce = getNonce(message, privateKey, null, data, counter)
37577 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
ebd8d4e8 37578
8b095871
IC
37579 return new BN(nonce)
37580 }
ab78acc6 37581 }
ebd8d4e8 37582
8b095871
IC
37583 var d = new BN(privateKey)
37584 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
ebd8d4e8 37585
8b095871
IC
37586 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
37587 return {
37588 signature: Buffer.concat([
37589 result.r.toArrayLike(Buffer, 'be', 32),
37590 result.s.toArrayLike(Buffer, 'be', 32)
37591 ]),
37592 recovery: result.recoveryParam
ebd8d4e8 37593 }
8b095871 37594}
ab78acc6 37595
8b095871
IC
37596exports.verify = function (message, signature, publicKey) {
37597 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
ab78acc6 37598
8b095871
IC
37599 var sigr = new BN(sigObj.r)
37600 var sigs = new BN(sigObj.s)
37601 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37602 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
ab78acc6 37603
8b095871
IC
37604 var pair = loadPublicKey(publicKey)
37605 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ebd8d4e8 37606
8b095871
IC
37607 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
37608}
ebd8d4e8 37609
8b095871
IC
37610exports.recover = function (message, signature, recovery, compressed) {
37611 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
ebd8d4e8 37612
8b095871
IC
37613 var sigr = new BN(sigObj.r)
37614 var sigs = new BN(sigObj.s)
37615 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
ebd8d4e8 37616
8b095871
IC
37617 try {
37618 if (sigr.isZero() || sigs.isZero()) throw new Error()
ebd8d4e8 37619
8b095871
IC
37620 var point = ec.recoverPubKey(message, sigObj, recovery)
37621 return new Buffer(point.encode(true, compressed))
37622 } catch (err) {
37623 throw new Error(messages.ECDSA_RECOVER_FAIL)
37624 }
ebd8d4e8
IC
37625}
37626
8b095871
IC
37627exports.ecdh = function (publicKey, privateKey) {
37628 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
37629 return createHash('sha256').update(shared).digest()
ebd8d4e8
IC
37630}
37631
8b095871
IC
37632exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
37633 var pair = loadPublicKey(publicKey)
37634 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 37635
8b095871
IC
37636 var scalar = new BN(privateKey)
37637 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
37638
37639 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
ab78acc6
IC
37640}
37641
8b095871
IC
37642}).call(this,require("buffer").Buffer)
37643},{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
37644'use strict'
37645var assert = require('./assert')
37646var der = require('./der')
37647var messages = require('./messages.json')
ab78acc6 37648
8b095871
IC
37649function initCompressedValue (value, defaultValue) {
37650 if (value === undefined) return defaultValue
ab78acc6 37651
8b095871
IC
37652 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
37653 return value
ab78acc6
IC
37654}
37655
8b095871
IC
37656module.exports = function (secp256k1) {
37657 return {
37658 privateKeyVerify: function (privateKey) {
37659 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37660 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
37661 },
ab78acc6 37662
8b095871
IC
37663 privateKeyExport: function (privateKey, compressed) {
37664 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37665 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 37666
8b095871
IC
37667 compressed = initCompressedValue(compressed, true)
37668 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
ab78acc6 37669
8b095871
IC
37670 return der.privateKeyExport(privateKey, publicKey, compressed)
37671 },
ab78acc6 37672
8b095871
IC
37673 privateKeyImport: function (privateKey) {
37674 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
ab78acc6 37675
8b095871
IC
37676 privateKey = der.privateKeyImport(privateKey)
37677 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
ab78acc6 37678
8b095871
IC
37679 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
37680 },
ab78acc6 37681
8b095871
IC
37682 privateKeyTweakAdd: function (privateKey, tweak) {
37683 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37684 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 37685
8b095871
IC
37686 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37687 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
ab78acc6 37688
8b095871
IC
37689 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
37690 },
ab78acc6 37691
8b095871
IC
37692 privateKeyTweakMul: function (privateKey, tweak) {
37693 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37694 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 37695
8b095871
IC
37696 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37697 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
ab78acc6 37698
8b095871
IC
37699 return secp256k1.privateKeyTweakMul(privateKey, tweak)
37700 },
ab78acc6 37701
8b095871
IC
37702 publicKeyCreate: function (privateKey, compressed) {
37703 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37704 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 37705
8b095871 37706 compressed = initCompressedValue(compressed, true)
ab78acc6 37707
8b095871
IC
37708 return secp256k1.publicKeyCreate(privateKey, compressed)
37709 },
ab78acc6 37710
8b095871
IC
37711 publicKeyConvert: function (publicKey, compressed) {
37712 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37713 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6 37714
8b095871
IC
37715 compressed = initCompressedValue(compressed, true)
37716
37717 return secp256k1.publicKeyConvert(publicKey, compressed)
37718 },
37719
37720 publicKeyVerify: function (publicKey) {
37721 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37722 return secp256k1.publicKeyVerify(publicKey)
37723 },
37724
37725 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
37726 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37727 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37728
37729 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37730 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37731
37732 compressed = initCompressedValue(compressed, true)
37733
37734 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
37735 },
37736
37737 publicKeyTweakMul: function (publicKey, tweak, compressed) {
37738 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37739 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37740
37741 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37742 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37743
37744 compressed = initCompressedValue(compressed, true)
37745
37746 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
37747 },
37748
37749 publicKeyCombine: function (publicKeys, compressed) {
37750 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
37751 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
37752 for (var i = 0; i < publicKeys.length; ++i) {
37753 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
37754 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6
IC
37755 }
37756
8b095871 37757 compressed = initCompressedValue(compressed, true)
ab78acc6 37758
8b095871
IC
37759 return secp256k1.publicKeyCombine(publicKeys, compressed)
37760 },
ab78acc6 37761
8b095871
IC
37762 signatureNormalize: function (signature) {
37763 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37764 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
ab78acc6 37765
8b095871
IC
37766 return secp256k1.signatureNormalize(signature)
37767 },
ab78acc6 37768
8b095871
IC
37769 signatureExport: function (signature) {
37770 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37771 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37772
37773 var sigObj = secp256k1.signatureExport(signature)
37774 return der.signatureExport(sigObj)
37775 },
37776
37777 signatureImport: function (sig) {
37778 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37779 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37780
37781 var sigObj = der.signatureImport(sig)
37782 if (sigObj) return secp256k1.signatureImport(sigObj)
37783
37784 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37785 },
37786
37787 signatureImportLax: function (sig) {
37788 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37789 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37790
37791 var sigObj = der.signatureImportLax(sig)
37792 if (sigObj) return secp256k1.signatureImport(sigObj)
37793
37794 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37795 },
37796
37797 sign: function (message, privateKey, options) {
37798 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37799 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37800
37801 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37802 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37803
37804 var data = null
37805 var noncefn = null
37806 if (options !== undefined) {
37807 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
37808
37809 if (options.data !== undefined) {
37810 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
37811 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
37812 data = options.data
37813 }
37814
37815 if (options.noncefn !== undefined) {
37816 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
37817 noncefn = options.noncefn
37818 }
ab78acc6
IC
37819 }
37820
8b095871
IC
37821 return secp256k1.sign(message, privateKey, noncefn, data)
37822 },
ab78acc6 37823
8b095871
IC
37824 verify: function (message, signature, publicKey) {
37825 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37826 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
ab78acc6 37827
8b095871
IC
37828 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37829 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
ab78acc6 37830
8b095871
IC
37831 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37832 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37833
37834 return secp256k1.verify(message, signature, publicKey)
37835 },
ab78acc6 37836
8b095871
IC
37837 recover: function (message, signature, recovery, compressed) {
37838 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37839 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
ab78acc6 37840
8b095871
IC
37841 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37842 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
ab78acc6 37843
8b095871
IC
37844 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
37845 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
ab78acc6 37846
8b095871 37847 compressed = initCompressedValue(compressed, true)
ab78acc6 37848
8b095871
IC
37849 return secp256k1.recover(message, signature, recovery, compressed)
37850 },
ab78acc6 37851
8b095871
IC
37852 ecdh: function (publicKey, privateKey) {
37853 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37854 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6 37855
8b095871
IC
37856 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37857 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 37858
8b095871
IC
37859 return secp256k1.ecdh(publicKey, privateKey)
37860 },
ab78acc6 37861
8b095871
IC
37862 ecdhUnsafe: function (publicKey, privateKey, compressed) {
37863 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37864 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6 37865
8b095871
IC
37866 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37867 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 37868
8b095871 37869 compressed = initCompressedValue(compressed, true)
ab78acc6 37870
8b095871
IC
37871 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
37872 }
37873 }
37874}
ab78acc6 37875
8b095871
IC
37876},{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
37877module.exports={
37878 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
37879 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
37880 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
37881 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
37882 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37883 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
37884 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
37885 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
37886 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
37887 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
37888 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
37889 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
37890 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
37891 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
37892 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37893 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
37894 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
37895 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
37896 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
37897 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
37898 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
37899 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
37900 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
37901 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
37902 "MSG32_TYPE_INVALID": "message should be a Buffer",
37903 "MSG32_LENGTH_INVALID": "message length is invalid",
37904 "OPTIONS_TYPE_INVALID": "options should be an Object",
37905 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
37906 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
37907 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
37908 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
37909 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
37910 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
37911 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
37912}
37913
37914},{}],79:[function(require,module,exports){
37915(function (Buffer){
37916// prototype class for hash functions
37917function Hash (blockSize, finalSize) {
37918 this._block = new Buffer(blockSize)
37919 this._finalSize = finalSize
37920 this._blockSize = blockSize
37921 this._len = 0
37922 this._s = 0
37923}
37924
37925Hash.prototype.update = function (data, enc) {
37926 if (typeof data === 'string') {
37927 enc = enc || 'utf8'
37928 data = new Buffer(data, enc)
ab78acc6
IC
37929 }
37930
8b095871
IC
37931 var l = this._len += data.length
37932 var s = this._s || 0
37933 var f = 0
37934 var buffer = this._block
ab78acc6 37935
8b095871
IC
37936 while (s < l) {
37937 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
37938 var ch = (t - f)
ab78acc6 37939
8b095871
IC
37940 for (var i = 0; i < ch; i++) {
37941 buffer[(s % this._blockSize) + i] = data[i + f]
ab78acc6
IC
37942 }
37943
8b095871
IC
37944 s += ch
37945 f += ch
ab78acc6 37946
8b095871
IC
37947 if ((s % this._blockSize) === 0) {
37948 this._update(buffer)
37949 }
ab78acc6 37950 }
8b095871 37951 this._s = s
ab78acc6 37952
8b095871
IC
37953 return this
37954}
ab78acc6 37955
8b095871
IC
37956Hash.prototype.digest = function (enc) {
37957 // Suppose the length of the message M, in bits, is l
37958 var l = this._len * 8
ab78acc6 37959
8b095871
IC
37960 // Append the bit 1 to the end of the message
37961 this._block[this._len % this._blockSize] = 0x80
ab78acc6 37962
8b095871
IC
37963 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
37964 this._block.fill(0, this._len % this._blockSize + 1)
ab78acc6 37965
8b095871
IC
37966 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
37967 this._update(this._block)
37968 this._block.fill(0)
37969 }
ab78acc6 37970
8b095871
IC
37971 // to this append the block which is equal to the number l written in binary
37972 // TODO: handle case where l is > Math.pow(2, 29)
37973 this._block.writeInt32BE(l, this._blockSize - 4)
ebd8d4e8 37974
8b095871 37975 var hash = this._update(this._block) || this._hash()
ebd8d4e8 37976
8b095871 37977 return enc ? hash.toString(enc) : hash
ab78acc6 37978}
ebd8d4e8 37979
8b095871
IC
37980Hash.prototype._update = function () {
37981 throw new Error('_update must be implemented by subclass')
ab78acc6 37982}
8b095871
IC
37983
37984module.exports = Hash
37985
37986}).call(this,require("buffer").Buffer)
37987},{"buffer":5}],80:[function(require,module,exports){
37988var exports = module.exports = function SHA (algorithm) {
37989 algorithm = algorithm.toLowerCase()
37990
37991 var Algorithm = exports[algorithm]
37992 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
37993
37994 return new Algorithm()
ab78acc6 37995}
ebd8d4e8 37996
8b095871
IC
37997exports.sha = require('./sha')
37998exports.sha1 = require('./sha1')
37999exports.sha224 = require('./sha224')
38000exports.sha256 = require('./sha256')
38001exports.sha384 = require('./sha384')
38002exports.sha512 = require('./sha512')
38003
38004},{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
38005(function (Buffer){
38006/*
38007 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
38008 * in FIPS PUB 180-1
38009 * This source code is derived from sha1.js of the same repository.
38010 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
38011 * operation was added.
38012 */
38013
38014var inherits = require('inherits')
38015var Hash = require('./hash')
38016
38017var K = [
38018 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38019]
38020
38021var W = new Array(80)
38022
38023function Sha () {
38024 this.init()
38025 this._w = W
38026
38027 Hash.call(this, 64, 56)
ab78acc6 38028}
ebd8d4e8 38029
8b095871 38030inherits(Sha, Hash)
ebd8d4e8 38031
8b095871
IC
38032Sha.prototype.init = function () {
38033 this._a = 0x67452301
38034 this._b = 0xefcdab89
38035 this._c = 0x98badcfe
38036 this._d = 0x10325476
38037 this._e = 0xc3d2e1f0
ebd8d4e8 38038
8b095871
IC
38039 return this
38040}
ebd8d4e8 38041
8b095871
IC
38042function rotl5 (num) {
38043 return (num << 5) | (num >>> 27)
38044}
ebd8d4e8 38045
8b095871
IC
38046function rotl30 (num) {
38047 return (num << 30) | (num >>> 2)
38048}
ebd8d4e8 38049
8b095871
IC
38050function ft (s, b, c, d) {
38051 if (s === 0) return (b & c) | ((~b) & d)
38052 if (s === 2) return (b & c) | (b & d) | (c & d)
38053 return b ^ c ^ d
38054}
ebd8d4e8 38055
8b095871
IC
38056Sha.prototype._update = function (M) {
38057 var W = this._w
ebd8d4e8 38058
8b095871
IC
38059 var a = this._a | 0
38060 var b = this._b | 0
38061 var c = this._c | 0
38062 var d = this._d | 0
38063 var e = this._e | 0
ebd8d4e8 38064
8b095871
IC
38065 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38066 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
ebd8d4e8 38067
8b095871
IC
38068 for (var j = 0; j < 80; ++j) {
38069 var s = ~~(j / 20)
38070 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
ebd8d4e8 38071
8b095871
IC
38072 e = d
38073 d = c
38074 c = rotl30(b)
38075 b = a
38076 a = t
38077 }
38078
38079 this._a = (a + this._a) | 0
38080 this._b = (b + this._b) | 0
38081 this._c = (c + this._c) | 0
38082 this._d = (d + this._d) | 0
38083 this._e = (e + this._e) | 0
38084}
38085
38086Sha.prototype._hash = function () {
38087 var H = new Buffer(20)
ab78acc6 38088
8b095871
IC
38089 H.writeInt32BE(this._a | 0, 0)
38090 H.writeInt32BE(this._b | 0, 4)
38091 H.writeInt32BE(this._c | 0, 8)
38092 H.writeInt32BE(this._d | 0, 12)
38093 H.writeInt32BE(this._e | 0, 16)
ebd8d4e8 38094
8b095871 38095 return H
ebd8d4e8
IC
38096}
38097
8b095871 38098module.exports = Sha
ebd8d4e8 38099
8b095871
IC
38100}).call(this,require("buffer").Buffer)
38101},{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
38102(function (Buffer){
38103/*
38104 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
38105 * in FIPS PUB 180-1
38106 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
38107 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38108 * Distributed under the BSD License
38109 * See http://pajhome.org.uk/crypt/md5 for details.
38110 */
ebd8d4e8 38111
8b095871
IC
38112var inherits = require('inherits')
38113var Hash = require('./hash')
ebd8d4e8 38114
8b095871
IC
38115var K = [
38116 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38117]
ebd8d4e8 38118
8b095871 38119var W = new Array(80)
ab78acc6 38120
8b095871
IC
38121function Sha1 () {
38122 this.init()
38123 this._w = W
ebd8d4e8 38124
8b095871
IC
38125 Hash.call(this, 64, 56)
38126}
ebd8d4e8 38127
8b095871 38128inherits(Sha1, Hash)
ebd8d4e8 38129
8b095871
IC
38130Sha1.prototype.init = function () {
38131 this._a = 0x67452301
38132 this._b = 0xefcdab89
38133 this._c = 0x98badcfe
38134 this._d = 0x10325476
38135 this._e = 0xc3d2e1f0
ebd8d4e8 38136
8b095871
IC
38137 return this
38138}
ebd8d4e8 38139
8b095871
IC
38140function rotl1 (num) {
38141 return (num << 1) | (num >>> 31)
38142}
ebd8d4e8 38143
8b095871
IC
38144function rotl5 (num) {
38145 return (num << 5) | (num >>> 27)
38146}
ebd8d4e8 38147
8b095871
IC
38148function rotl30 (num) {
38149 return (num << 30) | (num >>> 2)
38150}
ebd8d4e8 38151
8b095871
IC
38152function ft (s, b, c, d) {
38153 if (s === 0) return (b & c) | ((~b) & d)
38154 if (s === 2) return (b & c) | (b & d) | (c & d)
38155 return b ^ c ^ d
38156}
ebd8d4e8 38157
8b095871
IC
38158Sha1.prototype._update = function (M) {
38159 var W = this._w
ebd8d4e8 38160
8b095871
IC
38161 var a = this._a | 0
38162 var b = this._b | 0
38163 var c = this._c | 0
38164 var d = this._d | 0
38165 var e = this._e | 0
ebd8d4e8 38166
8b095871
IC
38167 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38168 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
38169
38170 for (var j = 0; j < 80; ++j) {
38171 var s = ~~(j / 20)
38172 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38173
38174 e = d
38175 d = c
38176 c = rotl30(b)
38177 b = a
38178 a = t
ab78acc6
IC
38179 }
38180
8b095871
IC
38181 this._a = (a + this._a) | 0
38182 this._b = (b + this._b) | 0
38183 this._c = (c + this._c) | 0
38184 this._d = (d + this._d) | 0
38185 this._e = (e + this._e) | 0
38186}
ab78acc6 38187
8b095871
IC
38188Sha1.prototype._hash = function () {
38189 var H = new Buffer(20)
ab78acc6 38190
8b095871
IC
38191 H.writeInt32BE(this._a | 0, 0)
38192 H.writeInt32BE(this._b | 0, 4)
38193 H.writeInt32BE(this._c | 0, 8)
38194 H.writeInt32BE(this._d | 0, 12)
38195 H.writeInt32BE(this._e | 0, 16)
ab78acc6 38196
8b095871
IC
38197 return H
38198}
ab78acc6 38199
8b095871 38200module.exports = Sha1
ab78acc6 38201
8b095871
IC
38202}).call(this,require("buffer").Buffer)
38203},{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
38204(function (Buffer){
38205/**
38206 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38207 * in FIPS 180-2
38208 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38209 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38210 *
38211 */
ab78acc6 38212
8b095871
IC
38213var inherits = require('inherits')
38214var Sha256 = require('./sha256')
38215var Hash = require('./hash')
ab78acc6 38216
8b095871 38217var W = new Array(64)
ab78acc6 38218
8b095871
IC
38219function Sha224 () {
38220 this.init()
ab78acc6 38221
8b095871 38222 this._w = W // new Array(64)
ebd8d4e8 38223
8b095871
IC
38224 Hash.call(this, 64, 56)
38225}
ebd8d4e8 38226
8b095871 38227inherits(Sha224, Sha256)
ebd8d4e8 38228
8b095871
IC
38229Sha224.prototype.init = function () {
38230 this._a = 0xc1059ed8
38231 this._b = 0x367cd507
38232 this._c = 0x3070dd17
38233 this._d = 0xf70e5939
38234 this._e = 0xffc00b31
38235 this._f = 0x68581511
38236 this._g = 0x64f98fa7
38237 this._h = 0xbefa4fa4
ebd8d4e8 38238
8b095871
IC
38239 return this
38240}
ab78acc6 38241
8b095871
IC
38242Sha224.prototype._hash = function () {
38243 var H = new Buffer(28)
ebd8d4e8 38244
8b095871
IC
38245 H.writeInt32BE(this._a, 0)
38246 H.writeInt32BE(this._b, 4)
38247 H.writeInt32BE(this._c, 8)
38248 H.writeInt32BE(this._d, 12)
38249 H.writeInt32BE(this._e, 16)
38250 H.writeInt32BE(this._f, 20)
38251 H.writeInt32BE(this._g, 24)
ab78acc6 38252
8b095871
IC
38253 return H
38254}
ebd8d4e8 38255
8b095871 38256module.exports = Sha224
ebd8d4e8 38257
8b095871
IC
38258}).call(this,require("buffer").Buffer)
38259},{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
38260(function (Buffer){
38261/**
38262 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38263 * in FIPS 180-2
38264 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38265 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38266 *
38267 */
ebd8d4e8 38268
8b095871
IC
38269var inherits = require('inherits')
38270var Hash = require('./hash')
ab78acc6 38271
8b095871
IC
38272var K = [
38273 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
38274 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
38275 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
38276 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
38277 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
38278 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
38279 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
38280 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
38281 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
38282 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
38283 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
38284 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
38285 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
38286 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
38287 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
38288 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
38289]
ebd8d4e8 38290
8b095871 38291var W = new Array(64)
ebd8d4e8 38292
8b095871
IC
38293function Sha256 () {
38294 this.init()
ebd8d4e8 38295
8b095871 38296 this._w = W // new Array(64)
ebd8d4e8 38297
8b095871 38298 Hash.call(this, 64, 56)
ab78acc6 38299}
ebd8d4e8 38300
8b095871 38301inherits(Sha256, Hash)
ebd8d4e8 38302
8b095871
IC
38303Sha256.prototype.init = function () {
38304 this._a = 0x6a09e667
38305 this._b = 0xbb67ae85
38306 this._c = 0x3c6ef372
38307 this._d = 0xa54ff53a
38308 this._e = 0x510e527f
38309 this._f = 0x9b05688c
38310 this._g = 0x1f83d9ab
38311 this._h = 0x5be0cd19
ebd8d4e8 38312
8b095871
IC
38313 return this
38314}
ebd8d4e8 38315
8b095871
IC
38316function ch (x, y, z) {
38317 return z ^ (x & (y ^ z))
38318}
ebd8d4e8 38319
8b095871
IC
38320function maj (x, y, z) {
38321 return (x & y) | (z & (x | y))
38322}
ebd8d4e8 38323
8b095871
IC
38324function sigma0 (x) {
38325 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
38326}
ebd8d4e8 38327
8b095871
IC
38328function sigma1 (x) {
38329 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
38330}
ebd8d4e8 38331
8b095871
IC
38332function gamma0 (x) {
38333 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
38334}
ebd8d4e8 38335
8b095871
IC
38336function gamma1 (x) {
38337 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
38338}
ab78acc6 38339
8b095871
IC
38340Sha256.prototype._update = function (M) {
38341 var W = this._w
ebd8d4e8 38342
8b095871
IC
38343 var a = this._a | 0
38344 var b = this._b | 0
38345 var c = this._c | 0
38346 var d = this._d | 0
38347 var e = this._e | 0
38348 var f = this._f | 0
38349 var g = this._g | 0
38350 var h = this._h | 0
ab78acc6 38351
8b095871
IC
38352 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38353 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
ab78acc6 38354
8b095871
IC
38355 for (var j = 0; j < 64; ++j) {
38356 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
38357 var T2 = (sigma0(a) + maj(a, b, c)) | 0
ebd8d4e8 38358
8b095871
IC
38359 h = g
38360 g = f
38361 f = e
38362 e = (d + T1) | 0
38363 d = c
38364 c = b
38365 b = a
38366 a = (T1 + T2) | 0
ebd8d4e8
IC
38367 }
38368
8b095871
IC
38369 this._a = (a + this._a) | 0
38370 this._b = (b + this._b) | 0
38371 this._c = (c + this._c) | 0
38372 this._d = (d + this._d) | 0
38373 this._e = (e + this._e) | 0
38374 this._f = (f + this._f) | 0
38375 this._g = (g + this._g) | 0
38376 this._h = (h + this._h) | 0
ab78acc6 38377}
ebd8d4e8 38378
8b095871
IC
38379Sha256.prototype._hash = function () {
38380 var H = new Buffer(32)
ebd8d4e8 38381
8b095871
IC
38382 H.writeInt32BE(this._a, 0)
38383 H.writeInt32BE(this._b, 4)
38384 H.writeInt32BE(this._c, 8)
38385 H.writeInt32BE(this._d, 12)
38386 H.writeInt32BE(this._e, 16)
38387 H.writeInt32BE(this._f, 20)
38388 H.writeInt32BE(this._g, 24)
38389 H.writeInt32BE(this._h, 28)
38390
38391 return H
ab78acc6 38392}
ebd8d4e8 38393
8b095871 38394module.exports = Sha256
ebd8d4e8 38395
8b095871
IC
38396}).call(this,require("buffer").Buffer)
38397},{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
38398(function (Buffer){
38399var inherits = require('inherits')
38400var SHA512 = require('./sha512')
38401var Hash = require('./hash')
ebd8d4e8 38402
8b095871 38403var W = new Array(160)
ebd8d4e8 38404
8b095871
IC
38405function Sha384 () {
38406 this.init()
38407 this._w = W
ab78acc6 38408
8b095871
IC
38409 Hash.call(this, 128, 112)
38410}
ab78acc6 38411
8b095871 38412inherits(Sha384, SHA512)
ebd8d4e8 38413
8b095871
IC
38414Sha384.prototype.init = function () {
38415 this._ah = 0xcbbb9d5d
38416 this._bh = 0x629a292a
38417 this._ch = 0x9159015a
38418 this._dh = 0x152fecd8
38419 this._eh = 0x67332667
38420 this._fh = 0x8eb44a87
38421 this._gh = 0xdb0c2e0d
38422 this._hh = 0x47b5481d
38423
38424 this._al = 0xc1059ed8
38425 this._bl = 0x367cd507
38426 this._cl = 0x3070dd17
38427 this._dl = 0xf70e5939
38428 this._el = 0xffc00b31
38429 this._fl = 0x68581511
38430 this._gl = 0x64f98fa7
38431 this._hl = 0xbefa4fa4
ebd8d4e8 38432
8b095871
IC
38433 return this
38434}
ebd8d4e8 38435
8b095871
IC
38436Sha384.prototype._hash = function () {
38437 var H = new Buffer(48)
ebd8d4e8 38438
8b095871
IC
38439 function writeInt64BE (h, l, offset) {
38440 H.writeInt32BE(h, offset)
38441 H.writeInt32BE(l, offset + 4)
38442 }
ebd8d4e8 38443
8b095871
IC
38444 writeInt64BE(this._ah, this._al, 0)
38445 writeInt64BE(this._bh, this._bl, 8)
38446 writeInt64BE(this._ch, this._cl, 16)
38447 writeInt64BE(this._dh, this._dl, 24)
38448 writeInt64BE(this._eh, this._el, 32)
38449 writeInt64BE(this._fh, this._fl, 40)
ebd8d4e8 38450
8b095871 38451 return H
ab78acc6 38452}
ebd8d4e8 38453
8b095871
IC
38454module.exports = Sha384
38455
38456}).call(this,require("buffer").Buffer)
38457},{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
38458(function (Buffer){
38459var inherits = require('inherits')
38460var Hash = require('./hash')
38461
38462var K = [
38463 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
38464 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
38465 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
38466 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
38467 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
38468 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
38469 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
38470 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
38471 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
38472 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
38473 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
38474 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
38475 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
38476 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
38477 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
38478 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
38479 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
38480 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
38481 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
38482 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
38483 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
38484 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
38485 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
38486 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
38487 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
38488 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
38489 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
38490 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
38491 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
38492 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
38493 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
38494 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
38495 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
38496 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
38497 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
38498 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
38499 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
38500 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
38501 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
38502 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
38503]
38504
38505var W = new Array(160)
ebd8d4e8 38506
8b095871
IC
38507function Sha512 () {
38508 this.init()
38509 this._w = W
ebd8d4e8 38510
8b095871 38511 Hash.call(this, 128, 112)
ab78acc6 38512}
ebd8d4e8 38513
8b095871 38514inherits(Sha512, Hash)
ebd8d4e8 38515
8b095871
IC
38516Sha512.prototype.init = function () {
38517 this._ah = 0x6a09e667
38518 this._bh = 0xbb67ae85
38519 this._ch = 0x3c6ef372
38520 this._dh = 0xa54ff53a
38521 this._eh = 0x510e527f
38522 this._fh = 0x9b05688c
38523 this._gh = 0x1f83d9ab
38524 this._hh = 0x5be0cd19
38525
38526 this._al = 0xf3bcc908
38527 this._bl = 0x84caa73b
38528 this._cl = 0xfe94f82b
38529 this._dl = 0x5f1d36f1
38530 this._el = 0xade682d1
38531 this._fl = 0x2b3e6c1f
38532 this._gl = 0xfb41bd6b
38533 this._hl = 0x137e2179
ebd8d4e8 38534
8b095871 38535 return this
ab78acc6 38536}
ebd8d4e8 38537
8b095871
IC
38538function Ch (x, y, z) {
38539 return z ^ (x & (y ^ z))
38540}
ebd8d4e8 38541
8b095871
IC
38542function maj (x, y, z) {
38543 return (x & y) | (z & (x | y))
ab78acc6 38544}
ebd8d4e8 38545
8b095871
IC
38546function sigma0 (x, xl) {
38547 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
38548}
ebd8d4e8 38549
8b095871
IC
38550function sigma1 (x, xl) {
38551 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
38552}
ab78acc6 38553
8b095871
IC
38554function Gamma0 (x, xl) {
38555 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
ab78acc6 38556}
ebd8d4e8 38557
8b095871
IC
38558function Gamma0l (x, xl) {
38559 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
38560}
ebd8d4e8 38561
8b095871
IC
38562function Gamma1 (x, xl) {
38563 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
ab78acc6
IC
38564}
38565
8b095871
IC
38566function Gamma1l (x, xl) {
38567 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
ab78acc6
IC
38568}
38569
8b095871
IC
38570function getCarry (a, b) {
38571 return (a >>> 0) < (b >>> 0) ? 1 : 0
ab78acc6
IC
38572}
38573
8b095871
IC
38574Sha512.prototype._update = function (M) {
38575 var W = this._w
ebd8d4e8 38576
8b095871
IC
38577 var ah = this._ah | 0
38578 var bh = this._bh | 0
38579 var ch = this._ch | 0
38580 var dh = this._dh | 0
38581 var eh = this._eh | 0
38582 var fh = this._fh | 0
38583 var gh = this._gh | 0
38584 var hh = this._hh | 0
ebd8d4e8 38585
8b095871
IC
38586 var al = this._al | 0
38587 var bl = this._bl | 0
38588 var cl = this._cl | 0
38589 var dl = this._dl | 0
38590 var el = this._el | 0
38591 var fl = this._fl | 0
38592 var gl = this._gl | 0
38593 var hl = this._hl | 0
ebd8d4e8 38594
8b095871
IC
38595 for (var i = 0; i < 32; i += 2) {
38596 W[i] = M.readInt32BE(i * 4)
38597 W[i + 1] = M.readInt32BE(i * 4 + 4)
38598 }
38599 for (; i < 160; i += 2) {
38600 var xh = W[i - 15 * 2]
38601 var xl = W[i - 15 * 2 + 1]
38602 var gamma0 = Gamma0(xh, xl)
38603 var gamma0l = Gamma0l(xl, xh)
ebd8d4e8 38604
8b095871
IC
38605 xh = W[i - 2 * 2]
38606 xl = W[i - 2 * 2 + 1]
38607 var gamma1 = Gamma1(xh, xl)
38608 var gamma1l = Gamma1l(xl, xh)
ebd8d4e8 38609
8b095871
IC
38610 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
38611 var Wi7h = W[i - 7 * 2]
38612 var Wi7l = W[i - 7 * 2 + 1]
ebd8d4e8 38613
8b095871
IC
38614 var Wi16h = W[i - 16 * 2]
38615 var Wi16l = W[i - 16 * 2 + 1]
ab78acc6 38616
8b095871
IC
38617 var Wil = (gamma0l + Wi7l) | 0
38618 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
38619 Wil = (Wil + gamma1l) | 0
38620 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
38621 Wil = (Wil + Wi16l) | 0
38622 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
ebd8d4e8 38623
8b095871
IC
38624 W[i] = Wih
38625 W[i + 1] = Wil
38626 }
ebd8d4e8 38627
8b095871
IC
38628 for (var j = 0; j < 160; j += 2) {
38629 Wih = W[j]
38630 Wil = W[j + 1]
ebd8d4e8 38631
8b095871
IC
38632 var majh = maj(ah, bh, ch)
38633 var majl = maj(al, bl, cl)
ebd8d4e8 38634
8b095871
IC
38635 var sigma0h = sigma0(ah, al)
38636 var sigma0l = sigma0(al, ah)
38637 var sigma1h = sigma1(eh, el)
38638 var sigma1l = sigma1(el, eh)
ab78acc6 38639
8b095871
IC
38640 // t1 = h + sigma1 + ch + K[j] + W[j]
38641 var Kih = K[j]
38642 var Kil = K[j + 1]
ab78acc6 38643
8b095871
IC
38644 var chh = Ch(eh, fh, gh)
38645 var chl = Ch(el, fl, gl)
ebd8d4e8 38646
8b095871
IC
38647 var t1l = (hl + sigma1l) | 0
38648 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
38649 t1l = (t1l + chl) | 0
38650 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
38651 t1l = (t1l + Kil) | 0
38652 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
38653 t1l = (t1l + Wil) | 0
38654 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
ebd8d4e8 38655
8b095871
IC
38656 // t2 = sigma0 + maj
38657 var t2l = (sigma0l + majl) | 0
38658 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
ebd8d4e8 38659
8b095871
IC
38660 hh = gh
38661 hl = gl
38662 gh = fh
38663 gl = fl
38664 fh = eh
38665 fl = el
38666 el = (dl + t1l) | 0
38667 eh = (dh + t1h + getCarry(el, dl)) | 0
38668 dh = ch
38669 dl = cl
38670 ch = bh
38671 cl = bl
38672 bh = ah
38673 bl = al
38674 al = (t1l + t2l) | 0
38675 ah = (t1h + t2h + getCarry(al, t1l)) | 0
38676 }
ab78acc6 38677
8b095871
IC
38678 this._al = (this._al + al) | 0
38679 this._bl = (this._bl + bl) | 0
38680 this._cl = (this._cl + cl) | 0
38681 this._dl = (this._dl + dl) | 0
38682 this._el = (this._el + el) | 0
38683 this._fl = (this._fl + fl) | 0
38684 this._gl = (this._gl + gl) | 0
38685 this._hl = (this._hl + hl) | 0
ab78acc6 38686
8b095871
IC
38687 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
38688 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
38689 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
38690 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
38691 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
38692 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
38693 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
38694 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
ab78acc6
IC
38695}
38696
8b095871
IC
38697Sha512.prototype._hash = function () {
38698 var H = new Buffer(64)
ab78acc6 38699
8b095871
IC
38700 function writeInt64BE (h, l, offset) {
38701 H.writeInt32BE(h, offset)
38702 H.writeInt32BE(l, offset + 4)
38703 }
ab78acc6 38704
8b095871
IC
38705 writeInt64BE(this._ah, this._al, 0)
38706 writeInt64BE(this._bh, this._bl, 8)
38707 writeInt64BE(this._ch, this._cl, 16)
38708 writeInt64BE(this._dh, this._dl, 24)
38709 writeInt64BE(this._eh, this._el, 32)
38710 writeInt64BE(this._fh, this._fl, 40)
38711 writeInt64BE(this._gh, this._gl, 48)
38712 writeInt64BE(this._hh, this._hl, 56)
ab78acc6 38713
8b095871 38714 return H
ebd8d4e8
IC
38715}
38716
8b095871 38717module.exports = Sha512
ebd8d4e8 38718
ab78acc6 38719}).call(this,require("buffer").Buffer)
8b095871
IC
38720},{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
38721var isHexPrefixed = require('is-hex-prefixed');
d5dc92fd 38722
8b095871
IC
38723/**
38724 * Removes '0x' from a given `String` is present
38725 * @param {String} str the string value
38726 * @return {String|Optional} a string by pass if necessary
38727 */
38728module.exports = function stripHexPrefix(str) {
38729 if (typeof str !== 'string') {
38730 return str;
38731 }
07ac4350 38732
8b095871
IC
38733 return isHexPrefixed(str) ? str.slice(2) : str;
38734}
07ac4350 38735
8b095871
IC
38736},{"is-hex-prefixed":64}]},{},[31])(31)
38737});</script>
8a1f452d 38738 <script>function convertRippleAdrr(address) {
38739 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
38740 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
38741 )
38742 }
38743
38744function convertRipplePriv(priv) {
920eb591 38745 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
8a1f452d 38746}
38747
38748</script>
ab78acc6 38749 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
80c4dd2a
IC
38750
38751//// base.js
38752
38753/** @fileOverview Javascript cryptography implementation.
38754 *
38755 * Crush to remove comments, shorten variable names and
38756 * generally reduce transmission size.
38757 *
38758 * @author Emily Stark
38759 * @author Mike Hamburg
38760 * @author Dan Boneh
38761 */
38762
38763"use strict";
38764/*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
38765/*global document, window, escape, unescape, module, require, Uint32Array */
38766
38767/** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
38768var sjcl = {
38769 /** @namespace Symmetric ciphers. */
38770 cipher: {},
38771
38772 /** @namespace Hash functions. Right now only SHA256 is implemented. */
38773 hash: {},
38774
38775 /** @namespace Key exchange functions. Right now only SRP is implemented. */
38776 keyexchange: {},
38777
38778 /** @namespace Block cipher modes of operation. */
38779 mode: {},
38780
38781 /** @namespace Miscellaneous. HMAC and PBKDF2. */
38782 misc: {},
38783
38784 /**
38785 * @namespace Bit array encoders and decoders.
38786 *
38787 * @description
38788 * The members of this namespace are functions which translate between
38789 * SJCL's bitArrays and other objects (usually strings). Because it
38790 * isn't always clear which direction is encoding and which is decoding,
38791 * the method names are "fromBits" and "toBits".
38792 */
38793 codec: {},
38794
38795 /** @namespace Exceptions. */
38796 exception: {
38797 /** @constructor Ciphertext is corrupt. */
38798 corrupt: function(message) {
38799 this.toString = function() { return "CORRUPT: "+this.message; };
38800 this.message = message;
38801 },
38802
38803 /** @constructor Invalid parameter. */
38804 invalid: function(message) {
38805 this.toString = function() { return "INVALID: "+this.message; };
38806 this.message = message;
38807 },
38808
38809 /** @constructor Bug or missing feature in SJCL. @constructor */
38810 bug: function(message) {
38811 this.toString = function() { return "BUG: "+this.message; };
38812 this.message = message;
38813 },
38814
38815 /** @constructor Something isn't ready. */
38816 notReady: function(message) {
38817 this.toString = function() { return "NOT READY: "+this.message; };
38818 this.message = message;
ebd8d4e8 38819 }
80c4dd2a
IC
38820 }
38821};
38822
38823if(typeof module !== 'undefined' && module.exports){
38824 module.exports = sjcl;
38825}
38826if (typeof define === "function") {
38827 define([], function () {
38828 return sjcl;
38829 });
38830}
38831
38832
38833//// bitArray.js
38834
38835/** @fileOverview Arrays of bits, encoded as arrays of Numbers.
38836 *
38837 * @author Emily Stark
38838 * @author Mike Hamburg
38839 * @author Dan Boneh
38840 */
38841
38842/** @namespace Arrays of bits, encoded as arrays of Numbers.
38843 *
38844 * @description
38845 * <p>
38846 * These objects are the currency accepted by SJCL's crypto functions.
38847 * </p>
38848 *
38849 * <p>
38850 * Most of our crypto primitives operate on arrays of 4-byte words internally,
38851 * but many of them can take arguments that are not a multiple of 4 bytes.
38852 * This library encodes arrays of bits (whose size need not be a multiple of 8
38853 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
38854 * array of words, 32 bits at a time. Since the words are double-precision
38855 * floating point numbers, they fit some extra data. We use this (in a private,
38856 * possibly-changing manner) to encode the number of bits actually present
38857 * in the last word of the array.
38858 * </p>
38859 *
38860 * <p>
38861 * Because bitwise ops clear this out-of-band data, these arrays can be passed
38862 * to ciphers like AES which want arrays of words.
38863 * </p>
38864 */
38865sjcl.bitArray = {
38866 /**
38867 * Array slices in units of bits.
38868 * @param {bitArray} a The array to slice.
38869 * @param {Number} bstart The offset to the start of the slice, in bits.
38870 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
38871 * slice until the end of the array.
38872 * @return {bitArray} The requested slice.
38873 */
38874 bitSlice: function (a, bstart, bend) {
38875 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
38876 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
38877 },
38878
38879 /**
38880 * Extract a number packed into a bit array.
38881 * @param {bitArray} a The array to slice.
38882 * @param {Number} bstart The offset to the start of the slice, in bits.
38883 * @param {Number} length The length of the number to extract.
38884 * @return {Number} The requested slice.
38885 */
38886 extract: function(a, bstart, blength) {
38887 // FIXME: this Math.floor is not necessary at all, but for some reason
38888 // seems to suppress a bug in the Chromium JIT.
38889 var x, sh = Math.floor((-bstart-blength) & 31);
38890 if ((bstart + blength - 1 ^ bstart) & -32) {
38891 // it crosses a boundary
38892 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
38893 } else {
38894 // within a single word
38895 x = a[bstart/32|0] >>> sh;
ebd8d4e8 38896 }
80c4dd2a
IC
38897 return x & ((1<<blength) - 1);
38898 },
38899
38900 /**
38901 * Concatenate two bit arrays.
38902 * @param {bitArray} a1 The first array.
38903 * @param {bitArray} a2 The second array.
38904 * @return {bitArray} The concatenation of a1 and a2.
38905 */
38906 concat: function (a1, a2) {
38907 if (a1.length === 0 || a2.length === 0) {
38908 return a1.concat(a2);
38909 }
38910
38911 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
38912 if (shift === 32) {
38913 return a1.concat(a2);
38914 } else {
38915 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
ebd8d4e8 38916 }
80c4dd2a
IC
38917 },
38918
38919 /**
38920 * Find the length of an array of bits.
38921 * @param {bitArray} a The array.
38922 * @return {Number} The length of a, in bits.
38923 */
38924 bitLength: function (a) {
38925 var l = a.length, x;
38926 if (l === 0) { return 0; }
38927 x = a[l - 1];
38928 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
38929 },
38930
38931 /**
38932 * Truncate an array.
38933 * @param {bitArray} a The array.
38934 * @param {Number} len The length to truncate to, in bits.
38935 * @return {bitArray} A new array, truncated to len bits.
38936 */
38937 clamp: function (a, len) {
38938 if (a.length * 32 < len) { return a; }
38939 a = a.slice(0, Math.ceil(len / 32));
38940 var l = a.length;
38941 len = len & 31;
38942 if (l > 0 && len) {
38943 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
38944 }
38945 return a;
38946 },
38947
38948 /**
38949 * Make a partial word for a bit array.
38950 * @param {Number} len The number of bits in the word.
38951 * @param {Number} x The bits.
38952 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
38953 * @return {Number} The partial word.
38954 */
38955 partial: function (len, x, _end) {
38956 if (len === 32) { return x; }
38957 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
38958 },
38959
38960 /**
38961 * Get the number of bits used by a partial word.
38962 * @param {Number} x The partial word.
38963 * @return {Number} The number of bits used by the partial word.
38964 */
38965 getPartial: function (x) {
38966 return Math.round(x/0x10000000000) || 32;
38967 },
38968
38969 /**
38970 * Compare two arrays for equality in a predictable amount of time.
38971 * @param {bitArray} a The first array.
38972 * @param {bitArray} b The second array.
38973 * @return {boolean} true if a == b; false otherwise.
38974 */
38975 equal: function (a, b) {
38976 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
38977 return false;
ebd8d4e8 38978 }
80c4dd2a
IC
38979 var x = 0, i;
38980 for (i=0; i<a.length; i++) {
38981 x |= a[i]^b[i];
ebd8d4e8 38982 }
80c4dd2a
IC
38983 return (x === 0);
38984 },
38985
38986 /** Shift an array right.
38987 * @param {bitArray} a The array to shift.
38988 * @param {Number} shift The number of bits to shift.
38989 * @param {Number} [carry=0] A byte to carry in
38990 * @param {bitArray} [out=[]] An array to prepend to the output.
38991 * @private
38992 */
38993 _shiftRight: function (a, shift, carry, out) {
38994 var i, last2=0, shift2;
38995 if (out === undefined) { out = []; }
38996
38997 for (; shift >= 32; shift -= 32) {
38998 out.push(carry);
38999 carry = 0;
39000 }
39001 if (shift === 0) {
39002 return out.concat(a);
39003 }
39004
39005 for (i=0; i<a.length; i++) {
39006 out.push(carry | a[i]>>>shift);
39007 carry = a[i] << (32-shift);
39008 }
39009 last2 = a.length ? a[a.length-1] : 0;
39010 shift2 = sjcl.bitArray.getPartial(last2);
39011 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
39012 return out;
39013 },
39014
39015 /** xor a block of 4 words together.
39016 * @private
39017 */
39018 _xor4: function(x,y) {
39019 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
39020 },
39021
39022 /** byteswap a word array inplace.
39023 * (does not handle partial words)
39024 * @param {sjcl.bitArray} a word array
39025 * @return {sjcl.bitArray} byteswapped array
39026 */
39027 byteswapM: function(a) {
39028 var i, v, m = 0xff00;
39029 for (i = 0; i < a.length; ++i) {
39030 v = a[i];
39031 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
ebd8d4e8 39032 }
80c4dd2a
IC
39033 return a;
39034 }
39035};
39036
39037
39038//// codecString.js
39039
39040/** @fileOverview Bit array codec implementations.
39041 *
39042 * @author Emily Stark
39043 * @author Mike Hamburg
39044 * @author Dan Boneh
39045 */
39046
39047/** @namespace UTF-8 strings */
39048sjcl.codec.utf8String = {
39049 /** Convert from a bitArray to a UTF-8 string. */
39050 fromBits: function (arr) {
39051 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
39052 for (i=0; i<bl/8; i++) {
39053 if ((i&3) === 0) {
39054 tmp = arr[i/4];
39055 }
39056 out += String.fromCharCode(tmp >>> 24);
39057 tmp <<= 8;
ebd8d4e8 39058 }
80c4dd2a
IC
39059 return decodeURIComponent(escape(out));
39060 },
39061
39062 /** Convert from a UTF-8 string to a bitArray. */
39063 toBits: function (str) {
39064 str = unescape(encodeURIComponent(str));
39065 var out = [], i, tmp=0;
39066 for (i=0; i<str.length; i++) {
39067 tmp = tmp << 8 | str.charCodeAt(i);
39068 if ((i&3) === 3) {
39069 out.push(tmp);
39070 tmp = 0;
39071 }
ebd8d4e8 39072 }
80c4dd2a
IC
39073 if (i&3) {
39074 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
ebd8d4e8 39075 }
80c4dd2a
IC
39076 return out;
39077 }
39078};
39079
39080
39081//// codecHex.js
39082
39083/** @fileOverview Bit array codec implementations.
39084 *
39085 * @author Emily Stark
39086 * @author Mike Hamburg
39087 * @author Dan Boneh
39088 */
39089
39090/** @namespace Hexadecimal */
39091sjcl.codec.hex = {
39092 /** Convert from a bitArray to a hex string. */
39093 fromBits: function (arr) {
39094 var out = "", i;
39095 for (i=0; i<arr.length; i++) {
39096 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
ebd8d4e8 39097 }
80c4dd2a
IC
39098 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
39099 },
39100 /** Convert from a hex string to a bitArray. */
39101 toBits: function (str) {
39102 var i, out=[], len;
39103 str = str.replace(/\s|0x/g, "");
39104 len = str.length;
39105 str = str + "00000000";
39106 for (i=0; i<str.length; i+=8) {
39107 out.push(parseInt(str.substr(i,8),16)^0);
ebd8d4e8 39108 }
80c4dd2a
IC
39109 return sjcl.bitArray.clamp(out, len*4);
39110 }
39111};
39112
39113
39114//// sha512.js
39115
39116/** @fileOverview Javascript SHA-512 implementation.
39117 *
39118 * This implementation was written for CryptoJS by Jeff Mott and adapted for
39119 * SJCL by Stefan Thomas.
39120 *
39121 * CryptoJS (c) 2009–2012 by Jeff Mott. All rights reserved.
39122 * Released with New BSD License
39123 *
39124 * @author Emily Stark
39125 * @author Mike Hamburg
39126 * @author Dan Boneh
39127 * @author Jeff Mott
39128 * @author Stefan Thomas
39129 */
39130
39131/**
39132 * Context for a SHA-512 operation in progress.
39133 * @constructor
39134 * @class Secure Hash Algorithm, 512 bits.
39135 */
39136sjcl.hash.sha512 = function (hash) {
39137 if (!this._key[0]) { this._precompute(); }
39138 if (hash) {
39139 this._h = hash._h.slice(0);
39140 this._buffer = hash._buffer.slice(0);
39141 this._length = hash._length;
39142 } else {
39143 this.reset();
39144 }
39145};
39146
39147/**
39148 * Hash a string or an array of words.
39149 * @static
39150 * @param {bitArray|String} data the data to hash.
39151 * @return {bitArray} The hash value, an array of 16 big-endian words.
39152 */
39153sjcl.hash.sha512.hash = function (data) {
39154 return (new sjcl.hash.sha512()).update(data).finalize();
39155};
39156
39157sjcl.hash.sha512.prototype = {
39158 /**
39159 * The hash's block size, in bits.
39160 * @constant
39161 */
39162 blockSize: 1024,
39163
39164 /**
39165 * Reset the hash state.
39166 * @return this
39167 */
39168 reset:function () {
39169 this._h = this._init.slice(0);
39170 this._buffer = [];
39171 this._length = 0;
39172 return this;
39173 },
39174
39175 /**
39176 * Input several words to the hash.
39177 * @param {bitArray|String} data the data to hash.
39178 * @return this
39179 */
39180 update: function (data) {
39181 if (typeof data === "string") {
39182 data = sjcl.codec.utf8String.toBits(data);
ebd8d4e8 39183 }
80c4dd2a
IC
39184 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39185 ol = this._length,
39186 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39187 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
39188 this._block(b.splice(0,32));
ebd8d4e8 39189 }
80c4dd2a
IC
39190 return this;
39191 },
39192
39193 /**
39194 * Complete hashing and output the hash value.
39195 * @return {bitArray} The hash value, an array of 16 big-endian words.
39196 */
39197 finalize:function () {
39198 var i, b = this._buffer, h = this._h;
39199
39200 // Round out and push the buffer
39201 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39202
39203 // Round out the buffer to a multiple of 32 words, less the 4 length words.
39204 for (i = b.length + 4; i & 31; i++) {
39205 b.push(0);
ebd8d4e8 39206 }
80c4dd2a
IC
39207
39208 // append the length
39209 b.push(0);
39210 b.push(0);
39211 b.push(Math.floor(this._length / 0x100000000));
39212 b.push(this._length | 0);
39213
39214 while (b.length) {
39215 this._block(b.splice(0,32));
ebd8d4e8 39216 }
80c4dd2a
IC
39217
39218 this.reset();
39219 return h;
39220 },
39221
39222 /**
39223 * The SHA-512 initialization vector, to be precomputed.
39224 * @private
39225 */
39226 _init:[],
39227
39228 /**
39229 * Least significant 24 bits of SHA512 initialization values.
39230 *
39231 * Javascript only has 53 bits of precision, so we compute the 40 most
39232 * significant bits and add the remaining 24 bits as constants.
39233 *
39234 * @private
39235 */
39236 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
39237
39238 /*
39239 _init:
39240 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
39241 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
39242 */
39243
39244 /**
39245 * The SHA-512 hash key, to be precomputed.
39246 * @private
39247 */
39248 _key:[],
39249
39250 /**
39251 * Least significant 24 bits of SHA512 key values.
39252 * @private
39253 */
39254 _keyr:
39255 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
39256 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
39257 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
39258 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
39259 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
39260 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
39261 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
39262 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
39263 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
39264 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
39265
39266 /*
39267 _key:
39268 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
39269 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
39270 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
39271 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
39272 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
39273 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
39274 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
39275 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
39276 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
39277 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
39278 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
39279 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
39280 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
39281 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
39282 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
39283 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
39284 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
39285 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
39286 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
39287 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
39288 */
39289
39290 /**
39291 * Function to precompute _init and _key.
39292 * @private
39293 */
39294 _precompute: function () {
39295 // XXX: This code is for precomputing the SHA256 constants, change for
39296 // SHA512 and re-enable.
39297 var i = 0, prime = 2, factor;
39298
39299 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39300 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
39301
39302 outer: for (; i<80; prime++) {
39303 for (factor=2; factor*factor <= prime; factor++) {
39304 if (prime % factor === 0) {
39305 // not a prime
39306 continue outer;
ebd8d4e8 39307 }
80c4dd2a
IC
39308 }
39309
39310 if (i<8) {
39311 this._init[i*2] = frac(Math.pow(prime, 1/2));
39312 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
39313 }
39314 this._key[i*2] = frac(Math.pow(prime, 1/3));
39315 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
39316 i++;
ebd8d4e8 39317 }
80c4dd2a
IC
39318 },
39319
39320 /**
39321 * Perform one cycle of SHA-512.
39322 * @param {bitArray} words one block of words.
39323 * @private
39324 */
39325 _block:function (words) {
39326 var i, wrh, wrl,
39327 w = words.slice(0),
39328 h = this._h,
39329 k = this._key,
39330 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
39331 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
39332 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
39333 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
39334
39335 // Working variables
39336 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
39337 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
39338 eh = h4h, el = h4l, fh = h5h, fl = h5l,
39339 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
39340
39341 for (i=0; i<80; i++) {
39342 // load up the input word for this round
39343 if (i<16) {
39344 wrh = w[i * 2];
39345 wrl = w[i * 2 + 1];
39346 } else {
39347 // Gamma0
39348 var gamma0xh = w[(i-15) * 2];
39349 var gamma0xl = w[(i-15) * 2 + 1];
39350 var gamma0h =
39351 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
39352 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
39353 (gamma0xh >>> 7);
39354 var gamma0l =
39355 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
39356 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
39357 ((gamma0xh << 25) | (gamma0xl >>> 7));
39358
39359 // Gamma1
39360 var gamma1xh = w[(i-2) * 2];
39361 var gamma1xl = w[(i-2) * 2 + 1];
39362 var gamma1h =
39363 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
39364 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
39365 (gamma1xh >>> 6);
39366 var gamma1l =
39367 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
39368 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
39369 ((gamma1xh << 26) | (gamma1xl >>> 6));
39370
39371 // Shortcuts
39372 var wr7h = w[(i-7) * 2];
39373 var wr7l = w[(i-7) * 2 + 1];
39374
39375 var wr16h = w[(i-16) * 2];
39376 var wr16l = w[(i-16) * 2 + 1];
39377
39378 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
39379 wrl = gamma0l + wr7l;
39380 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
39381 wrl += gamma1l;
39382 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
39383 wrl += wr16l;
39384 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
39385 }
39386
39387 w[i*2] = wrh |= 0;
39388 w[i*2 + 1] = wrl |= 0;
39389
39390 // Ch
39391 var chh = (eh & fh) ^ (~eh & gh);
39392 var chl = (el & fl) ^ (~el & gl);
39393
39394 // Maj
39395 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
39396 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
39397
39398 // Sigma0
39399 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
39400 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
39401
39402 // Sigma1
39403 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
39404 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
39405
39406 // K(round)
39407 var krh = k[i*2];
39408 var krl = k[i*2+1];
39409
39410 // t1 = h + sigma1 + ch + K(round) + W(round)
39411 var t1l = hl + sigma1l;
39412 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
39413 t1l += chl;
39414 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
39415 t1l += krl;
39416 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
39417 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
39418 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
39419
39420 // t2 = sigma0 + maj
39421 var t2l = sigma0l + majl;
39422 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
39423
39424 // Update working variables
39425 hh = gh;
39426 hl = gl;
39427 gh = fh;
39428 gl = fl;
39429 fh = eh;
39430 fl = el;
39431 el = (dl + t1l) | 0;
39432 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39433 dh = ch;
39434 dl = cl;
39435 ch = bh;
39436 cl = bl;
39437 bh = ah;
39438 bl = al;
39439 al = (t1l + t2l) | 0;
39440 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
39441 }
39442
39443 // Intermediate hash
39444 h0l = h[1] = (h0l + al) | 0;
39445 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
39446 h1l = h[3] = (h1l + bl) | 0;
39447 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
39448 h2l = h[5] = (h2l + cl) | 0;
39449 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
39450 h3l = h[7] = (h3l + dl) | 0;
39451 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39452 h4l = h[9] = (h4l + el) | 0;
39453 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
39454 h5l = h[11] = (h5l + fl) | 0;
39455 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
39456 h6l = h[13] = (h6l + gl) | 0;
39457 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
39458 h7l = h[15] = (h7l + hl) | 0;
39459 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
39460 }
39461};
39462
39463
39464//// hmac.js
39465
39466/** @fileOverview HMAC implementation.
39467 *
39468 * @author Emily Stark
39469 * @author Mike Hamburg
39470 * @author Dan Boneh
39471 */
39472
39473/** HMAC with the specified hash function.
39474 * @constructor
39475 * @param {bitArray} key the key for HMAC.
39476 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
39477 */
39478sjcl.misc.hmac = function (key, Hash) {
39479 this._hash = Hash = Hash || sjcl.hash.sha256;
39480 var exKey = [[],[]], i,
39481 bs = Hash.prototype.blockSize / 32;
39482 this._baseHash = [new Hash(), new Hash()];
39483
39484 if (key.length > bs) {
39485 key = Hash.hash(key);
39486 }
39487
39488 for (i=0; i<bs; i++) {
39489 exKey[0][i] = key[i]^0x36363636;
39490 exKey[1][i] = key[i]^0x5C5C5C5C;
39491 }
39492
39493 this._baseHash[0].update(exKey[0]);
39494 this._baseHash[1].update(exKey[1]);
39495 this._resultHash = new Hash(this._baseHash[0]);
39496};
39497
39498/** HMAC with the specified hash function. Also called encrypt since it's a prf.
39499 * @param {bitArray|String} data The data to mac.
39500 */
39501sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
39502 if (!this._updated) {
39503 this.update(data);
39504 return this.digest(data);
39505 } else {
39506 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
39507 }
39508};
39509
39510sjcl.misc.hmac.prototype.reset = function () {
39511 this._resultHash = new this._hash(this._baseHash[0]);
39512 this._updated = false;
39513};
39514
39515sjcl.misc.hmac.prototype.update = function (data) {
39516 this._updated = true;
39517 this._resultHash.update(data);
39518};
39519
39520sjcl.misc.hmac.prototype.digest = function () {
39521 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
39522
39523 this.reset();
39524
39525 return result;
39526};
39527
39528
39529//// pbkdf2.js
39530
39531
39532/** @fileOverview Password-based key-derivation function, version 2.0.
39533 *
39534 * @author Emily Stark
39535 * @author Mike Hamburg
39536 * @author Dan Boneh
39537 */
39538
39539/** Password-Based Key-Derivation Function, version 2.0.
39540 *
39541 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
39542 *
39543 * This is the method specified by RSA's PKCS #5 standard.
39544 *
39545 * @param {bitArray|String} password The password.
39546 * @param {bitArray|String} salt The salt. Should have lots of entropy.
39547 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
39548 * @param {Number} [length] The length of the derived key. Defaults to the
39549 output size of the hash function.
39550 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
39551 * @return {bitArray} the derived key.
39552 */
39553sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
39554 count = count || 1000;
39555
39556 if (length < 0 || count < 0) {
39557 throw sjcl.exception.invalid("invalid params to pbkdf2");
39558 }
39559
39560 if (typeof password === "string") {
39561 password = sjcl.codec.utf8String.toBits(password);
39562 }
39563
39564 if (typeof salt === "string") {
39565 salt = sjcl.codec.utf8String.toBits(salt);
39566 }
39567
39568 Prff = Prff || sjcl.misc.hmac;
39569
39570 var prf = new Prff(password),
39571 u, ui, i, j, k, out = [], b = sjcl.bitArray;
39572
39573 for (k = 1; 32 * out.length < (length || 1); k++) {
39574 u = ui = prf.encrypt(b.concat(salt,[k]));
39575
39576 for (i=1; i<count; i++) {
39577 ui = prf.encrypt(ui);
39578 for (j=0; j<ui.length; j++) {
39579 u[j] ^= ui[j];
39580 }
ebd8d4e8 39581 }
80c4dd2a
IC
39582
39583 out = out.concat(u);
39584 }
39585
39586 if (length) { out = b.clamp(out, length); }
39587
39588 return out;
39589};
39590
39591
39592//// sha256.js
39593
39594/** @fileOverview Javascript SHA-256 implementation.
39595 *
39596 * An older version of this implementation is available in the public
39597 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
39598 * Stanford University 2008-2010 and BSD-licensed for liability
39599 * reasons.
39600 *
39601 * Special thanks to Aldo Cortesi for pointing out several bugs in
39602 * this code.
39603 *
39604 * @author Emily Stark
39605 * @author Mike Hamburg
39606 * @author Dan Boneh
39607 */
39608
39609/**
39610 * Context for a SHA-256 operation in progress.
39611 * @constructor
39612 * @class Secure Hash Algorithm, 256 bits.
39613 */
39614sjcl.hash.sha256 = function (hash) {
39615 if (!this._key[0]) { this._precompute(); }
39616 if (hash) {
39617 this._h = hash._h.slice(0);
39618 this._buffer = hash._buffer.slice(0);
39619 this._length = hash._length;
39620 } else {
39621 this.reset();
39622 }
39623};
39624
39625/**
39626 * Hash a string or an array of words.
39627 * @static
39628 * @param {bitArray|String} data the data to hash.
39629 * @return {bitArray} The hash value, an array of 16 big-endian words.
39630 */
39631sjcl.hash.sha256.hash = function (data) {
39632 return (new sjcl.hash.sha256()).update(data).finalize();
39633};
39634
39635sjcl.hash.sha256.prototype = {
39636 /**
39637 * The hash's block size, in bits.
39638 * @constant
39639 */
39640 blockSize: 512,
39641
39642 /**
39643 * Reset the hash state.
39644 * @return this
39645 */
39646 reset:function () {
39647 this._h = this._init.slice(0);
39648 this._buffer = [];
39649 this._length = 0;
39650 return this;
39651 },
39652
39653 /**
39654 * Input several words to the hash.
39655 * @param {bitArray|String} data the data to hash.
39656 * @return this
39657 */
39658 update: function (data) {
39659 if (typeof data === "string") {
39660 data = sjcl.codec.utf8String.toBits(data);
39661 }
39662 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39663 ol = this._length,
39664 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39665 for (i = 512+ol & -512; i <= nl; i+= 512) {
39666 this._block(b.splice(0,16));
ebd8d4e8 39667 }
3af2954a 39668 return this;
80c4dd2a
IC
39669 },
39670
39671 /**
39672 * Complete hashing and output the hash value.
39673 * @return {bitArray} The hash value, an array of 8 big-endian words.
39674 */
39675 finalize:function () {
39676 var i, b = this._buffer, h = this._h;
39677
39678 // Round out and push the buffer
39679 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39680
39681 // Round out the buffer to a multiple of 16 words, less the 2 length words.
39682 for (i = b.length + 2; i & 15; i++) {
39683 b.push(0);
39684 }
39685
39686 // append the length
39687 b.push(Math.floor(this._length / 0x100000000));
39688 b.push(this._length | 0);
39689
39690 while (b.length) {
39691 this._block(b.splice(0,16));
39692 }
39693
39694 this.reset();
39695 return h;
39696 },
39697
39698 /**
39699 * The SHA-256 initialization vector, to be precomputed.
39700 * @private
39701 */
39702 _init:[],
39703 /*
39704 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
39705 */
39706
39707 /**
39708 * The SHA-256 hash key, to be precomputed.
39709 * @private
39710 */
39711 _key:[],
39712 /*
39713 _key:
39714 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
39715 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
39716 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
39717 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
39718 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
39719 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
39720 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
39721 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
39722 */
39723
39724
39725 /**
39726 * Function to precompute _init and _key.
39727 * @private
39728 */
39729 _precompute: function () {
39730 var i = 0, prime = 2, factor;
39731
39732 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39733
39734 outer: for (; i<64; prime++) {
39735 for (factor=2; factor*factor <= prime; factor++) {
39736 if (prime % factor === 0) {
39737 // not a prime
39738 continue outer;
ebd8d4e8 39739 }
80c4dd2a
IC
39740 }
39741
39742 if (i<8) {
39743 this._init[i] = frac(Math.pow(prime, 1/2));
39744 }
39745 this._key[i] = frac(Math.pow(prime, 1/3));
39746 i++;
ebd8d4e8 39747 }
80c4dd2a
IC
39748 },
39749
39750 /**
39751 * Perform one cycle of SHA-256.
39752 * @param {bitArray} words one block of words.
39753 * @private
39754 */
39755 _block:function (words) {
39756 var i, tmp, a, b,
39757 w = words.slice(0),
39758 h = this._h,
39759 k = this._key,
39760 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
39761 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
39762
39763 /* Rationale for placement of |0 :
39764 * If a value can overflow is original 32 bits by a factor of more than a few
39765 * million (2^23 ish), there is a possibility that it might overflow the
39766 * 53-bit mantissa and lose precision.
39767 *
39768 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
39769 * propagates around the loop, and on the hash state h[]. I don't believe
39770 * that the clamps on h4 and on h0 are strictly necessary, but it's close
39771 * (for h4 anyway), and better safe than sorry.
39772 *
39773 * The clamps on h[] are necessary for the output to be correct even in the
39774 * common case and for short inputs.
39775 */
39776 for (i=0; i<64; i++) {
39777 // load up the input word for this round
39778 if (i<16) {
39779 tmp = w[i];
39780 } else {
39781 a = w[(i+1 ) & 15];
39782 b = w[(i+14) & 15];
39783 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
39784 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
39785 w[i&15] + w[(i+9) & 15]) | 0;
39786 }
39787
39788 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
39789
39790 // shift register
39791 h7 = h6; h6 = h5; h5 = h4;
39792 h4 = h3 + tmp | 0;
39793 h3 = h2; h2 = h1; h1 = h0;
39794
39795 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
39796 }
39797
39798 h[0] = h[0]+h0 | 0;
39799 h[1] = h[1]+h1 | 0;
39800 h[2] = h[2]+h2 | 0;
39801 h[3] = h[3]+h3 | 0;
39802 h[4] = h[4]+h4 | 0;
39803 h[5] = h[5]+h5 | 0;
39804 h[6] = h[6]+h6 | 0;
39805 h[7] = h[7]+h7 | 0;
39806 }
39807};
ea87f1d3
IC
39808</script>
39809 <script>// An extremely basic translation library
39810//
39811// Example usage:
39812//
39813// Set some html to be translated. Do this using the 'data-translate' attribute:
39814//
39815// <div data-translate>Test</div>
39816// <div data-translate-html><em>keep em tag</em></div>
52da415f
IC
39817// <input data-translate-placeholder placeholder="Example placeholder">
39818// <span data-translate-title title="Example title"></span>
ea87f1d3
IC
39819//
39820// Obtain all the phrases to be translated via js debug console:
39821//
39822// Translate.phrasesAsJson();
39823//
39824// Use that template to translate the phrases into another language.
39825// Leave the key the same. Change the value to the new language.
39826//
39827// Create a js file to load the new phrases. In this example for Spanish,
39828// es.js will contain the following code:
39829//
39830// Translate.loadForeignPhrases("es", {
39831// "Test": "Test in Spanish",
39832// "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
52da415f
IC
39833// "Example placeholder": "Example placeholder in Spanish"
39834// "Example title": "Example title in Spanish"
ea87f1d3
IC
39835// });
39836//
39837// In your UI put a listener for clicking on the Spanish button:
39838//
39839// mySpanishButton.addEventListener("click", function() {
39840// Translate.setLanguage("es");
39841// });
39842// myEnglishButton.addEventListener("click", function() {
39843// Translate.setLanguage("en");
39844// });
39845
39846Translate = new (function() {
39847
39848 var defaultLanguage = "en";
39849
39850 var allPhrases = {};
39851 allPhrases[defaultLanguage] = {};
39852
39853 // Node types
39854
39855 var text = {
39856 selector: "[data-translate]",
39857 getKey: function() {
39858 return this.textContent.trim().replace(/\s+/g, " ");
39859 },
39860 setPhrase: function(p) {
39861 this.textContent = p;
39862 },
39863 }
39864
39865 var html = {
39866 selector: "[data-translate-html]",
39867 getKey: function() {
39868 return this.innerHTML.trim().replace(/\s+/g, " ");
39869 },
39870 setPhrase: function(p) {
39871 this.innerHTML = p;
39872 },
39873 }
39874
39875 var placeholder = {
39876 selector: "[data-translate-placeholder]",
39877 getKey: function() {
39878 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
39879 },
39880 setPhrase: function(p) {
39881 this.setAttribute("placeholder", p);
39882 },
39883 }
39884
52da415f
IC
39885 var title = {
39886 selector: "[data-translate-title]",
39887 getKey: function() {
39888 return this.getAttribute("title").trim().replace(/\s+/g, " ");
39889 },
39890 setPhrase: function(p) {
39891 this.setAttribute("title", p);
39892 },
39893 }
39894
ea87f1d3
IC
39895 // Get elements to be translated
39896 var allEls = getEls(text)
39897 .concat(getEls(html))
52da415f
IC
39898 .concat(getEls(placeholder))
39899 .concat(getEls(title));
ea87f1d3
IC
39900
39901 // Provides access to phrases from a non-default language.
39902 // See phrases_en.js for example usage.
39903 this.loadForeignPhrases = function(language, phrases) {
39904 allPhrases[language] = phrases;
39905 }
39906
39907 // Displays a different language, eg "en" or "fr"
39908 this.setLanguage = function(language) {
39909 for (var i=0; i<allEls.length; i++) {
39910 var el = allEls[i];
39911 var key = el.key;
39912 if (!(language in allPhrases)) {
39913 console.log(language + " not in allPhrases");
39914 return;
39915 }
39916 if (!(key in allPhrases[language])) {
39917 console.log(language + " does not contain phrase: " + key);
39918 return;
39919 }
39920 var phrase = allPhrases[language][key];
39921 el.setPhrase(phrase);
39922 }
39923 }
39924
39925 // Converts the phrases to a key-pair json file.
39926 // This is a good way to export phrases for use in translation tools.
39927 this.phrasesAsJson = function(language) {
39928 var keys = [];
39929 for (var i=0; i<allEls.length; i++) {
39930 var el = allEls[i];
39931 var key = el.key;
39932 keys.push(key);
39933 }
39934 keys.sort();
39935 var output = {};
39936 for (var i=0; i<keys.length; i++) {
39937 var key = keys[i];
39938 var translated = "";
39939 if (language in allPhrases && key in allPhrases[language]) {
39940 translated = allPhrases[language][key];
39941 }
39942 output[key] = translated;
39943 }
39944 return JSON.stringify(output, null, 2);
39945 }
39946
39947 function getEls(nodeType) {
39948 var nodes = document.querySelectorAll(nodeType.selector);
39949 var els = [];
39950 for (var i=0; i<nodes.length; i++) {
39951 var node = nodes[i];
39952 node.getKey = nodeType.getKey;
39953 node.setPhrase = nodeType.setPhrase;
39954 node.key = node.getKey();
39955 allPhrases[defaultLanguage][node.key] = node.key;
39956 els.push(node);
39957 }
39958 return els;
39959 }
39960
39961})();
39962</script>
39963 <script>Translate.loadForeignPhrases("en",
39964{
39965 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
39966 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
39967 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
39968 "<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).",
39969 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
39970 "Account": "Account",
39971 "Address": "Address",
39972 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
39973 "BIP32 Derivation Path": "BIP32 Derivation Path",
39974 "BIP32 Extended Key": "BIP32 Extended Key",
39975 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
39976 "BIP32 Root Key": "BIP32 Root Key",
39977 "BIP39 Mnemonic": "BIP39 Mnemonic",
39978 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
39979 "BIP39 Seed": "BIP39 Seed",
39980 "Base 10": "Base 10",
39981 "Base 6": "Base 6",
39982 "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.",
39983 "Binary": "Binary",
39984 "Bitcoin Core": "Bitcoin Core",
39985 "Bits Per Event": "Bits Per Event",
39986 "Block Explorers": "Block Explorers",
39987 "Can be used with": "Can be used with",
39988 "Card": "Card",
39989 "Coin": "Coin",
39990 "Dice": "Dice",
39991 "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.",
39992 "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.",
39993 "Entropy": "Entropy",
39994 "Entropy Type": "Entropy Type",
39995 "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.",
39996 "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>.",
39997 "Event Count": "Event Count",
39998 "External / Internal": "External / Internal",
39999 "Filtered Entropy": "Filtered Entropy",
40000 "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>",
40001 "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>.",
40002 "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>.",
40003 "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>",
40004 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
40005 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
40006 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
40007 "Get the source code from the repository": "Get the source code from the repository",
40008 "Hex": "Hex",
40009 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
40010 "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.",
40011 "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.",
40012 "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.",
40013 "Libraries": "Libraries",
40014 "Mnemonic Language": "Mnemonic Language",
40015 "Mnemonic Length": "Mnemonic Length",
40016 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
40017 "More info": "More info",
40018 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
40019 "Mycelium Wallet": "Mycelium Wallet",
40020 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
40021 "Offline Usage": "Offline Usage",
40022 "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.",
40023 "Path": "Path",
40024 "Private Key": "Private Key",
40025 "Private Keys": "Private Keys",
40026 "Public Key": "Public Key",
40027 "Purpose": "Purpose",
40028 "Raw Binary": "Raw Binary",
40029 "Read more": "Read more",
40030 "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>",
40031 "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>",
40032 "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>",
40033 "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>",
40034 "Show": "Show",
40035 "Show more rows": "Show more rows",
40036 "Strength": "Strength",
40037 "Supply my own source of entropy": "Supply my own source of entropy",
40038 "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.",
40039 "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>.",
40040 "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.",
40041 "This project is 100% open-source code": "This project is 100% open-source code",
40042 "Toggle": "Toggle",
40043 "Total Bits": "Total Bits",
40044 "Use hardened addresses": "Use hardened addresses",
40045 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
40046 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
40047 "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>.",
40048 "Valid entropy values include:": "Valid entropy values include:",
40049 "Warning": "Warning",
40050 "Word Count": "Word Count",
40051 "You are not a good source of entropy.": "You are not a good source of entropy.",
40052 "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).",
40053 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
40054 "words": "words"
40055}
40056);
dc55c6b0 40057</script>
ab78acc6 40058 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
3af2954a 40059WORDLISTS["english"] = [
ebd8d4e8
IC
40060"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
40061"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
40062"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
40063"adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
40064"agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
40065"alien","all","alley","allow","almost","alone","alpha","already","also","alter",
40066"always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
40067"angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
40068"anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
40069"area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
40070"arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
40071"assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
40072"audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
40073"aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
40074"bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
40075"barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
40076"beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
40077"best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
40078"bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
40079"blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
40080"boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
40081"bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
40082"breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
40083"broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
40084"bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
40085"butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
40086"calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
40087"canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
40088"cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
40089"cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
40090"cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
40091"chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
40092"chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
40093"citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
40094"clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
40095"cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
40096"code","coffee","coil","coin","collect","color","column","combine","come","comfort",
40097"comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40098"convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
40099"cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
40100"craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
40101"crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
40102"cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
40103"cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
40104"damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
40105"debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
40106"define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
40107"depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
40108"despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
40109"diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
40110"direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
40111"divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
40112"donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
40113"drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
40114"drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
40115"dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
40116"ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
40117"elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
40118"embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
40119"endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
40120"enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
40121"era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
40122"eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
40123"excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
40124"exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
40125"eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
40126"family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
40127"fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
40128"fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
40129"film","filter","final","find","fine","finger","finish","fire","firm","first",
40130"fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
40131"flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
40132"foam","focus","fog","foil","fold","follow","food","foot","force","forest",
40133"forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
40134"frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
40135"fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
40136"gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
40137"gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
40138"ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
40139"glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
40140"goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
40141"grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
40142"grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
40143"guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
40144"harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
40145"heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
40146"high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
40147"holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
40148"host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
40149"hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
40150"identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
40151"impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
40152"indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
40153"inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
40154"intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
40155"item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
40156"job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
40157"junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
40158"kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
40159"knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
40160"laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
40161"layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
40162"legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
40163"liar","liberty","library","license","life","lift","light","like","limb","limit",
40164"link","lion","liquid","list","little","live","lizard","load","loan","lobster",
40165"local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
40166"loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
40167"magic","magnet","maid","mail","main","major","make","mammal","man","manage",
40168"mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
40169"marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
40170"maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
40171"member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
40172"metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
40173"minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
40174"model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
40175"more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
40176"much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
40177"myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
40178"near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
40179"network","neutral","never","news","next","nice","night","noble","noise","nominee",
40180"noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
40181"nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
40182"obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
40183"oil","okay","old","olive","olympic","omit","once","one","onion","online",
40184"only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
40185"ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
40186"outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
40187"paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
40188"parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
40189"pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
40190"penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
40191"phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
40192"pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
40193"play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
40194"pole","police","pond","pony","pool","popular","portion","position","possible","post",
40195"potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
40196"present","pretty","prevent","price","pride","primary","print","priority","prison","private",
40197"prize","problem","process","produce","profit","program","project","promote","proof","property",
40198"prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
40199"punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
40200"pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
40201"raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
40202"ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
40203"ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
40204"reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
40205"relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
40206"repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
40207"result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
40208"ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
40209"ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
40210"romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
40211"rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
40212"safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
40213"satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
40214"scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
40215"scrub","sea","search","season","seat","second","secret","section","security","seed",
40216"seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
40217"session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
40218"sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
40219"short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
40220"siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
40221"sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
40222"skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
40223"slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
40224"snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
40225"soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
40226"sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
40227"speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
40228"spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
40229"spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
40230"stand","start","state","stay","steak","steel","stem","step","stereo","stick",
40231"still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
40232"strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
40233"success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
40234"sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
40235"suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
40236"swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
40237"tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
40238"teach","team","tell","ten","tenant","tennis","tent","term","test","text",
40239"thank","that","theme","then","theory","there","they","thing","this","thought",
40240"three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
40241"time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
40242"toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
40243"tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
40244"toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
40245"trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
40246"trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
40247"truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
40248"twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
40249"unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
40250"unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
40251"uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
40252"useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
40253"vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
40254"verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
40255"video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
40256"vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
40257"wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
40258"wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
40259"web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
40260"wheel","when","where","whip","whisper","wide","width","wife","wild","will",
40261"win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
40262"wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
40263"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
40264"yellow","you","young","youth","zebra","zero","zone","zoo"]
0515eeec
IC
40265</script>
40266 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40267WORDLISTS["japanese"] = [
40268"あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
40269"あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
40270"あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
40271"あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
40272"あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
40273"あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
40274"いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
40275"いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
40276"いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
40277"いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
40278"いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
40279"いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
40280"いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
40281"いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
40282"いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
40283"うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
40284"うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
40285"うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
40286"うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
40287"うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
40288"うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
40289"えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
40290"えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
40291"えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
40292"えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
40293"おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
40294"おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
40295"おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
40296"おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
40297"おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
40298"おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
40299"おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
40300"かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
40301"かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
40302"かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
40303"がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
40304"かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
40305"かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
40306"きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
40307"きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
40308"ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
40309"きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
40310"きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
40311"きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
40312"きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
40313"きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
40314"くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
40315"くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
40316"くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
40317"ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
40318"くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
40319"ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
40320"けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
40321"げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
40322"けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
40323"けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
40324"けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
40325"けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
40326"けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
40327"けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
40328"ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
40329"ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
40330"ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
40331"こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
40332"こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
40333"こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
40334"こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
40335"こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
40336"こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
40337"こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
40338"こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
40339"さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
40340"さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
40341"さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
40342"さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
40343"さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
40344"さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
40345"ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
40346"しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
40347"しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
40348"しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
40349"しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
40350"しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
40351"しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
40352"しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
40353"しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
40354"しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
40355"しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
40356"すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
40357"すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
40358"すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
40359"ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
40360"すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
40361"せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
40362"せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
40363"せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
40364"せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
40365"ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
40366"せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
40367"せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
40368"そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
40369"そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
40370"そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
40371"そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
40372"そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
40373"ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
40374"たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
40375"だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
40376"たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
40377"たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
40378"たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
40379"たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
40380"たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
40381"ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
40382"たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
40383"たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
40384"たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
40385"ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
40386"ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
40387"ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
40388"ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
40389"ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
40390"つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
40391"つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
40392"つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
40393"てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
40394"ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
40395"てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
40396"でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
40397"てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
40398"でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
40399"でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
40400"どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
40401"とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
40402"とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
40403"とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
40404"どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
40405"ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
40406"なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
40407"なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
40408"ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
40409"にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
40410"にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
40411"にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
40412"にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
40413"にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
40414"ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
40415"ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
40416"ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
40417"ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
40418"ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
40419"のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
40420"のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
40421"ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
40422"はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
40423"はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
40424"はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
40425"はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
40426"はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
40427"はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
40428"はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
40429"ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
40430"ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
40431"ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
40432"ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
40433"ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
40434"ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
40435"ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
40436"ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
40437"ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
40438"ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
40439"ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
40440"ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
40441"へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
40442"へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
40443"へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
40444"ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
40445"ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
40446"ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
40447"ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
40448"まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
40449"まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
40450"みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
40451"みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
40452"みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
40453"むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
40454"むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
40455"むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
40456"めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
40457"めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
40458"もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
40459"やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
40460"やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
40461"ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
40462"ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
40463"よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
40464"よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
40465"らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
40466"りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
40467"りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
40468"りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
40469"れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
40470"れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
40471"ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
40472"わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
40473</script>
40474 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40475WORDLISTS["spanish"] = [
40476"ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
40477"abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
40478"aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
40479"acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
40480"afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
40481"agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
40482"alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
40483"aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
40484"altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
40485"amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
40486"ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
40487"anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
40488"apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
40489"apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
40490"arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
40491"arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
40492"asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
40493"astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
40494"atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
40495"ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
40496"aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
40497"baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
40498"banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
40499"batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
40500"beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
40501"bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
40502"bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
40503"bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
40504"bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
40505"bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
40506"caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
40507"caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
40508"calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
40509"canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
40510"captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
40511"carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
40512"causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
40513"ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
40514"chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
40515"choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
40516"cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
40517"clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
40518"cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
40519"cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
40520"comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
40521"copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
40522"cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
40523"cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
40524"cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
40525"cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
40526"curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
40527"decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
40528"dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
40529"detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
40530"dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
40531"dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
40532"don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
40533"duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
40534"ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
40535"eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
40536"elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
40537"encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
40538"enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
40539"erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
40540"espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
40541"eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
40542"excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
40543"fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
40544"faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
40545"fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
40546"fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
40547"fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
40548"fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
40549"fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
40550"forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
40551"fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
40552"fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
40553"gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
40554"ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
40555"género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
40556"giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
40557"gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
40558"grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
40559"grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
40560"gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
40561"harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
40562"hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
40563"hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
40564"horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
40565"humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
40566"ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
40567"imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
40568"inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
40569"ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
40570"jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
40571"juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
40572"juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
40573"lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
40574"lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
40575"latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
40576"legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
40577"leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
40578"lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
40579"líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
40580"llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
40581"lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
40582"luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
40583"maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
40584"mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
40585"manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
40586"marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
40587"matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
40588"mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
40589"mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
40590"miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
40591"minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
40592"moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
40593"monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
40594"morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
40595"mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
40596"muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
40597"nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
40598"naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
40599"neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
40600"nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
40601"novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
40602"nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
40603"observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
40604"octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
40605"oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
40606"olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
40607"ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
40608"orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
40609"orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
40610"óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
40611"país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
40612"panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
40613"pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
40614"paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
40615"pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
40616"peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
40617"pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
40618"persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
40619"pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
40620"pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
40621"pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
40622"pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
40623"policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
40624"posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
40625"premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
40626"proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
40627"prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
40628"pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
40629"queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
40630"rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
40631"rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
40632"rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
40633"reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
40634"reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
40635"remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
40636"resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
40637"rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
40638"riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
40639"rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
40640"ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
40641"rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
40642"rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
40643"salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
40644"sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
40645"sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
40646"seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
40647"sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
40648"severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
40649"silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
40650"sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
40651"sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
40652"sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
40653"sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
40654"surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
40655"talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
40656"tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
40657"tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
40658"tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
40659"tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
40660"testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
40661"tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
40662"tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
40663"todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
40664"torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
40665"toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
40666"trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
40667"trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
40668"truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
40669"turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
40670"uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
40671"utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
40672"válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
40673"vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
40674"veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
40675"verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
40676"vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
40677"viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
40678"vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
40679"vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
40680"zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
40681</script>
40682 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40683WORDLISTS["chinese_simplified"] = [
40684"的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
40685"中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
40686"时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
40687"就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
40688"同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
40689"面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
40690"民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
40691"度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
40692"二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
40693"两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
40694"去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
40695"由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40696"那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
40697"样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
40698"心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
40699"或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
40700"条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
40701"无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
40702"已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
40703"果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
40704"次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
40705"求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
40706"图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
40707"别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
40708"几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
40709"必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
40710"南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
40711"百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
40712"压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
40713"术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
40714"收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
40715"风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
40716"身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
40717"达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
40718"八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
40719"节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
40720"传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
40721"研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
40722"织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
40723"复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
40724"深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
40725"半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
40726"史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
40727"何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
40728"号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
40729"毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
40730"王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
40731"却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
40732"包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
40733"细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
40734"官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
40735"女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
40736"含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
40737"英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
40738"破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
40739"河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
40740"案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
40741"仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
40742"轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
40743"足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
40744"负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
40745"修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
40746"财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
40747"跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
40748"初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
40749"未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
40750"钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
40751"限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
40752"州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
40753"础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
40754"袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
40755"诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
40756"夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
40757"终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
40758"烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
40759"括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40760"侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
40761"货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
40762"息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
40763"医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
40764"训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
40765"脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
40766"械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
40767"粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
40768"钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
40769"培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
40770"答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
40771"脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
40772"概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
40773"评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
40774"伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
40775"亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
40776"诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40777"绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
40778"屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
40779"束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
40780"胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
40781"宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
40782"露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
40783"库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
40784"鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
40785"借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
40786"润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
40787"欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
40788"纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
40789"塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
40790"刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
40791"洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
40792"献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
40793"阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
40794"楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
40795"馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
40796"塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
40797"楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
40798"监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
40799"壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
40800"桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
40801"您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
40802"纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
40803"湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
40804"齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
40805"净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
40806"庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
40807"伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
40808"璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
40809"纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
40810"津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
40811"肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
40812"贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
40813"峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
40814"浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
40815"睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
40816"炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
40817"呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
40818"授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
40819"幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
40820"姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
40821"夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
40822"绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
40823"礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
40824"勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
40825"饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
40826"扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
40827"奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
40828"寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
40829"贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
40830"渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
40831"乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
40832"锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
40833"缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
40834"碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
40835"票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
40836"荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
40837"撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
40838"陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
40839"虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
40840"乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
40841"瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
40842"秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
40843"洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
40844"籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
40845"醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
40846"玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
40847"趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
40848"滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
40849"泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
40850"胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
40851"串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
40852"辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
40853"沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
40854"侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
40855"豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
40856"掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
40857"雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
40858"蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
40859"番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
40860"扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
40861"悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
40862"渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
40863"霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
40864"甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
40865"伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
40866"弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
40867"逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
40868"冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
40869"欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
40870"搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
40871"忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
40872"杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
40873"烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
40874"姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
40875"董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
40876"拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
40877"览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
40878"凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
40879"丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
40880"铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
40881"窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
40882"胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
40883"疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
40884"嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
40885"莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
40886"皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
40887"巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
40888"卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
40889</script>
40890 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40891WORDLISTS["chinese_traditional"] = [
40892"的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
40893"中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
40894"時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
40895"就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
40896"同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
40897"面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
40898"民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
40899"度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
40900"二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
40901"兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
40902"去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
40903"由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40904"那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
40905"樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
40906"心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
40907"或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
40908"條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
40909"無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
40910"已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
40911"果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
40912"次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
40913"求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
40914"圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
40915"別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
40916"幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
40917"必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
40918"南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
40919"百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
40920"壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
40921"術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
40922"收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
40923"風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
40924"身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
40925"達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
40926"八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
40927"節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
40928"傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
40929"研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
40930"織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
40931"复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
40932"深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
40933"半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
40934"史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
40935"何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
40936"號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
40937"毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
40938"王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
40939"卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
40940"包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
40941"細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
40942"官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
40943"女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
40944"含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
40945"英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
40946"破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
40947"河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
40948"案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
40949"僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
40950"輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
40951"足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
40952"負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
40953"修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
40954"財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
40955"跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
40956"初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
40957"未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
40958"錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
40959"限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
40960"州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
40961"礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
40962"袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
40963"訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
40964"夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
40965"終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
40966"烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
40967"括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40968"侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
40969"貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
40970"息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
40971"醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
40972"訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
40973"脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
40974"械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
40975"粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
40976"鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
40977"培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
40978"答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
40979"腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
40980"概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
40981"評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
40982"傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
40983"亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
40984"詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40985"綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
40986"屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
40987"束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
40988"胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
40989"宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
40990"露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
40991"庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
40992"鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
40993"借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
40994"潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
40995"歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
40996"納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
40997"塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
40998"刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
40999"洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
41000"獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
41001"陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
41002"樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
41003"館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
41004"塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
41005"楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
41006"監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
41007"壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
41008"橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
41009"您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
41010"紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
41011"灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
41012"齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
41013"淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
41014"莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
41015"夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
41016"璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
41017"縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
41018"津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
41019"肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
41020"貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
41021"峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
41022"浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
41023"睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
41024"炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
41025"呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
41026"授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
41027"幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
41028"姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
41029"夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
41030"繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
41031"禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
41032"勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
41033"飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
41034"掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
41035"奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
41036"寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
41037"貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
41038"漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
41039"乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
41040"銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
41041"缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
41042"碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
41043"票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
41044"荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
41045"撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
41046"陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
41047"蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
41048"乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
41049"瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
41050"秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
41051"洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
41052"籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
41053"醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
41054"玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
41055"趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
41056"灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
41057"泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
41058"脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
41059"串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
41060"輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
41061"沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
41062"僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
41063"豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
41064"掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
41065"霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
41066"蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
41067"番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
41068"扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
41069"悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
41070"渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
41071"黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
41072"甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
41073"偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
41074"弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
41075"逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
41076"冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
41077"欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
41078"搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
41079"憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
41080"杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
41081"烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
41082"姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
41083"董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
41084"拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
41085"覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
41086"兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
41087"叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
41088"鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
41089"窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
41090"胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
41091"瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
41092"嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
41093"蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
41094"皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
41095"巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
41096"卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
41097</script>
41098 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41099WORDLISTS["french"] = [
41100"abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
41101"abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
41102"acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
41103"aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
41104"adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
41105"adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
41106"agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
41107"aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
41108"alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
41109"ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
41110"amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
41111"animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
41112"anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
41113"aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
41114"armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
41115"aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
41116"atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
41117"audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
41118"aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
41119"badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
41120"bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
41121"bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
41122"bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
41123"bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
41124"biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
41125"blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
41126"bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
41127"bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
41128"breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
41129"broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
41130"bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
41131"caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
41132"caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
41133"caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
41134"carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
41135"caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
41136"cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
41137"charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
41138"chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
41139"chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
41140"citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
41141"cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
41142"coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
41143"colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
41144"connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
41145"corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
41146"couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
41147"crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
41148"crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
41149"curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
41150"dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
41151"déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
41152"dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
41153"dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
41154"dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
41155"détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
41156"différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
41157"discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
41158"domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
41159"doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
41160"dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
41161"écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
41162"écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
41163"effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
41164"élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
41165"embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
41166"émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
41167"enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
41168"ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
41169"énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
41170"épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
41171"épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
41172"espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
41173"estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
41174"ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
41175"évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
41176"exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
41177"exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
41178"exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
41179"farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
41180"favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
41181"féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
41182"figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
41183"fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
41184"fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
41185"fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
41186"fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
41187"frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
41188"fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
41189"galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
41190"gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
41191"gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
41192"gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
41193"goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
41194"grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
41195"gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
41196"hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
41197"hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
41198"histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
41199"horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
41200"humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
41201"illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
41202"imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
41203"inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
41204"inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
41205"inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
41206"inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
41207"jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
41208"jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
41209"joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
41210"kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
41211"laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
41212"laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
41213"lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
41214"ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
41215"lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
41216"loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
41217"lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
41218"magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
41219"malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
41220"marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
41221"matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
41222"méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
41223"mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
41224"métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
41225"mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
41226"moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
41227"morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
41228"mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
41229"muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
41230"natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
41231"négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
41232"nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
41233"normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
41234"nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
41235"obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
41236"octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
41237"olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
41238"opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
41239"oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
41240"otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
41241"paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
41242"panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
41243"parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
41244"patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
41245"pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
41246"perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
41247"pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
41248"pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
41249"pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
41250"pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
41251"pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
41252"ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
41253"pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
41254"préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
41255"problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
41256"prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
41257"pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
41258"question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
41259"ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
41260"réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
41261"rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
41262"régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
41263"remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
41264"reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
41265"rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
41266"révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
41267"rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
41268"rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
41269"ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
41270"sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
41271"sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
41272"savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
41273"scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
41274"séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
41275"séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
41276"sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
41277"sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
41278"soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
41279"sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
41280"soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
41281"station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
41282"subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
41283"surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
41284"synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
41285"tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
41286"tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
41287"tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
41288"tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
41289"tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
41290"torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
41291"trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
41292"tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
41293"tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
41294"typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
41295"univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
41296"vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
41297"valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
41298"végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
41299"vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
41300"viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
41301"violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
41302"vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
41303"voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
41304"voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
41305</script>
41306 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41307WORDLISTS["italian"] = [
41308"abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
41309"accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
41310"addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
41311"affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
41312"agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
41313"alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
41314"allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
41315"altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
41316"america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
41317"amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
41318"andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
41319"anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
41320"appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
41321"archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
41322"arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
41323"asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
41324"astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
41325"attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
41326"avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
41327"badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
41328"bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
41329"battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
41330"benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
41331"bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
41332"bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
41333"botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
41334"brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
41335"buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
41336"cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
41337"camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
41338"capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
41339"carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
41340"casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
41341"cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
41342"cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
41343"ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
41344"ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
41345"cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
41346"comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
41347"consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
41348"cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
41349"cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
41350"critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
41351"cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
41352"daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
41353"decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
41354"demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
41355"desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
41356"diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
41357"disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
41358"dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
41359"dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
41360"dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
41361"economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
41362"elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
41363"eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
41364"enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
41365"eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
41366"erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
41367"esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
41368"esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
41369"europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
41370"famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
41371"fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
41372"feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
41373"feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
41374"fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
41375"fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
41376"fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
41377"fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
41378"frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
41379"fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
41380"gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
41381"garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
41382"gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
41383"ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
41384"gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
41385"gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
41386"gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
41387"guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
41388"idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
41389"imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
41390"importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
41391"incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
41392"ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
41393"insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
41394"invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
41395"irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
41396"lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
41397"larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
41398"lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
41399"levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
41400"liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
41401"lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
41402"luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
41403"macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
41404"malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
41405"mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
41406"massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
41407"medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
41408"merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
41409"mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
41410"minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
41411"mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
41412"molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
41413"mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
41414"mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
41415"muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
41416"narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
41417"negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
41418"nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
41419"normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
41420"nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
41421"obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
41422"offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
41423"ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
41424"onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
41425"orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
41426"orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
41427"ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
41428"ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
41429"padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
41430"pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
41431"parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
41432"pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
41433"penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
41434"periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
41435"pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
41436"piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
41437"pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
41438"pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
41439"poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
41440"pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
41441"positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
41442"prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
41443"principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
41444"proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
41445"pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
41446"qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
41447"ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
41448"rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
41449"recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
41450"remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
41451"rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
41452"ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
41453"rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
41454"rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
41455"ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
41456"rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
41457"riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
41458"rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
41459"rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
41460"rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
41461"salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
41462"sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
41463"sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
41464"sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
41465"scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
41466"scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
41467"scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
41468"sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
41469"selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
41470"sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
41471"setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
41472"sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
41473"sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
41474"sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
41475"sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
41476"smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
41477"snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
41478"solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
41479"sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
41480"sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
41481"spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
41482"spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
41483"sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
41484"statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
41485"storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
41486"succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
41487"sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
41488"svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
41489"tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
41490"tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
41491"tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
41492"tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
41493"titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
41494"tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
41495"tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
41496"trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
41497"trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
41498"trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
41499"tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
41500"ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
41501"unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
41502"usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
41503"valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
41504"vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
41505"vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
41506"verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
41507"vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
41508"vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
41509"viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
41510"viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
41511"zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
41512"zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
dc55c6b0 41513</script>
ab78acc6 41514 <script>/*
3af2954a
IC
41515 * Copyright (c) 2013 Pavol Rusnak
41516 *
41517 * Permission is hereby granted, free of charge, to any person obtaining a copy of
41518 * this software and associated documentation files (the "Software"), to deal in
41519 * the Software without restriction, including without limitation the rights to
41520 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
41521 * of the Software, and to permit persons to whom the Software is furnished to do
41522 * so, subject to the following conditions:
41523 *
41524 * The above copyright notice and this permission notice shall be included in all
41525 * copies or substantial portions of the Software.
41526 *
41527 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41528 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41529 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41530 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41531 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
41532 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41533 */
41534
41535/*
41536 * Javascript port from python by Ian Coleman
41537 *
80c4dd2a
IC
41538 * Requires code from sjcl
41539 * https://github.com/bitwiseshiftleft/sjcl
3af2954a
IC
41540 */
41541
41542var Mnemonic = function(language) {
41543
41544 var PBKDF2_ROUNDS = 2048;
41545 var RADIX = 2048;
41546
41547 var self = this;
41548 var wordlist = [];
41549
80c4dd2a
IC
41550 var hmacSHA512 = function(key) {
41551 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
41552 this.encrypt = function() {
41553 return hasher.encrypt.apply(hasher, arguments);
41554 };
41555 };
41556
3af2954a
IC
41557 function init() {
41558 wordlist = WORDLISTS[language];
41559 if (wordlist.length != RADIX) {
41560 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
41561 throw err;
41562 }
41563 }
41564
41565 self.generate = function(strength) {
41566 strength = strength || 128;
41567 var r = strength % 32;
41568 if (r > 0) {
41569 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
41570 }
41571 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
41572 if (!hasStrongCrypto) {
41573 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
41574 }
41575 var buffer = new Uint8Array(strength / 8);
41576 var data = crypto.getRandomValues(buffer);
41577 return self.toMnemonic(data);
41578 }
41579
80c4dd2a
IC
41580 self.toMnemonic = function(byteArray) {
41581 if (byteArray.length % 4 > 0) {
41582 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
3af2954a
IC
41583 }
41584
41585 //h = hashlib.sha256(data).hexdigest()
80c4dd2a
IC
41586 var data = byteArrayToWordArray(byteArray);
41587 var hash = sjcl.hash.sha256.hash(data);
41588 var h = sjcl.codec.hex.fromBits(hash);
3af2954a
IC
41589
41590 // b is a binary string, eg '00111010101100...'
41591 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
41592 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
41593 //
41594 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
41595 // c = bin(int(h, 16))[2:].zfill(256)
41596 // d = c[:len(data) * 8 / 32]
80c4dd2a
IC
41597 var a = byteArrayToBinaryString(byteArray);
41598 var c = zfill(hexStringToBinaryString(h), 256);
41599 var d = c.substring(0, byteArray.length * 8 / 32);
3af2954a
IC
41600 // b = line1 + line2
41601 var b = a + d;
41602
41603 var result = [];
41604 var blen = b.length / 11;
41605 for (var i=0; i<blen; i++) {
41606 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
41607 result.push(wordlist[idx]);
41608 }
0515eeec 41609 return self.joinWords(result);
3af2954a
IC
41610 }
41611
41612 self.check = function(mnemonic) {
0515eeec 41613 var mnemonic = self.splitWords(mnemonic);
18abe53b 41614 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
3af2954a
IC
41615 return false
41616 }
41617 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
41618 var idx = [];
41619 for (var i=0; i<mnemonic.length; i++) {
41620 var word = mnemonic[i];
41621 var wordIndex = wordlist.indexOf(word);
41622 if (wordIndex == -1) {
41623 return false;
41624 }
41625 var binaryIndex = zfill(wordIndex.toString(2), 11);
41626 idx.push(binaryIndex);
41627 }
41628 var b = idx.join('');
41629 var l = b.length;
41630 //d = b[:l / 33 * 32]
41631 //h = b[-l / 33:]
41632 var d = b.substring(0, l / 33 * 32);
41633 var h = b.substring(l - l / 33, l);
41634 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
80c4dd2a 41635 var nd = binaryStringToWordArray(d);
3af2954a 41636 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
80c4dd2a
IC
41637 var ndHash = sjcl.hash.sha256.hash(nd);
41638 var ndHex = sjcl.codec.hex.fromBits(ndHash);
41639 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
3af2954a
IC
41640 var nh = ndBstr.substring(0,l/33);
41641 return h == nh;
41642 }
41643
41644 self.toSeed = function(mnemonic, passphrase) {
41645 passphrase = passphrase || '';
599fb39e
IC
41646 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
41647 var mnemonicNormalized = self.normalizeString(mnemonic);
3af2954a
IC
41648 passphrase = self.normalizeString(passphrase)
41649 passphrase = "mnemonic" + passphrase;
599fb39e 41650 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
80c4dd2a
IC
41651 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
41652 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
41653 var hashHex = sjcl.codec.hex.fromBits(result);
41654 return hashHex;
3af2954a
IC
41655 }
41656
0515eeec
IC
41657 self.splitWords = function(mnemonic) {
41658 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
41659 }
41660
41661 self.joinWords = function(words) {
41662 // Set space correctly depending on the language
41663 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
41664 var space = " ";
41665 if (language == "japanese") {
41666 space = "\u3000"; // ideographic space
41667 }
41668 return words.join(space);
41669 }
41670
3af2954a
IC
41671 self.normalizeString = function(str) {
41672 if (typeof str.normalize == "function") {
41673 return str.normalize("NFKD");
41674 }
41675 else {
41676 // TODO decide how to handle this in the future.
41677 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
41678 return str;
41679 }
41680 }
41681
80c4dd2a
IC
41682 function byteArrayToWordArray(data) {
41683 var a = [];
41684 for (var i=0; i<data.length/4; i++) {
41685 v = 0;
41686 v += data[i*4 + 0] << 8 * 3;
41687 v += data[i*4 + 1] << 8 * 2;
41688 v += data[i*4 + 2] << 8 * 1;
41689 v += data[i*4 + 3] << 8 * 0;
41690 a.push(v);
41691 }
41692 return a;
41693 }
41694
3af2954a
IC
41695 function byteArrayToBinaryString(data) {
41696 var bin = "";
41697 for (var i=0; i<data.length; i++) {
41698 bin += zfill(data[i].toString(2), 8);
41699 }
41700 return bin;
41701 }
41702
80c4dd2a
IC
41703 function hexStringToBinaryString(hexString) {
41704 binaryString = "";
41705 for (var i=0; i<hexString.length; i++) {
41706 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
41707 }
41708 return binaryString;
41709 }
41710
41711 function binaryStringToWordArray(binary) {
41712 var aLen = binary.length / 32;
41713 var a = [];
41714 for (var i=0; i<aLen; i++) {
41715 var valueStr = binary.substring(0,32);
3af2954a 41716 var value = parseInt(valueStr, 2);
80c4dd2a
IC
41717 a.push(value);
41718 binary = binary.slice(32);
3af2954a 41719 }
80c4dd2a 41720 return a;
3af2954a
IC
41721 }
41722
41723 // Pad a numeric string on the left with zero digits until the given width
41724 // is reached.
41725 // Note this differs to the python implementation because it does not
41726 // handle numbers starting with a sign.
41727 function zfill(source, length) {
41728 source = source.toString();
41729 while (source.length < length) {
41730 source = '0' + source;
41731 }
41732 return source;
41733 }
41734
41735 init();
ebd8d4e8 41736
3af2954a 41737}
dc55c6b0 41738</script>
95f04905
IC
41739 <script>/*
41740 JavaScript BigInteger library version 0.9.1
41741 http://silentmatt.com/biginteger/
18abe53b 41742
95f04905
IC
41743 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
41744 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
41745 Licensed under the MIT license.
c6624d51 41746
95f04905
IC
41747 Support for arbitrary internal representation base was added by
41748 Vitaly Magerya.
41749*/
18abe53b 41750
95f04905
IC
41751/*
41752 File: biginteger.js
18abe53b 41753
95f04905 41754 Exports:
18abe53b 41755
95f04905
IC
41756 <BigInteger>
41757*/
41758(function(exports) {
41759"use strict";
41760/*
41761 Class: BigInteger
41762 An arbitrarily-large integer.
18abe53b 41763
95f04905
IC
41764 <BigInteger> objects should be considered immutable. None of the "built-in"
41765 methods modify *this* or their arguments. All properties should be
41766 considered private.
18abe53b 41767
95f04905
IC
41768 All the methods of <BigInteger> instances can be called "statically". The
41769 static versions are convenient if you don't already have a <BigInteger>
41770 object.
18abe53b 41771
95f04905 41772 As an example, these calls are equivalent.
18abe53b 41773
95f04905
IC
41774 > BigInteger(4).multiply(5); // returns BigInteger(20);
41775 > BigInteger.multiply(4, 5); // returns BigInteger(20);
18abe53b 41776
95f04905
IC
41777 > var a = 42;
41778 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
41779*/
c6624d51 41780
95f04905 41781var CONSTRUCT = {}; // Unique token to call "private" version of constructor
c6624d51
IC
41782
41783/*
41784 Constructor: BigInteger()
41785 Convert a value to a <BigInteger>.
41786
41787 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
41788 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
41789 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
41790 without a radix argument.
41791
41792 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
41793 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
41794 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
41795 > var n3 = BigInteger(n2); // Return n2, unchanged
41796
41797 The constructor form only takes an array and a sign. *n* must be an
41798 array of numbers in little-endian order, where each digit is between 0
41799 and BigInteger.base. The second parameter sets the sign: -1 for
41800 negative, +1 for positive, or 0 for zero. The array is *not copied and
41801 may be modified*. If the array contains only zeros, the sign parameter
41802 is ignored and is forced to zero.
41803
41804 > new BigInteger([5], -1): create a new BigInteger with value -5
41805
41806 Parameters:
41807
41808 n - Value to convert to a <BigInteger>.
41809
41810 Returns:
41811
41812 A <BigInteger> value.
41813
41814 See Also:
41815
41816 <parse>, <BigInteger>
41817*/
41818function BigInteger(n, s, token) {
41819 if (token !== CONSTRUCT) {
41820 if (n instanceof BigInteger) {
41821 return n;
41822 }
41823 else if (typeof n === "undefined") {
41824 return ZERO;
41825 }
41826 return BigInteger.parse(n);
41827 }
41828
41829 n = n || []; // Provide the nullary constructor for subclasses.
41830 while (n.length && !n[n.length - 1]) {
41831 --n.length;
41832 }
41833 this._d = n;
41834 this._s = n.length ? (s || 1) : 0;
41835}
41836
41837BigInteger._construct = function(n, s) {
41838 return new BigInteger(n, s, CONSTRUCT);
41839};
41840
41841// Base-10 speedup hacks in parse, toString, exp10 and log functions
41842// require base to be a power of 10. 10^7 is the largest such power
41843// that won't cause a precision loss when digits are multiplied.
41844var BigInteger_base = 10000000;
41845var BigInteger_base_log10 = 7;
41846
41847BigInteger.base = BigInteger_base;
41848BigInteger.base_log10 = BigInteger_base_log10;
41849
41850var ZERO = new BigInteger([], 0, CONSTRUCT);
41851// Constant: ZERO
41852// <BigInteger> 0.
41853BigInteger.ZERO = ZERO;
41854
41855var ONE = new BigInteger([1], 1, CONSTRUCT);
41856// Constant: ONE
41857// <BigInteger> 1.
41858BigInteger.ONE = ONE;
41859
41860var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
41861// Constant: M_ONE
41862// <BigInteger> -1.
41863BigInteger.M_ONE = M_ONE;
41864
41865// Constant: _0
41866// Shortcut for <ZERO>.
41867BigInteger._0 = ZERO;
41868
41869// Constant: _1
41870// Shortcut for <ONE>.
41871BigInteger._1 = ONE;
41872
41873/*
41874 Constant: small
41875 Array of <BigIntegers> from 0 to 36.
41876
41877 These are used internally for parsing, but useful when you need a "small"
41878 <BigInteger>.
41879
41880 See Also:
41881
41882 <ZERO>, <ONE>, <_0>, <_1>
41883*/
41884BigInteger.small = [
41885 ZERO,
41886 ONE,
41887 /* Assuming BigInteger_base > 36 */
41888 new BigInteger( [2], 1, CONSTRUCT),
41889 new BigInteger( [3], 1, CONSTRUCT),
41890 new BigInteger( [4], 1, CONSTRUCT),
41891 new BigInteger( [5], 1, CONSTRUCT),
41892 new BigInteger( [6], 1, CONSTRUCT),
41893 new BigInteger( [7], 1, CONSTRUCT),
41894 new BigInteger( [8], 1, CONSTRUCT),
41895 new BigInteger( [9], 1, CONSTRUCT),
41896 new BigInteger([10], 1, CONSTRUCT),
41897 new BigInteger([11], 1, CONSTRUCT),
41898 new BigInteger([12], 1, CONSTRUCT),
41899 new BigInteger([13], 1, CONSTRUCT),
41900 new BigInteger([14], 1, CONSTRUCT),
41901 new BigInteger([15], 1, CONSTRUCT),
41902 new BigInteger([16], 1, CONSTRUCT),
41903 new BigInteger([17], 1, CONSTRUCT),
41904 new BigInteger([18], 1, CONSTRUCT),
41905 new BigInteger([19], 1, CONSTRUCT),
41906 new BigInteger([20], 1, CONSTRUCT),
41907 new BigInteger([21], 1, CONSTRUCT),
41908 new BigInteger([22], 1, CONSTRUCT),
41909 new BigInteger([23], 1, CONSTRUCT),
41910 new BigInteger([24], 1, CONSTRUCT),
41911 new BigInteger([25], 1, CONSTRUCT),
41912 new BigInteger([26], 1, CONSTRUCT),
41913 new BigInteger([27], 1, CONSTRUCT),
41914 new BigInteger([28], 1, CONSTRUCT),
41915 new BigInteger([29], 1, CONSTRUCT),
41916 new BigInteger([30], 1, CONSTRUCT),
41917 new BigInteger([31], 1, CONSTRUCT),
41918 new BigInteger([32], 1, CONSTRUCT),
41919 new BigInteger([33], 1, CONSTRUCT),
41920 new BigInteger([34], 1, CONSTRUCT),
41921 new BigInteger([35], 1, CONSTRUCT),
41922 new BigInteger([36], 1, CONSTRUCT)
41923];
41924
41925// Used for parsing/radix conversion
41926BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
41927
41928/*
41929 Method: toString
41930 Convert a <BigInteger> to a string.
41931
41932 When *base* is greater than 10, letters are upper case.
41933
41934 Parameters:
41935
41936 base - Optional base to represent the number in (default is base 10).
41937 Must be between 2 and 36 inclusive, or an Error will be thrown.
41938
41939 Returns:
41940
41941 The string representation of the <BigInteger>.
41942*/
41943BigInteger.prototype.toString = function(base) {
41944 base = +base || 10;
41945 if (base < 2 || base > 36) {
41946 throw new Error("illegal radix " + base + ".");
41947 }
41948 if (this._s === 0) {
41949 return "0";
41950 }
41951 if (base === 10) {
41952 var str = this._s < 0 ? "-" : "";
41953 str += this._d[this._d.length - 1].toString();
41954 for (var i = this._d.length - 2; i >= 0; i--) {
41955 var group = this._d[i].toString();
41956 while (group.length < BigInteger_base_log10) group = '0' + group;
41957 str += group;
41958 }
41959 return str;
41960 }
41961 else {
41962 var numerals = BigInteger.digits;
41963 base = BigInteger.small[base];
41964 var sign = this._s;
41965
41966 var n = this.abs();
41967 var digits = [];
41968 var digit;
41969
41970 while (n._s !== 0) {
41971 var divmod = n.divRem(base);
41972 n = divmod[0];
41973 digit = divmod[1];
41974 // TODO: This could be changed to unshift instead of reversing at the end.
41975 // Benchmark both to compare speeds.
41976 digits.push(numerals[digit.valueOf()]);
41977 }
41978 return (sign < 0 ? "-" : "") + digits.reverse().join("");
41979 }
41980};
41981
41982// Verify strings for parsing
41983BigInteger.radixRegex = [
41984 /^$/,
41985 /^$/,
41986 /^[01]*$/,
41987 /^[012]*$/,
41988 /^[0-3]*$/,
41989 /^[0-4]*$/,
41990 /^[0-5]*$/,
41991 /^[0-6]*$/,
41992 /^[0-7]*$/,
41993 /^[0-8]*$/,
41994 /^[0-9]*$/,
41995 /^[0-9aA]*$/,
41996 /^[0-9abAB]*$/,
41997 /^[0-9abcABC]*$/,
41998 /^[0-9a-dA-D]*$/,
41999 /^[0-9a-eA-E]*$/,
42000 /^[0-9a-fA-F]*$/,
42001 /^[0-9a-gA-G]*$/,
42002 /^[0-9a-hA-H]*$/,
42003 /^[0-9a-iA-I]*$/,
42004 /^[0-9a-jA-J]*$/,
42005 /^[0-9a-kA-K]*$/,
42006 /^[0-9a-lA-L]*$/,
42007 /^[0-9a-mA-M]*$/,
42008 /^[0-9a-nA-N]*$/,
42009 /^[0-9a-oA-O]*$/,
42010 /^[0-9a-pA-P]*$/,
42011 /^[0-9a-qA-Q]*$/,
42012 /^[0-9a-rA-R]*$/,
42013 /^[0-9a-sA-S]*$/,
42014 /^[0-9a-tA-T]*$/,
42015 /^[0-9a-uA-U]*$/,
42016 /^[0-9a-vA-V]*$/,
42017 /^[0-9a-wA-W]*$/,
42018 /^[0-9a-xA-X]*$/,
42019 /^[0-9a-yA-Y]*$/,
42020 /^[0-9a-zA-Z]*$/
42021];
42022
42023/*
42024 Function: parse
42025 Parse a string into a <BigInteger>.
42026
42027 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
42028 *base* is not provided, it will be guessed based on the leading characters
42029 of *s* as follows:
42030
42031 - "0x" or "0X": *base* = 16
42032 - "0c" or "0C": *base* = 8
42033 - "0b" or "0B": *base* = 2
42034 - else: *base* = 10
42035
42036 If no base is provided, or *base* is 10, the number can be in exponential
42037 form. For example, these are all valid:
42038
42039 > BigInteger.parse("1e9"); // Same as "1000000000"
42040 > BigInteger.parse("1.234*10^3"); // Same as 1234
42041 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
42042
42043 If any characters fall outside the range defined by the radix, an exception
42044 will be thrown.
42045
42046 Parameters:
42047
42048 s - The string to parse.
42049 base - Optional radix (default is to guess based on *s*).
42050
42051 Returns:
42052
42053 a <BigInteger> instance.
42054*/
42055BigInteger.parse = function(s, base) {
42056 // Expands a number in exponential form to decimal form.
42057 // expandExponential("-13.441*10^5") === "1344100";
42058 // expandExponential("1.12300e-1") === "0.112300";
42059 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
42060 function expandExponential(str) {
42061 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
42062
42063 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
42064 c = +c;
42065 var l = c < 0;
42066 var i = n.length + c;
42067 x = (l ? n : f).length;
42068 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
42069 var z = (new Array(c + 1)).join("0");
42070 var r = n + f;
42071 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
42072 });
42073 }
42074
42075 s = s.toString();
42076 if (typeof base === "undefined" || +base === 10) {
42077 s = expandExponential(s);
42078 }
42079
42080 var prefixRE;
42081 if (typeof base === "undefined") {
42082 prefixRE = '0[xcb]';
42083 }
42084 else if (base == 16) {
42085 prefixRE = '0x';
42086 }
42087 else if (base == 8) {
42088 prefixRE = '0c';
42089 }
42090 else if (base == 2) {
42091 prefixRE = '0b';
42092 }
42093 else {
42094 prefixRE = '';
42095 }
42096 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
42097 if (parts) {
42098 var sign = parts[1] || "+";
42099 var baseSection = parts[2] || "";
42100 var digits = parts[3] || "";
42101
42102 if (typeof base === "undefined") {
42103 // Guess base
42104 if (baseSection === "0x" || baseSection === "0X") { // Hex
42105 base = 16;
42106 }
42107 else if (baseSection === "0c" || baseSection === "0C") { // Octal
42108 base = 8;
42109 }
42110 else if (baseSection === "0b" || baseSection === "0B") { // Binary
42111 base = 2;
42112 }
42113 else {
42114 base = 10;
42115 }
42116 }
42117 else if (base < 2 || base > 36) {
42118 throw new Error("Illegal radix " + base + ".");
42119 }
42120
42121 base = +base;
42122
42123 // Check for digits outside the range
42124 if (!(BigInteger.radixRegex[base].test(digits))) {
42125 throw new Error("Bad digit for radix " + base);
42126 }
42127
42128 // Strip leading zeros, and convert to array
42129 digits = digits.replace(/^0+/, "").split("");
42130 if (digits.length === 0) {
42131 return ZERO;
42132 }
42133
42134 // Get the sign (we know it's not zero)
42135 sign = (sign === "-") ? -1 : 1;
42136
42137 // Optimize 10
42138 if (base == 10) {
42139 var d = [];
42140 while (digits.length >= BigInteger_base_log10) {
42141 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
42142 }
42143 d.push(parseInt(digits.join(''), 10));
42144 return new BigInteger(d, sign, CONSTRUCT);
42145 }
42146
42147 // Do the conversion
42148 var d = ZERO;
42149 base = BigInteger.small[base];
42150 var small = BigInteger.small;
42151 for (var i = 0; i < digits.length; i++) {
42152 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
42153 }
42154 return new BigInteger(d._d, sign, CONSTRUCT);
42155 }
42156 else {
42157 throw new Error("Invalid BigInteger format: " + s);
42158 }
42159};
42160
42161/*
42162 Function: add
42163 Add two <BigIntegers>.
42164
42165 Parameters:
42166
42167 n - The number to add to *this*. Will be converted to a <BigInteger>.
42168
42169 Returns:
42170
42171 The numbers added together.
42172
42173 See Also:
42174
42175 <subtract>, <multiply>, <quotient>, <next>
42176*/
42177BigInteger.prototype.add = function(n) {
42178 if (this._s === 0) {
42179 return BigInteger(n);
42180 }
42181
42182 n = BigInteger(n);
42183 if (n._s === 0) {
42184 return this;
42185 }
42186 if (this._s !== n._s) {
42187 n = n.negate();
42188 return this.subtract(n);
42189 }
42190
42191 var a = this._d;
42192 var b = n._d;
42193 var al = a.length;
42194 var bl = b.length;
42195 var sum = new Array(Math.max(al, bl) + 1);
42196 var size = Math.min(al, bl);
42197 var carry = 0;
42198 var digit;
42199
42200 for (var i = 0; i < size; i++) {
42201 digit = a[i] + b[i] + carry;
42202 sum[i] = digit % BigInteger_base;
42203 carry = (digit / BigInteger_base) | 0;
42204 }
42205 if (bl > al) {
42206 a = b;
42207 al = bl;
42208 }
42209 for (i = size; carry && i < al; i++) {
42210 digit = a[i] + carry;
42211 sum[i] = digit % BigInteger_base;
42212 carry = (digit / BigInteger_base) | 0;
42213 }
42214 if (carry) {
42215 sum[i] = carry;
42216 }
42217
42218 for ( ; i < al; i++) {
42219 sum[i] = a[i];
42220 }
42221
42222 return new BigInteger(sum, this._s, CONSTRUCT);
42223};
42224
42225/*
42226 Function: negate
42227 Get the additive inverse of a <BigInteger>.
42228
42229 Returns:
42230
42231 A <BigInteger> with the same magnatude, but with the opposite sign.
42232
42233 See Also:
42234
42235 <abs>
42236*/
42237BigInteger.prototype.negate = function() {
42238 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
42239};
42240
42241/*
42242 Function: abs
42243 Get the absolute value of a <BigInteger>.
42244
42245 Returns:
42246
42247 A <BigInteger> with the same magnatude, but always positive (or zero).
42248
42249 See Also:
42250
42251 <negate>
42252*/
42253BigInteger.prototype.abs = function() {
42254 return (this._s < 0) ? this.negate() : this;
42255};
42256
42257/*
42258 Function: subtract
42259 Subtract two <BigIntegers>.
42260
42261 Parameters:
42262
42263 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
42264
42265 Returns:
42266
42267 The *n* subtracted from *this*.
42268
42269 See Also:
42270
42271 <add>, <multiply>, <quotient>, <prev>
42272*/
42273BigInteger.prototype.subtract = function(n) {
42274 if (this._s === 0) {
42275 return BigInteger(n).negate();
42276 }
42277
42278 n = BigInteger(n);
42279 if (n._s === 0) {
42280 return this;
42281 }
42282 if (this._s !== n._s) {
42283 n = n.negate();
42284 return this.add(n);
42285 }
42286
42287 var m = this;
42288 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
42289 if (this._s < 0) {
42290 m = new BigInteger(n._d, 1, CONSTRUCT);
42291 n = new BigInteger(this._d, 1, CONSTRUCT);
42292 }
42293
42294 // Both are positive => a - b
42295 var sign = m.compareAbs(n);
42296 if (sign === 0) {
42297 return ZERO;
42298 }
42299 else if (sign < 0) {
42300 // swap m and n
42301 var t = n;
42302 n = m;
42303 m = t;
42304 }
42305
42306 // a > b
42307 var a = m._d;
42308 var b = n._d;
42309 var al = a.length;
42310 var bl = b.length;
42311 var diff = new Array(al); // al >= bl since a > b
42312 var borrow = 0;
42313 var i;
42314 var digit;
42315
42316 for (i = 0; i < bl; i++) {
42317 digit = a[i] - borrow - b[i];
42318 if (digit < 0) {
42319 digit += BigInteger_base;
42320 borrow = 1;
42321 }
42322 else {
42323 borrow = 0;
42324 }
42325 diff[i] = digit;
42326 }
42327 for (i = bl; i < al; i++) {
42328 digit = a[i] - borrow;
42329 if (digit < 0) {
42330 digit += BigInteger_base;
42331 }
42332 else {
42333 diff[i++] = digit;
42334 break;
42335 }
42336 diff[i] = digit;
42337 }
42338 for ( ; i < al; i++) {
42339 diff[i] = a[i];
42340 }
42341
42342 return new BigInteger(diff, sign, CONSTRUCT);
42343};
42344
42345(function() {
42346 function addOne(n, sign) {
42347 var a = n._d;
42348 var sum = a.slice();
42349 var carry = true;
42350 var i = 0;
42351
42352 while (true) {
42353 var digit = (a[i] || 0) + 1;
42354 sum[i] = digit % BigInteger_base;
42355 if (digit <= BigInteger_base - 1) {
42356 break;
42357 }
42358 ++i;
42359 }
42360
42361 return new BigInteger(sum, sign, CONSTRUCT);
42362 }
42363
42364 function subtractOne(n, sign) {
42365 var a = n._d;
42366 var sum = a.slice();
42367 var borrow = true;
42368 var i = 0;
42369
42370 while (true) {
42371 var digit = (a[i] || 0) - 1;
42372 if (digit < 0) {
42373 sum[i] = digit + BigInteger_base;
42374 }
42375 else {
42376 sum[i] = digit;
42377 break;
42378 }
42379 ++i;
42380 }
42381
42382 return new BigInteger(sum, sign, CONSTRUCT);
42383 }
42384
42385 /*
42386 Function: next
42387 Get the next <BigInteger> (add one).
42388
42389 Returns:
42390
42391 *this* + 1.
42392
42393 See Also:
42394
42395 <add>, <prev>
42396 */
42397 BigInteger.prototype.next = function() {
42398 switch (this._s) {
42399 case 0:
42400 return ONE;
42401 case -1:
42402 return subtractOne(this, -1);
42403 // case 1:
42404 default:
42405 return addOne(this, 1);
42406 }
42407 };
42408
42409 /*
42410 Function: prev
42411 Get the previous <BigInteger> (subtract one).
42412
42413 Returns:
42414
42415 *this* - 1.
42416
42417 See Also:
42418
42419 <next>, <subtract>
42420 */
42421 BigInteger.prototype.prev = function() {
42422 switch (this._s) {
42423 case 0:
42424 return M_ONE;
42425 case -1:
42426 return addOne(this, -1);
42427 // case 1:
42428 default:
42429 return subtractOne(this, 1);
42430 }
42431 };
42432})();
42433
42434/*
42435 Function: compareAbs
42436 Compare the absolute value of two <BigIntegers>.
42437
42438 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
42439
42440 Parameters:
42441
42442 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42443
42444 Returns:
42445
42446 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
42447
42448 See Also:
42449
42450 <compare>, <abs>
42451*/
42452BigInteger.prototype.compareAbs = function(n) {
42453 if (this === n) {
42454 return 0;
42455 }
42456
42457 if (!(n instanceof BigInteger)) {
42458 if (!isFinite(n)) {
42459 return(isNaN(n) ? n : -1);
42460 }
42461 n = BigInteger(n);
42462 }
42463
42464 if (this._s === 0) {
42465 return (n._s !== 0) ? -1 : 0;
42466 }
42467 if (n._s === 0) {
42468 return 1;
42469 }
42470
42471 var l = this._d.length;
42472 var nl = n._d.length;
42473 if (l < nl) {
42474 return -1;
42475 }
42476 else if (l > nl) {
42477 return 1;
42478 }
42479
42480 var a = this._d;
42481 var b = n._d;
42482 for (var i = l-1; i >= 0; i--) {
42483 if (a[i] !== b[i]) {
42484 return a[i] < b[i] ? -1 : 1;
42485 }
42486 }
42487
42488 return 0;
42489};
42490
42491/*
42492 Function: compare
42493 Compare two <BigIntegers>.
42494
42495 Parameters:
42496
42497 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42498
42499 Returns:
42500
42501 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
42502
42503 See Also:
42504
42505 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
42506*/
42507BigInteger.prototype.compare = function(n) {
42508 if (this === n) {
42509 return 0;
42510 }
42511
42512 n = BigInteger(n);
42513
42514 if (this._s === 0) {
42515 return -n._s;
42516 }
42517
42518 if (this._s === n._s) { // both positive or both negative
42519 var cmp = this.compareAbs(n);
42520 return cmp * this._s;
42521 }
42522 else {
42523 return this._s;
42524 }
42525};
42526
42527/*
42528 Function: isUnit
42529 Return true iff *this* is either 1 or -1.
42530
42531 Returns:
42532
42533 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
42534
42535 See Also:
42536
42537 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
42538 <BigInteger.ONE>, <BigInteger.M_ONE>
42539*/
42540BigInteger.prototype.isUnit = function() {
42541 return this === ONE ||
42542 this === M_ONE ||
42543 (this._d.length === 1 && this._d[0] === 1);
42544};
42545
42546/*
42547 Function: multiply
42548 Multiply two <BigIntegers>.
42549
42550 Parameters:
42551
42552 n - The number to multiply *this* by. Will be converted to a
42553 <BigInteger>.
42554
42555 Returns:
42556
42557 The numbers multiplied together.
42558
42559 See Also:
42560
42561 <add>, <subtract>, <quotient>, <square>
42562*/
42563BigInteger.prototype.multiply = function(n) {
42564 // TODO: Consider adding Karatsuba multiplication for large numbers
42565 if (this._s === 0) {
42566 return ZERO;
42567 }
42568
42569 n = BigInteger(n);
42570 if (n._s === 0) {
42571 return ZERO;
42572 }
42573 if (this.isUnit()) {
42574 if (this._s < 0) {
42575 return n.negate();
42576 }
42577 return n;
42578 }
42579 if (n.isUnit()) {
42580 if (n._s < 0) {
42581 return this.negate();
42582 }
42583 return this;
42584 }
42585 if (this === n) {
42586 return this.square();
42587 }
42588
42589 var r = (this._d.length >= n._d.length);
42590 var a = (r ? this : n)._d; // a will be longer than b
42591 var b = (r ? n : this)._d;
42592 var al = a.length;
42593 var bl = b.length;
42594
42595 var pl = al + bl;
42596 var partial = new Array(pl);
42597 var i;
42598 for (i = 0; i < pl; i++) {
42599 partial[i] = 0;
42600 }
42601
42602 for (i = 0; i < bl; i++) {
42603 var carry = 0;
42604 var bi = b[i];
42605 var jlimit = al + i;
42606 var digit;
42607 for (var j = i; j < jlimit; j++) {
42608 digit = partial[j] + bi * a[j - i] + carry;
42609 carry = (digit / BigInteger_base) | 0;
42610 partial[j] = (digit % BigInteger_base) | 0;
42611 }
42612 if (carry) {
42613 digit = partial[j] + carry;
42614 carry = (digit / BigInteger_base) | 0;
42615 partial[j] = digit % BigInteger_base;
42616 }
42617 }
42618 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
42619};
42620
42621// Multiply a BigInteger by a single-digit native number
42622// Assumes that this and n are >= 0
42623// This is not really intended to be used outside the library itself
42624BigInteger.prototype.multiplySingleDigit = function(n) {
42625 if (n === 0 || this._s === 0) {
42626 return ZERO;
42627 }
42628 if (n === 1) {
42629 return this;
42630 }
42631
42632 var digit;
42633 if (this._d.length === 1) {
42634 digit = this._d[0] * n;
42635 if (digit >= BigInteger_base) {
42636 return new BigInteger([(digit % BigInteger_base)|0,
42637 (digit / BigInteger_base)|0], 1, CONSTRUCT);
42638 }
42639 return new BigInteger([digit], 1, CONSTRUCT);
42640 }
42641
42642 if (n === 2) {
42643 return this.add(this);
42644 }
42645 if (this.isUnit()) {
42646 return new BigInteger([n], 1, CONSTRUCT);
42647 }
42648
42649 var a = this._d;
42650 var al = a.length;
42651
42652 var pl = al + 1;
42653 var partial = new Array(pl);
42654 for (var i = 0; i < pl; i++) {
42655 partial[i] = 0;
42656 }
42657
42658 var carry = 0;
42659 for (var j = 0; j < al; j++) {
42660 digit = n * a[j] + carry;
42661 carry = (digit / BigInteger_base) | 0;
42662 partial[j] = (digit % BigInteger_base) | 0;
42663 }
42664 if (carry) {
42665 partial[j] = carry;
42666 }
42667
42668 return new BigInteger(partial, 1, CONSTRUCT);
42669};
42670
42671/*
42672 Function: square
42673 Multiply a <BigInteger> by itself.
42674
42675 This is slightly faster than regular multiplication, since it removes the
42676 duplicated multiplcations.
42677
42678 Returns:
42679
42680 > this.multiply(this)
42681
42682 See Also:
42683 <multiply>
42684*/
42685BigInteger.prototype.square = function() {
42686 // Normally, squaring a 10-digit number would take 100 multiplications.
42687 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
42688 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
42689 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
42690
42691 if (this._s === 0) {
42692 return ZERO;
42693 }
42694 if (this.isUnit()) {
42695 return ONE;
42696 }
42697
42698 var digits = this._d;
42699 var length = digits.length;
42700 var imult1 = new Array(length + length + 1);
42701 var product, carry, k;
42702 var i;
42703
42704 // Calculate diagonal
42705 for (i = 0; i < length; i++) {
42706 k = i * 2;
42707 product = digits[i] * digits[i];
42708 carry = (product / BigInteger_base) | 0;
42709 imult1[k] = product % BigInteger_base;
42710 imult1[k + 1] = carry;
42711 }
42712
42713 // Calculate repeating part
42714 for (i = 0; i < length; i++) {
42715 carry = 0;
42716 k = i * 2 + 1;
42717 for (var j = i + 1; j < length; j++, k++) {
42718 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
42719 carry = (product / BigInteger_base) | 0;
42720 imult1[k] = product % BigInteger_base;
42721 }
42722 k = length + i;
42723 var digit = carry + imult1[k];
42724 carry = (digit / BigInteger_base) | 0;
42725 imult1[k] = digit % BigInteger_base;
42726 imult1[k + 1] += carry;
42727 }
42728
42729 return new BigInteger(imult1, 1, CONSTRUCT);
42730};
42731
42732/*
42733 Function: quotient
42734 Divide two <BigIntegers> and truncate towards zero.
42735
42736 <quotient> throws an exception if *n* is zero.
42737
42738 Parameters:
42739
42740 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42741
42742 Returns:
42743
42744 The *this* / *n*, truncated to an integer.
42745
42746 See Also:
42747
42748 <add>, <subtract>, <multiply>, <divRem>, <remainder>
42749*/
42750BigInteger.prototype.quotient = function(n) {
42751 return this.divRem(n)[0];
42752};
42753
42754/*
42755 Function: divide
42756 Deprecated synonym for <quotient>.
42757*/
42758BigInteger.prototype.divide = BigInteger.prototype.quotient;
42759
42760/*
42761 Function: remainder
42762 Calculate the remainder of two <BigIntegers>.
42763
42764 <remainder> throws an exception if *n* is zero.
42765
42766 Parameters:
42767
42768 n - The remainder after *this* is divided *this* by *n*. Will be
42769 converted to a <BigInteger>.
42770
42771 Returns:
42772
42773 *this* % *n*.
42774
42775 See Also:
42776
42777 <divRem>, <quotient>
42778*/
42779BigInteger.prototype.remainder = function(n) {
42780 return this.divRem(n)[1];
42781};
42782
42783/*
42784 Function: divRem
42785 Calculate the integer quotient and remainder of two <BigIntegers>.
42786
42787 <divRem> throws an exception if *n* is zero.
42788
42789 Parameters:
42790
42791 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42792
42793 Returns:
42794
42795 A two-element array containing the quotient and the remainder.
42796
42797 > a.divRem(b)
42798
42799 is exactly equivalent to
42800
42801 > [a.quotient(b), a.remainder(b)]
42802
42803 except it is faster, because they are calculated at the same time.
42804
42805 See Also:
42806
42807 <quotient>, <remainder>
42808*/
42809BigInteger.prototype.divRem = function(n) {
42810 n = BigInteger(n);
42811 if (n._s === 0) {
42812 throw new Error("Divide by zero");
42813 }
42814 if (this._s === 0) {
42815 return [ZERO, ZERO];
42816 }
42817 if (n._d.length === 1) {
42818 return this.divRemSmall(n._s * n._d[0]);
42819 }
42820
42821 // Test for easy cases -- |n1| <= |n2|
42822 switch (this.compareAbs(n)) {
42823 case 0: // n1 == n2
42824 return [this._s === n._s ? ONE : M_ONE, ZERO];
42825 case -1: // |n1| < |n2|
42826 return [ZERO, this];
42827 }
42828
42829 var sign = this._s * n._s;
42830 var a = n.abs();
42831 var b_digits = this._d;
42832 var b_index = b_digits.length;
42833 var digits = n._d.length;
42834 var quot = [];
42835 var guess;
42836
42837 var part = new BigInteger([], 0, CONSTRUCT);
42838
42839 while (b_index) {
42840 part._d.unshift(b_digits[--b_index]);
42841 part = new BigInteger(part._d, 1, CONSTRUCT);
42842
42843 if (part.compareAbs(n) < 0) {
42844 quot.push(0);
42845 continue;
42846 }
42847 if (part._s === 0) {
42848 guess = 0;
42849 }
42850 else {
42851 var xlen = part._d.length, ylen = a._d.length;
42852 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
42853 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
42854 if (part._d.length > a._d.length) {
42855 // The length of part._d can either match a._d length,
42856 // or exceed it by one.
42857 highx = (highx+1)*BigInteger_base;
42858 }
42859 guess = Math.ceil(highx/highy);
42860 }
42861 do {
42862 var check = a.multiplySingleDigit(guess);
42863 if (check.compareAbs(part) <= 0) {
42864 break;
42865 }
42866 guess--;
42867 } while (guess);
42868
42869 quot.push(guess);
42870 if (!guess) {
42871 continue;
42872 }
42873 var diff = part.subtract(check);
42874 part._d = diff._d.slice();
42875 }
42876
42877 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
42878 new BigInteger(part._d, this._s, CONSTRUCT)];
42879};
42880
42881// Throws an exception if n is outside of (-BigInteger.base, -1] or
42882// [1, BigInteger.base). It's not necessary to call this, since the
42883// other division functions will call it if they are able to.
42884BigInteger.prototype.divRemSmall = function(n) {
42885 var r;
42886 n = +n;
42887 if (n === 0) {
42888 throw new Error("Divide by zero");
42889 }
42890
42891 var n_s = n < 0 ? -1 : 1;
42892 var sign = this._s * n_s;
42893 n = Math.abs(n);
42894
42895 if (n < 1 || n >= BigInteger_base) {
42896 throw new Error("Argument out of range");
42897 }
42898
42899 if (this._s === 0) {
42900 return [ZERO, ZERO];
42901 }
42902
42903 if (n === 1 || n === -1) {
42904 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
42905 }
42906
42907 // 2 <= n < BigInteger_base
42908
42909 // divide a single digit by a single digit
42910 if (this._d.length === 1) {
42911 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
42912 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
42913 if (sign < 0) {
42914 q = q.negate();
42915 }
42916 if (this._s < 0) {
42917 r = r.negate();
42918 }
42919 return [q, r];
42920 }
42921
42922 var digits = this._d.slice();
42923 var quot = new Array(digits.length);
42924 var part = 0;
42925 var diff = 0;
42926 var i = 0;
42927 var guess;
42928
42929 while (digits.length) {
42930 part = part * BigInteger_base + digits[digits.length - 1];
42931 if (part < n) {
42932 quot[i++] = 0;
42933 digits.pop();
42934 diff = BigInteger_base * diff + part;
42935 continue;
42936 }
42937 if (part === 0) {
42938 guess = 0;
42939 }
42940 else {
42941 guess = (part / n) | 0;
42942 }
42943
42944 var check = n * guess;
42945 diff = part - check;
42946 quot[i++] = guess;
42947 if (!guess) {
42948 digits.pop();
42949 continue;
42950 }
42951
42952 digits.pop();
42953 part = diff;
42954 }
42955
42956 r = new BigInteger([diff], 1, CONSTRUCT);
42957 if (this._s < 0) {
42958 r = r.negate();
42959 }
42960 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
42961};
42962
42963/*
42964 Function: isEven
42965 Return true iff *this* is divisible by two.
42966
42967 Note that <BigInteger.ZERO> is even.
42968
42969 Returns:
42970
42971 true if *this* is even, false otherwise.
42972
42973 See Also:
42974
42975 <isOdd>
42976*/
42977BigInteger.prototype.isEven = function() {
42978 var digits = this._d;
42979 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
42980};
42981
42982/*
42983 Function: isOdd
42984 Return true iff *this* is not divisible by two.
42985
42986 Returns:
42987
42988 true if *this* is odd, false otherwise.
42989
42990 See Also:
42991
42992 <isEven>
42993*/
42994BigInteger.prototype.isOdd = function() {
42995 return !this.isEven();
42996};
42997
42998/*
42999 Function: sign
43000 Get the sign of a <BigInteger>.
43001
43002 Returns:
43003
43004 * -1 if *this* < 0
43005 * 0 if *this* == 0
43006 * +1 if *this* > 0
43007
43008 See Also:
43009
43010 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
43011*/
43012BigInteger.prototype.sign = function() {
43013 return this._s;
43014};
43015
43016/*
43017 Function: isPositive
43018 Return true iff *this* > 0.
43019
43020 Returns:
43021
43022 true if *this*.compare(<BigInteger.ZERO>) == 1.
43023
43024 See Also:
43025
43026 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
43027*/
43028BigInteger.prototype.isPositive = function() {
43029 return this._s > 0;
43030};
43031
43032/*
43033 Function: isNegative
43034 Return true iff *this* < 0.
43035
43036 Returns:
43037
43038 true if *this*.compare(<BigInteger.ZERO>) == -1.
43039
43040 See Also:
43041
43042 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
43043*/
43044BigInteger.prototype.isNegative = function() {
43045 return this._s < 0;
43046};
43047
43048/*
43049 Function: isZero
43050 Return true iff *this* == 0.
43051
43052 Returns:
43053
43054 true if *this*.compare(<BigInteger.ZERO>) == 0.
43055
43056 See Also:
43057
43058 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
43059*/
43060BigInteger.prototype.isZero = function() {
43061 return this._s === 0;
43062};
43063
43064/*
43065 Function: exp10
43066 Multiply a <BigInteger> by a power of 10.
43067
43068 This is equivalent to, but faster than
43069
43070 > if (n >= 0) {
43071 > return this.multiply(BigInteger("1e" + n));
43072 > }
43073 > else { // n <= 0
43074 > return this.quotient(BigInteger("1e" + -n));
43075 > }
43076
43077 Parameters:
43078
43079 n - The power of 10 to multiply *this* by. *n* is converted to a
43080 javascipt number and must be no greater than <BigInteger.MAX_EXP>
43081 (0x7FFFFFFF), or an exception will be thrown.
43082
43083 Returns:
43084
43085 *this* * (10 ** *n*), truncated to an integer if necessary.
43086
43087 See Also:
43088
43089 <pow>, <multiply>
43090*/
43091BigInteger.prototype.exp10 = function(n) {
43092 n = +n;
43093 if (n === 0) {
43094 return this;
43095 }
43096 if (Math.abs(n) > Number(MAX_EXP)) {
43097 throw new Error("exponent too large in BigInteger.exp10");
43098 }
43099 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
43100 if (this._s === 0) {
43101 return ZERO;
43102 }
43103 if (n > 0) {
43104 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43105
43106 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43107 k._d.unshift(0);
43108 }
43109 if (n == 0)
43110 return k;
43111 k._s = 1;
43112 k = k.multiplySingleDigit(Math.pow(10, n));
43113 return (this._s < 0 ? k.negate() : k);
43114 } else if (-n >= this._d.length*BigInteger_base_log10) {
43115 return ZERO;
43116 } else {
43117 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43118
43119 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43120 k._d.shift();
43121 }
43122 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
43123 }
43124};
43125
43126/*
43127 Function: pow
43128 Raise a <BigInteger> to a power.
43129
43130 In this implementation, 0**0 is 1.
43131
43132 Parameters:
43133
43134 n - The exponent to raise *this* by. *n* must be no greater than
43135 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
43136
43137 Returns:
43138
43139 *this* raised to the *nth* power.
43140
43141 See Also:
43142
43143 <modPow>
43144*/
43145BigInteger.prototype.pow = function(n) {
43146 if (this.isUnit()) {
43147 if (this._s > 0) {
43148 return this;
43149 }
43150 else {
43151 return BigInteger(n).isOdd() ? this : this.negate();
43152 }
43153 }
43154
43155 n = BigInteger(n);
43156 if (n._s === 0) {
43157 return ONE;
43158 }
43159 else if (n._s < 0) {
43160 if (this._s === 0) {
43161 throw new Error("Divide by zero");
43162 }
43163 else {
43164 return ZERO;
43165 }
43166 }
43167 if (this._s === 0) {
43168 return ZERO;
43169 }
43170 if (n.isUnit()) {
43171 return this;
43172 }
43173
43174 if (n.compareAbs(MAX_EXP) > 0) {
43175 throw new Error("exponent too large in BigInteger.pow");
43176 }
43177 var x = this;
43178 var aux = ONE;
43179 var two = BigInteger.small[2];
43180
43181 while (n.isPositive()) {
43182 if (n.isOdd()) {
43183 aux = aux.multiply(x);
43184 if (n.isUnit()) {
43185 return aux;
43186 }
43187 }
43188 x = x.square();
43189 n = n.quotient(two);
43190 }
43191
43192 return aux;
43193};
43194
43195/*
43196 Function: modPow
43197 Raise a <BigInteger> to a power (mod m).
43198
43199 Because it is reduced by a modulus, <modPow> is not limited by
43200 <BigInteger.MAX_EXP> like <pow>.
43201
43202 Parameters:
43203
43204 exponent - The exponent to raise *this* by. Must be positive.
43205 modulus - The modulus.
43206
43207 Returns:
43208
43209 *this* ^ *exponent* (mod *modulus*).
43210
43211 See Also:
43212
43213 <pow>, <mod>
43214*/
43215BigInteger.prototype.modPow = function(exponent, modulus) {
43216 var result = ONE;
43217 var base = this;
43218
43219 while (exponent.isPositive()) {
43220 if (exponent.isOdd()) {
43221 result = result.multiply(base).remainder(modulus);
43222 }
43223
43224 exponent = exponent.quotient(BigInteger.small[2]);
43225 if (exponent.isPositive()) {
43226 base = base.square().remainder(modulus);
43227 }
43228 }
43229
43230 return result;
43231};
43232
43233/*
43234 Function: log
43235 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
43236
43237 This is equivalent to
43238
43239 > Math.log(this.toJSValue())
43240
43241 but handles values outside of the native number range.
43242
43243 Returns:
43244
43245 log( *this* )
43246
43247 See Also:
43248
43249 <toJSValue>
43250*/
43251BigInteger.prototype.log = function() {
43252 switch (this._s) {
43253 case 0: return -Infinity;
43254 case -1: return NaN;
43255 default: // Fall through.
43256 }
43257
43258 var l = this._d.length;
43259
43260 if (l*BigInteger_base_log10 < 30) {
43261 return Math.log(this.valueOf());
43262 }
43263
43264 var N = Math.ceil(30/BigInteger_base_log10);
43265 var firstNdigits = this._d.slice(l - N);
43266 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
43267};
43268
43269/*
43270 Function: valueOf
43271 Convert a <BigInteger> to a native JavaScript integer.
43272
43273 This is called automatically by JavaScipt to convert a <BigInteger> to a
43274 native value.
43275
43276 Returns:
43277
43278 > parseInt(this.toString(), 10)
43279
43280 See Also:
43281
43282 <toString>, <toJSValue>
43283*/
43284BigInteger.prototype.valueOf = function() {
43285 return parseInt(this.toString(), 10);
43286};
43287
43288/*
43289 Function: toJSValue
43290 Convert a <BigInteger> to a native JavaScript integer.
43291
43292 This is the same as valueOf, but more explicitly named.
43293
43294 Returns:
43295
43296 > parseInt(this.toString(), 10)
43297
43298 See Also:
43299
43300 <toString>, <valueOf>
43301*/
43302BigInteger.prototype.toJSValue = function() {
43303 return parseInt(this.toString(), 10);
43304};
43305
43306var MAX_EXP = BigInteger(0x7FFFFFFF);
43307// Constant: MAX_EXP
43308// The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
43309BigInteger.MAX_EXP = MAX_EXP;
43310
43311(function() {
43312 function makeUnary(fn) {
43313 return function(a) {
43314 return fn.call(BigInteger(a));
43315 };
43316 }
43317
43318 function makeBinary(fn) {
43319 return function(a, b) {
43320 return fn.call(BigInteger(a), BigInteger(b));
43321 };
43322 }
43323
43324 function makeTrinary(fn) {
43325 return function(a, b, c) {
43326 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
43327 };
43328 }
43329
43330 (function() {
43331 var i, fn;
43332 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
43333 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
43334 var trinary = ["modPow"];
43335
43336 for (i = 0; i < unary.length; i++) {
43337 fn = unary[i];
43338 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
43339 }
43340
43341 for (i = 0; i < binary.length; i++) {
43342 fn = binary[i];
43343 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
43344 }
43345
43346 for (i = 0; i < trinary.length; i++) {
43347 fn = trinary[i];
43348 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
43349 }
43350
43351 BigInteger.exp10 = function(x, n) {
43352 return BigInteger(x).exp10(n);
43353 };
43354 })();
43355})();
43356
43357exports.BigInteger = BigInteger;
43358})(typeof exports !== 'undefined' ? exports : this);
95f04905
IC
43359</script>
43360 <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){
43361var 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;
43362
43363},{}],2:[function(require,module,exports){
43364var 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;
43365
43366},{"./scoring":6}],3:[function(require,module,exports){
43367var 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(","),
43368english_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(","),
43369female_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(","),
43370us_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(","),
43371male_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;
43372
43373},{}],4:[function(require,module,exports){
43374var 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;
43375
43376},{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
43377var 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;
43378
43379},{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
43380var 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;
43381
43382},{"./adjacency_graphs":1}],7:[function(require,module,exports){
43383var 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;
43384
43385},{}]},{},[4])(4)
43386});
43387//# sourceMappingURL=zxcvbn.js.map
43388</script>
43389 <script>/*
43390 * Detects entropy from a string.
43391 *
43392 * Formats include:
43393 * binary [0-1]
43394 * base 6 [0-5]
43395 * dice 6 [1-6]
43396 * decimal [0-9]
43397 * hexadecimal [0-9A-F]
9e97eb76 43398 * card [A2-9TJQK][CDHS]
95f04905
IC
43399 *
43400 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
43401 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
43402 * entropy.
43403 */
43404
43405window.Entropy = new (function() {
43406
78b8d604
IC
43407 var TWO = new BigInteger(2);
43408
95f04905
IC
43409 // matchers returns an array of the matched events for each type of entropy.
43410 // eg
43411 // matchers.binary("010") returns ["0", "1", "0"]
43412 // matchers.binary("a10") returns ["1", "0"]
43413 // matchers.hex("a10") returns ["a", "1", "0"]
43414 var matchers = {
43415 binary: function(str) {
43416 return str.match(/[0-1]/gi) || [];
43417 },
43418 base6: function(str) {
43419 return str.match(/[0-5]/gi) || [];
43420 },
43421 dice: function(str) {
43422 return str.match(/[1-6]/gi) || []; // ie dice numbers
43423 },
43424 base10: function(str) {
43425 return str.match(/[0-9]/gi) || [];
43426 },
43427 hex: function(str) {
43428 return str.match(/[0-9A-F]/gi) || [];
43429 },
43430 card: function(str) {
43431 // Format is NumberSuit, eg
43432 // AH ace of hearts
43433 // 8C eight of clubs
43434 // TD ten of diamonds
43435 // JS jack of spades
43436 // QH queen of hearts
43437 // KC king of clubs
43438 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
43439 }
43440 }
43441
43442 // Convert array of cards from ["ac", "4d", "ks"]
43443 // to numbers between 0 and 51 [0, 16, 51]
43444 function convertCardsToInts(cards) {
43445 var ints = [];
43446 var values = "a23456789tjqk";
43447 var suits = "cdhs";
43448 for (var i=0; i<cards.length; i++) {
43449 var card = cards[i].toLowerCase();
43450 var value = card[0];
43451 var suit = card[1];
43452 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
43453 ints.push(asInt);
43454 }
43455 return ints;
43456 }
43457
43458 this.fromString = function(rawEntropyStr) {
43459 // Find type of entropy being used (binary, hex, dice etc)
43460 var base = getBase(rawEntropyStr);
43461 // Convert dice to base6 entropy (ie 1-6 to 0-5)
43462 // This is done by changing all 6s to 0s
43463 if (base.str == "dice") {
43464 var newParts = [];
43465 var newInts = [];
43466 for (var i=0; i<base.parts.length; i++) {
43467 var c = base.parts[i];
43468 if ("12345".indexOf(c) > -1) {
43469 newParts[i] = base.parts[i];
43470 newInts[i] = base.ints[i];
43471 }
43472 else {
43473 newParts[i] = "0";
43474 newInts[i] = 0;
43475 }
43476 }
43477 base.str = "base 6 (dice)";
43478 base.ints = newInts;
43479 base.parts = newParts;
43480 base.matcher = matchers.base6;
43481 }
43482 // Detect empty entropy
43483 if (base.parts.length == 0) {
43484 return {
43485 binaryStr: "",
43486 cleanStr: "",
43487 cleanHtml: "",
43488 base: base,
43489 };
43490 }
43491 // Convert base.ints to BigInteger.
43492 // Due to using unusual bases, eg cards of base52, this is not as simple as
43493 // using BigInteger.parse()
43494 var entropyInt = BigInteger.ZERO;
43495 for (var i=base.ints.length-1; i>=0; i--) {
43496 var thisInt = BigInteger.parse(base.ints[i]);
43497 var power = (base.ints.length - 1) - i;
43498 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
43499 entropyInt = entropyInt.add(additionalEntropy);
43500 }
43501 // Convert entropy to binary
43502 var entropyBin = entropyInt.toString(2);
43503 // If the first integer is small, it must be padded with zeros.
43504 // Otherwise the chance of the first bit being 1 is 100%, which is
43505 // obviously incorrect.
43506 // This is not perfect for non-2^n bases.
43507 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
43508 while (entropyBin.length < expectedBits) {
43509 entropyBin = "0" + entropyBin;
43510 }
94959756
IC
43511 // Calculate the number of bits per event
43512 var bitsPerEvent = Math.log2(base.asInt);
ea87f1d3 43513 // Cards binary must be handled differently, since they're not replaced
9e97eb76 43514 if (base.asInt == 52) {
94959756
IC
43515 var cardEntropy = processCardEntropy(base.parts);
43516 entropyBin = cardEntropy.binaryStr;
43517 bitsPerEvent = cardEntropy.bitsPerEvent;
9e97eb76 43518 }
95f04905
IC
43519 // Supply a 'filtered' entropy string for display purposes
43520 var entropyClean = base.parts.join("");
43521 var entropyHtml = base.parts.join("");
43522 if (base.asInt == 52) {
43523 entropyClean = base.parts.join(" ").toUpperCase();
43524 entropyClean = entropyClean.replace(/C/g, "\u2663");
43525 entropyClean = entropyClean.replace(/D/g, "\u2666");
43526 entropyClean = entropyClean.replace(/H/g, "\u2665");
43527 entropyClean = entropyClean.replace(/S/g, "\u2660");
43528 entropyHtml = base.parts.join(" ").toUpperCase();
43529 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
43530 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
43531 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
43532 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
43533 }
9e97eb76 43534 // Return the result
95f04905
IC
43535 var e = {
43536 binaryStr: entropyBin,
43537 cleanStr: entropyClean,
43538 cleanHtml: entropyHtml,
94959756 43539 bitsPerEvent: bitsPerEvent,
95f04905
IC
43540 base: base,
43541 }
43542 return e;
43543 }
43544
78b8d604
IC
43545 function getSortedDeck() {
43546 var s = [];
43547 var suits = "CDHS";
43548 var values = "A23456789TJQK";
43549 for (var i=0; i<suits.length; i++) {
43550 for (var j=0; j<values.length; j++) {
43551 s.push(values[j]+suits[i]);
43552 }
43553 }
43554 return s;
43555 }
43556
95f04905
IC
43557 function getBase(str) {
43558 // Need to get the lowest base for the supplied entropy.
43559 // This prevents interpreting, say, dice rolls as hexadecimal.
43560 var binaryMatches = matchers.binary(str);
43561 var hexMatches = matchers.hex(str);
43562 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
43563 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
43564 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
43565 return {
43566 ints: ints,
43567 parts: binaryMatches,
43568 matcher: matchers.binary,
43569 asInt: 2,
43570 str: "binary",
43571 }
43572 }
43573 var cardMatches = matchers.card(str);
43574 if (cardMatches.length >= hexMatches.length / 2) {
43575 var ints = convertCardsToInts(cardMatches);
43576 return {
43577 ints: ints,
43578 parts: cardMatches,
43579 matcher: matchers.card,
43580 asInt: 52,
43581 str: "card",
43582 }
43583 }
43584 var diceMatches = matchers.dice(str);
43585 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
43586 var ints = diceMatches.map(function(i) { return parseInt(i) });
43587 return {
43588 ints: ints,
43589 parts: diceMatches,
43590 matcher: matchers.dice,
43591 asInt: 6,
43592 str: "dice",
43593 }
43594 }
43595 var base6Matches = matchers.base6(str);
43596 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
43597 var ints = base6Matches.map(function(i) { return parseInt(i) });
43598 return {
43599 ints: ints,
43600 parts: base6Matches,
43601 matcher: matchers.base6,
43602 asInt: 6,
43603 str: "base 6",
43604 }
43605 }
43606 var base10Matches = matchers.base10(str);
43607 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
43608 var ints = base10Matches.map(function(i) { return parseInt(i) });
43609 return {
43610 ints: ints,
43611 parts: base10Matches,
43612 matcher: matchers.base10,
43613 asInt: 10,
43614 str: "base 10",
43615 }
43616 }
43617 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
43618 return {
43619 ints: ints,
43620 parts: hexMatches,
43621 matcher: matchers.hex,
43622 asInt: 16,
43623 str: "hexadecimal",
43624 }
43625 }
43626
ea87f1d3
IC
43627 // Assume cards are NOT replaced.
43628 // Additional entropy decreases as more cards are used. This means
43629 // total possible entropy is measured using n!, not base^n.
43630 // eg the second last card can be only one of two, not one of fifty two
43631 // so the added entropy for that card is only one bit at most
94959756 43632 function processCardEntropy(cards) {
ea87f1d3
IC
43633 // Track how many instances of each card have been used, and thus
43634 // how many decks are in use.
43635 var cardCounts = {};
43636 var numberOfDecks = 0;
43637 // Work out number of decks by max(duplicates)
43638 for (var i=0; i<cards.length; i++) {
43639 // Get the card that was drawn
43640 var cardLower = cards[i];
43641 var card = cardLower.toUpperCase();
43642 // Initialize the count for this card if needed
43643 if (!(card in cardCounts)) {
43644 cardCounts[card] = 0;
43645 }
43646 cardCounts[card] += 1;
43647 // See if this is max(duplicates)
43648 if (cardCounts[card] > numberOfDecks) {
43649 numberOfDecks = cardCounts[card];
43650 }
43651 }
43652 // Work out the total number of bits for this many decks
43653 // See http://crypto.stackexchange.com/q/41886
fc7c248f
IC
43654 var gainedBits = 0;
43655 // Equivalent of Math.log2(factorial(52*numberOfDecks))
43656 // which becomes infinity for numberOfDecks > 4
43657 for (var i=1; i<=52*numberOfDecks; i++) {
43658 gainedBits = gainedBits + Math.log2(i);
43659 }
ea87f1d3
IC
43660 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
43661 var maxBits = gainedBits - lostBits;
43662 // Convert the drawn cards to a binary representation.
43663 // The exact technique for doing this is unclear.
43664 // See
43665 // http://crypto.stackexchange.com/a/41896
43666 // "I even doubt that this is well defined (only the average entropy
43667 // is, I believe)."
43668 // See
43669 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
43670 // "The binary representation can be the first log(permutations,2) bits
43671 // of the sha-2 hash of the normalized deck string."
43672 //
43673 // In this specific implementation, the first N bits of the hash of the
43674 // normalized cards string is being used. Uppercase, no spaces; eg
43675 // sha256("AH8DQSTC2H")
43676 var totalCards = numberOfDecks * 52;
43677 var percentUsed = cards.length / totalCards;
43678 // Calculate the average number of bits of entropy for the number of
43679 // cards drawn.
43680 var numberOfBits = Math.floor(maxBits * percentUsed);
43681 // Create a normalized string of the selected cards
43682 var normalizedCards = cards.join("").toUpperCase();
43683 // Convert to binary using the SHA256 hash of the normalized cards.
434caecd 43684 // If the number of bits is more than 256, multiple hashes
ea87f1d3
IC
43685 // are used until the required number of bits is reached.
43686 var entropyBin = "";
43687 var iterations = 0;
43688 while (entropyBin.length < numberOfBits) {
434caecd 43689 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
ea87f1d3
IC
43690 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
43691 for (var i=0; i<hashHex.length; i++) {
43692 var decimal = parseInt(hashHex[i], 16);
43693 var binary = decimal.toString(2);
43694 while (binary.length < 4) {
43695 binary = "0" + binary;
43696 }
43697 entropyBin = entropyBin + binary;
43698 }
43699 iterations = iterations + 1;
43700 }
43701 // Truncate to the appropriate number of bits.
43702 entropyBin = entropyBin.substring(0, numberOfBits);
94959756
IC
43703 // Get the number of bits per event
43704 bitsPerEvent = maxBits / totalCards;
43705 return {
43706 binaryStr: entropyBin,
43707 bitsPerEvent: bitsPerEvent,
43708 }
ea87f1d3
IC
43709 }
43710
95f04905
IC
43711 // Polyfill for Math.log2
43712 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
43713 Math.log2 = Math.log2 || function(x) {
43714 // The polyfill isn't good enough because of the poor accuracy of
43715 // Math.LOG2E
43716 // log2(8) gave 2.9999999999999996 which when floored causes issues.
43717 // So instead use the BigInteger library to get it right.
43718 return BigInteger.log(x) / BigInteger.log(2);
43719 };
43720
9e97eb76
IC
43721 // Depends on BigInteger
43722 function factorial(n) {
43723 if (n == 0) {
43724 return 1;
43725 }
43726 f = BigInteger.ONE;
43727 for (var i=1; i<=n; i++) {
43728 f = f.multiply(new BigInteger(i));
43729 }
43730 return f;
43731 }
43732
95f04905 43733})();
c6624d51
IC
43734</script>
43735 <script>(function() {
43736
43737 // mnemonics is populated as required by getLanguage
43738 var mnemonics = { "english": new Mnemonic("english") };
43739 var mnemonic = mnemonics["english"];
3725abb5 43740 var seed = null;
c6624d51
IC
43741 var bip32RootKey = null;
43742 var bip32ExtendedKey = null;
43743 var network = bitcoin.networks.bitcoin;
43744 var addressRowTemplate = $("#address-row-template");
43745
43746 var showIndex = true;
43747 var showAddress = true;
43748 var showPubKey = true;
43749 var showPrivKey = true;
52da415f 43750 var showQr = false;
c6624d51
IC
43751
43752 var entropyChangeTimeoutEvent = null;
43753 var phraseChangeTimeoutEvent = null;
43754 var rootKeyChangedTimeoutEvent = null;
43755
40892aba
IC
43756 var generationProcesses = [];
43757
c6624d51
IC
43758 var DOM = {};
43759 DOM.network = $(".network");
56530adc 43760 DOM.bip32Client = $("#bip32-client");
c6624d51
IC
43761 DOM.phraseNetwork = $("#network-phrase");
43762 DOM.useEntropy = $(".use-entropy");
43763 DOM.entropyContainer = $(".entropy-container");
43764 DOM.entropy = $(".entropy");
2a6dd137
IC
43765 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
43766 DOM.entropyType = DOM.entropyContainer.find(".type");
43767 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
43768 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
43769 DOM.entropyBits = DOM.entropyContainer.find(".bits");
43770 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
43771 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
43772 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
43773 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
c6624d51
IC
43774 DOM.phrase = $(".phrase");
43775 DOM.passphrase = $(".passphrase");
43776 DOM.generateContainer = $(".generate-container");
43777 DOM.generate = $(".generate");
43778 DOM.seed = $(".seed");
43779 DOM.rootKey = $(".root-key");
43780 DOM.extendedPrivKey = $(".extended-priv-key");
43781 DOM.extendedPubKey = $(".extended-pub-key");
43782 DOM.bip32tab = $("#bip32-tab");
43783 DOM.bip44tab = $("#bip44-tab");
43784 DOM.bip32panel = $("#bip32");
43785 DOM.bip44panel = $("#bip44");
43786 DOM.bip32path = $("#bip32-path");
43787 DOM.bip44path = $("#bip44-path");
43788 DOM.bip44purpose = $("#bip44 .purpose");
43789 DOM.bip44coin = $("#bip44 .coin");
43790 DOM.bip44account = $("#bip44 .account");
20083ab9
IC
43791 DOM.bip44accountXprv = $("#bip44 .account-xprv");
43792 DOM.bip44accountXpub = $("#bip44 .account-xpub");
c6624d51 43793 DOM.bip44change = $("#bip44 .change");
18abe53b 43794 DOM.generatedStrength = $(".generate-container .strength");
c6624d51
IC
43795 DOM.hardenedAddresses = $(".hardened-addresses");
43796 DOM.addresses = $(".addresses");
43797 DOM.rowsToAdd = $(".rows-to-add");
43798 DOM.more = $(".more");
43799 DOM.feedback = $(".feedback");
43800 DOM.tab = $(".derivation-type a");
43801 DOM.indexToggle = $(".index-toggle");
43802 DOM.addressToggle = $(".address-toggle");
43803 DOM.publicKeyToggle = $(".public-key-toggle");
43804 DOM.privateKeyToggle = $(".private-key-toggle");
43805 DOM.languages = $(".languages a");
e00964cc 43806 DOM.qrContainer = $(".qr-container");
52da415f 43807 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
e00964cc
IC
43808 DOM.qrImage = DOM.qrContainer.find(".qr-image");
43809 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
43810 DOM.showQrEls = $("[data-show-qr]");
c6624d51
IC
43811
43812 function init() {
43813 // Events
43814 DOM.network.on("change", networkChanged);
56530adc 43815 DOM.bip32Client.on("change", bip32ClientChanged);
c6624d51
IC
43816 DOM.useEntropy.on("change", setEntropyVisibility);
43817 DOM.entropy.on("input", delayedEntropyChanged);
18abe53b 43818 DOM.entropyMnemonicLength.on("change", entropyChanged);
c6624d51
IC
43819 DOM.phrase.on("input", delayedPhraseChanged);
43820 DOM.passphrase.on("input", delayedPhraseChanged);
43821 DOM.generate.on("click", generateClicked);
43822 DOM.more.on("click", showMore);
43823 DOM.rootKey.on("input", delayedRootKeyChanged);
43824 DOM.bip32path.on("input", calcForDerivationPath);
43825 DOM.bip44purpose.on("input", calcForDerivationPath);
43826 DOM.bip44coin.on("input", calcForDerivationPath);
43827 DOM.bip44account.on("input", calcForDerivationPath);
43828 DOM.bip44change.on("input", calcForDerivationPath);
43829 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
43830 DOM.hardenedAddresses.on("change", calcForDerivationPath);
43831 DOM.indexToggle.on("click", toggleIndexes);
43832 DOM.addressToggle.on("click", toggleAddresses);
43833 DOM.publicKeyToggle.on("click", togglePublicKeys);
43834 DOM.privateKeyToggle.on("click", togglePrivateKeys);
43835 DOM.languages.on("click", languageChanged);
e00964cc 43836 setQrEvents(DOM.showQrEls);
c6624d51
IC
43837 disableForms();
43838 hidePending();
43839 hideValidationError();
43840 populateNetworkSelect();
56530adc 43841 populateClientSelect();
c6624d51
IC
43842 }
43843
43844 // Event handlers
43845
43846 function networkChanged(e) {
43847 var networkIndex = e.target.value;
43848 networks[networkIndex].onSelect();
43849 if (seed != null) {
43850 phraseChanged();
43851 }
43852 else {
43853 rootKeyChanged();
43854 }
43855 }
43856
56530adc
IC
43857 function bip32ClientChanged(e) {
43858 var clientIndex = DOM.bip32Client.val();
43859 if (clientIndex == "custom") {
43860 DOM.bip32path.prop("readonly", false);
43861 }
43862 else {
43863 DOM.bip32path.prop("readonly", true);
43864 clients[clientIndex].onSelect();
43865 if (seed != null) {
43866 phraseChanged();
43867 }
43868 else {
43869 rootKeyChanged();
43870 }
43871 }
43872 }
43873
c6624d51
IC
43874 function setEntropyVisibility() {
43875 if (isUsingOwnEntropy()) {
43876 DOM.entropyContainer.removeClass("hidden");
43877 DOM.generateContainer.addClass("hidden");
43878 DOM.phrase.prop("readonly", true);
43879 DOM.entropy.focus();
43880 entropyChanged();
43881 }
43882 else {
43883 DOM.entropyContainer.addClass("hidden");
43884 DOM.generateContainer.removeClass("hidden");
43885 DOM.phrase.prop("readonly", false);
18abe53b 43886 hidePending();
c6624d51
IC
43887 }
43888 }
43889
43890 function delayedPhraseChanged() {
43891 hideValidationError();
43892 showPending();
43893 if (phraseChangeTimeoutEvent != null) {
43894 clearTimeout(phraseChangeTimeoutEvent);
43895 }
43896 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
43897 }
43898
43899 function phraseChanged() {
43900 showPending();
43901 hideValidationError();
43902 setMnemonicLanguage();
43903 // Get the mnemonic phrase
43904 var phrase = DOM.phrase.val();
43905 var errorText = findPhraseErrors(phrase);
43906 if (errorText) {
43907 showValidationError(errorText);
43908 return;
43909 }
43910 // Calculate and display
43911 var passphrase = DOM.passphrase.val();
43912 calcBip32RootKeyFromSeed(phrase, passphrase);
43913 calcForDerivationPath();
43914 hidePending();
43915 }
43916
43917 function delayedEntropyChanged() {
43918 hideValidationError();
43919 showPending();
43920 if (entropyChangeTimeoutEvent != null) {
43921 clearTimeout(entropyChangeTimeoutEvent);
43922 }
43923 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
43924 }
43925
43926 function entropyChanged() {
18abe53b
IC
43927 // If blank entropy, clear mnemonic, addresses, errors
43928 if (DOM.entropy.val().trim().length == 0) {
43929 clearDisplay();
2a6dd137 43930 clearEntropyFeedback();
18abe53b
IC
43931 DOM.phrase.val("");
43932 showValidationError("Blank entropy");
43933 return;
43934 }
43935 // Get the current phrase to detect changes
43936 var phrase = DOM.phrase.val();
43937 // Set the phrase from the entropy
c6624d51 43938 setMnemonicFromEntropy();
18abe53b
IC
43939 // Recalc addresses if the phrase has changed
43940 var newPhrase = DOM.phrase.val();
43941 if (newPhrase != phrase) {
43942 if (newPhrase.length == 0) {
43943 clearDisplay();
43944 }
43945 else {
43946 phraseChanged();
43947 }
43948 }
43949 else {
43950 hidePending();
43951 }
c6624d51
IC
43952 }
43953
43954 function delayedRootKeyChanged() {
43955 // Warn if there is an existing mnemonic or passphrase.
43956 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
43957 if (!confirm("This will clear existing mnemonic and passphrase")) {
43958 DOM.rootKey.val(bip32RootKey);
43959 return
43960 }
43961 }
43962 hideValidationError();
43963 showPending();
43964 // Clear existing mnemonic and passphrase
43965 DOM.phrase.val("");
43966 DOM.passphrase.val("");
43967 seed = null;
43968 if (rootKeyChangedTimeoutEvent != null) {
43969 clearTimeout(rootKeyChangedTimeoutEvent);
43970 }
43971 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
43972 }
43973
43974 function rootKeyChanged() {
43975 showPending();
43976 hideValidationError();
43977 // Validate the root key TODO
43978 var rootKeyBase58 = DOM.rootKey.val();
43979 var errorText = validateRootKey(rootKeyBase58);
43980 if (errorText) {
43981 showValidationError(errorText);
43982 return;
43983 }
43984 // Calculate and display
43985 calcBip32RootKeyFromBase58(rootKeyBase58);
43986 calcForDerivationPath();
c6624d51
IC
43987 }
43988
43989 function calcForDerivationPath() {
43990 showPending();
ba3cb9ec 43991 clearAddressesList();
c6624d51
IC
43992 hideValidationError();
43993 // Get the derivation path
43994 var derivationPath = getDerivationPath();
43995 var errorText = findDerivationPathErrors(derivationPath);
43996 if (errorText) {
43997 showValidationError(errorText);
43998 return;
43999 }
20083ab9
IC
44000 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
44001 if (bip44TabSelected()) {
44002 displayBip44Info();
44003 }
c6624d51
IC
44004 displayBip32Info();
44005 hidePending();
44006 }
44007
44008 function generateClicked() {
44009 if (isUsingOwnEntropy()) {
44010 return;
44011 }
44012 clearDisplay();
44013 showPending();
44014 setTimeout(function() {
44015 setMnemonicLanguage();
44016 var phrase = generateRandomPhrase();
44017 if (!phrase) {
44018 return;
44019 }
44020 phraseChanged();
44021 }, 50);
44022 }
44023
44024 function languageChanged() {
44025 setTimeout(function() {
44026 setMnemonicLanguage();
44027 if (DOM.phrase.val().length > 0) {
44028 var newPhrase = convertPhraseToNewLanguage();
44029 DOM.phrase.val(newPhrase);
44030 phraseChanged();
44031 }
44032 else {
44033 DOM.generate.trigger("click");
44034 }
44035 }, 50);
44036 }
44037
44038 function toggleIndexes() {
44039 showIndex = !showIndex;
44040 $("td.index span").toggleClass("invisible");
44041 }
44042
44043 function toggleAddresses() {
44044 showAddress = !showAddress;
44045 $("td.address span").toggleClass("invisible");
44046 }
44047
44048 function togglePublicKeys() {
44049 showPubKey = !showPubKey;
44050 $("td.pubkey span").toggleClass("invisible");
44051 }
44052
44053 function togglePrivateKeys() {
44054 showPrivKey = !showPrivKey;
44055 $("td.privkey span").toggleClass("invisible");
44056 }
44057
44058 // Private methods
44059
44060 function generateRandomPhrase() {
44061 if (!hasStrongRandom()) {
44062 var errorText = "This browser does not support strong randomness";
44063 showValidationError(errorText);
44064 return;
44065 }
18abe53b 44066 var numWords = parseInt(DOM.generatedStrength.val());
c6624d51
IC
44067 var strength = numWords / 3 * 32;
44068 var words = mnemonic.generate(strength);
44069 DOM.phrase.val(words);
44070 return words;
44071 }
44072
44073 function calcBip32RootKeyFromSeed(phrase, passphrase) {
44074 seed = mnemonic.toSeed(phrase, passphrase);
44075 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
44076 }
44077
44078 function calcBip32RootKeyFromBase58(rootKeyBase58) {
44079 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
44080 }
44081
44082 function calcBip32ExtendedKey(path) {
0a1f0259
IC
44083 // Check there's a root key to derive from
44084 if (!bip32RootKey) {
44085 return bip32RootKey;
44086 }
20083ab9 44087 var extendedKey = bip32RootKey;
c6624d51
IC
44088 // Derive the key from the path
44089 var pathBits = path.split("/");
ebd8d4e8
IC
44090 for (var i=0; i<pathBits.length; i++) {
44091 var bit = pathBits[i];
44092 var index = parseInt(bit);
44093 if (isNaN(index)) {
44094 continue;
44095 }
44096 var hardened = bit[bit.length-1] == "'";
ba3cb9ec
IC
44097 var isPriv = "privKey" in extendedKey;
44098 var invalidDerivationPath = hardened && !isPriv;
44099 if (invalidDerivationPath) {
44100 extendedKey = null;
44101 }
44102 else if (hardened) {
20083ab9 44103 extendedKey = extendedKey.deriveHardened(index);
ebd8d4e8
IC
44104 }
44105 else {
20083ab9 44106 extendedKey = extendedKey.derive(index);
ebd8d4e8
IC
44107 }
44108 }
20083ab9 44109 return extendedKey
ebd8d4e8
IC
44110 }
44111
44112 function showValidationError(errorText) {
44113 DOM.feedback
44114 .text(errorText)
44115 .show();
44116 }
44117
44118 function hideValidationError() {
44119 DOM.feedback
44120 .text("")
44121 .hide();
44122 }
44123
44124 function findPhraseErrors(phrase) {
ebd8d4e8 44125 // Preprocess the words
783981de 44126 phrase = mnemonic.normalizeString(phrase);
0515eeec 44127 var words = phraseToWordArray(phrase);
18abe53b
IC
44128 // Detect blank phrase
44129 if (words.length == 0) {
44130 return "Blank mnemonic";
44131 }
563e401a 44132 // Check each word
0515eeec
IC
44133 for (var i=0; i<words.length; i++) {
44134 var word = words[i];
44135 var language = getLanguage();
44136 if (WORDLISTS[language].indexOf(word) == -1) {
563e401a
IC
44137 console.log("Finding closest match to " + word);
44138 var nearestWord = findNearestWord(word);
44139 return word + " not in wordlist, did you mean " + nearestWord + "?";
44140 }
44141 }
ebd8d4e8 44142 // Check the words are valid
0515eeec 44143 var properPhrase = wordArrayToPhrase(words);
ebd8d4e8
IC
44144 var isValid = mnemonic.check(properPhrase);
44145 if (!isValid) {
44146 return "Invalid mnemonic";
44147 }
44148 return false;
44149 }
44150
efe41586
IC
44151 function validateRootKey(rootKeyBase58) {
44152 try {
44153 bitcoin.HDNode.fromBase58(rootKeyBase58);
44154 }
44155 catch (e) {
44156 return "Invalid root key";
44157 }
44158 return "";
44159 }
44160
38523d36 44161 function getDerivationPath() {
20083ab9 44162 if (bip44TabSelected()) {
38523d36
IC
44163 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44164 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44165 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44166 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
44167 var path = "m/";
44168 path += purpose + "'/";
44169 path += coin + "'/";
44170 path += account + "'/";
44171 path += change;
44172 DOM.bip44path.val(path);
44173 var derivationPath = DOM.bip44path.val();
44174 console.log("Using derivation path from BIP44 tab: " + derivationPath);
44175 return derivationPath;
44176 }
20083ab9 44177 else if (bip32TabSelected()) {
38523d36
IC
44178 var derivationPath = DOM.bip32path.val();
44179 console.log("Using derivation path from BIP32 tab: " + derivationPath);
44180 return derivationPath;
44181 }
44182 else {
44183 console.log("Unknown derivation path");
44184 }
44185 }
44186
ebd8d4e8 44187 function findDerivationPathErrors(path) {
30c9e79d
IC
44188 // TODO is not perfect but is better than nothing
44189 // Inspired by
44190 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
44191 // and
44192 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
44193 var maxDepth = 255; // TODO verify this!!
44194 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
44195 if (path[0] != "m") {
44196 return "First character must be 'm'";
44197 }
44198 if (path.length > 1) {
44199 if (path[1] != "/") {
44200 return "Separator must be '/'";
44201 }
44202 var indexes = path.split("/");
44203 if (indexes.length > maxDepth) {
44204 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
44205 }
44206 for (var depth = 1; depth<indexes.length; depth++) {
44207 var index = indexes[depth];
44208 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
44209 if (invalidChars.length > 0) {
44210 return "Invalid characters " + invalidChars + " found at depth " + depth;
44211 }
44212 var indexValue = parseInt(index.replace("'", ""));
44213 if (isNaN(depth)) {
44214 return "Invalid number at depth " + depth;
44215 }
44216 if (indexValue > maxIndexValue) {
44217 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
44218 }
44219 }
44220 }
0a1f0259
IC
44221 // Check root key exists or else derivation path is useless!
44222 if (!bip32RootKey) {
44223 return "No root key";
44224 }
ba3cb9ec
IC
44225 // Check no hardened derivation path when using xpub keys
44226 var hardened = path.indexOf("'") > -1;
44227 var isXpubkey = !("privKey" in bip32RootKey);
44228 if (hardened && isXpubkey) {
44229 return "Hardened derivation path is invalid with xpub key";
44230 }
ebd8d4e8
IC
44231 return false;
44232 }
44233
20083ab9
IC
44234 function displayBip44Info() {
44235 // Get the derivation path for the account
44236 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44237 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44238 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44239 var path = "m/";
44240 path += purpose + "'/";
44241 path += coin + "'/";
44242 path += account + "'/";
44243 // Calculate the account extended keys
44244 var accountExtendedKey = calcBip32ExtendedKey(path);
44245 var accountXprv = accountExtendedKey.toBase58();
44246 var accountXpub = accountExtendedKey.toBase58(false);
44247 // Display the extended keys
44248 DOM.bip44accountXprv.val(accountXprv);
44249 DOM.bip44accountXpub.val(accountXpub);
44250 }
44251
ebd8d4e8
IC
44252 function displayBip32Info() {
44253 // Display the key
73161a92 44254 DOM.seed.val(seed);
ebd8d4e8
IC
44255 var rootKey = bip32RootKey.toBase58();
44256 DOM.rootKey.val(rootKey);
ba3cb9ec
IC
44257 var xprvkeyB58 = "NA";
44258 if (bip32ExtendedKey.privKey) {
44259 xprvkeyB58 = bip32ExtendedKey.toBase58();
44260 }
44261 var extendedPrivKey = xprvkeyB58;
ebd8d4e8
IC
44262 DOM.extendedPrivKey.val(extendedPrivKey);
44263 var extendedPubKey = bip32ExtendedKey.toBase58(false);
44264 DOM.extendedPubKey.val(extendedPubKey);
44265 // Display the addresses and privkeys
44266 clearAddressesList();
44267 displayAddresses(0, 20);
44268 }
44269
44270 function displayAddresses(start, total) {
40892aba
IC
44271 generationProcesses.push(new (function() {
44272
44273 var rows = [];
44274
44275 this.stop = function() {
44276 for (var i=0; i<rows.length; i++) {
44277 rows[i].shouldGenerate = false;
44278 }
44279 }
44280
44281 for (var i=0; i<total; i++) {
44282 var index = i + start;
44283 rows.push(new TableRow(index));
44284 }
44285
44286 })());
80c4dd2a
IC
44287 }
44288
44289 function TableRow(index) {
44290
40892aba
IC
44291 var self = this;
44292 this.shouldGenerate = true;
1975bfbc
IC
44293 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
44294
80c4dd2a
IC
44295 function init() {
44296 calculateValues();
44297 }
44298
44299 function calculateValues() {
44300 setTimeout(function() {
40892aba
IC
44301 if (!self.shouldGenerate) {
44302 return;
44303 }
1975bfbc
IC
44304 var key = "";
44305 if (useHardenedAddresses) {
44306 key = bip32ExtendedKey.deriveHardened(index);
44307 }
44308 else {
44309 key = bip32ExtendedKey.derive(index);
44310 }
80c4dd2a 44311 var address = key.getAddress().toString();
ba3cb9ec
IC
44312 var privkey = "NA";
44313 if (key.privKey) {
44314 privkey = key.privKey.toWIF(network);
44315 }
1b12b2f5 44316 var pubkey = key.pubKey.toHex();
38523d36 44317 var indexText = getDerivationPath() + "/" + index;
1975bfbc
IC
44318 if (useHardenedAddresses) {
44319 indexText = indexText + "'";
44320 }
8b095871
IC
44321 // Ethereum values are different
44322 if (networks[DOM.network.val()].name == "Ethereum") {
44323 var privKeyBuffer = key.privKey.d.toBuffer();
44324 privkey = privKeyBuffer.toString('hex');
44325 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
49b21f12
IC
44326 var hexAddress = addressBuffer.toString('hex');
44327 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
44328 address = ethUtil.addHexPrefix(checksumAddress);
920eb591
IC
44329 privkey = ethUtil.addHexPrefix(privkey);
44330 pubkey = ethUtil.addHexPrefix(pubkey);
8b095871 44331 }
8a1f452d 44332 // Ripple values are different
44333 if (networks[DOM.network.val()].name == "Ripple") {
44334 privkey = convertRipplePriv(privkey);
44335 address = convertRippleAdrr(address);
44336 }
1b12b2f5 44337 addAddressToList(indexText, address, pubkey, privkey);
80c4dd2a 44338 }, 50)
ebd8d4e8 44339 }
80c4dd2a
IC
44340
44341 init();
44342
ebd8d4e8
IC
44343 }
44344
44345 function showMore() {
44346 var start = DOM.addresses.children().length;
44347 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
44348 if (isNaN(rowsToAdd)) {
44349 rowsToAdd = 20;
44350 DOM.rowsToAdd.val("20");
44351 }
44352 if (rowsToAdd > 200) {
44353 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
44354 msg += "Do you want to continue?";
44355 if (!confirm(msg)) {
44356 return;
44357 }
44358 }
ebd8d4e8 44359 displayAddresses(start, rowsToAdd);
ebd8d4e8
IC
44360 }
44361
44362 function clearDisplay() {
44363 clearAddressesList();
44364 clearKey();
44365 hideValidationError();
44366 }
44367
44368 function clearAddressesList() {
44369 DOM.addresses.empty();
40892aba
IC
44370 stopGenerating();
44371 }
44372
44373 function stopGenerating() {
44374 while (generationProcesses.length > 0) {
44375 var generation = generationProcesses.shift();
44376 generation.stop();
44377 }
ebd8d4e8
IC
44378 }
44379
44380 function clearKey() {
44381 DOM.rootKey.val("");
44382 DOM.extendedPrivKey.val("");
44383 DOM.extendedPubKey.val("");
44384 }
44385
1b12b2f5 44386 function addAddressToList(indexText, address, pubkey, privkey) {
ebd8d4e8 44387 var row = $(addressRowTemplate.html());
80c4dd2a
IC
44388 // Elements
44389 var indexCell = row.find(".index span");
44390 var addressCell = row.find(".address span");
1b12b2f5 44391 var pubkeyCell = row.find(".pubkey span");
80c4dd2a
IC
44392 var privkeyCell = row.find(".privkey span");
44393 // Content
ae30fed8 44394 indexCell.text(indexText);
80c4dd2a 44395 addressCell.text(address);
1b12b2f5 44396 pubkeyCell.text(pubkey);
80c4dd2a
IC
44397 privkeyCell.text(privkey);
44398 // Visibility
44399 if (!showIndex) {
44400 indexCell.addClass("invisible");
44401 }
44402 if (!showAddress) {
44403 addressCell.addClass("invisible");
44404 }
1b12b2f5
IC
44405 if (!showPubKey) {
44406 pubkeyCell.addClass("invisible");
44407 }
80c4dd2a 44408 if (!showPrivKey) {
6d628db7 44409 privkeyCell.addClass("invisible");
80c4dd2a 44410 }
ebd8d4e8 44411 DOM.addresses.append(row);
e00964cc
IC
44412 var rowShowQrEls = row.find("[data-show-qr]");
44413 setQrEvents(rowShowQrEls);
ebd8d4e8
IC
44414 }
44415
44416 function hasStrongRandom() {
44417 return 'crypto' in window && window['crypto'] !== null;
44418 }
44419
44420 function disableForms() {
44421 $("form").on("submit", function(e) {
44422 e.preventDefault();
44423 });
44424 }
44425
ebd8d4e8
IC
44426 function parseIntNoNaN(val, defaultVal) {
44427 var v = parseInt(val);
44428 if (isNaN(v)) {
44429 return defaultVal;
44430 }
44431 return v;
44432 }
44433
44434 function showPending() {
44435 DOM.feedback
44436 .text("Calculating...")
44437 .show();
44438 }
44439
563e401a 44440 function findNearestWord(word) {
0515eeec
IC
44441 var language = getLanguage();
44442 var words = WORDLISTS[language];
563e401a
IC
44443 var minDistance = 99;
44444 var closestWord = words[0];
44445 for (var i=0; i<words.length; i++) {
44446 var comparedTo = words[i];
6ea15134
IC
44447 if (comparedTo.indexOf(word) == 0) {
44448 return comparedTo;
44449 }
563e401a
IC
44450 var distance = Levenshtein.get(word, comparedTo);
44451 if (distance < minDistance) {
44452 closestWord = comparedTo;
44453 minDistance = distance;
44454 }
44455 }
44456 return closestWord;
44457 }
44458
ebd8d4e8
IC
44459 function hidePending() {
44460 DOM.feedback
44461 .text("")
44462 .hide();
44463 }
44464
ab78acc6
IC
44465 function populateNetworkSelect() {
44466 for (var i=0; i<networks.length; i++) {
44467 var network = networks[i];
44468 var option = $("<option>");
44469 option.attr("value", i);
44470 option.text(network.name);
44471 DOM.phraseNetwork.append(option);
44472 }
44473 }
44474
56530adc
IC
44475 function populateClientSelect() {
44476 for (var i=0; i<clients.length; i++) {
44477 var client = clients[i];
44478 var option = $("<option>");
44479 option.attr("value", i);
44480 option.text(client.name);
44481 DOM.bip32Client.append(option);
44482 }
44483 }
44484
0515eeec
IC
44485 function getLanguage() {
44486 var defaultLanguage = "english";
44487 // Try to get from existing phrase
44488 var language = getLanguageFromPhrase();
44489 // Try to get from url if not from phrase
44490 if (language.length == 0) {
44491 language = getLanguageFromUrl();
44492 }
44493 // Default to English if no other option
44494 if (language.length == 0) {
44495 language = defaultLanguage;
44496 }
44497 return language;
44498 }
44499
44500 function getLanguageFromPhrase(phrase) {
44501 // Check if how many words from existing phrase match a language.
44502 var language = "";
44503 if (!phrase) {
44504 phrase = DOM.phrase.val();
44505 }
44506 if (phrase.length > 0) {
44507 var words = phraseToWordArray(phrase);
44508 var languageMatches = {};
44509 for (l in WORDLISTS) {
44510 // Track how many words match in this language
44511 languageMatches[l] = 0;
44512 for (var i=0; i<words.length; i++) {
44513 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
44514 if (wordInLanguage) {
44515 languageMatches[l]++;
44516 }
44517 }
44518 // Find languages with most word matches.
44519 // This is made difficult due to commonalities between Chinese
44520 // simplified vs traditional.
44521 var mostMatches = 0;
44522 var mostMatchedLanguages = [];
44523 for (var l in languageMatches) {
44524 var numMatches = languageMatches[l];
44525 if (numMatches > mostMatches) {
44526 mostMatches = numMatches;
44527 mostMatchedLanguages = [l];
44528 }
44529 else if (numMatches == mostMatches) {
44530 mostMatchedLanguages.push(l);
44531 }
44532 }
44533 }
44534 if (mostMatchedLanguages.length > 0) {
44535 // Use first language and warn if multiple detected
44536 language = mostMatchedLanguages[0];
44537 if (mostMatchedLanguages.length > 1) {
44538 console.warn("Multiple possible languages");
44539 console.warn(mostMatchedLanguages);
44540 }
44541 }
44542 }
44543 return language;
44544 }
44545
44546 function getLanguageFromUrl() {
c6624d51
IC
44547 for (var language in WORDLISTS) {
44548 if (window.location.hash.indexOf(language) > -1) {
44549 return language;
44550 }
44551 }
44552 return "";
0515eeec
IC
44553 }
44554
44555 function setMnemonicLanguage() {
44556 var language = getLanguage();
44557 // Load the bip39 mnemonic generator for this language if required
44558 if (!(language in mnemonics)) {
44559 mnemonics[language] = new Mnemonic(language);
44560 }
44561 mnemonic = mnemonics[language];
44562 }
44563
44564 function convertPhraseToNewLanguage() {
44565 var oldLanguage = getLanguageFromPhrase();
44566 var newLanguage = getLanguageFromUrl();
44567 var oldPhrase = DOM.phrase.val();
44568 var oldWords = phraseToWordArray(oldPhrase);
44569 var newWords = [];
44570 for (var i=0; i<oldWords.length; i++) {
44571 var oldWord = oldWords[i];
44572 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
44573 var newWord = WORDLISTS[newLanguage][index];
44574 newWords.push(newWord);
44575 }
44576 newPhrase = wordArrayToPhrase(newWords);
44577 return newPhrase;
44578 }
44579
44580 // TODO look at jsbip39 - mnemonic.splitWords
44581 function phraseToWordArray(phrase) {
44582 var words = phrase.split(/\s/g);
44583 var noBlanks = [];
44584 for (var i=0; i<words.length; i++) {
44585 var word = words[i];
44586 if (word.length > 0) {
44587 noBlanks.push(word);
44588 }
44589 }
44590 return noBlanks;
44591 }
44592
44593 // TODO look at jsbip39 - mnemonic.joinWords
44594 function wordArrayToPhrase(words) {
44595 var phrase = words.join(" ");
44596 var language = getLanguageFromPhrase(phrase);
44597 if (language == "japanese") {
44598 phrase = words.join("\u3000");
44599 }
44600 return phrase;
44601 }
44602
c6624d51
IC
44603 function isUsingOwnEntropy() {
44604 return DOM.useEntropy.prop("checked");
44605 }
44606
44607 function setMnemonicFromEntropy() {
2a6dd137 44608 clearEntropyFeedback();
18abe53b 44609 // Get entropy value
c6624d51 44610 var entropyStr = DOM.entropy.val();
18abe53b 44611 // Work out minimum base for entropy
c6624d51 44612 var entropy = Entropy.fromString(entropyStr);
18abe53b 44613 if (entropy.binaryStr.length == 0) {
c6624d51
IC
44614 return;
44615 }
44616 // Show entropy details
18abe53b
IC
44617 showEntropyFeedback(entropy);
44618 // Use entropy hash if not using raw entropy
44619 var bits = entropy.binaryStr;
44620 var mnemonicLength = DOM.entropyMnemonicLength.val();
44621 if (mnemonicLength != "raw") {
44622 // Get bits by hashing entropy with SHA256
44623 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
44624 var hex = sjcl.codec.hex.fromBits(hash);
44625 bits = BigInteger.parse(hex, 16).toString(2);
53aaab27 44626 while (bits.length % 256 != 0) {
18abe53b
IC
44627 bits = "0" + bits;
44628 }
44629 // Truncate hash to suit number of words
44630 mnemonicLength = parseInt(mnemonicLength);
44631 var numberOfBits = 32 * mnemonicLength / 3;
44632 bits = bits.substring(0, numberOfBits);
c6624d51 44633 }
c6624d51 44634 // Discard trailing entropy
18abe53b 44635 var bitsToUse = Math.floor(bits.length / 32) * 32;
2a6dd137
IC
44636 var start = bits.length - bitsToUse;
44637 var binaryStr = bits.substring(start);
c6624d51
IC
44638 // Convert entropy string to numeric array
44639 var entropyArr = [];
18abe53b
IC
44640 for (var i=0; i<binaryStr.length / 8; i++) {
44641 var byteAsBits = binaryStr.substring(i*8, i*8+8);
44642 var entropyByte = parseInt(byteAsBits, 2);
c6624d51
IC
44643 entropyArr.push(entropyByte)
44644 }
44645 // Convert entropy array to mnemonic
44646 var phrase = mnemonic.toMnemonic(entropyArr);
44647 // Set the mnemonic in the UI
44648 DOM.phrase.val(phrase);
44649 }
44650
2a6dd137
IC
44651 function clearEntropyFeedback() {
44652 DOM.entropyStrength.text("...");
18abe53b 44653 DOM.entropyType.text("");
2a6dd137
IC
44654 DOM.entropyWordCount.text("0");
44655 DOM.entropyEventCount.text("0");
44656 DOM.entropyBitsPerEvent.text("0");
44657 DOM.entropyBits.text("0");
44658 DOM.entropyFiltered.html("&nbsp;");
44659 DOM.entropyBinary.html("&nbsp;");
c6624d51
IC
44660 }
44661
18abe53b 44662 function showEntropyFeedback(entropy) {
9e97eb76 44663 var numberOfBits = entropy.binaryStr.length;
18abe53b 44664 var strength = "extremely weak";
9e97eb76 44665 if (numberOfBits >= 64) {
18abe53b
IC
44666 strength = "very weak";
44667 }
9e97eb76 44668 if (numberOfBits >= 96) {
18abe53b
IC
44669 strength = "weak";
44670 }
9e97eb76 44671 if (numberOfBits >= 128) {
18abe53b
IC
44672 strength = "strong";
44673 }
9e97eb76 44674 if (numberOfBits >= 160) {
18abe53b
IC
44675 strength = "very strong";
44676 }
9e97eb76 44677 if (numberOfBits >= 192) {
18abe53b
IC
44678 strength = "extremely strong";
44679 }
44680 // If time to crack is less than one day, and password is considered
44681 // strong or better based on the number of bits, rename strength to
44682 // 'easily cracked'.
95f04905
IC
44683 try {
44684 var z = zxcvbn(entropy.base.parts.join(""));
44685 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
44686 if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
44687 strength = "easily cracked";
44688 if (z.feedback.warning != "") {
44689 strength = strength + " - " + z.feedback.warning;
44690 };
44691 }
18abe53b 44692 }
95f04905
IC
44693 catch (e) {
44694 strength = "unknown";
44695 console.log("Error detecting entropy strength with zxcvbn:");
44696 console.log(e);
44697 }
95f04905 44698 var entropyTypeStr = getEntropyTypeStr(entropy);
9e97eb76 44699 var wordCount = Math.floor(numberOfBits / 32) * 3;
94959756 44700 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
2a6dd137 44701 DOM.entropyFiltered.html(entropy.cleanHtml);
95f04905 44702 DOM.entropyType.text(entropyTypeStr);
18abe53b
IC
44703 DOM.entropyStrength.text(strength);
44704 DOM.entropyEventCount.text(entropy.base.ints.length);
9e97eb76 44705 DOM.entropyBits.text(numberOfBits);
2a6dd137
IC
44706 DOM.entropyWordCount.text(wordCount);
44707 DOM.entropyBinary.text(entropy.binaryStr);
9e97eb76 44708 DOM.entropyBitsPerEvent.text(bitsPerEvent);
95f04905
IC
44709 }
44710
44711 function getEntropyTypeStr(entropy) {
44712 var typeStr = entropy.base.str;
44713 // Add some detail if these are cards
44714 if (entropy.base.asInt == 52) {
44715 var cardDetail = []; // array of message strings
44716 // Detect duplicates
44717 var dupes = [];
44718 var dupeTracker = {};
44719 for (var i=0; i<entropy.base.parts.length; i++) {
44720 var card = entropy.base.parts[i];
9e97eb76
IC
44721 var cardUpper = card.toUpperCase();
44722 if (cardUpper in dupeTracker) {
95f04905
IC
44723 dupes.push(card);
44724 }
9e97eb76 44725 dupeTracker[cardUpper] = true;
95f04905
IC
44726 }
44727 if (dupes.length > 0) {
44728 var dupeWord = "duplicates";
44729 if (dupes.length == 1) {
44730 dupeWord = "duplicate";
44731 }
44732 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
44733 if (dupes.length > 3) {
44734 msg += "...";
44735 }
44736 cardDetail.push(msg);
44737 }
44738 // Detect full deck
44739 var uniqueCards = [];
44740 for (var uniqueCard in dupeTracker) {
44741 uniqueCards.push(uniqueCard);
44742 }
44743 if (uniqueCards.length == 52) {
44744 cardDetail.unshift("full deck");
44745 }
9e97eb76
IC
44746 // Detect missing cards
44747 var values = "A23456789TJQK";
44748 var suits = "CDHS";
44749 var missingCards = [];
44750 for (var i=0; i<suits.length; i++) {
44751 for (var j=0; j<values.length; j++) {
44752 var card = values[j] + suits[i];
44753 if (!(card in dupeTracker)) {
44754 missingCards.push(card);
44755 }
44756 }
44757 }
44758 // Display missing cards if six or less, ie clearly going for full deck
44759 if (missingCards.length > 0 && missingCards.length <= 6) {
44760 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
44761 if (missingCards.length > 3) {
44762 msg += "...";
44763 }
44764 cardDetail.push(msg);
44765 }
95f04905
IC
44766 // Add card details to typeStr
44767 if (cardDetail.length > 0) {
44768 typeStr += " (" + cardDetail.join(", ") + ")";
44769 }
44770 }
44771 return typeStr;
44772 }
44773
e00964cc
IC
44774 function setQrEvents(els) {
44775 els.on("mouseenter", createQr);
44776 els.on("mouseleave", destroyQr);
44777 els.on("click", toggleQr);
44778 }
44779
44780 function createQr(e) {
44781 var content = e.target.textContent || e.target.value;
44782 if (content) {
44783 var size = 130;
44784 DOM.qrImage.qrcode({width: size, height: size, text: content});
44785 if (!showQr) {
52da415f
IC
44786 DOM.qrHider.addClass("hidden");
44787 }
44788 else {
44789 DOM.qrHider.removeClass("hidden");
e00964cc
IC
44790 }
44791 DOM.qrContainer.removeClass("hidden");
44792 }
44793 }
44794
44795 function destroyQr() {
44796 DOM.qrImage.text("");
44797 DOM.qrContainer.addClass("hidden");
44798 }
44799
44800 function toggleQr() {
44801 showQr = !showQr;
52da415f 44802 DOM.qrHider.toggleClass("hidden");
e00964cc
IC
44803 DOM.qrHint.toggleClass("hidden");
44804 }
44805
20083ab9
IC
44806 function bip44TabSelected() {
44807 return DOM.bip44tab.hasClass("active");
44808 }
44809
44810 function bip32TabSelected() {
44811 return DOM.bip32tab.hasClass("active");
44812 }
44813
ab78acc6
IC
44814 var networks = [
44815 {
44816 name: "Bitcoin",
44817 onSelect: function() {
44818 network = bitcoin.networks.bitcoin;
44819 DOM.bip44coin.val(0);
ab78acc6
IC
44820 },
44821 },
44822 {
44823 name: "Bitcoin Testnet",
44824 onSelect: function() {
44825 network = bitcoin.networks.testnet;
44826 DOM.bip44coin.val(1);
ab78acc6
IC
44827 },
44828 },
44829 {
52d589ea 44830 name: "CLAM",
ab78acc6 44831 onSelect: function() {
52d589ea
IC
44832 network = bitcoin.networks.clam;
44833 DOM.bip44coin.val(23);
ab78acc6
IC
44834 },
44835 },
44836 {
44837 name: "Dogecoin",
44838 onSelect: function() {
44839 network = bitcoin.networks.dogecoin;
44840 DOM.bip44coin.val(3);
44841 },
44842 },
d5dc92fd 44843 {
52d589ea 44844 name: "DASH",
d5dc92fd 44845 onSelect: function() {
52d589ea
IC
44846 network = bitcoin.networks.dash;
44847 DOM.bip44coin.val(5);
d5dc92fd
IC
44848 },
44849 },
c0386f3b
KR
44850 {
44851 name: "DASH Testnet",
44852 onSelect: function() {
44853 network = bitcoin.networks.dashtn;
44854 DOM.bip44coin.val(1);
44855 },
44856 },
d5dc92fd 44857 {
52d589ea 44858 name: "Ethereum",
d5dc92fd 44859 onSelect: function() {
52d589ea
IC
44860 network = bitcoin.networks.bitcoin;
44861 DOM.bip44coin.val(60);
d5dc92fd
IC
44862 },
44863 },
f88fab20 44864 {
44865 name: "GAME",
44866 onSelect: function() {
44867 network = bitcoin.networks.game;
44868 DOM.bip44coin.val(101);
44869 },
44870 },
a3baa26e 44871 {
52d589ea 44872 name: "Jumbucks",
a3baa26e 44873 onSelect: function() {
52d589ea
IC
44874 network = bitcoin.networks.jumbucks;
44875 DOM.bip44coin.val(26);
a3baa26e
IC
44876 },
44877 },
44878 {
52d589ea 44879 name: "Litecoin",
a3baa26e 44880 onSelect: function() {
52d589ea
IC
44881 network = bitcoin.networks.litecoin;
44882 DOM.bip44coin.val(2);
a3baa26e
IC
44883 },
44884 },
44885 {
52d589ea 44886 name: "Namecoin",
a3baa26e 44887 onSelect: function() {
52d589ea
IC
44888 network = bitcoin.networks.namecoin;
44889 DOM.bip44coin.val(7);
a3baa26e
IC
44890 },
44891 },
5c434a8a 44892 {
52d589ea 44893 name: "Peercoin",
5c434a8a 44894 onSelect: function() {
52d589ea
IC
44895 network = bitcoin.networks.peercoin;
44896 DOM.bip44coin.val(6);
5c434a8a
CM
44897 },
44898 },
8a1f452d 44899 {
44900 name: "Ripple",
44901 onSelect: function() {
44902 network = bitcoin.networks.bitcoin;
44903 DOM.bip44coin.val(144);
44904 },
44905 },
5493efc3 44906 {
52d589ea 44907 name: "ShadowCash",
5493efc3 44908 onSelect: function() {
52d589ea
IC
44909 network = bitcoin.networks.shadow;
44910 DOM.bip44coin.val(35);
5493efc3 44911 },
44912 },
07ac4350 44913 {
52d589ea 44914 name: "ShadowCash Testnet",
07ac4350 44915 onSelect: function() {
52d589ea
IC
44916 network = bitcoin.networks.shadowtn;
44917 DOM.bip44coin.val(1);
07ac4350 44918 },
44919 },
01e81e53
GH
44920 {
44921 name: "Slimcoin",
44922 onSelect: function() {
44923 network = bitcoin.networks.slimcoin;
44924 DOM.bip44coin.val(63);
44925 },
44926 },
44927 {
44928 name: "Slimcoin Testnet",
44929 onSelect: function() {
44930 network = bitcoin.networks.slimcointn;
44931 DOM.bip44coin.val(111);
44932 },
44933 },
07ac4350 44934 {
52d589ea 44935 name: "Viacoin",
07ac4350 44936 onSelect: function() {
52d589ea
IC
44937 network = bitcoin.networks.viacoin;
44938 DOM.bip44coin.val(14);
07ac4350 44939 },
44940 },
8b095871 44941 {
52d589ea 44942 name: "Viacoin Testnet",
8b095871 44943 onSelect: function() {
52d589ea
IC
44944 network = bitcoin.networks.viacointestnet;
44945 DOM.bip44coin.val(1);
8b095871
IC
44946 },
44947 },
ab78acc6
IC
44948 ]
44949
56530adc
IC
44950 var clients = [
44951 {
44952 name: "Bitcoin Core",
44953 onSelect: function() {
44954 DOM.bip32path.val("m/0'/0'");
44955 DOM.hardenedAddresses.prop('checked', true);
44956 },
44957 },
44958 {
44959 name: "blockchain.info",
44960 onSelect: function() {
44961 DOM.bip32path.val("m/44'/0'/0'");
44962 DOM.hardenedAddresses.prop('checked', false);
44963 },
44964 },
44965 {
44966 name: "MultiBit HD",
44967 onSelect: function() {
44968 DOM.bip32path.val("m/0'/0");
44969 DOM.hardenedAddresses.prop('checked', false);
44970 },
44971 }
44972 ]
44973
ebd8d4e8
IC
44974 init();
44975
44976})();
dc55c6b0 44977</script>
ebd8d4e8
IC
44978 </body>
44979</html>