Last active
August 30, 2022 17:09
-
-
Save d3noob/6584483 to your computer and use it in GitHub Desktop.
dc.js chart examples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! | |
* Bootstrap v2.3.2 | |
* | |
* Copyright 2012 Twitter, Inc | |
* Licensed under the Apache License v2.0 | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Designed and built with all the love in the world @twitter by @mdo and @fat. | |
*/.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}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-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,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}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.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}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.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 th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.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 td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.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;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.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{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.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:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.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}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.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:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;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-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.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:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.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{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;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,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;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{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 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:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-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{display:block;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:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! | |
* Bootstrap.js by @fat & @mdo | |
* Copyright 2012 Twitter, Inc. | |
* http://www.apache.org/licenses/LICENSE-2.0.txt | |
*/ | |
!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(exports){ | |
crossfilter.version = "1.2.0"; | |
function crossfilter_identity(d) { | |
return d; | |
} | |
crossfilter.permute = permute; | |
function permute(array, index) { | |
for (var i = 0, n = index.length, copy = new Array(n); i < n; ++i) { | |
copy[i] = array[index[i]]; | |
} | |
return copy; | |
} | |
var bisect = crossfilter.bisect = bisect_by(crossfilter_identity); | |
bisect.by = bisect_by; | |
function bisect_by(f) { | |
// Locate the insertion point for x in a to maintain sorted order. The | |
// arguments lo and hi may be used to specify a subset of the array which | |
// should be considered; by default the entire array is used. If x is already | |
// present in a, the insertion point will be before (to the left of) any | |
// existing entries. The return value is suitable for use as the first | |
// argument to `array.splice` assuming that a is already sorted. | |
// | |
// The returned insertion point i partitions the array a into two halves so | |
// that all v < x for v in a[lo:i] for the left side and all v >= x for v in | |
// a[i:hi] for the right side. | |
function bisectLeft(a, x, lo, hi) { | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (f(a[mid]) < x) lo = mid + 1; | |
else hi = mid; | |
} | |
return lo; | |
} | |
// Similar to bisectLeft, but returns an insertion point which comes after (to | |
// the right of) any existing entries of x in a. | |
// | |
// The returned insertion point i partitions the array into two halves so that | |
// all v <= x for v in a[lo:i] for the left side and all v > x for v in | |
// a[i:hi] for the right side. | |
function bisectRight(a, x, lo, hi) { | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (x < f(a[mid])) hi = mid; | |
else lo = mid + 1; | |
} | |
return lo; | |
} | |
bisectRight.right = bisectRight; | |
bisectRight.left = bisectLeft; | |
return bisectRight; | |
} | |
var heap = crossfilter.heap = heap_by(crossfilter_identity); | |
heap.by = heap_by; | |
function heap_by(f) { | |
// Builds a binary heap within the specified array a[lo:hi]. The heap has the | |
// property such that the parent a[lo+i] is always less than or equal to its | |
// two children: a[lo+2*i+1] and a[lo+2*i+2]. | |
function heap(a, lo, hi) { | |
var n = hi - lo, | |
i = (n >>> 1) + 1; | |
while (--i > 0) sift(a, i, n, lo); | |
return a; | |
} | |
// Sorts the specified array a[lo:hi] in descending order, assuming it is | |
// already a heap. | |
function sort(a, lo, hi) { | |
var n = hi - lo, | |
t; | |
while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo); | |
return a; | |
} | |
// Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous | |
// slice of array a[lo:lo+n]. This method can also be used to update the heap | |
// incrementally, without incurring the full cost of reconstructing the heap. | |
function sift(a, i, n, lo) { | |
var d = a[--lo + i], | |
x = f(d), | |
child; | |
while ((child = i << 1) <= n) { | |
if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++; | |
if (x <= f(a[lo + child])) break; | |
a[lo + i] = a[lo + child]; | |
i = child; | |
} | |
a[lo + i] = d; | |
} | |
heap.sort = sort; | |
return heap; | |
} | |
var heapselect = crossfilter.heapselect = heapselect_by(crossfilter_identity); | |
heapselect.by = heapselect_by; | |
function heapselect_by(f) { | |
var heap = heap_by(f); | |
// Returns a new array containing the top k elements in the array a[lo:hi]. | |
// The returned array is not sorted, but maintains the heap property. If k is | |
// greater than hi - lo, then fewer than k elements will be returned. The | |
// order of elements in a is unchanged by this operation. | |
function heapselect(a, lo, hi, k) { | |
var queue = new Array(k = Math.min(hi - lo, k)), | |
min, | |
i, | |
x, | |
d; | |
for (i = 0; i < k; ++i) queue[i] = a[lo++]; | |
heap(queue, 0, k); | |
if (lo < hi) { | |
min = f(queue[0]); | |
do { | |
if (x = f(d = a[lo]) > min) { | |
queue[0] = d; | |
min = f(heap(queue, 0, k)[0]); | |
} | |
} while (++lo < hi); | |
} | |
return queue; | |
} | |
return heapselect; | |
} | |
var insertionsort = crossfilter.insertionsort = insertionsort_by(crossfilter_identity); | |
insertionsort.by = insertionsort_by; | |
function insertionsort_by(f) { | |
function insertionsort(a, lo, hi) { | |
for (var i = lo + 1; i < hi; ++i) { | |
for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) { | |
a[j] = a[j - 1]; | |
} | |
a[j] = t; | |
} | |
return a; | |
} | |
return insertionsort; | |
} | |
// Algorithm designed by Vladimir Yaroslavskiy. | |
// Implementation based on the Dart project; see lib/dart/LICENSE for details. | |
var quicksort = crossfilter.quicksort = quicksort_by(crossfilter_identity); | |
quicksort.by = quicksort_by; | |
function quicksort_by(f) { | |
var insertionsort = insertionsort_by(f); | |
function sort(a, lo, hi) { | |
return (hi - lo < quicksort_sizeThreshold | |
? insertionsort | |
: quicksort)(a, lo, hi); | |
} | |
function quicksort(a, lo, hi) { | |
// Compute the two pivots by looking at 5 elements. | |
var sixth = (hi - lo) / 6 | 0, | |
i1 = lo + sixth, | |
i5 = hi - 1 - sixth, | |
i3 = lo + hi - 1 >> 1, // The midpoint. | |
i2 = i3 - sixth, | |
i4 = i3 + sixth; | |
var e1 = a[i1], x1 = f(e1), | |
e2 = a[i2], x2 = f(e2), | |
e3 = a[i3], x3 = f(e3), | |
e4 = a[i4], x4 = f(e4), | |
e5 = a[i5], x5 = f(e5); | |
var t; | |
// Sort the selected 5 elements using a sorting network. | |
if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t; | |
if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t; | |
if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t; | |
if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t; | |
if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t; | |
if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t; | |
if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t; | |
if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t; | |
if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t; | |
var pivot1 = e2, pivotValue1 = x2, | |
pivot2 = e4, pivotValue2 = x4; | |
// e2 and e4 have been saved in the pivot variables. They will be written | |
// back, once the partitioning is finished. | |
a[i1] = e1; | |
a[i2] = a[lo]; | |
a[i3] = e3; | |
a[i4] = a[hi - 1]; | |
a[i5] = e5; | |
var less = lo + 1, // First element in the middle partition. | |
great = hi - 2; // Last element in the middle partition. | |
// Note that for value comparison, <, <=, >= and > coerce to a primitive via | |
// Object.prototype.valueOf; == and === do not, so in order to be consistent | |
// with natural order (such as for Date objects), we must do two compares. | |
var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2; | |
if (pivotsEqual) { | |
// Degenerated case where the partitioning becomes a dutch national flag | |
// problem. | |
// | |
// [ | < pivot | == pivot | unpartitioned | > pivot | ] | |
// ^ ^ ^ ^ ^ | |
// left less k great right | |
// | |
// a[left] and a[right] are undefined and are filled after the | |
// partitioning. | |
// | |
// Invariants: | |
// 1) for x in ]left, less[ : x < pivot. | |
// 2) for x in [less, k[ : x == pivot. | |
// 3) for x in ]great, right[ : x > pivot. | |
for (var k = less; k <= great; ++k) { | |
var ek = a[k], xk = f(ek); | |
if (xk < pivotValue1) { | |
if (k !== less) { | |
a[k] = a[less]; | |
a[less] = ek; | |
} | |
++less; | |
} else if (xk > pivotValue1) { | |
// Find the first element <= pivot in the range [k - 1, great] and | |
// put [:ek:] there. We know that such an element must exist: | |
// When k == less, then el3 (which is equal to pivot) lies in the | |
// interval. Otherwise a[k - 1] == pivot and the search stops at k-1. | |
// Note that in the latter case invariant 2 will be violated for a | |
// short amount of time. The invariant will be restored when the | |
// pivots are put into their final positions. | |
while (true) { | |
var greatValue = f(a[great]); | |
if (greatValue > pivotValue1) { | |
great--; | |
// This is the only location in the while-loop where a new | |
// iteration is started. | |
continue; | |
} else if (greatValue < pivotValue1) { | |
// Triple exchange. | |
a[k] = a[less]; | |
a[less++] = a[great]; | |
a[great--] = ek; | |
break; | |
} else { | |
a[k] = a[great]; | |
a[great--] = ek; | |
// Note: if great < k then we will exit the outer loop and fix | |
// invariant 2 (which we just violated). | |
break; | |
} | |
} | |
} | |
} | |
} else { | |
// We partition the list into three parts: | |
// 1. < pivot1 | |
// 2. >= pivot1 && <= pivot2 | |
// 3. > pivot2 | |
// | |
// During the loop we have: | |
// [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned | > pivot2 | ] | |
// ^ ^ ^ ^ ^ | |
// left less k great right | |
// | |
// a[left] and a[right] are undefined and are filled after the | |
// partitioning. | |
// | |
// Invariants: | |
// 1. for x in ]left, less[ : x < pivot1 | |
// 2. for x in [less, k[ : pivot1 <= x && x <= pivot2 | |
// 3. for x in ]great, right[ : x > pivot2 | |
for (var k = less; k <= great; k++) { | |
var ek = a[k], xk = f(ek); | |
if (xk < pivotValue1) { | |
if (k !== less) { | |
a[k] = a[less]; | |
a[less] = ek; | |
} | |
++less; | |
} else { | |
if (xk > pivotValue2) { | |
while (true) { | |
var greatValue = f(a[great]); | |
if (greatValue > pivotValue2) { | |
great--; | |
if (great < k) break; | |
// This is the only location inside the loop where a new | |
// iteration is started. | |
continue; | |
} else { | |
// a[great] <= pivot2. | |
if (greatValue < pivotValue1) { | |
// Triple exchange. | |
a[k] = a[less]; | |
a[less++] = a[great]; | |
a[great--] = ek; | |
} else { | |
// a[great] >= pivot1. | |
a[k] = a[great]; | |
a[great--] = ek; | |
} | |
break; | |
} | |
} | |
} | |
} | |
} | |
} | |
// Move pivots into their final positions. | |
// We shrunk the list from both sides (a[left] and a[right] have | |
// meaningless values in them) and now we move elements from the first | |
// and third partition into these locations so that we can store the | |
// pivots. | |
a[lo] = a[less - 1]; | |
a[less - 1] = pivot1; | |
a[hi - 1] = a[great + 1]; | |
a[great + 1] = pivot2; | |
// The list is now partitioned into three partitions: | |
// [ < pivot1 | >= pivot1 && <= pivot2 | > pivot2 ] | |
// ^ ^ ^ ^ | |
// left less great right | |
// Recursive descent. (Don't include the pivot values.) | |
sort(a, lo, less - 1); | |
sort(a, great + 2, hi); | |
if (pivotsEqual) { | |
// All elements in the second partition are equal to the pivot. No | |
// need to sort them. | |
return a; | |
} | |
// In theory it should be enough to call _doSort recursively on the second | |
// partition. | |
// The Android source however removes the pivot elements from the recursive | |
// call if the second partition is too large (more than 2/3 of the list). | |
if (less < i1 && great > i5) { | |
var lessValue, greatValue; | |
while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less; | |
while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great; | |
// Copy paste of the previous 3-way partitioning with adaptions. | |
// | |
// We partition the list into three parts: | |
// 1. == pivot1 | |
// 2. > pivot1 && < pivot2 | |
// 3. == pivot2 | |
// | |
// During the loop we have: | |
// [ == pivot1 | > pivot1 && < pivot2 | unpartitioned | == pivot2 ] | |
// ^ ^ ^ | |
// less k great | |
// | |
// Invariants: | |
// 1. for x in [ *, less[ : x == pivot1 | |
// 2. for x in [less, k[ : pivot1 < x && x < pivot2 | |
// 3. for x in ]great, * ] : x == pivot2 | |
for (var k = less; k <= great; k++) { | |
var ek = a[k], xk = f(ek); | |
if (xk <= pivotValue1 && xk >= pivotValue1) { | |
if (k !== less) { | |
a[k] = a[less]; | |
a[less] = ek; | |
} | |
less++; | |
} else { | |
if (xk <= pivotValue2 && xk >= pivotValue2) { | |
while (true) { | |
var greatValue = f(a[great]); | |
if (greatValue <= pivotValue2 && greatValue >= pivotValue2) { | |
great--; | |
if (great < k) break; | |
// This is the only location inside the loop where a new | |
// iteration is started. | |
continue; | |
} else { | |
// a[great] < pivot2. | |
if (greatValue < pivotValue1) { | |
// Triple exchange. | |
a[k] = a[less]; | |
a[less++] = a[great]; | |
a[great--] = ek; | |
} else { | |
// a[great] == pivot1. | |
a[k] = a[great]; | |
a[great--] = ek; | |
} | |
break; | |
} | |
} | |
} | |
} | |
} | |
} | |
// The second partition has now been cleared of pivot elements and looks | |
// as follows: | |
// [ * | > pivot1 && < pivot2 | * ] | |
// ^ ^ | |
// less great | |
// Sort the second partition using recursive descent. | |
// The second partition looks as follows: | |
// [ * | >= pivot1 && <= pivot2 | * ] | |
// ^ ^ | |
// less great | |
// Simply sort it by recursive descent. | |
return sort(a, less, great + 1); | |
} | |
return sort; | |
} | |
var quicksort_sizeThreshold = 32; | |
var crossfilter_array8 = crossfilter_arrayUntyped, | |
crossfilter_array16 = crossfilter_arrayUntyped, | |
crossfilter_array32 = crossfilter_arrayUntyped, | |
crossfilter_arrayLengthen = crossfilter_identity, | |
crossfilter_arrayWiden = crossfilter_identity; | |
if (typeof Uint8Array !== "undefined") { | |
crossfilter_array8 = function(n) { return new Uint8Array(n); }; | |
crossfilter_array16 = function(n) { return new Uint16Array(n); }; | |
crossfilter_array32 = function(n) { return new Uint32Array(n); }; | |
crossfilter_arrayLengthen = function(array, length) { | |
var copy = new array.constructor(length); | |
copy.set(array); | |
return copy; | |
}; | |
crossfilter_arrayWiden = function(array, width) { | |
var copy; | |
switch (width) { | |
case 16: copy = crossfilter_array16(array.length); break; | |
case 32: copy = crossfilter_array32(array.length); break; | |
default: throw new Error("invalid array width!"); | |
} | |
copy.set(array); | |
return copy; | |
}; | |
} | |
function crossfilter_arrayUntyped(n) { | |
return new Array(n); | |
} | |
function crossfilter_filterExact(bisect, value) { | |
return function(values) { | |
var n = values.length; | |
return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)]; | |
}; | |
} | |
function crossfilter_filterRange(bisect, range) { | |
var min = range[0], | |
max = range[1]; | |
return function(values) { | |
var n = values.length; | |
return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)]; | |
}; | |
} | |
function crossfilter_filterAll(values) { | |
return [0, values.length]; | |
} | |
function crossfilter_null() { | |
return null; | |
} | |
function crossfilter_zero() { | |
return 0; | |
} | |
function crossfilter_reduceIncrement(p) { | |
return p + 1; | |
} | |
function crossfilter_reduceDecrement(p) { | |
return p - 1; | |
} | |
function crossfilter_reduceAdd(f) { | |
return function(p, v) { | |
return p + +f(v); | |
}; | |
} | |
function crossfilter_reduceSubtract(f) { | |
return function(p, v) { | |
return p - f(v); | |
}; | |
} | |
exports.crossfilter = crossfilter; | |
function crossfilter() { | |
var crossfilter = { | |
add: add, | |
dimension: dimension, | |
groupAll: groupAll, | |
size: size | |
}; | |
var data = [], // the records | |
n = 0, // the number of records; data.length | |
m = 0, // a bit mask representing which dimensions are in use | |
M = 8, // number of dimensions that can fit in `filters` | |
filters = crossfilter_array8(0), // M bits per record; 1 is filtered out | |
filterListeners = [], // when the filters change | |
dataListeners = []; // when data is added | |
// Adds the specified new records to this crossfilter. | |
function add(newData) { | |
var n0 = n, | |
n1 = newData.length; | |
// If there's actually new data to add… | |
// Merge the new data into the existing data. | |
// Lengthen the filter bitset to handle the new records. | |
// Notify listeners (dimensions and groups) that new data is available. | |
if (n1) { | |
data = data.concat(newData); | |
filters = crossfilter_arrayLengthen(filters, n += n1); | |
dataListeners.forEach(function(l) { l(newData, n0, n1); }); | |
} | |
return crossfilter; | |
} | |
// Adds a new dimension with the specified value accessor function. | |
function dimension(value) { | |
var dimension = { | |
filter: filter, | |
filterExact: filterExact, | |
filterRange: filterRange, | |
filterFunction: filterFunction, | |
filterAll: filterAll, | |
top: top, | |
bottom: bottom, | |
group: group, | |
groupAll: groupAll, | |
remove: remove | |
}; | |
var one = ~m & -~m, // lowest unset bit as mask, e.g., 00001000 | |
zero = ~one, // inverted one, e.g., 11110111 | |
values, // sorted, cached array | |
index, // value rank ↦ object id | |
newValues, // temporary array storing newly-added values | |
newIndex, // temporary array storing newly-added index | |
sort = quicksort_by(function(i) { return newValues[i]; }), | |
refilter = crossfilter_filterAll, // for recomputing filter | |
refilterFunction, // the custom filter function in use | |
indexListeners = [], // when data is added | |
dimensionGroups = [], | |
lo0 = 0, | |
hi0 = 0; | |
// Updating a dimension is a two-stage process. First, we must update the | |
// associated filters for the newly-added records. Once all dimensions have | |
// updated their filters, the groups are notified to update. | |
dataListeners.unshift(preAdd); | |
dataListeners.push(postAdd); | |
// Incorporate any existing data into this dimension, and make sure that the | |
// filter bitset is wide enough to handle the new dimension. | |
m |= one; | |
if (M >= 32 ? !one : m & (1 << M) - 1) { | |
filters = crossfilter_arrayWiden(filters, M <<= 1); | |
} | |
preAdd(data, 0, n); | |
postAdd(data, 0, n); | |
// Incorporates the specified new records into this dimension. | |
// This function is responsible for updating filters, values, and index. | |
function preAdd(newData, n0, n1) { | |
// Permute new values into natural order using a sorted index. | |
newValues = newData.map(value); | |
newIndex = sort(crossfilter_range(n1), 0, n1); | |
newValues = permute(newValues, newIndex); | |
// Bisect newValues to determine which new records are selected. | |
var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1], i, k; | |
if (refilterFunction) { | |
for (i = 0; i < n1; ++i) { | |
if (!refilterFunction(newValues[i], k = newIndex[i] + n0)) filters[k] |= one; | |
} | |
} else { | |
for (i = 0; i < lo1; ++i) filters[newIndex[i] + n0] |= one; | |
for (i = hi1; i < n1; ++i) filters[newIndex[i] + n0] |= one; | |
} | |
// If this dimension previously had no data, then we don't need to do the | |
// more expensive merge operation; use the new values and index as-is. | |
if (!n0) { | |
values = newValues; | |
index = newIndex; | |
lo0 = lo1; | |
hi0 = hi1; | |
return; | |
} | |
var oldValues = values, | |
oldIndex = index, | |
i0 = 0, | |
i1 = 0; | |
// Otherwise, create new arrays into which to merge new and old. | |
values = new Array(n); | |
index = crossfilter_index(n, n); | |
// Merge the old and new sorted values, and old and new index. | |
for (i = 0; i0 < n0 && i1 < n1; ++i) { | |
if (oldValues[i0] < newValues[i1]) { | |
values[i] = oldValues[i0]; | |
index[i] = oldIndex[i0++]; | |
} else { | |
values[i] = newValues[i1]; | |
index[i] = newIndex[i1++] + n0; | |
} | |
} | |
// Add any remaining old values. | |
for (; i0 < n0; ++i0, ++i) { | |
values[i] = oldValues[i0]; | |
index[i] = oldIndex[i0]; | |
} | |
// Add any remaining new values. | |
for (; i1 < n1; ++i1, ++i) { | |
values[i] = newValues[i1]; | |
index[i] = newIndex[i1] + n0; | |
} | |
// Bisect again to recompute lo0 and hi0. | |
bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1]; | |
} | |
// When all filters have updated, notify index listeners of the new values. | |
function postAdd(newData, n0, n1) { | |
indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); }); | |
newValues = newIndex = null; | |
} | |
// Updates the selected values based on the specified bounds [lo, hi]. | |
// This implementation is used by all the public filter methods. | |
function filterIndexBounds(bounds) { | |
var lo1 = bounds[0], | |
hi1 = bounds[1]; | |
if (refilterFunction) { | |
refilterFunction = null; | |
filterIndexFunction(function(d, i) { return lo1 <= i && i < hi1; }); | |
lo0 = lo1; | |
hi0 = hi1; | |
return dimension; | |
} | |
var i, | |
j, | |
k, | |
added = [], | |
removed = []; | |
// Fast incremental update based on previous lo index. | |
if (lo1 < lo0) { | |
for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) { | |
filters[k = index[i]] ^= one; | |
added.push(k); | |
} | |
} else if (lo1 > lo0) { | |
for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) { | |
filters[k = index[i]] ^= one; | |
removed.push(k); | |
} | |
} | |
// Fast incremental update based on previous hi index. | |
if (hi1 > hi0) { | |
for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) { | |
filters[k = index[i]] ^= one; | |
added.push(k); | |
} | |
} else if (hi1 < hi0) { | |
for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) { | |
filters[k = index[i]] ^= one; | |
removed.push(k); | |
} | |
} | |
lo0 = lo1; | |
hi0 = hi1; | |
filterListeners.forEach(function(l) { l(one, added, removed); }); | |
return dimension; | |
} | |
// Filters this dimension using the specified range, value, or null. | |
// If the range is null, this is equivalent to filterAll. | |
// If the range is an array, this is equivalent to filterRange. | |
// Otherwise, this is equivalent to filterExact. | |
function filter(range) { | |
return range == null | |
? filterAll() : Array.isArray(range) | |
? filterRange(range) : typeof range === "function" | |
? filterFunction(range) | |
: filterExact(range); | |
} | |
// Filters this dimension to select the exact value. | |
function filterExact(value) { | |
return filterIndexBounds((refilter = crossfilter_filterExact(bisect, value))(values)); | |
} | |
// Filters this dimension to select the specified range [lo, hi]. | |
// The lower bound is inclusive, and the upper bound is exclusive. | |
function filterRange(range) { | |
return filterIndexBounds((refilter = crossfilter_filterRange(bisect, range))(values)); | |
} | |
// Clears any filters on this dimension. | |
function filterAll() { | |
return filterIndexBounds((refilter = crossfilter_filterAll)(values)); | |
} | |
// Filters this dimension using an arbitrary function. | |
function filterFunction(f) { | |
refilter = crossfilter_filterAll; | |
filterIndexFunction(refilterFunction = f); | |
lo0 = 0; | |
hi0 = n; | |
return dimension; | |
} | |
function filterIndexFunction(f) { | |
var i, | |
k, | |
x, | |
added = [], | |
removed = []; | |
for (i = 0; i < n; ++i) { | |
if (!(filters[k = index[i]] & one) ^ (x = f(values[i], k))) { | |
if (x) filters[k] &= zero, added.push(k); | |
else filters[k] |= one, removed.push(k); | |
} | |
} | |
filterListeners.forEach(function(l) { l(one, added, removed); }); | |
} | |
// Returns the top K selected records based on this dimension's order. | |
// Note: observes this dimension's filter, unlike group and groupAll. | |
function top(k) { | |
var array = [], | |
i = hi0, | |
j; | |
while (--i >= lo0 && k > 0) { | |
if (!filters[j = index[i]]) { | |
array.push(data[j]); | |
--k; | |
} | |
} | |
return array; | |
} | |
// Returns the bottom K selected records based on this dimension's order. | |
// Note: observes this dimension's filter, unlike group and groupAll. | |
function bottom(k) { | |
var array = [], | |
i = lo0, | |
j; | |
while (i < hi0 && k > 0) { | |
if (!filters[j = index[i]]) { | |
array.push(data[j]); | |
--k; | |
} | |
i++; | |
} | |
return array; | |
} | |
// Adds a new group to this dimension, using the specified key function. | |
function group(key) { | |
var group = { | |
top: top, | |
all: all, | |
reduce: reduce, | |
reduceCount: reduceCount, | |
reduceSum: reduceSum, | |
order: order, | |
orderNatural: orderNatural, | |
size: size, | |
remove: remove | |
}; | |
// Ensure that this group will be removed when the dimension is removed. | |
dimensionGroups.push(group); | |
var groups, // array of {key, value} | |
groupIndex, // object id ↦ group id | |
groupWidth = 8, | |
groupCapacity = crossfilter_capacity(groupWidth), | |
k = 0, // cardinality | |
select, | |
heap, | |
reduceAdd, | |
reduceRemove, | |
reduceInitial, | |
update = crossfilter_null, | |
reset = crossfilter_null, | |
resetNeeded = true; | |
if (arguments.length < 1) key = crossfilter_identity; | |
// The group listens to the crossfilter for when any dimension changes, so | |
// that it can update the associated reduce values. It must also listen to | |
// the parent dimension for when data is added, and compute new keys. | |
filterListeners.push(update); | |
indexListeners.push(add); | |
// Incorporate any existing data into the grouping. | |
add(values, index, 0, n); | |
// Incorporates the specified new values into this group. | |
// This function is responsible for updating groups and groupIndex. | |
function add(newValues, newIndex, n0, n1) { | |
var oldGroups = groups, | |
reIndex = crossfilter_index(k, groupCapacity), | |
add = reduceAdd, | |
initial = reduceInitial, | |
k0 = k, // old cardinality | |
i0 = 0, // index of old group | |
i1 = 0, // index of new record | |
j, // object id | |
g0, // old group | |
x0, // old key | |
x1, // new key | |
g, // group to add | |
x; // key of group to add | |
// If a reset is needed, we don't need to update the reduce values. | |
if (resetNeeded) add = initial = crossfilter_null; | |
// Reset the new groups (k is a lower bound). | |
// Also, make sure that groupIndex exists and is long enough. | |
groups = new Array(k), k = 0; | |
groupIndex = k0 > 1 ? crossfilter_arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity); | |
// Get the first old key (x0 of g0), if it exists. | |
if (k0) x0 = (g0 = oldGroups[0]).key; | |
// Find the first new key (x1), skipping NaN keys. | |
while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1; | |
// While new keys remain… | |
while (i1 < n1) { | |
// Determine the lesser of the two current keys; new and old. | |
// If there are no old keys remaining, then always add the new key. | |
if (g0 && x0 <= x1) { | |
g = g0, x = x0; | |
// Record the new index of the old group. | |
reIndex[i0] = k; | |
// Retrieve the next old key. | |
if (g0 = oldGroups[++i0]) x0 = g0.key; | |
} else { | |
g = {key: x1, value: initial()}, x = x1; | |
} | |
// Add the lesser group. | |
groups[k] = g; | |
// Add any selected records belonging to the added group, while | |
// advancing the new key and populating the associated group index. | |
while (!(x1 > x)) { | |
groupIndex[j = newIndex[i1] + n0] = k; | |
if (!(filters[j] & zero)) g.value = add(g.value, data[j]); | |
if (++i1 >= n1) break; | |
x1 = key(newValues[i1]); | |
} | |
groupIncrement(); | |
} | |
// Add any remaining old groups that were greater than all new keys. | |
// No incremental reduce is needed; these groups have no new records. | |
// Also record the new index of the old group. | |
while (i0 < k0) { | |
groups[reIndex[i0] = k] = oldGroups[i0++]; | |
groupIncrement(); | |
} | |
// If we added any new groups before any old groups, | |
// update the group index of all the old records. | |
if (k > i0) for (i0 = 0; i0 < n0; ++i0) { | |
groupIndex[i0] = reIndex[groupIndex[i0]]; | |
} | |
// Modify the update and reset behavior based on the cardinality. | |
// If the cardinality is less than or equal to one, then the groupIndex | |
// is not needed. If the cardinality is zero, then there are no records | |
// and therefore no groups to update or reset. Note that we also must | |
// change the registered listener to point to the new method. | |
j = filterListeners.indexOf(update); | |
if (k > 1) { | |
update = updateMany; | |
reset = resetMany; | |
} else { | |
if (k === 1) { | |
update = updateOne; | |
reset = resetOne; | |
} else { | |
update = crossfilter_null; | |
reset = crossfilter_null; | |
} | |
groupIndex = null; | |
} | |
filterListeners[j] = update; | |
// Count the number of added groups, | |
// and widen the group index as needed. | |
function groupIncrement() { | |
if (++k === groupCapacity) { | |
reIndex = crossfilter_arrayWiden(reIndex, groupWidth <<= 1); | |
groupIndex = crossfilter_arrayWiden(groupIndex, groupWidth); | |
groupCapacity = crossfilter_capacity(groupWidth); | |
} | |
} | |
} | |
// Reduces the specified selected or deselected records. | |
// This function is only used when the cardinality is greater than 1. | |
function updateMany(filterOne, added, removed) { | |
if (filterOne === one || resetNeeded) return; | |
var i, | |
k, | |
n, | |
g; | |
// Add the added values. | |
for (i = 0, n = added.length; i < n; ++i) { | |
if (!(filters[k = added[i]] & zero)) { | |
g = groups[groupIndex[k]]; | |
g.value = reduceAdd(g.value, data[k]); | |
} | |
} | |
// Remove the removed values. | |
for (i = 0, n = removed.length; i < n; ++i) { | |
if ((filters[k = removed[i]] & zero) === filterOne) { | |
g = groups[groupIndex[k]]; | |
g.value = reduceRemove(g.value, data[k]); | |
} | |
} | |
} | |
// Reduces the specified selected or deselected records. | |
// This function is only used when the cardinality is 1. | |
function updateOne(filterOne, added, removed) { | |
if (filterOne === one || resetNeeded) return; | |
var i, | |
k, | |
n, | |
g = groups[0]; | |
// Add the added values. | |
for (i = 0, n = added.length; i < n; ++i) { | |
if (!(filters[k = added[i]] & zero)) { | |
g.value = reduceAdd(g.value, data[k]); | |
} | |
} | |
// Remove the removed values. | |
for (i = 0, n = removed.length; i < n; ++i) { | |
if ((filters[k = removed[i]] & zero) === filterOne) { | |
g.value = reduceRemove(g.value, data[k]); | |
} | |
} | |
} | |
// Recomputes the group reduce values from scratch. | |
// This function is only used when the cardinality is greater than 1. | |
function resetMany() { | |
var i, | |
g; | |
// Reset all group values. | |
for (i = 0; i < k; ++i) { | |
groups[i].value = reduceInitial(); | |
} | |
// Add any selected records. | |
for (i = 0; i < n; ++i) { | |
if (!(filters[i] & zero)) { | |
g = groups[groupIndex[i]]; | |
g.value = reduceAdd(g.value, data[i]); | |
} | |
} | |
} | |
// Recomputes the group reduce values from scratch. | |
// This function is only used when the cardinality is 1. | |
function resetOne() { | |
var i, | |
g = groups[0]; | |
// Reset the singleton group values. | |
g.value = reduceInitial(); | |
// Add any selected records. | |
for (i = 0; i < n; ++i) { | |
if (!(filters[i] & zero)) { | |
g.value = reduceAdd(g.value, data[i]); | |
} | |
} | |
} | |
// Returns the array of group values, in the dimension's natural order. | |
function all() { | |
if (resetNeeded) reset(), resetNeeded = false; | |
return groups; | |
} | |
// Returns a new array containing the top K group values, in reduce order. | |
function top(k) { | |
var top = select(all(), 0, groups.length, k); | |
return heap.sort(top, 0, top.length); | |
} | |
// Sets the reduce behavior for this group to use the specified functions. | |
// This method lazily recomputes the reduce values, waiting until needed. | |
function reduce(add, remove, initial) { | |
reduceAdd = add; | |
reduceRemove = remove; | |
reduceInitial = initial; | |
resetNeeded = true; | |
return group; | |
} | |
// A convenience method for reducing by count. | |
function reduceCount() { | |
return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero); | |
} | |
// A convenience method for reducing by sum(value). | |
function reduceSum(value) { | |
return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero); | |
} | |
// Sets the reduce order, using the specified accessor. | |
function order(value) { | |
select = heapselect_by(valueOf); | |
heap = heap_by(valueOf); | |
function valueOf(d) { return value(d.value); } | |
return group; | |
} | |
// A convenience method for natural ordering by reduce value. | |
function orderNatural() { | |
return order(crossfilter_identity); | |
} | |
// Returns the cardinality of this group, irrespective of any filters. | |
function size() { | |
return k; | |
} | |
// Removes this group and associated event listeners. | |
function remove() { | |
var i = filterListeners.indexOf(update); | |
if (i >= 0) filterListeners.splice(i, 1); | |
i = indexListeners.indexOf(add); | |
if (i >= 0) indexListeners.splice(i, 1); | |
return group; | |
} | |
return reduceCount().orderNatural(); | |
} | |
// A convenience function for generating a singleton group. | |
function groupAll() { | |
var g = group(crossfilter_null), all = g.all; | |
delete g.all; | |
delete g.top; | |
delete g.order; | |
delete g.orderNatural; | |
delete g.size; | |
g.value = function() { return all()[0].value; }; | |
return g; | |
} | |
function remove() { | |
dimensionGroups.forEach(function(group) { group.remove(); }); | |
var i = dataListeners.indexOf(preAdd); | |
if (i >= 0) dataListeners.splice(i, 1); | |
i = dataListeners.indexOf(postAdd); | |
if (i >= 0) dataListeners.splice(i, 1); | |
for (i = 0; i < n; ++i) filters[i] &= zero; | |
m &= zero; | |
return dimension; | |
} | |
return dimension; | |
} | |
// A convenience method for groupAll on a dummy dimension. | |
// This implementation can be optimized since it always has cardinality 1. | |
function groupAll() { | |
var group = { | |
reduce: reduce, | |
reduceCount: reduceCount, | |
reduceSum: reduceSum, | |
value: value, | |
remove: remove | |
}; | |
var reduceValue, | |
reduceAdd, | |
reduceRemove, | |
reduceInitial, | |
resetNeeded = true; | |
// The group listens to the crossfilter for when any dimension changes, so | |
// that it can update the reduce value. It must also listen to the parent | |
// dimension for when data is added. | |
filterListeners.push(update); | |
dataListeners.push(add); | |
// For consistency; actually a no-op since resetNeeded is true. | |
add(data, 0, n); | |
// Incorporates the specified new values into this group. | |
function add(newData, n0) { | |
var i; | |
if (resetNeeded) return; | |
// Add the added values. | |
for (i = n0; i < n; ++i) { | |
if (!filters[i]) { | |
reduceValue = reduceAdd(reduceValue, data[i]); | |
} | |
} | |
} | |
// Reduces the specified selected or deselected records. | |
function update(filterOne, added, removed) { | |
var i, | |
k, | |
n; | |
if (resetNeeded) return; | |
// Add the added values. | |
for (i = 0, n = added.length; i < n; ++i) { | |
if (!filters[k = added[i]]) { | |
reduceValue = reduceAdd(reduceValue, data[k]); | |
} | |
} | |
// Remove the removed values. | |
for (i = 0, n = removed.length; i < n; ++i) { | |
if (filters[k = removed[i]] === filterOne) { | |
reduceValue = reduceRemove(reduceValue, data[k]); | |
} | |
} | |
} | |
// Recomputes the group reduce value from scratch. | |
function reset() { | |
var i; | |
reduceValue = reduceInitial(); | |
for (i = 0; i < n; ++i) { | |
if (!filters[i]) { | |
reduceValue = reduceAdd(reduceValue, data[i]); | |
} | |
} | |
} | |
// Sets the reduce behavior for this group to use the specified functions. | |
// This method lazily recomputes the reduce value, waiting until needed. | |
function reduce(add, remove, initial) { | |
reduceAdd = add; | |
reduceRemove = remove; | |
reduceInitial = initial; | |
resetNeeded = true; | |
return group; | |
} | |
// A convenience method for reducing by count. | |
function reduceCount() { | |
return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero); | |
} | |
// A convenience method for reducing by sum(value). | |
function reduceSum(value) { | |
return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero); | |
} | |
// Returns the computed reduce value. | |
function value() { | |
if (resetNeeded) reset(), resetNeeded = false; | |
return reduceValue; | |
} | |
// Removes this group and associated event listeners. | |
function remove() { | |
var i = filterListeners.indexOf(update); | |
if (i >= 0) filterListeners.splice(i); | |
i = dataListeners.indexOf(add); | |
if (i >= 0) dataListeners.splice(i); | |
return group; | |
} | |
return reduceCount(); | |
} | |
// Returns the number of records in this crossfilter, irrespective of any filters. | |
function size() { | |
return n; | |
} | |
return arguments.length | |
? add(arguments[0]) | |
: crossfilter; | |
} | |
// Returns an array of size n, big enough to store ids up to m. | |
function crossfilter_index(n, m) { | |
return (m < 0x101 | |
? crossfilter_array8 : m < 0x10001 | |
? crossfilter_array16 | |
: crossfilter_array32)(n); | |
} | |
// Constructs a new array of size n, with sequential values from 0 to n - 1. | |
function crossfilter_range(n) { | |
var range = crossfilter_index(n, n); | |
for (var i = -1; ++i < n;) range[i] = i; | |
return range; | |
} | |
function crossfilter_capacity(w) { | |
return w === 8 | |
? 0x100 : w === 16 | |
? 0x10000 | |
: 0x100000000; | |
} | |
})(this); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
d3 = function() { | |
var d3 = { | |
version: "3.2.3" | |
}; | |
if (!Date.now) Date.now = function() { | |
return +new Date(); | |
}; | |
var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window; | |
try { | |
d3_document.createElement("div").style.setProperty("opacity", 0, ""); | |
} catch (error) { | |
var d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty; | |
d3_style_prototype.setProperty = function(name, value, priority) { | |
d3_style_setProperty.call(this, name, value + "", priority); | |
}; | |
} | |
d3.ascending = function(a, b) { | |
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; | |
}; | |
d3.descending = function(a, b) { | |
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; | |
}; | |
d3.min = function(array, f) { | |
var i = -1, n = array.length, a, b; | |
if (arguments.length === 1) { | |
while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined; | |
while (++i < n) if ((b = array[i]) != null && a > b) a = b; | |
} else { | |
while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined; | |
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b; | |
} | |
return a; | |
}; | |
d3.max = function(array, f) { | |
var i = -1, n = array.length, a, b; | |
if (arguments.length === 1) { | |
while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined; | |
while (++i < n) if ((b = array[i]) != null && b > a) a = b; | |
} else { | |
while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined; | |
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b; | |
} | |
return a; | |
}; | |
d3.extent = function(array, f) { | |
var i = -1, n = array.length, a, b, c; | |
if (arguments.length === 1) { | |
while (++i < n && !((a = c = array[i]) != null && a <= a)) a = c = undefined; | |
while (++i < n) if ((b = array[i]) != null) { | |
if (a > b) a = b; | |
if (c < b) c = b; | |
} | |
} else { | |
while (++i < n && !((a = c = f.call(array, array[i], i)) != null && a <= a)) a = undefined; | |
while (++i < n) if ((b = f.call(array, array[i], i)) != null) { | |
if (a > b) a = b; | |
if (c < b) c = b; | |
} | |
} | |
return [ a, c ]; | |
}; | |
d3.sum = function(array, f) { | |
var s = 0, n = array.length, a, i = -1; | |
if (arguments.length === 1) { | |
while (++i < n) if (!isNaN(a = +array[i])) s += a; | |
} else { | |
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a; | |
} | |
return s; | |
}; | |
function d3_number(x) { | |
return x != null && !isNaN(x); | |
} | |
d3.mean = function(array, f) { | |
var n = array.length, a, m = 0, i = -1, j = 0; | |
if (arguments.length === 1) { | |
while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j; | |
} else { | |
while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j; | |
} | |
return j ? m : undefined; | |
}; | |
d3.quantile = function(values, p) { | |
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h; | |
return e ? v + e * (values[h] - v) : v; | |
}; | |
d3.median = function(array, f) { | |
if (arguments.length > 1) array = array.map(f); | |
array = array.filter(d3_number); | |
return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined; | |
}; | |
d3.bisector = function(f) { | |
return { | |
left: function(a, x, lo, hi) { | |
if (arguments.length < 3) lo = 0; | |
if (arguments.length < 4) hi = a.length; | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid; | |
} | |
return lo; | |
}, | |
right: function(a, x, lo, hi) { | |
if (arguments.length < 3) lo = 0; | |
if (arguments.length < 4) hi = a.length; | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1; | |
} | |
return lo; | |
} | |
}; | |
}; | |
var d3_bisector = d3.bisector(function(d) { | |
return d; | |
}); | |
d3.bisectLeft = d3_bisector.left; | |
d3.bisect = d3.bisectRight = d3_bisector.right; | |
d3.shuffle = function(array) { | |
var m = array.length, t, i; | |
while (m) { | |
i = Math.random() * m-- | 0; | |
t = array[m], array[m] = array[i], array[i] = t; | |
} | |
return array; | |
}; | |
d3.permute = function(array, indexes) { | |
var permutes = [], i = -1, n = indexes.length; | |
while (++i < n) permutes[i] = array[indexes[i]]; | |
return permutes; | |
}; | |
d3.zip = function() { | |
if (!(n = arguments.length)) return []; | |
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) { | |
for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) { | |
zip[j] = arguments[j][i]; | |
} | |
} | |
return zips; | |
}; | |
function d3_zipLength(d) { | |
return d.length; | |
} | |
d3.transpose = function(matrix) { | |
return d3.zip.apply(d3, matrix); | |
}; | |
d3.keys = function(map) { | |
var keys = []; | |
for (var key in map) keys.push(key); | |
return keys; | |
}; | |
d3.values = function(map) { | |
var values = []; | |
for (var key in map) values.push(map[key]); | |
return values; | |
}; | |
d3.entries = function(map) { | |
var entries = []; | |
for (var key in map) entries.push({ | |
key: key, | |
value: map[key] | |
}); | |
return entries; | |
}; | |
d3.merge = function(arrays) { | |
return Array.prototype.concat.apply([], arrays); | |
}; | |
d3.range = function(start, stop, step) { | |
if (arguments.length < 3) { | |
step = 1; | |
if (arguments.length < 2) { | |
stop = start; | |
start = 0; | |
} | |
} | |
if ((stop - start) / step === Infinity) throw new Error("infinite range"); | |
var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j; | |
start *= k, stop *= k, step *= k; | |
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k); | |
return range; | |
}; | |
function d3_range_integerScale(x) { | |
var k = 1; | |
while (x * k % 1) k *= 10; | |
return k; | |
} | |
function d3_class(ctor, properties) { | |
try { | |
for (var key in properties) { | |
Object.defineProperty(ctor.prototype, key, { | |
value: properties[key], | |
enumerable: false | |
}); | |
} | |
} catch (e) { | |
ctor.prototype = properties; | |
} | |
} | |
d3.map = function(object) { | |
var map = new d3_Map(); | |
for (var key in object) map.set(key, object[key]); | |
return map; | |
}; | |
function d3_Map() {} | |
d3_class(d3_Map, { | |
has: function(key) { | |
return d3_map_prefix + key in this; | |
}, | |
get: function(key) { | |
return this[d3_map_prefix + key]; | |
}, | |
set: function(key, value) { | |
return this[d3_map_prefix + key] = value; | |
}, | |
remove: function(key) { | |
key = d3_map_prefix + key; | |
return key in this && delete this[key]; | |
}, | |
keys: function() { | |
var keys = []; | |
this.forEach(function(key) { | |
keys.push(key); | |
}); | |
return keys; | |
}, | |
values: function() { | |
var values = []; | |
this.forEach(function(key, value) { | |
values.push(value); | |
}); | |
return values; | |
}, | |
entries: function() { | |
var entries = []; | |
this.forEach(function(key, value) { | |
entries.push({ | |
key: key, | |
value: value | |
}); | |
}); | |
return entries; | |
}, | |
forEach: function(f) { | |
for (var key in this) { | |
if (key.charCodeAt(0) === d3_map_prefixCode) { | |
f.call(this, key.substring(1), this[key]); | |
} | |
} | |
} | |
}); | |
var d3_map_prefix = "\0", d3_map_prefixCode = d3_map_prefix.charCodeAt(0); | |
d3.nest = function() { | |
var nest = {}, keys = [], sortKeys = [], sortValues, rollup; | |
function map(mapType, array, depth) { | |
if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array; | |
var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values; | |
while (++i < n) { | |
if (values = valuesByKey.get(keyValue = key(object = array[i]))) { | |
values.push(object); | |
} else { | |
valuesByKey.set(keyValue, [ object ]); | |
} | |
} | |
if (mapType) { | |
object = mapType(); | |
setter = function(keyValue, values) { | |
object.set(keyValue, map(mapType, values, depth)); | |
}; | |
} else { | |
object = {}; | |
setter = function(keyValue, values) { | |
object[keyValue] = map(mapType, values, depth); | |
}; | |
} | |
valuesByKey.forEach(setter); | |
return object; | |
} | |
function entries(map, depth) { | |
if (depth >= keys.length) return map; | |
var array = [], sortKey = sortKeys[depth++]; | |
map.forEach(function(key, keyMap) { | |
array.push({ | |
key: key, | |
values: entries(keyMap, depth) | |
}); | |
}); | |
return sortKey ? array.sort(function(a, b) { | |
return sortKey(a.key, b.key); | |
}) : array; | |
} | |
nest.map = function(array, mapType) { | |
return map(mapType, array, 0); | |
}; | |
nest.entries = function(array) { | |
return entries(map(d3.map, array, 0), 0); | |
}; | |
nest.key = function(d) { | |
keys.push(d); | |
return nest; | |
}; | |
nest.sortKeys = function(order) { | |
sortKeys[keys.length - 1] = order; | |
return nest; | |
}; | |
nest.sortValues = function(order) { | |
sortValues = order; | |
return nest; | |
}; | |
nest.rollup = function(f) { | |
rollup = f; | |
return nest; | |
}; | |
return nest; | |
}; | |
d3.set = function(array) { | |
var set = new d3_Set(); | |
if (array) for (var i = 0; i < array.length; i++) set.add(array[i]); | |
return set; | |
}; | |
function d3_Set() {} | |
d3_class(d3_Set, { | |
has: function(value) { | |
return d3_map_prefix + value in this; | |
}, | |
add: function(value) { | |
this[d3_map_prefix + value] = true; | |
return value; | |
}, | |
remove: function(value) { | |
value = d3_map_prefix + value; | |
return value in this && delete this[value]; | |
}, | |
values: function() { | |
var values = []; | |
this.forEach(function(value) { | |
values.push(value); | |
}); | |
return values; | |
}, | |
forEach: function(f) { | |
for (var value in this) { | |
if (value.charCodeAt(0) === d3_map_prefixCode) { | |
f.call(this, value.substring(1)); | |
} | |
} | |
} | |
}); | |
d3.behavior = {}; | |
d3.rebind = function(target, source) { | |
var i = 1, n = arguments.length, method; | |
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]); | |
return target; | |
}; | |
function d3_rebind(target, source, method) { | |
return function() { | |
var value = method.apply(source, arguments); | |
return value === source ? target : value; | |
}; | |
} | |
function d3_vendorSymbol(object, name) { | |
if (name in object) return name; | |
name = name.charAt(0).toUpperCase() + name.substring(1); | |
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) { | |
var prefixName = d3_vendorPrefixes[i] + name; | |
if (prefixName in object) return prefixName; | |
} | |
} | |
var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ]; | |
var d3_array = d3_arraySlice; | |
function d3_arrayCopy(pseudoarray) { | |
var i = -1, n = pseudoarray.length, array = []; | |
while (++i < n) array.push(pseudoarray[i]); | |
return array; | |
} | |
function d3_arraySlice(pseudoarray) { | |
return Array.prototype.slice.call(pseudoarray); | |
} | |
try { | |
d3_array(d3_documentElement.childNodes)[0].nodeType; | |
} catch (e) { | |
d3_array = d3_arrayCopy; | |
} | |
function d3_noop() {} | |
d3.dispatch = function() { | |
var dispatch = new d3_dispatch(), i = -1, n = arguments.length; | |
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); | |
return dispatch; | |
}; | |
function d3_dispatch() {} | |
d3_dispatch.prototype.on = function(type, listener) { | |
var i = type.indexOf("."), name = ""; | |
if (i >= 0) { | |
name = type.substring(i + 1); | |
type = type.substring(0, i); | |
} | |
if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener); | |
if (arguments.length === 2) { | |
if (listener == null) for (type in this) { | |
if (this.hasOwnProperty(type)) this[type].on(name, null); | |
} | |
return this; | |
} | |
}; | |
function d3_dispatch_event(dispatch) { | |
var listeners = [], listenerByName = new d3_Map(); | |
function event() { | |
var z = listeners, i = -1, n = z.length, l; | |
while (++i < n) if (l = z[i].on) l.apply(this, arguments); | |
return dispatch; | |
} | |
event.on = function(name, listener) { | |
var l = listenerByName.get(name), i; | |
if (arguments.length < 2) return l && l.on; | |
if (l) { | |
l.on = null; | |
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); | |
listenerByName.remove(name); | |
} | |
if (listener) listeners.push(listenerByName.set(name, { | |
on: listener | |
})); | |
return dispatch; | |
}; | |
return event; | |
} | |
d3.event = null; | |
function d3_eventPreventDefault() { | |
d3.event.preventDefault(); | |
} | |
function d3_eventSource() { | |
var e = d3.event, s; | |
while (s = e.sourceEvent) e = s; | |
return e; | |
} | |
function d3_eventDispatch(target) { | |
var dispatch = new d3_dispatch(), i = 0, n = arguments.length; | |
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); | |
dispatch.of = function(thiz, argumentz) { | |
return function(e1) { | |
try { | |
var e0 = e1.sourceEvent = d3.event; | |
e1.target = target; | |
d3.event = e1; | |
dispatch[e1.type].apply(thiz, argumentz); | |
} finally { | |
d3.event = e0; | |
} | |
}; | |
}; | |
return dispatch; | |
} | |
d3.requote = function(s) { | |
return s.replace(d3_requote_re, "\\$&"); | |
}; | |
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; | |
var d3_subclass = {}.__proto__ ? function(object, prototype) { | |
object.__proto__ = prototype; | |
} : function(object, prototype) { | |
for (var property in prototype) object[property] = prototype[property]; | |
}; | |
function d3_selection(groups) { | |
d3_subclass(groups, d3_selectionPrototype); | |
return groups; | |
} | |
var d3_select = function(s, n) { | |
return n.querySelector(s); | |
}, d3_selectAll = function(s, n) { | |
return n.querySelectorAll(s); | |
}, d3_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) { | |
return d3_selectMatcher.call(n, s); | |
}; | |
if (typeof Sizzle === "function") { | |
d3_select = function(s, n) { | |
return Sizzle(s, n)[0] || null; | |
}; | |
d3_selectAll = function(s, n) { | |
return Sizzle.uniqueSort(Sizzle(s, n)); | |
}; | |
d3_selectMatches = Sizzle.matchesSelector; | |
} | |
d3.selection = function() { | |
return d3_selectionRoot; | |
}; | |
var d3_selectionPrototype = d3.selection.prototype = []; | |
d3_selectionPrototype.select = function(selector) { | |
var subgroups = [], subgroup, subnode, group, node; | |
selector = d3_selection_selector(selector); | |
for (var j = -1, m = this.length; ++j < m; ) { | |
subgroups.push(subgroup = []); | |
subgroup.parentNode = (group = this[j]).parentNode; | |
for (var i = -1, n = group.length; ++i < n; ) { | |
if (node = group[i]) { | |
subgroup.push(subnode = selector.call(node, node.__data__, i)); | |
if (subnode && "__data__" in node) subnode.__data__ = node.__data__; | |
} else { | |
subgroup.push(null); | |
} | |
} | |
} | |
return d3_selection(subgroups); | |
}; | |
function d3_selection_selector(selector) { | |
return typeof selector === "function" ? selector : function() { | |
return d3_select(selector, this); | |
}; | |
} | |
d3_selectionPrototype.selectAll = function(selector) { | |
var subgroups = [], subgroup, node; | |
selector = d3_selection_selectorAll(selector); | |
for (var j = -1, m = this.length; ++j < m; ) { | |
for (var group = this[j], i = -1, n = group.length; ++i < n; ) { | |
if (node = group[i]) { | |
subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i))); | |
subgroup.parentNode = node; | |
} | |
} | |
} | |
return d3_selection(subgroups); | |
}; | |
function d3_selection_selectorAll(selector) { | |
return typeof selector === "function" ? selector : function() { | |
return d3_selectAll(selector, this); | |
}; | |
} | |
var d3_nsPrefix = { | |
svg: "http://www.w3.org/2000/svg", | |
xhtml: "http://www.w3.org/1999/xhtml", | |
xlink: "http://www.w3.org/1999/xlink", | |
xml: "http://www.w3.org/XML/1998/namespace", | |
xmlns: "http://www.w3.org/2000/xmlns/" | |
}; | |
d3.ns = { | |
prefix: d3_nsPrefix, | |
qualify: function(name) { | |
var i = name.indexOf(":"), prefix = name; | |
if (i >= 0) { | |
prefix = name.substring(0, i); | |
name = name.substring(i + 1); | |
} | |
return d3_nsPrefix.hasOwnProperty(prefix) ? { | |
space: d3_nsPrefix[prefix], | |
local: name | |
} : name; | |
} | |
}; | |
d3_selectionPrototype.attr = function(name, value) { | |
if (arguments.length < 2) { | |
if (typeof name === "string") { | |
var node = this.node(); | |
name = d3.ns.qualify(name); | |
return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name); | |
} | |
for (value in name) this.each(d3_selection_attr(value, name[value])); | |
return this; | |
} | |
return this.each(d3_selection_attr(name, value)); | |
}; | |
function d3_selection_attr(name, value) { | |
name = d3.ns.qualify(name); | |
function attrNull() { | |
this.removeAttribute(name); | |
} | |
function attrNullNS() { | |
this.removeAttributeNS(name.space, name.local); | |
} | |
function attrConstant() { | |
this.setAttribute(name, value); | |
} | |
function attrConstantNS() { | |
this.setAttributeNS(name.space, name.local, value); | |
} | |
function attrFunction() { | |
var x = value.apply(this, arguments); | |
if (x == null) this.removeAttribute(name); else this.setAttribute(name, x); | |
} | |
function attrFunctionNS() { | |
var x = value.apply(this, arguments); | |
if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x); | |
} | |
return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant; | |
} | |
function d3_collapse(s) { | |
return s.trim().replace(/\s+/g, " "); | |
} | |
d3_selectionPrototype.classed = function(name, value) { | |
if (arguments.length < 2) { | |
if (typeof name === "string") { | |
var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1; | |
if (value = node.classList) { | |
while (++i < n) if (!value.contains(name[i])) return false; | |
} else { | |
value = node.getAttribute("class"); | |
while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false; | |
} | |
return true; | |
} | |
for (value in name) this.each(d3_selection_classed(value, name[value])); | |
return this; | |
} | |
return this.each(d3_selection_classed(name, value)); | |
}; | |
function d3_selection_classedRe(name) { | |
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g"); | |
} | |
function d3_selection_classed(name, value) { | |
name = name.trim().split(/\s+/).map(d3_selection_classedName); | |
var n = name.length; | |
function classedConstant() { | |
var i = -1; | |
while (++i < n) name[i](this, value); | |
} | |
function classedFunction() { | |
var i = -1, x = value.apply(this, arguments); | |
while (++i < n) name[i](this, x); | |
} | |
return typeof value === "function" ? classedFunction : classedConstant; | |
} | |
function d3_selection_classedName(name) { | |
var re = d3_selection_classedRe(name); | |
return function(node, value) { | |
if (c = node.classList) return value ? c.add(name) : c.remove(name); | |
var c = node.getAttribute("class") || ""; | |
if (value) { | |
re.lastIndex = 0; | |
if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name)); | |
} else { | |
node.setAttribute("class", d3_collapse(c.replace(re, " "))); | |
} | |
}; | |
} | |
d3_selectionPrototype.style = function(name, value, priority) { | |
var n = arguments.length; | |
if (n < 3) { | |
if (typeof name !== "string") { | |
if (n < 2) value = ""; | |
for (priority in name) this.each(d3_selection_style(priority, name[priority], value)); | |
return this; | |
} | |
if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name); | |
priority = ""; | |
} | |
return this.each(d3_selection_style(name, value, priority)); | |
}; | |
function d3_selection_style(name, value, priority) { | |
function styleNull() { | |
this.style.removeProperty(name); | |
} | |
function styleConstant() { | |
this.style.setProperty(name, value, priority); | |
} | |
function styleFunction() { | |
var x = value.apply(this, arguments); | |
if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority); | |
} | |
return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant; | |
} | |
d3_selectionPrototype.property = function(name, value) { | |
if (arguments.length < 2) { | |
if (typeof name === "string") return this.node()[name]; | |
for (value in name) this.each(d3_selection_property(value, name[value])); | |
return this; | |
} | |
return this.each(d3_selection_property(name, value)); | |
}; | |
function d3_selection_property(name, value) { | |
function propertyNull() { | |
delete this[name]; | |
} | |
function propertyConstant() { | |
this[name] = value; | |
} | |
function propertyFunction() { | |
var x = value.apply(this, arguments); | |
if (x == null) delete this[name]; else this[name] = x; | |
} | |
return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant; | |
} | |
d3_selectionPrototype.text = function(value) { | |
return arguments.length ? this.each(typeof value === "function" ? function() { | |
var v = value.apply(this, arguments); | |
this.textContent = v == null ? "" : v; | |
} : value == null ? function() { | |
this.textContent = ""; | |
} : function() { | |
this.textContent = value; | |
}) : this.node().textContent; | |
}; | |
d3_selectionPrototype.html = function(value) { | |
return arguments.length ? this.each(typeof value === "function" ? function() { | |
var v = value.apply(this, arguments); | |
this.innerHTML = v == null ? "" : v; | |
} : value == null ? function() { | |
this.innerHTML = ""; | |
} : function() { | |
this.innerHTML = value; | |
}) : this.node().innerHTML; | |
}; | |
d3_selectionPrototype.append = function(name) { | |
name = d3_selection_creator(name); | |
return this.select(function() { | |
return this.appendChild(name.apply(this, arguments)); | |
}); | |
}; | |
function d3_selection_creator(name) { | |
return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() { | |
return d3_document.createElementNS(name.space, name.local); | |
} : function() { | |
return d3_document.createElementNS(this.namespaceURI, name); | |
}; | |
} | |
d3_selectionPrototype.insert = function(name, before) { | |
name = d3_selection_creator(name); | |
before = d3_selection_selector(before); | |
return this.select(function() { | |
return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments)); | |
}); | |
}; | |
d3_selectionPrototype.remove = function() { | |
return this.each(function() { | |
var parent = this.parentNode; | |
if (parent) parent.removeChild(this); | |
}); | |
}; | |
d3_selectionPrototype.data = function(value, key) { | |
var i = -1, n = this.length, group, node; | |
if (!arguments.length) { | |
value = new Array(n = (group = this[0]).length); | |
while (++i < n) { | |
if (node = group[i]) { | |
value[i] = node.__data__; | |
} | |
} | |
return value; | |
} | |
function bind(group, groupData) { | |
var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData; | |
if (key) { | |
var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue; | |
for (i = -1; ++i < n; ) { | |
keyValue = key.call(node = group[i], node.__data__, i); | |
if (nodeByKeyValue.has(keyValue)) { | |
exitNodes[i] = node; | |
} else { | |
nodeByKeyValue.set(keyValue, node); | |
} | |
keyValues.push(keyValue); | |
} | |
for (i = -1; ++i < m; ) { | |
keyValue = key.call(groupData, nodeData = groupData[i], i); | |
if (node = nodeByKeyValue.get(keyValue)) { | |
updateNodes[i] = node; | |
node.__data__ = nodeData; | |
} else if (!dataByKeyValue.has(keyValue)) { | |
enterNodes[i] = d3_selection_dataNode(nodeData); | |
} | |
dataByKeyValue.set(keyValue, nodeData); | |
nodeByKeyValue.remove(keyValue); | |
} | |
for (i = -1; ++i < n; ) { | |
if (nodeByKeyValue.has(keyValues[i])) { | |
exitNodes[i] = group[i]; | |
} | |
} | |
} else { | |
for (i = -1; ++i < n0; ) { | |
node = group[i]; | |
nodeData = groupData[i]; | |
if (node) { | |
node.__data__ = nodeData; | |
updateNodes[i] = node; | |
} else { | |
enterNodes[i] = d3_selection_dataNode(nodeData); | |
} | |
} | |
for (;i < m; ++i) { | |
enterNodes[i] = d3_selection_dataNode(groupData[i]); | |
} | |
for (;i < n; ++i) { | |
exitNodes[i] = group[i]; | |
} | |
} | |
enterNodes.update = updateNodes; | |
enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode; | |
enter.push(enterNodes); | |
update.push(updateNodes); | |
exit.push(exitNodes); | |
} | |
var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]); | |
if (typeof value === "function") { | |
while (++i < n) { | |
bind(group = this[i], value.call(group, group.parentNode.__data__, i)); | |
} | |
} else { | |
while (++i < n) { | |
bind(group = this[i], value); | |
} | |
} | |
update.enter = function() { | |
return enter; | |
}; | |
update.exit = function() { | |
return exit; | |
}; | |
return update; | |
}; | |
function d3_selection_dataNode(data) { | |
return { | |
__data__: data | |
}; | |
} | |
d3_selectionPrototype.datum = function(value) { | |
return arguments.length ? this.property("__data__", value) : this.property("__data__"); | |
}; | |
d3_selectionPrototype.filter = function(filter) { | |
var subgroups = [], subgroup, group, node; | |
if (typeof filter !== "function") filter = d3_selection_filter(filter); | |
for (var j = 0, m = this.length; j < m; j++) { | |
subgroups.push(subgroup = []); | |
subgroup.parentNode = (group = this[j]).parentNode; | |
for (var i = 0, n = group.length; i < n; i++) { | |
if ((node = group[i]) && filter.call(node, node.__data__, i)) { | |
subgroup.push(node); | |
} | |
} | |
} | |
return d3_selection(subgroups); | |
}; | |
function d3_selection_filter(selector) { | |
return function() { | |
return d3_selectMatches(this, selector); | |
}; | |
} | |
d3_selectionPrototype.order = function() { | |
for (var j = -1, m = this.length; ++j < m; ) { | |
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) { | |
if (node = group[i]) { | |
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next); | |
next = node; | |
} | |
} | |
} | |
return this; | |
}; | |
d3_selectionPrototype.sort = function(comparator) { | |
comparator = d3_selection_sortComparator.apply(this, arguments); | |
for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator); | |
return this.order(); | |
}; | |
function d3_selection_sortComparator(comparator) { | |
if (!arguments.length) comparator = d3.ascending; | |
return function(a, b) { | |
return !a - !b || comparator(a.__data__, b.__data__); | |
}; | |
} | |
d3_selectionPrototype.each = function(callback) { | |
return d3_selection_each(this, function(node, i, j) { | |
callback.call(node, node.__data__, i, j); | |
}); | |
}; | |
function d3_selection_each(groups, callback) { | |
for (var j = 0, m = groups.length; j < m; j++) { | |
for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) { | |
if (node = group[i]) callback(node, i, j); | |
} | |
} | |
return groups; | |
} | |
d3_selectionPrototype.call = function(callback) { | |
var args = d3_array(arguments); | |
callback.apply(args[0] = this, args); | |
return this; | |
}; | |
d3_selectionPrototype.empty = function() { | |
return !this.node(); | |
}; | |
d3_selectionPrototype.node = function() { | |
for (var j = 0, m = this.length; j < m; j++) { | |
for (var group = this[j], i = 0, n = group.length; i < n; i++) { | |
var node = group[i]; | |
if (node) return node; | |
} | |
} | |
return null; | |
}; | |
d3_selectionPrototype.size = function() { | |
var n = 0; | |
this.each(function() { | |
++n; | |
}); | |
return n; | |
}; | |
function d3_selection_enter(selection) { | |
d3_subclass(selection, d3_selection_enterPrototype); | |
return selection; | |
} | |
var d3_selection_enterPrototype = []; | |
d3.selection.enter = d3_selection_enter; | |
d3.selection.enter.prototype = d3_selection_enterPrototype; | |
d3_selection_enterPrototype.append = d3_selectionPrototype.append; | |
d3_selection_enterPrototype.insert = d3_selectionPrototype.insert; | |
d3_selection_enterPrototype.empty = d3_selectionPrototype.empty; | |
d3_selection_enterPrototype.node = d3_selectionPrototype.node; | |
d3_selection_enterPrototype.call = d3_selectionPrototype.call; | |
d3_selection_enterPrototype.size = d3_selectionPrototype.size; | |
d3_selection_enterPrototype.select = function(selector) { | |
var subgroups = [], subgroup, subnode, upgroup, group, node; | |
for (var j = -1, m = this.length; ++j < m; ) { | |
upgroup = (group = this[j]).update; | |
subgroups.push(subgroup = []); | |
subgroup.parentNode = group.parentNode; | |
for (var i = -1, n = group.length; ++i < n; ) { | |
if (node = group[i]) { | |
subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i)); | |
subnode.__data__ = node.__data__; | |
} else { | |
subgroup.push(null); | |
} | |
} | |
} | |
return d3_selection(subgroups); | |
}; | |
d3_selectionPrototype.transition = function() { | |
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = Object.create(d3_transitionInherit); | |
transition.time = Date.now(); | |
for (var j = -1, m = this.length; ++j < m; ) { | |
subgroups.push(subgroup = []); | |
for (var group = this[j], i = -1, n = group.length; ++i < n; ) { | |
if (node = group[i]) d3_transitionNode(node, i, id, transition); | |
subgroup.push(node); | |
} | |
} | |
return d3_transition(subgroups, id); | |
}; | |
d3.select = function(node) { | |
var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ]; | |
group.parentNode = d3_documentElement; | |
return d3_selection([ group ]); | |
}; | |
d3.selectAll = function(nodes) { | |
var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes); | |
group.parentNode = d3_documentElement; | |
return d3_selection([ group ]); | |
}; | |
var d3_selectionRoot = d3.select(d3_documentElement); | |
d3_selectionPrototype.on = function(type, listener, capture) { | |
var n = arguments.length; | |
if (n < 3) { | |
if (typeof type !== "string") { | |
if (n < 2) listener = false; | |
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener)); | |
return this; | |
} | |
if (n < 2) return (n = this.node()["__on" + type]) && n._; | |
capture = false; | |
} | |
return this.each(d3_selection_on(type, listener, capture)); | |
}; | |
function d3_selection_on(type, listener, capture) { | |
var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener; | |
if (i > 0) type = type.substring(0, i); | |
var filter = d3_selection_onFilters.get(type); | |
if (filter) type = filter, wrap = d3_selection_onFilter; | |
function onRemove() { | |
var l = this[name]; | |
if (l) { | |
this.removeEventListener(type, l, l.$); | |
delete this[name]; | |
} | |
} | |
function onAdd() { | |
var l = wrap(listener, d3_array(arguments)); | |
onRemove.call(this); | |
this.addEventListener(type, this[name] = l, l.$ = capture); | |
l._ = listener; | |
} | |
function removeAll() { | |
var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match; | |
for (var name in this) { | |
if (match = name.match(re)) { | |
var l = this[name]; | |
this.removeEventListener(match[1], l, l.$); | |
delete this[name]; | |
} | |
} | |
} | |
return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll; | |
} | |
var d3_selection_onFilters = d3.map({ | |
mouseenter: "mouseover", | |
mouseleave: "mouseout" | |
}); | |
d3_selection_onFilters.forEach(function(k) { | |
if ("on" + k in d3_document) d3_selection_onFilters.remove(k); | |
}); | |
function d3_selection_onListener(listener, argumentz) { | |
return function(e) { | |
var o = d3.event; | |
d3.event = e; | |
argumentz[0] = this.__data__; | |
try { | |
listener.apply(this, argumentz); | |
} finally { | |
d3.event = o; | |
} | |
}; | |
} | |
function d3_selection_onFilter(listener, argumentz) { | |
var l = d3_selection_onListener(listener, argumentz); | |
return function(e) { | |
var target = this, related = e.relatedTarget; | |
if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) { | |
l.call(target, e); | |
} | |
}; | |
} | |
var d3_event_dragSelect = d3_vendorSymbol(d3_documentElement.style, "userSelect"); | |
function d3_event_dragSuppress(type) { | |
var selectstart = "selectstart." + type, dragstart = "dragstart." + type, click = "click." + type, w = d3.select(d3_window).on(selectstart, d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault), style = d3_documentElement.style, select = style[d3_event_dragSelect]; | |
style[d3_event_dragSelect] = "none"; | |
return function(suppressClick) { | |
w.on(selectstart, null).on(dragstart, null); | |
style[d3_event_dragSelect] = select; | |
if (suppressClick) { | |
function off() { | |
w.on(click, null); | |
} | |
w.on(click, function() { | |
d3_eventPreventDefault(); | |
off(); | |
}, true); | |
setTimeout(off, 0); | |
} | |
}; | |
} | |
d3.mouse = function(container) { | |
return d3_mousePoint(container, d3_eventSource()); | |
}; | |
var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0; | |
function d3_mousePoint(container, e) { | |
var svg = container.ownerSVGElement || container; | |
if (svg.createSVGPoint) { | |
var point = svg.createSVGPoint(); | |
if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) { | |
svg = d3.select("body").append("svg").style({ | |
position: "absolute", | |
top: 0, | |
left: 0, | |
margin: 0, | |
padding: 0, | |
border: "none" | |
}, "important"); | |
var ctm = svg[0][0].getScreenCTM(); | |
d3_mouse_bug44083 = !(ctm.f || ctm.e); | |
svg.remove(); | |
} | |
if (d3_mouse_bug44083) { | |
point.x = e.pageX; | |
point.y = e.pageY; | |
} else { | |
point.x = e.clientX; | |
point.y = e.clientY; | |
} | |
point = point.matrixTransform(container.getScreenCTM().inverse()); | |
return [ point.x, point.y ]; | |
} | |
var rect = container.getBoundingClientRect(); | |
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ]; | |
} | |
d3.touches = function(container, touches) { | |
if (arguments.length < 2) touches = d3_eventSource().touches; | |
return touches ? d3_array(touches).map(function(touch) { | |
var point = d3_mousePoint(container, touch); | |
point.identifier = touch.identifier; | |
return point; | |
}) : []; | |
}; | |
d3.behavior.drag = function() { | |
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null; | |
function drag() { | |
this.on("mousedown.drag", mousedown).on("touchstart.drag", mousedown); | |
} | |
function mousedown() { | |
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, offset, origin_ = point(), moved = 0, dragRestore = d3_event_dragSuppress(touchId != null ? "drag-" + touchId : "drag"); | |
var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true); | |
if (origin) { | |
offset = origin.apply(target, arguments); | |
offset = [ offset.x - origin_[0], offset.y - origin_[1] ]; | |
} else { | |
offset = [ 0, 0 ]; | |
} | |
event_({ | |
type: "dragstart" | |
}); | |
function point() { | |
var p = target.parentNode; | |
return touchId != null ? d3.touches(p).filter(function(p) { | |
return p.identifier === touchId; | |
})[0] : d3.mouse(p); | |
} | |
function dragmove() { | |
if (!target.parentNode) return dragend(); | |
var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1]; | |
moved |= dx | dy; | |
origin_ = p; | |
event_({ | |
type: "drag", | |
x: p[0] + offset[0], | |
y: p[1] + offset[1], | |
dx: dx, | |
dy: dy | |
}); | |
} | |
function dragend() { | |
w.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null); | |
dragRestore(moved && d3.event.target === eventTarget); | |
event_({ | |
type: "dragend" | |
}); | |
} | |
} | |
drag.origin = function(x) { | |
if (!arguments.length) return origin; | |
origin = x; | |
return drag; | |
}; | |
return d3.rebind(drag, event, "on"); | |
}; | |
d3.behavior.zoom = function() { | |
var translate = [ 0, 0 ], translate0, scale = 1, distance0, scale0, scaleExtent = d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0, y1, touchtime; | |
function zoom() { | |
this.on("mousedown.zoom", mousedown).on("mousemove.zoom", mousemove).on(d3_behavior_zoomWheel + ".zoom", mousewheel).on("dblclick.zoom", dblclick).on("touchstart.zoom", touchstart).on("touchmove.zoom", touchmove).on("touchend.zoom", touchstart); | |
} | |
zoom.translate = function(x) { | |
if (!arguments.length) return translate; | |
translate = x.map(Number); | |
rescale(); | |
return zoom; | |
}; | |
zoom.scale = function(x) { | |
if (!arguments.length) return scale; | |
scale = +x; | |
rescale(); | |
return zoom; | |
}; | |
zoom.scaleExtent = function(x) { | |
if (!arguments.length) return scaleExtent; | |
scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number); | |
return zoom; | |
}; | |
zoom.x = function(z) { | |
if (!arguments.length) return x1; | |
x1 = z; | |
x0 = z.copy(); | |
translate = [ 0, 0 ]; | |
scale = 1; | |
return zoom; | |
}; | |
zoom.y = function(z) { | |
if (!arguments.length) return y1; | |
y1 = z; | |
y0 = z.copy(); | |
translate = [ 0, 0 ]; | |
scale = 1; | |
return zoom; | |
}; | |
function location(p) { | |
return [ (p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale ]; | |
} | |
function point(l) { | |
return [ l[0] * scale + translate[0], l[1] * scale + translate[1] ]; | |
} | |
function scaleTo(s) { | |
scale = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s)); | |
} | |
function translateTo(p, l) { | |
l = point(l); | |
translate[0] += p[0] - l[0]; | |
translate[1] += p[1] - l[1]; | |
} | |
function rescale() { | |
if (x1) x1.domain(x0.range().map(function(x) { | |
return (x - translate[0]) / scale; | |
}).map(x0.invert)); | |
if (y1) y1.domain(y0.range().map(function(y) { | |
return (y - translate[1]) / scale; | |
}).map(y0.invert)); | |
} | |
function dispatch(event) { | |
rescale(); | |
d3.event.preventDefault(); | |
event({ | |
type: "zoom", | |
scale: scale, | |
translate: translate | |
}); | |
} | |
function mousedown() { | |
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress("zoom"); | |
function mousemove() { | |
moved = 1; | |
translateTo(d3.mouse(target), l); | |
dispatch(event_); | |
} | |
function mouseup() { | |
w.on("mousemove.zoom", null).on("mouseup.zoom", null); | |
dragRestore(moved && d3.event.target === eventTarget); | |
} | |
} | |
function mousewheel() { | |
if (!translate0) translate0 = location(d3.mouse(this)); | |
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * scale); | |
translateTo(d3.mouse(this), translate0); | |
dispatch(event.of(this, arguments)); | |
} | |
function mousemove() { | |
translate0 = null; | |
} | |
function dblclick() { | |
var p = d3.mouse(this), l = location(p), k = Math.log(scale) / Math.LN2; | |
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1)); | |
translateTo(p, l); | |
dispatch(event.of(this, arguments)); | |
} | |
function touchstart() { | |
var touches = d3.touches(this), now = Date.now(); | |
scale0 = scale; | |
translate0 = {}; | |
distance0 = 0; | |
touches.forEach(function(t) { | |
translate0[t.identifier] = location(t); | |
}); | |
if (touches.length === 1) { | |
if (now - touchtime < 500) { | |
var p = touches[0], l = location(touches[0]); | |
scaleTo(scale * 2); | |
translateTo(p, l); | |
dispatch(event.of(this, arguments)); | |
} | |
touchtime = now; | |
} else if (touches.length > 1) { | |
var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1]; | |
distance0 = dx * dx + dy * dy; | |
} | |
} | |
function touchmove() { | |
var touches = d3.touches(this), p0 = touches[0], l0 = translate0[p0.identifier]; | |
if (p1 = touches[1]) { | |
var p1, l1 = translate0[p1.identifier], scale1 = d3.event.scale; | |
if (scale1 == null) { | |
var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1; | |
scale1 = distance0 && Math.sqrt(distance1 / distance0); | |
} | |
p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ]; | |
l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ]; | |
scaleTo(scale1 * scale0); | |
} | |
translateTo(p0, l0); | |
touchtime = null; | |
dispatch(event.of(this, arguments)); | |
} | |
return d3.rebind(zoom, event, "on"); | |
}; | |
var d3_behavior_zoomInfinity = [ 0, Infinity ]; | |
var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { | |
return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); | |
}, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { | |
return d3.event.wheelDelta; | |
}, "mousewheel") : (d3_behavior_zoomDelta = function() { | |
return -d3.event.detail; | |
}, "MozMousePixelScroll"); | |
function d3_Color() {} | |
d3_Color.prototype.toString = function() { | |
return this.rgb() + ""; | |
}; | |
d3.hsl = function(h, s, l) { | |
return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l); | |
}; | |
function d3_hsl(h, s, l) { | |
return new d3_Hsl(h, s, l); | |
} | |
function d3_Hsl(h, s, l) { | |
this.h = h; | |
this.s = s; | |
this.l = l; | |
} | |
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color(); | |
d3_hslPrototype.brighter = function(k) { | |
k = Math.pow(.7, arguments.length ? k : 1); | |
return d3_hsl(this.h, this.s, this.l / k); | |
}; | |
d3_hslPrototype.darker = function(k) { | |
k = Math.pow(.7, arguments.length ? k : 1); | |
return d3_hsl(this.h, this.s, k * this.l); | |
}; | |
d3_hslPrototype.rgb = function() { | |
return d3_hsl_rgb(this.h, this.s, this.l); | |
}; | |
function d3_hsl_rgb(h, s, l) { | |
var m1, m2; | |
h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h; | |
s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s; | |
l = l < 0 ? 0 : l > 1 ? 1 : l; | |
m2 = l <= .5 ? l * (1 + s) : l + s - l * s; | |
m1 = 2 * l - m2; | |
function v(h) { | |
if (h > 360) h -= 360; else if (h < 0) h += 360; | |
if (h < 60) return m1 + (m2 - m1) * h / 60; | |
if (h < 180) return m2; | |
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; | |
return m1; | |
} | |
function vv(h) { | |
return Math.round(v(h) * 255); | |
} | |
return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); | |
} | |
var π = Math.PI, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π; | |
function d3_sgn(x) { | |
return x > 0 ? 1 : x < 0 ? -1 : 0; | |
} | |
function d3_acos(x) { | |
return x > 1 ? 0 : x < -1 ? π : Math.acos(x); | |
} | |
function d3_asin(x) { | |
return x > 1 ? π / 2 : x < -1 ? -π / 2 : Math.asin(x); | |
} | |
function d3_sinh(x) { | |
return (Math.exp(x) - Math.exp(-x)) / 2; | |
} | |
function d3_cosh(x) { | |
return (Math.exp(x) + Math.exp(-x)) / 2; | |
} | |
function d3_haversin(x) { | |
return (x = Math.sin(x / 2)) * x; | |
} | |
d3.hcl = function(h, c, l) { | |
return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l); | |
}; | |
function d3_hcl(h, c, l) { | |
return new d3_Hcl(h, c, l); | |
} | |
function d3_Hcl(h, c, l) { | |
this.h = h; | |
this.c = c; | |
this.l = l; | |
} | |
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color(); | |
d3_hclPrototype.brighter = function(k) { | |
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1))); | |
}; | |
d3_hclPrototype.darker = function(k) { | |
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1))); | |
}; | |
d3_hclPrototype.rgb = function() { | |
return d3_hcl_lab(this.h, this.c, this.l).rgb(); | |
}; | |
function d3_hcl_lab(h, c, l) { | |
if (isNaN(h)) h = 0; | |
if (isNaN(c)) c = 0; | |
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c); | |
} | |
d3.lab = function(l, a, b) { | |
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b); | |
}; | |
function d3_lab(l, a, b) { | |
return new d3_Lab(l, a, b); | |
} | |
function d3_Lab(l, a, b) { | |
this.l = l; | |
this.a = a; | |
this.b = b; | |
} | |
var d3_lab_K = 18; | |
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883; | |
var d3_labPrototype = d3_Lab.prototype = new d3_Color(); | |
d3_labPrototype.brighter = function(k) { | |
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); | |
}; | |
d3_labPrototype.darker = function(k) { | |
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); | |
}; | |
d3_labPrototype.rgb = function() { | |
return d3_lab_rgb(this.l, this.a, this.b); | |
}; | |
function d3_lab_rgb(l, a, b) { | |
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200; | |
x = d3_lab_xyz(x) * d3_lab_X; | |
y = d3_lab_xyz(y) * d3_lab_Y; | |
z = d3_lab_xyz(z) * d3_lab_Z; | |
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z)); | |
} | |
function d3_lab_hcl(l, a, b) { | |
return l > 0 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : d3_hcl(NaN, NaN, l); | |
} | |
function d3_lab_xyz(x) { | |
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037; | |
} | |
function d3_xyz_lab(x) { | |
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29; | |
} | |
function d3_xyz_rgb(r) { | |
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055)); | |
} | |
d3.rgb = function(r, g, b) { | |
return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b); | |
}; | |
function d3_rgb(r, g, b) { | |
return new d3_Rgb(r, g, b); | |
} | |
function d3_Rgb(r, g, b) { | |
this.r = r; | |
this.g = g; | |
this.b = b; | |
} | |
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color(); | |
d3_rgbPrototype.brighter = function(k) { | |
k = Math.pow(.7, arguments.length ? k : 1); | |
var r = this.r, g = this.g, b = this.b, i = 30; | |
if (!r && !g && !b) return d3_rgb(i, i, i); | |
if (r && r < i) r = i; | |
if (g && g < i) g = i; | |
if (b && b < i) b = i; | |
return d3_rgb(Math.min(255, Math.floor(r / k)), Math.min(255, Math.floor(g / k)), Math.min(255, Math.floor(b / k))); | |
}; | |
d3_rgbPrototype.darker = function(k) { | |
k = Math.pow(.7, arguments.length ? k : 1); | |
return d3_rgb(Math.floor(k * this.r), Math.floor(k * this.g), Math.floor(k * this.b)); | |
}; | |
d3_rgbPrototype.hsl = function() { | |
return d3_rgb_hsl(this.r, this.g, this.b); | |
}; | |
d3_rgbPrototype.toString = function() { | |
return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b); | |
}; | |
function d3_rgb_hex(v) { | |
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16); | |
} | |
function d3_rgb_parse(format, rgb, hsl) { | |
var r = 0, g = 0, b = 0, m1, m2, name; | |
m1 = /([a-z]+)\((.*)\)/i.exec(format); | |
if (m1) { | |
m2 = m1[2].split(","); | |
switch (m1[1]) { | |
case "hsl": | |
{ | |
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100); | |
} | |
case "rgb": | |
{ | |
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2])); | |
} | |
} | |
} | |
if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b); | |
if (format != null && format.charAt(0) === "#") { | |
if (format.length === 4) { | |
r = format.charAt(1); | |
r += r; | |
g = format.charAt(2); | |
g += g; | |
b = format.charAt(3); | |
b += b; | |
} else if (format.length === 7) { | |
r = format.substring(1, 3); | |
g = format.substring(3, 5); | |
b = format.substring(5, 7); | |
} | |
r = parseInt(r, 16); | |
g = parseInt(g, 16); | |
b = parseInt(b, 16); | |
} | |
return rgb(r, g, b); | |
} | |
function d3_rgb_hsl(r, g, b) { | |
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2; | |
if (d) { | |
s = l < .5 ? d / (max + min) : d / (2 - max - min); | |
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4; | |
h *= 60; | |
} else { | |
h = NaN; | |
s = l > 0 && l < 1 ? 0 : h; | |
} | |
return d3_hsl(h, s, l); | |
} | |
function d3_rgb_lab(r, g, b) { | |
r = d3_rgb_xyz(r); | |
g = d3_rgb_xyz(g); | |
b = d3_rgb_xyz(b); | |
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z); | |
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z)); | |
} | |
function d3_rgb_xyz(r) { | |
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4); | |
} | |
function d3_rgb_parseNumber(c) { | |
var f = parseFloat(c); | |
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; | |
} | |
var d3_rgb_names = d3.map({ | |
aliceblue: "#f0f8ff", | |
antiquewhite: "#faebd7", | |
aqua: "#00ffff", | |
aquamarine: "#7fffd4", | |
azure: "#f0ffff", | |
beige: "#f5f5dc", | |
bisque: "#ffe4c4", | |
black: "#000000", | |
blanchedalmond: "#ffebcd", | |
blue: "#0000ff", | |
blueviolet: "#8a2be2", | |
brown: "#a52a2a", | |
burlywood: "#deb887", | |
cadetblue: "#5f9ea0", | |
chartreuse: "#7fff00", | |
chocolate: "#d2691e", | |
coral: "#ff7f50", | |
cornflowerblue: "#6495ed", | |
cornsilk: "#fff8dc", | |
crimson: "#dc143c", | |
cyan: "#00ffff", | |
darkblue: "#00008b", | |
darkcyan: "#008b8b", | |
darkgoldenrod: "#b8860b", | |
darkgray: "#a9a9a9", | |
darkgreen: "#006400", | |
darkgrey: "#a9a9a9", | |
darkkhaki: "#bdb76b", | |
darkmagenta: "#8b008b", | |
darkolivegreen: "#556b2f", | |
darkorange: "#ff8c00", | |
darkorchid: "#9932cc", | |
darkred: "#8b0000", | |
darksalmon: "#e9967a", | |
darkseagreen: "#8fbc8f", | |
darkslateblue: "#483d8b", | |
darkslategray: "#2f4f4f", | |
darkslategrey: "#2f4f4f", | |
darkturquoise: "#00ced1", | |
darkviolet: "#9400d3", | |
deeppink: "#ff1493", | |
deepskyblue: "#00bfff", | |
dimgray: "#696969", | |
dimgrey: "#696969", | |
dodgerblue: "#1e90ff", | |
firebrick: "#b22222", | |
floralwhite: "#fffaf0", | |
forestgreen: "#228b22", | |
fuchsia: "#ff00ff", | |
gainsboro: "#dcdcdc", | |
ghostwhite: "#f8f8ff", | |
gold: "#ffd700", | |
goldenrod: "#daa520", | |
gray: "#808080", | |
green: "#008000", | |
greenyellow: "#adff2f", | |
grey: "#808080", | |
honeydew: "#f0fff0", | |
hotpink: "#ff69b4", | |
indianred: "#cd5c5c", | |
indigo: "#4b0082", | |
ivory: "#fffff0", | |
khaki: "#f0e68c", | |
lavender: "#e6e6fa", | |
lavenderblush: "#fff0f5", | |
lawngreen: "#7cfc00", | |
lemonchiffon: "#fffacd", | |
lightblue: "#add8e6", | |
lightcoral: "#f08080", | |
lightcyan: "#e0ffff", | |
lightgoldenrodyellow: "#fafad2", | |
lightgray: "#d3d3d3", | |
lightgreen: "#90ee90", | |
lightgrey: "#d3d3d3", | |
lightpink: "#ffb6c1", | |
lightsalmon: "#ffa07a", | |
lightseagreen: "#20b2aa", | |
lightskyblue: "#87cefa", | |
lightslategray: "#778899", | |
lightslategrey: "#778899", | |
lightsteelblue: "#b0c4de", | |
lightyellow: "#ffffe0", | |
lime: "#00ff00", | |
limegreen: "#32cd32", | |
linen: "#faf0e6", | |
magenta: "#ff00ff", | |
maroon: "#800000", | |
mediumaquamarine: "#66cdaa", | |
mediumblue: "#0000cd", | |
mediumorchid: "#ba55d3", | |
mediumpurple: "#9370db", | |
mediumseagreen: "#3cb371", | |
mediumslateblue: "#7b68ee", | |
mediumspringgreen: "#00fa9a", | |
mediumturquoise: "#48d1cc", | |
mediumvioletred: "#c71585", | |
midnightblue: "#191970", | |
mintcream: "#f5fffa", | |
mistyrose: "#ffe4e1", | |
moccasin: "#ffe4b5", | |
navajowhite: "#ffdead", | |
navy: "#000080", | |
oldlace: "#fdf5e6", | |
olive: "#808000", | |
olivedrab: "#6b8e23", | |
orange: "#ffa500", | |
orangered: "#ff4500", | |
orchid: "#da70d6", | |
palegoldenrod: "#eee8aa", | |
palegreen: "#98fb98", | |
paleturquoise: "#afeeee", | |
palevioletred: "#db7093", | |
papayawhip: "#ffefd5", | |
peachpuff: "#ffdab9", | |
peru: "#cd853f", | |
pink: "#ffc0cb", | |
plum: "#dda0dd", | |
powderblue: "#b0e0e6", | |
purple: "#800080", | |
red: "#ff0000", | |
rosybrown: "#bc8f8f", | |
royalblue: "#4169e1", | |
saddlebrown: "#8b4513", | |
salmon: "#fa8072", | |
sandybrown: "#f4a460", | |
seagreen: "#2e8b57", | |
seashell: "#fff5ee", | |
sienna: "#a0522d", | |
silver: "#c0c0c0", | |
skyblue: "#87ceeb", | |
slateblue: "#6a5acd", | |
slategray: "#708090", | |
slategrey: "#708090", | |
snow: "#fffafa", | |
springgreen: "#00ff7f", | |
steelblue: "#4682b4", | |
tan: "#d2b48c", | |
teal: "#008080", | |
thistle: "#d8bfd8", | |
tomato: "#ff6347", | |
turquoise: "#40e0d0", | |
violet: "#ee82ee", | |
wheat: "#f5deb3", | |
white: "#ffffff", | |
whitesmoke: "#f5f5f5", | |
yellow: "#ffff00", | |
yellowgreen: "#9acd32" | |
}); | |
d3_rgb_names.forEach(function(key, value) { | |
d3_rgb_names.set(key, d3_rgb_parse(value, d3_rgb, d3_hsl_rgb)); | |
}); | |
function d3_functor(v) { | |
return typeof v === "function" ? v : function() { | |
return v; | |
}; | |
} | |
d3.functor = d3_functor; | |
function d3_identity(d) { | |
return d; | |
} | |
d3.xhr = d3_xhrType(d3_identity); | |
function d3_xhrType(response) { | |
return function(url, mimeType, callback) { | |
if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, | |
mimeType = null; | |
return d3_xhr(url, mimeType, response, callback); | |
}; | |
} | |
function d3_xhr(url, mimeType, response, callback) { | |
var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null; | |
if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest(); | |
"onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() { | |
request.readyState > 3 && respond(); | |
}; | |
function respond() { | |
var status = request.status, result; | |
if (!status && request.responseText || status >= 200 && status < 300 || status === 304) { | |
try { | |
result = response.call(xhr, request); | |
} catch (e) { | |
dispatch.error.call(xhr, e); | |
return; | |
} | |
dispatch.load.call(xhr, result); | |
} else { | |
dispatch.error.call(xhr, request); | |
} | |
} | |
request.onprogress = function(event) { | |
var o = d3.event; | |
d3.event = event; | |
try { | |
dispatch.progress.call(xhr, request); | |
} finally { | |
d3.event = o; | |
} | |
}; | |
xhr.header = function(name, value) { | |
name = (name + "").toLowerCase(); | |
if (arguments.length < 2) return headers[name]; | |
if (value == null) delete headers[name]; else headers[name] = value + ""; | |
return xhr; | |
}; | |
xhr.mimeType = function(value) { | |
if (!arguments.length) return mimeType; | |
mimeType = value == null ? null : value + ""; | |
return xhr; | |
}; | |
xhr.responseType = function(value) { | |
if (!arguments.length) return responseType; | |
responseType = value; | |
return xhr; | |
}; | |
xhr.response = function(value) { | |
response = value; | |
return xhr; | |
}; | |
[ "get", "post" ].forEach(function(method) { | |
xhr[method] = function() { | |
return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments))); | |
}; | |
}); | |
xhr.send = function(method, data, callback) { | |
if (arguments.length === 2 && typeof data === "function") callback = data, data = null; | |
request.open(method, url, true); | |
if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*"; | |
if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]); | |
if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType); | |
if (responseType != null) request.responseType = responseType; | |
if (callback != null) xhr.on("error", callback).on("load", function(request) { | |
callback(null, request); | |
}); | |
request.send(data == null ? null : data); | |
return xhr; | |
}; | |
xhr.abort = function() { | |
request.abort(); | |
return xhr; | |
}; | |
d3.rebind(xhr, dispatch, "on"); | |
return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback)); | |
} | |
function d3_xhr_fixCallback(callback) { | |
return callback.length === 1 ? function(error, request) { | |
callback(error == null ? request : null); | |
} : callback; | |
} | |
d3.dsv = function(delimiter, mimeType) { | |
var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0); | |
function dsv(url, row, callback) { | |
if (arguments.length < 3) callback = row, row = null; | |
var xhr = d3.xhr(url, mimeType, callback); | |
xhr.row = function(_) { | |
return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row; | |
}; | |
return xhr.row(row); | |
} | |
function response(request) { | |
return dsv.parse(request.responseText); | |
} | |
function typedResponse(f) { | |
return function(request) { | |
return dsv.parse(request.responseText, f); | |
}; | |
} | |
dsv.parse = function(text, f) { | |
var o; | |
return dsv.parseRows(text, function(row, i) { | |
if (o) return o(row, i - 1); | |
var a = new Function("d", "return {" + row.map(function(name, i) { | |
return JSON.stringify(name) + ": d[" + i + "]"; | |
}).join(",") + "}"); | |
o = f ? function(row, i) { | |
return f(a(row), i); | |
} : a; | |
}); | |
}; | |
dsv.parseRows = function(text, f) { | |
var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol; | |
function token() { | |
if (I >= N) return EOF; | |
if (eol) return eol = false, EOL; | |
var j = I; | |
if (text.charCodeAt(j) === 34) { | |
var i = j; | |
while (i++ < N) { | |
if (text.charCodeAt(i) === 34) { | |
if (text.charCodeAt(i + 1) !== 34) break; | |
++i; | |
} | |
} | |
I = i + 2; | |
var c = text.charCodeAt(i + 1); | |
if (c === 13) { | |
eol = true; | |
if (text.charCodeAt(i + 2) === 10) ++I; | |
} else if (c === 10) { | |
eol = true; | |
} | |
return text.substring(j + 1, i).replace(/""/g, '"'); | |
} | |
while (I < N) { | |
var c = text.charCodeAt(I++), k = 1; | |
if (c === 10) eol = true; else if (c === 13) { | |
eol = true; | |
if (text.charCodeAt(I) === 10) ++I, ++k; | |
} else if (c !== delimiterCode) continue; | |
return text.substring(j, I - k); | |
} | |
return text.substring(j); | |
} | |
while ((t = token()) !== EOF) { | |
var a = []; | |
while (t !== EOL && t !== EOF) { | |
a.push(t); | |
t = token(); | |
} | |
if (f && !(a = f(a, n++))) continue; | |
rows.push(a); | |
} | |
return rows; | |
}; | |
dsv.format = function(rows) { | |
if (Array.isArray(rows[0])) return dsv.formatRows(rows); | |
var fieldSet = new d3_Set(), fields = []; | |
rows.forEach(function(row) { | |
for (var field in row) { | |
if (!fieldSet.has(field)) { | |
fields.push(fieldSet.add(field)); | |
} | |
} | |
}); | |
return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) { | |
return fields.map(function(field) { | |
return formatValue(row[field]); | |
}).join(delimiter); | |
})).join("\n"); | |
}; | |
dsv.formatRows = function(rows) { | |
return rows.map(formatRow).join("\n"); | |
}; | |
function formatRow(row) { | |
return row.map(formatValue).join(delimiter); | |
} | |
function formatValue(text) { | |
return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text; | |
} | |
return dsv; | |
}; | |
d3.csv = d3.dsv(",", "text/csv"); | |
d3.tsv = d3.dsv(" ", "text/tab-separated-values"); | |
var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout; | |
d3.timer = function(callback, delay, then) { | |
if (arguments.length < 3) { | |
if (arguments.length < 2) delay = 0; else if (!isFinite(delay)) return; | |
then = Date.now(); | |
} | |
var time = then + delay; | |
var timer = { | |
callback: callback, | |
time: time, | |
next: null | |
}; | |
if (d3_timer_queueTail) d3_timer_queueTail.next = timer; else d3_timer_queueHead = timer; | |
d3_timer_queueTail = timer; | |
if (!d3_timer_interval) { | |
d3_timer_timeout = clearTimeout(d3_timer_timeout); | |
d3_timer_interval = 1; | |
d3_timer_frame(d3_timer_step); | |
} | |
}; | |
function d3_timer_step() { | |
var now = d3_timer_mark(), delay = d3_timer_sweep() - now; | |
if (delay > 24) { | |
if (isFinite(delay)) { | |
clearTimeout(d3_timer_timeout); | |
d3_timer_timeout = setTimeout(d3_timer_step, delay); | |
} | |
d3_timer_interval = 0; | |
} else { | |
d3_timer_interval = 1; | |
d3_timer_frame(d3_timer_step); | |
} | |
} | |
d3.timer.flush = function() { | |
d3_timer_mark(); | |
d3_timer_sweep(); | |
}; | |
function d3_timer_mark() { | |
var now = Date.now(), timer = d3_timer_queueHead; | |
while (timer) { | |
if (now >= timer.time) timer.flush = timer.callback(now - timer.time); | |
timer = timer.next; | |
} | |
return now; | |
} | |
function d3_timer_sweep() { | |
var t0, t1 = d3_timer_queueHead, time = Infinity; | |
while (t1) { | |
if (t1.flush) { | |
t1 = t0 ? t0.next = t1.next : d3_timer_queueHead = t1.next; | |
} else { | |
if (t1.time < time) time = t1.time; | |
t1 = (t0 = t1).next; | |
} | |
} | |
d3_timer_queueTail = t0; | |
return time; | |
} | |
var d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { | |
setTimeout(callback, 17); | |
}; | |
var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ]; | |
var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix); | |
d3.formatPrefix = function(value, precision) { | |
var i = 0; | |
if (value) { | |
if (value < 0) value *= -1; | |
if (precision) value = d3.round(value, d3_format_precision(value, precision)); | |
i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10); | |
i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3)); | |
} | |
return d3_formatPrefixes[8 + i / 3]; | |
}; | |
function d3_formatPrefix(d, i) { | |
var k = Math.pow(10, Math.abs(8 - i) * 3); | |
return { | |
scale: i > 8 ? function(d) { | |
return d / k; | |
} : function(d) { | |
return d * k; | |
}, | |
symbol: d | |
}; | |
} | |
d3.round = function(x, n) { | |
return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x); | |
}; | |
d3.format = function(specifier) { | |
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", basePrefix = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false; | |
if (precision) precision = +precision.substring(1); | |
if (zfill || fill === "0" && align === "=") { | |
zfill = fill = "0"; | |
align = "="; | |
if (comma) width -= Math.floor((width - 1) / 4); | |
} | |
switch (type) { | |
case "n": | |
comma = true; | |
type = "g"; | |
break; | |
case "%": | |
scale = 100; | |
suffix = "%"; | |
type = "f"; | |
break; | |
case "p": | |
scale = 100; | |
suffix = "%"; | |
type = "r"; | |
break; | |
case "b": | |
case "o": | |
case "x": | |
case "X": | |
if (basePrefix) basePrefix = "0" + type.toLowerCase(); | |
case "c": | |
case "d": | |
integer = true; | |
precision = 0; | |
break; | |
case "s": | |
scale = -1; | |
type = "r"; | |
break; | |
} | |
if (basePrefix === "#") basePrefix = ""; | |
if (type == "r" && !precision) type = "g"; | |
if (precision != null) { | |
if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision)); | |
} | |
type = d3_format_types.get(type) || d3_format_typeDefault; | |
var zcomma = zfill && comma; | |
return function(value) { | |
if (integer && value % 1) return ""; | |
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign; | |
if (scale < 0) { | |
var prefix = d3.formatPrefix(value, precision); | |
value = prefix.scale(value); | |
suffix = prefix.symbol; | |
} else { | |
value *= scale; | |
} | |
value = type(value, precision); | |
if (!zfill && comma) value = d3_format_group(value); | |
var length = basePrefix.length + value.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : ""; | |
if (zcomma) value = d3_format_group(padding + value); | |
if (d3_format_decimalPoint) value.replace(".", d3_format_decimalPoint); | |
negative += basePrefix; | |
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix; | |
}; | |
}; | |
var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i; | |
var d3_format_types = d3.map({ | |
b: function(x) { | |
return x.toString(2); | |
}, | |
c: function(x) { | |
return String.fromCharCode(x); | |
}, | |
o: function(x) { | |
return x.toString(8); | |
}, | |
x: function(x) { | |
return x.toString(16); | |
}, | |
X: function(x) { | |
return x.toString(16).toUpperCase(); | |
}, | |
g: function(x, p) { | |
return x.toPrecision(p); | |
}, | |
e: function(x, p) { | |
return x.toExponential(p); | |
}, | |
f: function(x, p) { | |
return x.toFixed(p); | |
}, | |
r: function(x, p) { | |
return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p)))); | |
} | |
}); | |
function d3_format_precision(x, p) { | |
return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1); | |
} | |
function d3_format_typeDefault(x) { | |
return x + ""; | |
} | |
var d3_format_group = d3_identity; | |
if (d3_format_grouping) { | |
var d3_format_groupingLength = d3_format_grouping.length; | |
d3_format_group = function(value) { | |
var i = value.lastIndexOf("."), f = i >= 0 ? "." + value.substring(i + 1) : (i = value.length, | |
""), t = [], j = 0, g = d3_format_grouping[0]; | |
while (i > 0 && g > 0) { | |
t.push(value.substring(i -= g, i + g)); | |
g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength]; | |
} | |
return t.reverse().join(d3_format_thousandsSeparator || "") + f; | |
}; | |
} | |
d3.geo = {}; | |
function d3_adder() {} | |
d3_adder.prototype = { | |
s: 0, | |
t: 0, | |
add: function(y) { | |
d3_adderSum(y, this.t, d3_adderTemp); | |
d3_adderSum(d3_adderTemp.s, this.s, this); | |
if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t; | |
}, | |
reset: function() { | |
this.s = this.t = 0; | |
}, | |
valueOf: function() { | |
return this.s; | |
} | |
}; | |
var d3_adderTemp = new d3_adder(); | |
function d3_adderSum(a, b, o) { | |
var x = o.s = a + b, bv = x - a, av = x - bv; | |
o.t = a - av + (b - bv); | |
} | |
d3.geo.stream = function(object, listener) { | |
if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) { | |
d3_geo_streamObjectType[object.type](object, listener); | |
} else { | |
d3_geo_streamGeometry(object, listener); | |
} | |
}; | |
function d3_geo_streamGeometry(geometry, listener) { | |
if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) { | |
d3_geo_streamGeometryType[geometry.type](geometry, listener); | |
} | |
} | |
var d3_geo_streamObjectType = { | |
Feature: function(feature, listener) { | |
d3_geo_streamGeometry(feature.geometry, listener); | |
}, | |
FeatureCollection: function(object, listener) { | |
var features = object.features, i = -1, n = features.length; | |
while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener); | |
} | |
}; | |
var d3_geo_streamGeometryType = { | |
Sphere: function(object, listener) { | |
listener.sphere(); | |
}, | |
Point: function(object, listener) { | |
var coordinate = object.coordinates; | |
listener.point(coordinate[0], coordinate[1]); | |
}, | |
MultiPoint: function(object, listener) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length, coordinate; | |
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]); | |
}, | |
LineString: function(object, listener) { | |
d3_geo_streamLine(object.coordinates, listener, 0); | |
}, | |
MultiLineString: function(object, listener) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0); | |
}, | |
Polygon: function(object, listener) { | |
d3_geo_streamPolygon(object.coordinates, listener); | |
}, | |
MultiPolygon: function(object, listener) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) d3_geo_streamPolygon(coordinates[i], listener); | |
}, | |
GeometryCollection: function(object, listener) { | |
var geometries = object.geometries, i = -1, n = geometries.length; | |
while (++i < n) d3_geo_streamGeometry(geometries[i], listener); | |
} | |
}; | |
function d3_geo_streamLine(coordinates, listener, closed) { | |
var i = -1, n = coordinates.length - closed, coordinate; | |
listener.lineStart(); | |
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]); | |
listener.lineEnd(); | |
} | |
function d3_geo_streamPolygon(coordinates, listener) { | |
var i = -1, n = coordinates.length; | |
listener.polygonStart(); | |
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1); | |
listener.polygonEnd(); | |
} | |
d3.geo.area = function(object) { | |
d3_geo_areaSum = 0; | |
d3.geo.stream(object, d3_geo_area); | |
return d3_geo_areaSum; | |
}; | |
var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder(); | |
var d3_geo_area = { | |
sphere: function() { | |
d3_geo_areaSum += 4 * π; | |
}, | |
point: d3_noop, | |
lineStart: d3_noop, | |
lineEnd: d3_noop, | |
polygonStart: function() { | |
d3_geo_areaRingSum.reset(); | |
d3_geo_area.lineStart = d3_geo_areaRingStart; | |
}, | |
polygonEnd: function() { | |
var area = 2 * d3_geo_areaRingSum; | |
d3_geo_areaSum += area < 0 ? 4 * π + area : area; | |
d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop; | |
} | |
}; | |
function d3_geo_areaRingStart() { | |
var λ00, φ00, λ0, cosφ0, sinφ0; | |
d3_geo_area.point = function(λ, φ) { | |
d3_geo_area.point = nextPoint; | |
λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), | |
sinφ0 = Math.sin(φ); | |
}; | |
function nextPoint(λ, φ) { | |
λ *= d3_radians; | |
φ = φ * d3_radians / 2 + π / 4; | |
var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ); | |
d3_geo_areaRingSum.add(Math.atan2(v, u)); | |
λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ; | |
} | |
d3_geo_area.lineEnd = function() { | |
nextPoint(λ00, φ00); | |
}; | |
} | |
function d3_geo_cartesian(spherical) { | |
var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ); | |
return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ]; | |
} | |
function d3_geo_cartesianDot(a, b) { | |
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; | |
} | |
function d3_geo_cartesianCross(a, b) { | |
return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ]; | |
} | |
function d3_geo_cartesianAdd(a, b) { | |
a[0] += b[0]; | |
a[1] += b[1]; | |
a[2] += b[2]; | |
} | |
function d3_geo_cartesianScale(vector, k) { | |
return [ vector[0] * k, vector[1] * k, vector[2] * k ]; | |
} | |
function d3_geo_cartesianNormalize(d) { | |
var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); | |
d[0] /= l; | |
d[1] /= l; | |
d[2] /= l; | |
} | |
function d3_geo_spherical(cartesian) { | |
return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ]; | |
} | |
function d3_geo_sphericalEqual(a, b) { | |
return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε; | |
} | |
d3.geo.bounds = function() { | |
var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range; | |
var bound = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
bound.point = ringPoint; | |
bound.lineStart = ringStart; | |
bound.lineEnd = ringEnd; | |
dλSum = 0; | |
d3_geo_area.polygonStart(); | |
}, | |
polygonEnd: function() { | |
d3_geo_area.polygonEnd(); | |
bound.point = point; | |
bound.lineStart = lineStart; | |
bound.lineEnd = lineEnd; | |
if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90; | |
range[0] = λ0, range[1] = λ1; | |
} | |
}; | |
function point(λ, φ) { | |
ranges.push(range = [ λ0 = λ, λ1 = λ ]); | |
if (φ < φ0) φ0 = φ; | |
if (φ > φ1) φ1 = φ; | |
} | |
function linePoint(λ, φ) { | |
var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]); | |
if (p0) { | |
var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal); | |
d3_geo_cartesianNormalize(inflection); | |
inflection = d3_geo_spherical(inflection); | |
var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = Math.abs(dλ) > 180; | |
if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) { | |
var φi = inflection[1] * d3_degrees; | |
if (φi > φ1) φ1 = φi; | |
} else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) { | |
var φi = -inflection[1] * d3_degrees; | |
if (φi < φ0) φ0 = φi; | |
} else { | |
if (φ < φ0) φ0 = φ; | |
if (φ > φ1) φ1 = φ; | |
} | |
if (antimeridian) { | |
if (λ < λ_) { | |
if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; | |
} else { | |
if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; | |
} | |
} else { | |
if (λ1 >= λ0) { | |
if (λ < λ0) λ0 = λ; | |
if (λ > λ1) λ1 = λ; | |
} else { | |
if (λ > λ_) { | |
if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; | |
} else { | |
if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; | |
} | |
} | |
} | |
} else { | |
point(λ, φ); | |
} | |
p0 = p, λ_ = λ; | |
} | |
function lineStart() { | |
bound.point = linePoint; | |
} | |
function lineEnd() { | |
range[0] = λ0, range[1] = λ1; | |
bound.point = point; | |
p0 = null; | |
} | |
function ringPoint(λ, φ) { | |
if (p0) { | |
var dλ = λ - λ_; | |
dλSum += Math.abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ; | |
} else λ__ = λ, φ__ = φ; | |
d3_geo_area.point(λ, φ); | |
linePoint(λ, φ); | |
} | |
function ringStart() { | |
d3_geo_area.lineStart(); | |
} | |
function ringEnd() { | |
ringPoint(λ__, φ__); | |
d3_geo_area.lineEnd(); | |
if (Math.abs(dλSum) > ε) λ0 = -(λ1 = 180); | |
range[0] = λ0, range[1] = λ1; | |
p0 = null; | |
} | |
function angle(λ0, λ1) { | |
return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; | |
} | |
function compareRanges(a, b) { | |
return a[0] - b[0]; | |
} | |
function withinRange(x, range) { | |
return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; | |
} | |
return function(feature) { | |
φ1 = λ1 = -(λ0 = φ0 = Infinity); | |
ranges = []; | |
d3.geo.stream(feature, bound); | |
var n = ranges.length; | |
if (n) { | |
ranges.sort(compareRanges); | |
for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) { | |
b = ranges[i]; | |
if (withinRange(b[0], a) || withinRange(b[1], a)) { | |
if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; | |
if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; | |
} else { | |
merged.push(a = b); | |
} | |
} | |
var best = -Infinity, dλ; | |
for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) { | |
b = merged[i]; | |
if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1]; | |
} | |
} | |
ranges = range = null; | |
return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ]; | |
}; | |
}(); | |
d3.geo.centroid = function(object) { | |
d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; | |
d3.geo.stream(object, d3_geo_centroid); | |
var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z; | |
if (m < ε2) { | |
x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1; | |
if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0; | |
m = x * x + y * y + z * z; | |
if (m < ε2) return [ NaN, NaN ]; | |
} | |
return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ]; | |
}; | |
var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2; | |
var d3_geo_centroid = { | |
sphere: d3_noop, | |
point: d3_geo_centroidPoint, | |
lineStart: d3_geo_centroidLineStart, | |
lineEnd: d3_geo_centroidLineEnd, | |
polygonStart: function() { | |
d3_geo_centroid.lineStart = d3_geo_centroidRingStart; | |
}, | |
polygonEnd: function() { | |
d3_geo_centroid.lineStart = d3_geo_centroidLineStart; | |
} | |
}; | |
function d3_geo_centroidPoint(λ, φ) { | |
λ *= d3_radians; | |
var cosφ = Math.cos(φ *= d3_radians); | |
d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ)); | |
} | |
function d3_geo_centroidPointXYZ(x, y, z) { | |
++d3_geo_centroidW0; | |
d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0; | |
d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0; | |
d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0; | |
} | |
function d3_geo_centroidLineStart() { | |
var x0, y0, z0; | |
d3_geo_centroid.point = function(λ, φ) { | |
λ *= d3_radians; | |
var cosφ = Math.cos(φ *= d3_radians); | |
x0 = cosφ * Math.cos(λ); | |
y0 = cosφ * Math.sin(λ); | |
z0 = Math.sin(φ); | |
d3_geo_centroid.point = nextPoint; | |
d3_geo_centroidPointXYZ(x0, y0, z0); | |
}; | |
function nextPoint(λ, φ) { | |
λ *= d3_radians; | |
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); | |
d3_geo_centroidW1 += w; | |
d3_geo_centroidX1 += w * (x0 + (x0 = x)); | |
d3_geo_centroidY1 += w * (y0 + (y0 = y)); | |
d3_geo_centroidZ1 += w * (z0 + (z0 = z)); | |
d3_geo_centroidPointXYZ(x0, y0, z0); | |
} | |
} | |
function d3_geo_centroidLineEnd() { | |
d3_geo_centroid.point = d3_geo_centroidPoint; | |
} | |
function d3_geo_centroidRingStart() { | |
var λ00, φ00, x0, y0, z0; | |
d3_geo_centroid.point = function(λ, φ) { | |
λ00 = λ, φ00 = φ; | |
d3_geo_centroid.point = nextPoint; | |
λ *= d3_radians; | |
var cosφ = Math.cos(φ *= d3_radians); | |
x0 = cosφ * Math.cos(λ); | |
y0 = cosφ * Math.sin(λ); | |
z0 = Math.sin(φ); | |
d3_geo_centroidPointXYZ(x0, y0, z0); | |
}; | |
d3_geo_centroid.lineEnd = function() { | |
nextPoint(λ00, φ00); | |
d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd; | |
d3_geo_centroid.point = d3_geo_centroidPoint; | |
}; | |
function nextPoint(λ, φ) { | |
λ *= d3_radians; | |
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u); | |
d3_geo_centroidX2 += v * cx; | |
d3_geo_centroidY2 += v * cy; | |
d3_geo_centroidZ2 += v * cz; | |
d3_geo_centroidW1 += w; | |
d3_geo_centroidX1 += w * (x0 + (x0 = x)); | |
d3_geo_centroidY1 += w * (y0 + (y0 = y)); | |
d3_geo_centroidZ1 += w * (z0 + (z0 = z)); | |
d3_geo_centroidPointXYZ(x0, y0, z0); | |
} | |
} | |
function d3_true() { | |
return true; | |
} | |
function d3_geo_clipPolygon(segments, compare, inside, interpolate, listener) { | |
var subject = [], clip = []; | |
segments.forEach(function(segment) { | |
if ((n = segment.length - 1) <= 0) return; | |
var n, p0 = segment[0], p1 = segment[n]; | |
if (d3_geo_sphericalEqual(p0, p1)) { | |
listener.lineStart(); | |
for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]); | |
listener.lineEnd(); | |
return; | |
} | |
var a = { | |
point: p0, | |
points: segment, | |
other: null, | |
visited: false, | |
entry: true, | |
subject: true | |
}, b = { | |
point: p0, | |
points: [ p0 ], | |
other: a, | |
visited: false, | |
entry: false, | |
subject: false | |
}; | |
a.other = b; | |
subject.push(a); | |
clip.push(b); | |
a = { | |
point: p1, | |
points: [ p1 ], | |
other: null, | |
visited: false, | |
entry: false, | |
subject: true | |
}; | |
b = { | |
point: p1, | |
points: [ p1 ], | |
other: a, | |
visited: false, | |
entry: true, | |
subject: false | |
}; | |
a.other = b; | |
subject.push(a); | |
clip.push(b); | |
}); | |
clip.sort(compare); | |
d3_geo_clipPolygonLinkCircular(subject); | |
d3_geo_clipPolygonLinkCircular(clip); | |
if (!subject.length) return; | |
if (inside) for (var i = 1, e = !inside(clip[0].point), n = clip.length; i < n; ++i) { | |
clip[i].entry = e = !e; | |
} | |
var start = subject[0], current, points, point; | |
while (1) { | |
current = start; | |
while (current.visited) if ((current = current.next) === start) return; | |
points = current.points; | |
listener.lineStart(); | |
do { | |
current.visited = current.other.visited = true; | |
if (current.entry) { | |
if (current.subject) { | |
for (var i = 0; i < points.length; i++) listener.point((point = points[i])[0], point[1]); | |
} else { | |
interpolate(current.point, current.next.point, 1, listener); | |
} | |
current = current.next; | |
} else { | |
if (current.subject) { | |
points = current.prev.points; | |
for (var i = points.length; --i >= 0; ) listener.point((point = points[i])[0], point[1]); | |
} else { | |
interpolate(current.point, current.prev.point, -1, listener); | |
} | |
current = current.prev; | |
} | |
current = current.other; | |
points = current.points; | |
} while (!current.visited); | |
listener.lineEnd(); | |
} | |
} | |
function d3_geo_clipPolygonLinkCircular(array) { | |
if (!(n = array.length)) return; | |
var n, i = 0, a = array[0], b; | |
while (++i < n) { | |
a.next = b = array[i]; | |
b.prev = a; | |
a = b; | |
} | |
a.next = b = array[0]; | |
b.prev = a; | |
} | |
function d3_geo_clip(pointVisible, clipLine, interpolate, polygonContains) { | |
return function(listener) { | |
var line = clipLine(listener); | |
var clip = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
clip.point = pointRing; | |
clip.lineStart = ringStart; | |
clip.lineEnd = ringEnd; | |
segments = []; | |
polygon = []; | |
listener.polygonStart(); | |
}, | |
polygonEnd: function() { | |
clip.point = point; | |
clip.lineStart = lineStart; | |
clip.lineEnd = lineEnd; | |
segments = d3.merge(segments); | |
if (segments.length) { | |
d3_geo_clipPolygon(segments, d3_geo_clipSort, null, interpolate, listener); | |
} else if (polygonContains(polygon)) { | |
listener.lineStart(); | |
interpolate(null, null, 1, listener); | |
listener.lineEnd(); | |
} | |
listener.polygonEnd(); | |
segments = polygon = null; | |
}, | |
sphere: function() { | |
listener.polygonStart(); | |
listener.lineStart(); | |
interpolate(null, null, 1, listener); | |
listener.lineEnd(); | |
listener.polygonEnd(); | |
} | |
}; | |
function point(λ, φ) { | |
if (pointVisible(λ, φ)) listener.point(λ, φ); | |
} | |
function pointLine(λ, φ) { | |
line.point(λ, φ); | |
} | |
function lineStart() { | |
clip.point = pointLine; | |
line.lineStart(); | |
} | |
function lineEnd() { | |
clip.point = point; | |
line.lineEnd(); | |
} | |
var segments; | |
var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygon, ring; | |
function pointRing(λ, φ) { | |
ringListener.point(λ, φ); | |
ring.push([ λ, φ ]); | |
} | |
function ringStart() { | |
ringListener.lineStart(); | |
ring = []; | |
} | |
function ringEnd() { | |
pointRing(ring[0][0], ring[0][1]); | |
ringListener.lineEnd(); | |
var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length; | |
ring.pop(); | |
polygon.push(ring); | |
ring = null; | |
if (!n) return; | |
if (clean & 1) { | |
segment = ringSegments[0]; | |
var n = segment.length - 1, i = -1, point; | |
listener.lineStart(); | |
while (++i < n) listener.point((point = segment[i])[0], point[1]); | |
listener.lineEnd(); | |
return; | |
} | |
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); | |
segments.push(ringSegments.filter(d3_geo_clipSegmentLength1)); | |
} | |
return clip; | |
}; | |
} | |
function d3_geo_clipSegmentLength1(segment) { | |
return segment.length > 1; | |
} | |
function d3_geo_clipBufferListener() { | |
var lines = [], line; | |
return { | |
lineStart: function() { | |
lines.push(line = []); | |
}, | |
point: function(λ, φ) { | |
line.push([ λ, φ ]); | |
}, | |
lineEnd: d3_noop, | |
buffer: function() { | |
var buffer = lines; | |
lines = []; | |
line = null; | |
return buffer; | |
}, | |
rejoin: function() { | |
if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); | |
} | |
}; | |
} | |
function d3_geo_clipSort(a, b) { | |
return ((a = a.point)[0] < 0 ? a[1] - π / 2 - ε : π / 2 - a[1]) - ((b = b.point)[0] < 0 ? b[1] - π / 2 - ε : π / 2 - b[1]); | |
} | |
function d3_geo_pointInPolygon(point, polygon) { | |
var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, polar = false, southPole = false, winding = 0; | |
d3_geo_areaRingSum.reset(); | |
for (var i = 0, n = polygon.length; i < n; ++i) { | |
var ring = polygon[i], m = ring.length; | |
if (!m) continue; | |
var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1; | |
while (true) { | |
if (j === m) j = 0; | |
point = ring[j]; | |
var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, antimeridian = Math.abs(dλ) > π, k = sinφ0 * sinφ; | |
d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k * Math.cos(dλ))); | |
if (Math.abs(φ) < ε) southPole = true; | |
polarAngle += antimeridian ? dλ + (dλ >= 0 ? 2 : -2) * π : dλ; | |
if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) { | |
var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point)); | |
d3_geo_cartesianNormalize(arc); | |
var intersection = d3_geo_cartesianCross(meridianNormal, arc); | |
d3_geo_cartesianNormalize(intersection); | |
var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); | |
if (parallel > φarc) { | |
winding += antimeridian ^ dλ >= 0 ? 1 : -1; | |
} | |
} | |
if (!j++) break; | |
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; | |
} | |
if (Math.abs(polarAngle) > ε) polar = true; | |
} | |
return (!southPole && !polar && d3_geo_areaRingSum < 0 || polarAngle < -ε) ^ winding & 1; | |
} | |
var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, d3_geo_clipAntimeridianPolygonContains); | |
function d3_geo_clipAntimeridianLine(listener) { | |
var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean; | |
return { | |
lineStart: function() { | |
listener.lineStart(); | |
clean = 1; | |
}, | |
point: function(λ1, φ1) { | |
var sλ1 = λ1 > 0 ? π : -π, dλ = Math.abs(λ1 - λ0); | |
if (Math.abs(dλ - π) < ε) { | |
listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? π / 2 : -π / 2); | |
listener.point(sλ0, φ0); | |
listener.lineEnd(); | |
listener.lineStart(); | |
listener.point(sλ1, φ0); | |
listener.point(λ1, φ0); | |
clean = 0; | |
} else if (sλ0 !== sλ1 && dλ >= π) { | |
if (Math.abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε; | |
if (Math.abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε; | |
φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1); | |
listener.point(sλ0, φ0); | |
listener.lineEnd(); | |
listener.lineStart(); | |
listener.point(sλ1, φ0); | |
clean = 0; | |
} | |
listener.point(λ0 = λ1, φ0 = φ1); | |
sλ0 = sλ1; | |
}, | |
lineEnd: function() { | |
listener.lineEnd(); | |
λ0 = φ0 = NaN; | |
}, | |
clean: function() { | |
return 2 - clean; | |
} | |
}; | |
} | |
function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) { | |
var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1); | |
return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2; | |
} | |
function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { | |
var φ; | |
if (from == null) { | |
φ = direction * π / 2; | |
listener.point(-π, φ); | |
listener.point(0, φ); | |
listener.point(π, φ); | |
listener.point(π, 0); | |
listener.point(π, -φ); | |
listener.point(0, -φ); | |
listener.point(-π, -φ); | |
listener.point(-π, 0); | |
listener.point(-π, φ); | |
} else if (Math.abs(from[0] - to[0]) > ε) { | |
var s = (from[0] < to[0] ? 1 : -1) * π; | |
φ = direction * s / 2; | |
listener.point(-s, φ); | |
listener.point(0, φ); | |
listener.point(s, φ); | |
} else { | |
listener.point(to[0], to[1]); | |
} | |
} | |
var d3_geo_clipAntimeridianPoint = [ -π, 0 ]; | |
function d3_geo_clipAntimeridianPolygonContains(polygon) { | |
return d3_geo_pointInPolygon(d3_geo_clipAntimeridianPoint, polygon); | |
} | |
function d3_geo_clipCircle(radius) { | |
var cr = Math.cos(radius), smallRadius = cr > 0, point = [ radius, 0 ], notHemisphere = Math.abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); | |
return d3_geo_clip(visible, clipLine, interpolate, polygonContains); | |
function visible(λ, φ) { | |
return Math.cos(λ) * Math.cos(φ) > cr; | |
} | |
function clipLine(listener) { | |
var point0, c0, v0, v00, clean; | |
return { | |
lineStart: function() { | |
v00 = v0 = false; | |
clean = 1; | |
}, | |
point: function(λ, φ) { | |
var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0; | |
if (!point0 && (v00 = v0 = v)) listener.lineStart(); | |
if (v !== v0) { | |
point2 = intersect(point0, point1); | |
if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) { | |
point1[0] += ε; | |
point1[1] += ε; | |
v = visible(point1[0], point1[1]); | |
} | |
} | |
if (v !== v0) { | |
clean = 0; | |
if (v) { | |
listener.lineStart(); | |
point2 = intersect(point1, point0); | |
listener.point(point2[0], point2[1]); | |
} else { | |
point2 = intersect(point0, point1); | |
listener.point(point2[0], point2[1]); | |
listener.lineEnd(); | |
} | |
point0 = point2; | |
} else if (notHemisphere && point0 && smallRadius ^ v) { | |
var t; | |
if (!(c & c0) && (t = intersect(point1, point0, true))) { | |
clean = 0; | |
if (smallRadius) { | |
listener.lineStart(); | |
listener.point(t[0][0], t[0][1]); | |
listener.point(t[1][0], t[1][1]); | |
listener.lineEnd(); | |
} else { | |
listener.point(t[1][0], t[1][1]); | |
listener.lineEnd(); | |
listener.lineStart(); | |
listener.point(t[0][0], t[0][1]); | |
} | |
} | |
} | |
if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) { | |
listener.point(point1[0], point1[1]); | |
} | |
point0 = point1, v0 = v, c0 = c; | |
}, | |
lineEnd: function() { | |
if (v0) listener.lineEnd(); | |
point0 = null; | |
}, | |
clean: function() { | |
return clean | (v00 && v0) << 1; | |
} | |
}; | |
} | |
function intersect(a, b, two) { | |
var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b); | |
var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2; | |
if (!determinant) return !two && a; | |
var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2); | |
d3_geo_cartesianAdd(A, B); | |
var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1); | |
if (t2 < 0) return; | |
var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu); | |
d3_geo_cartesianAdd(q, A); | |
q = d3_geo_spherical(q); | |
if (!two) return q; | |
var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z; | |
if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z; | |
var δλ = λ1 - λ0, polar = Math.abs(δλ - π) < ε, meridian = polar || δλ < ε; | |
if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z; | |
if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (Math.abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) { | |
var q1 = d3_geo_cartesianScale(u, (-w + t) / uu); | |
d3_geo_cartesianAdd(q1, A); | |
return [ q, d3_geo_spherical(q1) ]; | |
} | |
} | |
function code(λ, φ) { | |
var r = smallRadius ? radius : π - radius, code = 0; | |
if (λ < -r) code |= 1; else if (λ > r) code |= 2; | |
if (φ < -r) code |= 4; else if (φ > r) code |= 8; | |
return code; | |
} | |
function polygonContains(polygon) { | |
return d3_geo_pointInPolygon(point, polygon); | |
} | |
} | |
var d3_geo_clipViewMAX = 1e9; | |
function d3_geo_clipView(x0, y0, x1, y1) { | |
return function(listener) { | |
var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), segments, polygon, ring; | |
var clip = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
listener = bufferListener; | |
segments = []; | |
polygon = []; | |
}, | |
polygonEnd: function() { | |
listener = listener_; | |
if ((segments = d3.merge(segments)).length) { | |
listener.polygonStart(); | |
d3_geo_clipPolygon(segments, compare, inside, interpolate, listener); | |
listener.polygonEnd(); | |
} else if (insidePolygon([ x0, y0 ])) { | |
listener.polygonStart(), listener.lineStart(); | |
interpolate(null, null, 1, listener); | |
listener.lineEnd(), listener.polygonEnd(); | |
} | |
segments = polygon = ring = null; | |
} | |
}; | |
function inside(point) { | |
var a = corner(point, -1), i = insidePolygon([ a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0 ]); | |
return i; | |
} | |
function insidePolygon(p) { | |
var wn = 0, n = polygon.length, y = p[1]; | |
for (var i = 0; i < n; ++i) { | |
for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) { | |
b = v[j]; | |
if (a[1] <= y) { | |
if (b[1] > y && isLeft(a, b, p) > 0) ++wn; | |
} else { | |
if (b[1] <= y && isLeft(a, b, p) < 0) --wn; | |
} | |
a = b; | |
} | |
} | |
return wn !== 0; | |
} | |
function isLeft(a, b, c) { | |
return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]); | |
} | |
function interpolate(from, to, direction, listener) { | |
var a = 0, a1 = 0; | |
if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) { | |
do { | |
listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); | |
} while ((a = (a + direction + 4) % 4) !== a1); | |
} else { | |
listener.point(to[0], to[1]); | |
} | |
} | |
function visible(x, y) { | |
return x0 <= x && x <= x1 && y0 <= y && y <= y1; | |
} | |
function point(x, y) { | |
if (visible(x, y)) listener.point(x, y); | |
} | |
var x__, y__, v__, x_, y_, v_, first; | |
function lineStart() { | |
clip.point = linePoint; | |
if (polygon) polygon.push(ring = []); | |
first = true; | |
v_ = false; | |
x_ = y_ = NaN; | |
} | |
function lineEnd() { | |
if (segments) { | |
linePoint(x__, y__); | |
if (v__ && v_) bufferListener.rejoin(); | |
segments.push(bufferListener.buffer()); | |
} | |
clip.point = point; | |
if (v_) listener.lineEnd(); | |
} | |
function linePoint(x, y) { | |
x = Math.max(-d3_geo_clipViewMAX, Math.min(d3_geo_clipViewMAX, x)); | |
y = Math.max(-d3_geo_clipViewMAX, Math.min(d3_geo_clipViewMAX, y)); | |
var v = visible(x, y); | |
if (polygon) ring.push([ x, y ]); | |
if (first) { | |
x__ = x, y__ = y, v__ = v; | |
first = false; | |
if (v) { | |
listener.lineStart(); | |
listener.point(x, y); | |
} | |
} else { | |
if (v && v_) listener.point(x, y); else { | |
var a = [ x_, y_ ], b = [ x, y ]; | |
if (clipLine(a, b)) { | |
if (!v_) { | |
listener.lineStart(); | |
listener.point(a[0], a[1]); | |
} | |
listener.point(b[0], b[1]); | |
if (!v) listener.lineEnd(); | |
} else if (v) { | |
listener.lineStart(); | |
listener.point(x, y); | |
} | |
} | |
} | |
x_ = x, y_ = y, v_ = v; | |
} | |
return clip; | |
}; | |
function corner(p, direction) { | |
return Math.abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : Math.abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : Math.abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; | |
} | |
function compare(a, b) { | |
return comparePoints(a.point, b.point); | |
} | |
function comparePoints(a, b) { | |
var ca = corner(a, 1), cb = corner(b, 1); | |
return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0]; | |
} | |
function clipLine(a, b) { | |
var dx = b[0] - a[0], dy = b[1] - a[1], t = [ 0, 1 ]; | |
if (Math.abs(dx) < ε && Math.abs(dy) < ε) return x0 <= a[0] && a[0] <= x1 && y0 <= a[1] && a[1] <= y1; | |
if (d3_geo_clipViewT(x0 - a[0], dx, t) && d3_geo_clipViewT(a[0] - x1, -dx, t) && d3_geo_clipViewT(y0 - a[1], dy, t) && d3_geo_clipViewT(a[1] - y1, -dy, t)) { | |
if (t[1] < 1) { | |
b[0] = a[0] + t[1] * dx; | |
b[1] = a[1] + t[1] * dy; | |
} | |
if (t[0] > 0) { | |
a[0] += t[0] * dx; | |
a[1] += t[0] * dy; | |
} | |
return true; | |
} | |
return false; | |
} | |
} | |
function d3_geo_clipViewT(num, denominator, t) { | |
if (Math.abs(denominator) < ε) return num <= 0; | |
var u = num / denominator; | |
if (denominator > 0) { | |
if (u > t[1]) return false; | |
if (u > t[0]) t[0] = u; | |
} else { | |
if (u < t[0]) return false; | |
if (u < t[1]) t[1] = u; | |
} | |
return true; | |
} | |
function d3_geo_compose(a, b) { | |
function compose(x, y) { | |
return x = a(x, y), b(x[0], x[1]); | |
} | |
if (a.invert && b.invert) compose.invert = function(x, y) { | |
return x = b.invert(x, y), x && a.invert(x[0], x[1]); | |
}; | |
return compose; | |
} | |
function d3_geo_conic(projectAt) { | |
var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1); | |
p.parallels = function(_) { | |
if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ]; | |
return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180); | |
}; | |
return p; | |
} | |
function d3_geo_conicEqualArea(φ0, φ1) { | |
var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n; | |
function forward(λ, φ) { | |
var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n; | |
return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ]; | |
} | |
forward.invert = function(x, y) { | |
var ρ0_y = ρ0 - y; | |
return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ]; | |
}; | |
return forward; | |
} | |
(d3.geo.conicEqualArea = function() { | |
return d3_geo_conic(d3_geo_conicEqualArea); | |
}).raw = d3_geo_conicEqualArea; | |
d3.geo.albers = function() { | |
return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070); | |
}; | |
d3.geo.albersUsa = function() { | |
var lower48 = d3.geo.albers(); | |
var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]); | |
var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]); | |
var point, pointStream = { | |
point: function(x, y) { | |
point = [ x, y ]; | |
} | |
}, lower48Point, alaskaPoint, hawaiiPoint; | |
function albersUsa(coordinates) { | |
var x = coordinates[0], y = coordinates[1]; | |
point = null; | |
(lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y); | |
return point; | |
} | |
albersUsa.invert = function(coordinates) { | |
var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k; | |
return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates); | |
}; | |
albersUsa.stream = function(stream) { | |
var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream); | |
return { | |
point: function(x, y) { | |
lower48Stream.point(x, y); | |
alaskaStream.point(x, y); | |
hawaiiStream.point(x, y); | |
}, | |
sphere: function() { | |
lower48Stream.sphere(); | |
alaskaStream.sphere(); | |
hawaiiStream.sphere(); | |
}, | |
lineStart: function() { | |
lower48Stream.lineStart(); | |
alaskaStream.lineStart(); | |
hawaiiStream.lineStart(); | |
}, | |
lineEnd: function() { | |
lower48Stream.lineEnd(); | |
alaskaStream.lineEnd(); | |
hawaiiStream.lineEnd(); | |
}, | |
polygonStart: function() { | |
lower48Stream.polygonStart(); | |
alaskaStream.polygonStart(); | |
hawaiiStream.polygonStart(); | |
}, | |
polygonEnd: function() { | |
lower48Stream.polygonEnd(); | |
alaskaStream.polygonEnd(); | |
hawaiiStream.polygonEnd(); | |
} | |
}; | |
}; | |
albersUsa.precision = function(_) { | |
if (!arguments.length) return lower48.precision(); | |
lower48.precision(_); | |
alaska.precision(_); | |
hawaii.precision(_); | |
return albersUsa; | |
}; | |
albersUsa.scale = function(_) { | |
if (!arguments.length) return lower48.scale(); | |
lower48.scale(_); | |
alaska.scale(_ * .35); | |
hawaii.scale(_); | |
return albersUsa.translate(lower48.translate()); | |
}; | |
albersUsa.translate = function(_) { | |
if (!arguments.length) return lower48.translate(); | |
var k = lower48.scale(), x = +_[0], y = +_[1]; | |
lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point; | |
alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; | |
hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; | |
return albersUsa; | |
}; | |
return albersUsa.scale(1070); | |
}; | |
var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = { | |
point: d3_noop, | |
lineStart: d3_noop, | |
lineEnd: d3_noop, | |
polygonStart: function() { | |
d3_geo_pathAreaPolygon = 0; | |
d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart; | |
}, | |
polygonEnd: function() { | |
d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop; | |
d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2); | |
} | |
}; | |
function d3_geo_pathAreaRingStart() { | |
var x00, y00, x0, y0; | |
d3_geo_pathArea.point = function(x, y) { | |
d3_geo_pathArea.point = nextPoint; | |
x00 = x0 = x, y00 = y0 = y; | |
}; | |
function nextPoint(x, y) { | |
d3_geo_pathAreaPolygon += y0 * x - x0 * y; | |
x0 = x, y0 = y; | |
} | |
d3_geo_pathArea.lineEnd = function() { | |
nextPoint(x00, y00); | |
}; | |
} | |
var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1; | |
var d3_geo_pathBounds = { | |
point: d3_geo_pathBoundsPoint, | |
lineStart: d3_noop, | |
lineEnd: d3_noop, | |
polygonStart: d3_noop, | |
polygonEnd: d3_noop | |
}; | |
function d3_geo_pathBoundsPoint(x, y) { | |
if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x; | |
if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x; | |
if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y; | |
if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y; | |
} | |
function d3_geo_pathBuffer() { | |
var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = []; | |
var stream = { | |
point: point, | |
lineStart: function() { | |
stream.point = pointLineStart; | |
}, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
stream.lineEnd = lineEndPolygon; | |
}, | |
polygonEnd: function() { | |
stream.lineEnd = lineEnd; | |
stream.point = point; | |
}, | |
pointRadius: function(_) { | |
pointCircle = d3_geo_pathBufferCircle(_); | |
return stream; | |
}, | |
result: function() { | |
if (buffer.length) { | |
var result = buffer.join(""); | |
buffer = []; | |
return result; | |
} | |
} | |
}; | |
function point(x, y) { | |
buffer.push("M", x, ",", y, pointCircle); | |
} | |
function pointLineStart(x, y) { | |
buffer.push("M", x, ",", y); | |
stream.point = pointLine; | |
} | |
function pointLine(x, y) { | |
buffer.push("L", x, ",", y); | |
} | |
function lineEnd() { | |
stream.point = point; | |
} | |
function lineEndPolygon() { | |
buffer.push("Z"); | |
} | |
return stream; | |
} | |
function d3_geo_pathBufferCircle(radius) { | |
return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z"; | |
} | |
var d3_geo_pathCentroid = { | |
point: d3_geo_pathCentroidPoint, | |
lineStart: d3_geo_pathCentroidLineStart, | |
lineEnd: d3_geo_pathCentroidLineEnd, | |
polygonStart: function() { | |
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart; | |
}, | |
polygonEnd: function() { | |
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; | |
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart; | |
d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd; | |
} | |
}; | |
function d3_geo_pathCentroidPoint(x, y) { | |
d3_geo_centroidX0 += x; | |
d3_geo_centroidY0 += y; | |
++d3_geo_centroidZ0; | |
} | |
function d3_geo_pathCentroidLineStart() { | |
var x0, y0; | |
d3_geo_pathCentroid.point = function(x, y) { | |
d3_geo_pathCentroid.point = nextPoint; | |
d3_geo_pathCentroidPoint(x0 = x, y0 = y); | |
}; | |
function nextPoint(x, y) { | |
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); | |
d3_geo_centroidX1 += z * (x0 + x) / 2; | |
d3_geo_centroidY1 += z * (y0 + y) / 2; | |
d3_geo_centroidZ1 += z; | |
d3_geo_pathCentroidPoint(x0 = x, y0 = y); | |
} | |
} | |
function d3_geo_pathCentroidLineEnd() { | |
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; | |
} | |
function d3_geo_pathCentroidRingStart() { | |
var x00, y00, x0, y0; | |
d3_geo_pathCentroid.point = function(x, y) { | |
d3_geo_pathCentroid.point = nextPoint; | |
d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y); | |
}; | |
function nextPoint(x, y) { | |
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); | |
d3_geo_centroidX1 += z * (x0 + x) / 2; | |
d3_geo_centroidY1 += z * (y0 + y) / 2; | |
d3_geo_centroidZ1 += z; | |
z = y0 * x - x0 * y; | |
d3_geo_centroidX2 += z * (x0 + x); | |
d3_geo_centroidY2 += z * (y0 + y); | |
d3_geo_centroidZ2 += z * 3; | |
d3_geo_pathCentroidPoint(x0 = x, y0 = y); | |
} | |
d3_geo_pathCentroid.lineEnd = function() { | |
nextPoint(x00, y00); | |
}; | |
} | |
function d3_geo_pathContext(context) { | |
var pointRadius = 4.5; | |
var stream = { | |
point: point, | |
lineStart: function() { | |
stream.point = pointLineStart; | |
}, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
stream.lineEnd = lineEndPolygon; | |
}, | |
polygonEnd: function() { | |
stream.lineEnd = lineEnd; | |
stream.point = point; | |
}, | |
pointRadius: function(_) { | |
pointRadius = _; | |
return stream; | |
}, | |
result: d3_noop | |
}; | |
function point(x, y) { | |
context.moveTo(x, y); | |
context.arc(x, y, pointRadius, 0, 2 * π); | |
} | |
function pointLineStart(x, y) { | |
context.moveTo(x, y); | |
stream.point = pointLine; | |
} | |
function pointLine(x, y) { | |
context.lineTo(x, y); | |
} | |
function lineEnd() { | |
stream.point = point; | |
} | |
function lineEndPolygon() { | |
context.closePath(); | |
} | |
return stream; | |
} | |
function d3_geo_resample(project) { | |
var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16; | |
function resample(stream) { | |
var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0; | |
var resample = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
stream.polygonStart(); | |
resample.lineStart = ringStart; | |
}, | |
polygonEnd: function() { | |
stream.polygonEnd(); | |
resample.lineStart = lineStart; | |
} | |
}; | |
function point(x, y) { | |
x = project(x, y); | |
stream.point(x[0], x[1]); | |
} | |
function lineStart() { | |
x0 = NaN; | |
resample.point = linePoint; | |
stream.lineStart(); | |
} | |
function linePoint(λ, φ) { | |
var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ); | |
resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); | |
stream.point(x0, y0); | |
} | |
function lineEnd() { | |
resample.point = point; | |
stream.lineEnd(); | |
} | |
function ringStart() { | |
lineStart(); | |
resample.point = ringPoint; | |
resample.lineEnd = ringEnd; | |
} | |
function ringPoint(λ, φ) { | |
linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; | |
resample.point = linePoint; | |
} | |
function ringEnd() { | |
resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream); | |
resample.lineEnd = lineEnd; | |
lineEnd(); | |
} | |
return resample; | |
} | |
function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) { | |
var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy; | |
if (d2 > 4 * δ2 && depth--) { | |
var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2; | |
if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { | |
resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream); | |
stream.point(x2, y2); | |
resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream); | |
} | |
} | |
} | |
resample.precision = function(_) { | |
if (!arguments.length) return Math.sqrt(δ2); | |
maxDepth = (δ2 = _ * _) > 0 && 16; | |
return resample; | |
}; | |
return resample; | |
} | |
d3.geo.path = function() { | |
var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream; | |
function path(object) { | |
if (object) { | |
if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); | |
if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream); | |
d3.geo.stream(object, cacheStream); | |
} | |
return contextStream.result(); | |
} | |
path.area = function(object) { | |
d3_geo_pathAreaSum = 0; | |
d3.geo.stream(object, projectStream(d3_geo_pathArea)); | |
return d3_geo_pathAreaSum; | |
}; | |
path.centroid = function(object) { | |
d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; | |
d3.geo.stream(object, projectStream(d3_geo_pathCentroid)); | |
return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ]; | |
}; | |
path.bounds = function(object) { | |
d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity); | |
d3.geo.stream(object, projectStream(d3_geo_pathBounds)); | |
return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ]; | |
}; | |
path.projection = function(_) { | |
if (!arguments.length) return projection; | |
projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity; | |
return reset(); | |
}; | |
path.context = function(_) { | |
if (!arguments.length) return context; | |
contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_); | |
if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); | |
return reset(); | |
}; | |
path.pointRadius = function(_) { | |
if (!arguments.length) return pointRadius; | |
pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); | |
return path; | |
}; | |
function reset() { | |
cacheStream = null; | |
return path; | |
} | |
return path.projection(d3.geo.albersUsa()).context(null); | |
}; | |
function d3_geo_pathProjectStream(project) { | |
var resample = d3_geo_resample(function(λ, φ) { | |
return project([ λ * d3_degrees, φ * d3_degrees ]); | |
}); | |
return function(stream) { | |
stream = resample(stream); | |
return { | |
point: function(λ, φ) { | |
stream.point(λ * d3_radians, φ * d3_radians); | |
}, | |
sphere: function() { | |
stream.sphere(); | |
}, | |
lineStart: function() { | |
stream.lineStart(); | |
}, | |
lineEnd: function() { | |
stream.lineEnd(); | |
}, | |
polygonStart: function() { | |
stream.polygonStart(); | |
}, | |
polygonEnd: function() { | |
stream.polygonEnd(); | |
} | |
}; | |
}; | |
} | |
d3.geo.projection = d3_geo_projection; | |
d3.geo.projectionMutator = d3_geo_projectionMutator; | |
function d3_geo_projection(project) { | |
return d3_geo_projectionMutator(function() { | |
return project; | |
})(); | |
} | |
function d3_geo_projectionMutator(projectAt) { | |
var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) { | |
x = project(x, y); | |
return [ x[0] * k + δx, δy - x[1] * k ]; | |
}), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream; | |
function projection(point) { | |
point = projectRotate(point[0] * d3_radians, point[1] * d3_radians); | |
return [ point[0] * k + δx, δy - point[1] * k ]; | |
} | |
function invert(point) { | |
point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k); | |
return point && [ point[0] * d3_degrees, point[1] * d3_degrees ]; | |
} | |
projection.stream = function(output) { | |
if (stream) stream.valid = false; | |
stream = d3_geo_projectionRadiansRotate(rotate, preclip(projectResample(postclip(output)))); | |
stream.valid = true; | |
return stream; | |
}; | |
projection.clipAngle = function(_) { | |
if (!arguments.length) return clipAngle; | |
preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians); | |
return invalidate(); | |
}; | |
projection.clipExtent = function(_) { | |
if (!arguments.length) return clipExtent; | |
clipExtent = _; | |
postclip = _ == null ? d3_identity : d3_geo_clipView(_[0][0], _[0][1], _[1][0], _[1][1]); | |
return invalidate(); | |
}; | |
projection.scale = function(_) { | |
if (!arguments.length) return k; | |
k = +_; | |
return reset(); | |
}; | |
projection.translate = function(_) { | |
if (!arguments.length) return [ x, y ]; | |
x = +_[0]; | |
y = +_[1]; | |
return reset(); | |
}; | |
projection.center = function(_) { | |
if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ]; | |
λ = _[0] % 360 * d3_radians; | |
φ = _[1] % 360 * d3_radians; | |
return reset(); | |
}; | |
projection.rotate = function(_) { | |
if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ]; | |
δλ = _[0] % 360 * d3_radians; | |
δφ = _[1] % 360 * d3_radians; | |
δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0; | |
return reset(); | |
}; | |
d3.rebind(projection, projectResample, "precision"); | |
function reset() { | |
projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project); | |
var center = project(λ, φ); | |
δx = x - center[0] * k; | |
δy = y + center[1] * k; | |
return invalidate(); | |
} | |
function invalidate() { | |
if (stream) { | |
stream.valid = false; | |
stream = null; | |
} | |
return projection; | |
} | |
return function() { | |
project = projectAt.apply(this, arguments); | |
projection.invert = project.invert && invert; | |
return reset(); | |
}; | |
} | |
function d3_geo_projectionRadiansRotate(rotate, stream) { | |
return { | |
point: function(x, y) { | |
y = rotate(x * d3_radians, y * d3_radians), x = y[0]; | |
stream.point(x > π ? x - 2 * π : x < -π ? x + 2 * π : x, y[1]); | |
}, | |
sphere: function() { | |
stream.sphere(); | |
}, | |
lineStart: function() { | |
stream.lineStart(); | |
}, | |
lineEnd: function() { | |
stream.lineEnd(); | |
}, | |
polygonStart: function() { | |
stream.polygonStart(); | |
}, | |
polygonEnd: function() { | |
stream.polygonEnd(); | |
} | |
}; | |
} | |
function d3_geo_equirectangular(λ, φ) { | |
return [ λ, φ ]; | |
} | |
(d3.geo.equirectangular = function() { | |
return d3_geo_projection(d3_geo_equirectangular); | |
}).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular; | |
d3.geo.rotation = function(rotate) { | |
rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0); | |
function forward(coordinates) { | |
coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians); | |
return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; | |
} | |
forward.invert = function(coordinates) { | |
coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians); | |
return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; | |
}; | |
return forward; | |
}; | |
function d3_geo_rotation(δλ, δφ, δγ) { | |
return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_equirectangular; | |
} | |
function d3_geo_forwardRotationλ(δλ) { | |
return function(λ, φ) { | |
return λ += δλ, [ λ > π ? λ - 2 * π : λ < -π ? λ + 2 * π : λ, φ ]; | |
}; | |
} | |
function d3_geo_rotationλ(δλ) { | |
var rotation = d3_geo_forwardRotationλ(δλ); | |
rotation.invert = d3_geo_forwardRotationλ(-δλ); | |
return rotation; | |
} | |
function d3_geo_rotationφγ(δφ, δγ) { | |
var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ); | |
function rotation(λ, φ) { | |
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ; | |
return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ]; | |
} | |
rotation.invert = function(λ, φ) { | |
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ; | |
return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ]; | |
}; | |
return rotation; | |
} | |
d3.geo.circle = function() { | |
var origin = [ 0, 0 ], angle, precision = 6, interpolate; | |
function circle() { | |
var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = []; | |
interpolate(null, null, 1, { | |
point: function(x, y) { | |
ring.push(x = rotate(x, y)); | |
x[0] *= d3_degrees, x[1] *= d3_degrees; | |
} | |
}); | |
return { | |
type: "Polygon", | |
coordinates: [ ring ] | |
}; | |
} | |
circle.origin = function(x) { | |
if (!arguments.length) return origin; | |
origin = x; | |
return circle; | |
}; | |
circle.angle = function(x) { | |
if (!arguments.length) return angle; | |
interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians); | |
return circle; | |
}; | |
circle.precision = function(_) { | |
if (!arguments.length) return precision; | |
interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians); | |
return circle; | |
}; | |
return circle.angle(90); | |
}; | |
function d3_geo_circleInterpolate(radius, precision) { | |
var cr = Math.cos(radius), sr = Math.sin(radius); | |
return function(from, to, direction, listener) { | |
if (from != null) { | |
from = d3_geo_circleAngle(cr, from); | |
to = d3_geo_circleAngle(cr, to); | |
if (direction > 0 ? from < to : from > to) from += direction * 2 * π; | |
} else { | |
from = radius + direction * 2 * π; | |
to = radius; | |
} | |
var point; | |
for (var step = direction * precision, t = from; direction > 0 ? t > to : t < to; t -= step) { | |
listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]); | |
} | |
}; | |
} | |
function d3_geo_circleAngle(cr, point) { | |
var a = d3_geo_cartesian(point); | |
a[0] -= cr; | |
d3_geo_cartesianNormalize(a); | |
var angle = d3_acos(-a[1]); | |
return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI); | |
} | |
d3.geo.distance = function(a, b) { | |
var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t; | |
return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ); | |
}; | |
d3.geo.graticule = function() { | |
var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5; | |
function graticule() { | |
return { | |
type: "MultiLineString", | |
coordinates: lines() | |
}; | |
} | |
function lines() { | |
return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) { | |
return Math.abs(x % DX) > ε; | |
}).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) { | |
return Math.abs(y % DY) > ε; | |
}).map(y)); | |
} | |
graticule.lines = function() { | |
return lines().map(function(coordinates) { | |
return { | |
type: "LineString", | |
coordinates: coordinates | |
}; | |
}); | |
}; | |
graticule.outline = function() { | |
return { | |
type: "Polygon", | |
coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ] | |
}; | |
}; | |
graticule.extent = function(_) { | |
if (!arguments.length) return graticule.minorExtent(); | |
return graticule.majorExtent(_).minorExtent(_); | |
}; | |
graticule.majorExtent = function(_) { | |
if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ]; | |
X0 = +_[0][0], X1 = +_[1][0]; | |
Y0 = +_[0][1], Y1 = +_[1][1]; | |
if (X0 > X1) _ = X0, X0 = X1, X1 = _; | |
if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; | |
return graticule.precision(precision); | |
}; | |
graticule.minorExtent = function(_) { | |
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; | |
x0 = +_[0][0], x1 = +_[1][0]; | |
y0 = +_[0][1], y1 = +_[1][1]; | |
if (x0 > x1) _ = x0, x0 = x1, x1 = _; | |
if (y0 > y1) _ = y0, y0 = y1, y1 = _; | |
return graticule.precision(precision); | |
}; | |
graticule.step = function(_) { | |
if (!arguments.length) return graticule.minorStep(); | |
return graticule.majorStep(_).minorStep(_); | |
}; | |
graticule.majorStep = function(_) { | |
if (!arguments.length) return [ DX, DY ]; | |
DX = +_[0], DY = +_[1]; | |
return graticule; | |
}; | |
graticule.minorStep = function(_) { | |
if (!arguments.length) return [ dx, dy ]; | |
dx = +_[0], dy = +_[1]; | |
return graticule; | |
}; | |
graticule.precision = function(_) { | |
if (!arguments.length) return precision; | |
precision = +_; | |
x = d3_geo_graticuleX(y0, y1, 90); | |
y = d3_geo_graticuleY(x0, x1, precision); | |
X = d3_geo_graticuleX(Y0, Y1, 90); | |
Y = d3_geo_graticuleY(X0, X1, precision); | |
return graticule; | |
}; | |
return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]); | |
}; | |
function d3_geo_graticuleX(y0, y1, dy) { | |
var y = d3.range(y0, y1 - ε, dy).concat(y1); | |
return function(x) { | |
return y.map(function(y) { | |
return [ x, y ]; | |
}); | |
}; | |
} | |
function d3_geo_graticuleY(x0, x1, dx) { | |
var x = d3.range(x0, x1 - ε, dx).concat(x1); | |
return function(y) { | |
return x.map(function(x) { | |
return [ x, y ]; | |
}); | |
}; | |
} | |
function d3_source(d) { | |
return d.source; | |
} | |
function d3_target(d) { | |
return d.target; | |
} | |
d3.geo.greatArc = function() { | |
var source = d3_source, source_, target = d3_target, target_; | |
function greatArc() { | |
return { | |
type: "LineString", | |
coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ] | |
}; | |
} | |
greatArc.distance = function() { | |
return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments)); | |
}; | |
greatArc.source = function(_) { | |
if (!arguments.length) return source; | |
source = _, source_ = typeof _ === "function" ? null : _; | |
return greatArc; | |
}; | |
greatArc.target = function(_) { | |
if (!arguments.length) return target; | |
target = _, target_ = typeof _ === "function" ? null : _; | |
return greatArc; | |
}; | |
greatArc.precision = function() { | |
return arguments.length ? greatArc : 0; | |
}; | |
return greatArc; | |
}; | |
d3.geo.interpolate = function(source, target) { | |
return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians); | |
}; | |
function d3_geo_interpolate(x0, y0, x1, y1) { | |
var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d); | |
var interpolate = d ? function(t) { | |
var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1; | |
return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ]; | |
} : function() { | |
return [ x0 * d3_degrees, y0 * d3_degrees ]; | |
}; | |
interpolate.distance = d; | |
return interpolate; | |
} | |
d3.geo.length = function(object) { | |
d3_geo_lengthSum = 0; | |
d3.geo.stream(object, d3_geo_length); | |
return d3_geo_lengthSum; | |
}; | |
var d3_geo_lengthSum; | |
var d3_geo_length = { | |
sphere: d3_noop, | |
point: d3_noop, | |
lineStart: d3_geo_lengthLineStart, | |
lineEnd: d3_noop, | |
polygonStart: d3_noop, | |
polygonEnd: d3_noop | |
}; | |
function d3_geo_lengthLineStart() { | |
var λ0, sinφ0, cosφ0; | |
d3_geo_length.point = function(λ, φ) { | |
λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ); | |
d3_geo_length.point = nextPoint; | |
}; | |
d3_geo_length.lineEnd = function() { | |
d3_geo_length.point = d3_geo_length.lineEnd = d3_noop; | |
}; | |
function nextPoint(λ, φ) { | |
var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = Math.abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t); | |
d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ); | |
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ; | |
} | |
} | |
function d3_geo_azimuthal(scale, angle) { | |
function azimuthal(λ, φ) { | |
var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ); | |
return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ]; | |
} | |
azimuthal.invert = function(x, y) { | |
var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c); | |
return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ]; | |
}; | |
return azimuthal; | |
} | |
var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) { | |
return Math.sqrt(2 / (1 + cosλcosφ)); | |
}, function(ρ) { | |
return 2 * Math.asin(ρ / 2); | |
}); | |
(d3.geo.azimuthalEqualArea = function() { | |
return d3_geo_projection(d3_geo_azimuthalEqualArea); | |
}).raw = d3_geo_azimuthalEqualArea; | |
var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) { | |
var c = Math.acos(cosλcosφ); | |
return c && c / Math.sin(c); | |
}, d3_identity); | |
(d3.geo.azimuthalEquidistant = function() { | |
return d3_geo_projection(d3_geo_azimuthalEquidistant); | |
}).raw = d3_geo_azimuthalEquidistant; | |
function d3_geo_conicConformal(φ0, φ1) { | |
var cosφ0 = Math.cos(φ0), t = function(φ) { | |
return Math.tan(π / 4 + φ / 2); | |
}, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n; | |
if (!n) return d3_geo_mercator; | |
function forward(λ, φ) { | |
var ρ = Math.abs(Math.abs(φ) - π / 2) < ε ? 0 : F / Math.pow(t(φ), n); | |
return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ]; | |
} | |
forward.invert = function(x, y) { | |
var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y); | |
return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - π / 2 ]; | |
}; | |
return forward; | |
} | |
(d3.geo.conicConformal = function() { | |
return d3_geo_conic(d3_geo_conicConformal); | |
}).raw = d3_geo_conicConformal; | |
function d3_geo_conicEquidistant(φ0, φ1) { | |
var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0; | |
if (Math.abs(n) < ε) return d3_geo_equirectangular; | |
function forward(λ, φ) { | |
var ρ = G - φ; | |
return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ]; | |
} | |
forward.invert = function(x, y) { | |
var ρ0_y = G - y; | |
return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ]; | |
}; | |
return forward; | |
} | |
(d3.geo.conicEquidistant = function() { | |
return d3_geo_conic(d3_geo_conicEquidistant); | |
}).raw = d3_geo_conicEquidistant; | |
var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) { | |
return 1 / cosλcosφ; | |
}, Math.atan); | |
(d3.geo.gnomonic = function() { | |
return d3_geo_projection(d3_geo_gnomonic); | |
}).raw = d3_geo_gnomonic; | |
function d3_geo_mercator(λ, φ) { | |
return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ]; | |
} | |
d3_geo_mercator.invert = function(x, y) { | |
return [ x, 2 * Math.atan(Math.exp(y)) - π / 2 ]; | |
}; | |
function d3_geo_mercatorProjection(project) { | |
var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto; | |
m.scale = function() { | |
var v = scale.apply(m, arguments); | |
return v === m ? clipAuto ? m.clipExtent(null) : m : v; | |
}; | |
m.translate = function() { | |
var v = translate.apply(m, arguments); | |
return v === m ? clipAuto ? m.clipExtent(null) : m : v; | |
}; | |
m.clipExtent = function(_) { | |
var v = clipExtent.apply(m, arguments); | |
if (v === m) { | |
if (clipAuto = _ == null) { | |
var k = π * scale(), t = translate(); | |
clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]); | |
} | |
} else if (clipAuto) { | |
v = null; | |
} | |
return v; | |
}; | |
return m.clipExtent(null); | |
} | |
(d3.geo.mercator = function() { | |
return d3_geo_mercatorProjection(d3_geo_mercator); | |
}).raw = d3_geo_mercator; | |
var d3_geo_orthographic = d3_geo_azimuthal(function() { | |
return 1; | |
}, Math.asin); | |
(d3.geo.orthographic = function() { | |
return d3_geo_projection(d3_geo_orthographic); | |
}).raw = d3_geo_orthographic; | |
var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) { | |
return 1 / (1 + cosλcosφ); | |
}, function(ρ) { | |
return 2 * Math.atan(ρ); | |
}); | |
(d3.geo.stereographic = function() { | |
return d3_geo_projection(d3_geo_stereographic); | |
}).raw = d3_geo_stereographic; | |
function d3_geo_transverseMercator(λ, φ) { | |
var B = Math.cos(φ) * Math.sin(λ); | |
return [ Math.log((1 + B) / (1 - B)) / 2, Math.atan2(Math.tan(φ), Math.cos(λ)) ]; | |
} | |
d3_geo_transverseMercator.invert = function(x, y) { | |
return [ Math.atan2(d3_sinh(x), Math.cos(y)), d3_asin(Math.sin(y) / d3_cosh(x)) ]; | |
}; | |
(d3.geo.transverseMercator = function() { | |
return d3_geo_mercatorProjection(d3_geo_transverseMercator); | |
}).raw = d3_geo_transverseMercator; | |
d3.geom = {}; | |
d3.svg = {}; | |
function d3_svg_line(projection) { | |
var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7; | |
function line(data) { | |
var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y); | |
function segment() { | |
segments.push("M", interpolate(projection(points), tension)); | |
} | |
while (++i < n) { | |
if (defined.call(this, d = data[i], i)) { | |
points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]); | |
} else if (points.length) { | |
segment(); | |
points = []; | |
} | |
} | |
if (points.length) segment(); | |
return segments.length ? segments.join("") : null; | |
} | |
line.x = function(_) { | |
if (!arguments.length) return x; | |
x = _; | |
return line; | |
}; | |
line.y = function(_) { | |
if (!arguments.length) return y; | |
y = _; | |
return line; | |
}; | |
line.defined = function(_) { | |
if (!arguments.length) return defined; | |
defined = _; | |
return line; | |
}; | |
line.interpolate = function(_) { | |
if (!arguments.length) return interpolateKey; | |
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; | |
return line; | |
}; | |
line.tension = function(_) { | |
if (!arguments.length) return tension; | |
tension = _; | |
return line; | |
}; | |
return line; | |
} | |
d3.svg.line = function() { | |
return d3_svg_line(d3_identity); | |
}; | |
function d3_svg_lineX(d) { | |
return d[0]; | |
} | |
function d3_svg_lineY(d) { | |
return d[1]; | |
} | |
var d3_svg_lineInterpolators = d3.map({ | |
linear: d3_svg_lineLinear, | |
"linear-closed": d3_svg_lineLinearClosed, | |
step: d3_svg_lineStep, | |
"step-before": d3_svg_lineStepBefore, | |
"step-after": d3_svg_lineStepAfter, | |
basis: d3_svg_lineBasis, | |
"basis-open": d3_svg_lineBasisOpen, | |
"basis-closed": d3_svg_lineBasisClosed, | |
bundle: d3_svg_lineBundle, | |
cardinal: d3_svg_lineCardinal, | |
"cardinal-open": d3_svg_lineCardinalOpen, | |
"cardinal-closed": d3_svg_lineCardinalClosed, | |
monotone: d3_svg_lineMonotone | |
}); | |
d3_svg_lineInterpolators.forEach(function(key, value) { | |
value.key = key; | |
value.closed = /-closed$/.test(key); | |
}); | |
function d3_svg_lineLinear(points) { | |
return points.join("L"); | |
} | |
function d3_svg_lineLinearClosed(points) { | |
return d3_svg_lineLinear(points) + "Z"; | |
} | |
function d3_svg_lineStep(points) { | |
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; | |
while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]); | |
if (n > 1) path.push("H", p[0]); | |
return path.join(""); | |
} | |
function d3_svg_lineStepBefore(points) { | |
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; | |
while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]); | |
return path.join(""); | |
} | |
function d3_svg_lineStepAfter(points) { | |
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; | |
while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]); | |
return path.join(""); | |
} | |
function d3_svg_lineCardinalOpen(points, tension) { | |
return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension)); | |
} | |
function d3_svg_lineCardinalClosed(points, tension) { | |
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), | |
points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension)); | |
} | |
function d3_svg_lineCardinal(points, tension) { | |
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension)); | |
} | |
function d3_svg_lineHermite(points, tangents) { | |
if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) { | |
return d3_svg_lineLinear(points); | |
} | |
var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1; | |
if (quad) { | |
path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1]; | |
p0 = points[1]; | |
pi = 2; | |
} | |
if (tangents.length > 1) { | |
t = tangents[1]; | |
p = points[pi]; | |
pi++; | |
path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; | |
for (var i = 2; i < tangents.length; i++, pi++) { | |
p = points[pi]; | |
t = tangents[i]; | |
path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; | |
} | |
} | |
if (quad) { | |
var lp = points[pi]; | |
path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1]; | |
} | |
return path; | |
} | |
function d3_svg_lineCardinalTangents(points, tension) { | |
var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length; | |
while (++i < n) { | |
p0 = p1; | |
p1 = p2; | |
p2 = points[i]; | |
tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]); | |
} | |
return tangents; | |
} | |
function d3_svg_lineBasis(points) { | |
if (points.length < 3) return d3_svg_lineLinear(points); | |
var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0 ]; | |
d3_svg_lineBasisBezier(path, px, py); | |
while (++i < n) { | |
pi = points[i]; | |
px.shift(); | |
px.push(pi[0]); | |
py.shift(); | |
py.push(pi[1]); | |
d3_svg_lineBasisBezier(path, px, py); | |
} | |
i = -1; | |
while (++i < 2) { | |
px.shift(); | |
px.push(pi[0]); | |
py.shift(); | |
py.push(pi[1]); | |
d3_svg_lineBasisBezier(path, px, py); | |
} | |
return path.join(""); | |
} | |
function d3_svg_lineBasisOpen(points) { | |
if (points.length < 4) return d3_svg_lineLinear(points); | |
var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ]; | |
while (++i < 3) { | |
pi = points[i]; | |
px.push(pi[0]); | |
py.push(pi[1]); | |
} | |
path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)); | |
--i; | |
while (++i < n) { | |
pi = points[i]; | |
px.shift(); | |
px.push(pi[0]); | |
py.shift(); | |
py.push(pi[1]); | |
d3_svg_lineBasisBezier(path, px, py); | |
} | |
return path.join(""); | |
} | |
function d3_svg_lineBasisClosed(points) { | |
var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = []; | |
while (++i < 4) { | |
pi = points[i % n]; | |
px.push(pi[0]); | |
py.push(pi[1]); | |
} | |
path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; | |
--i; | |
while (++i < m) { | |
pi = points[i % n]; | |
px.shift(); | |
px.push(pi[0]); | |
py.shift(); | |
py.push(pi[1]); | |
d3_svg_lineBasisBezier(path, px, py); | |
} | |
return path.join(""); | |
} | |
function d3_svg_lineBundle(points, tension) { | |
var n = points.length - 1; | |
if (n) { | |
var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t; | |
while (++i <= n) { | |
p = points[i]; | |
t = i / n; | |
p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx); | |
p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy); | |
} | |
} | |
return d3_svg_lineBasis(points); | |
} | |
function d3_svg_lineDot4(a, b) { | |
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; | |
} | |
var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ]; | |
function d3_svg_lineBasisBezier(path, x, y) { | |
path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y)); | |
} | |
function d3_svg_lineSlope(p0, p1) { | |
return (p1[1] - p0[1]) / (p1[0] - p0[0]); | |
} | |
function d3_svg_lineFiniteDifferences(points) { | |
var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1); | |
while (++i < j) { | |
m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2; | |
} | |
m[i] = d; | |
return m; | |
} | |
function d3_svg_lineMonotoneTangents(points) { | |
var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1; | |
while (++i < j) { | |
d = d3_svg_lineSlope(points[i], points[i + 1]); | |
if (Math.abs(d) < 1e-6) { | |
m[i] = m[i + 1] = 0; | |
} else { | |
a = m[i] / d; | |
b = m[i + 1] / d; | |
s = a * a + b * b; | |
if (s > 9) { | |
s = d * 3 / Math.sqrt(s); | |
m[i] = s * a; | |
m[i + 1] = s * b; | |
} | |
} | |
} | |
i = -1; | |
while (++i <= j) { | |
s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i])); | |
tangents.push([ s || 0, m[i] * s || 0 ]); | |
} | |
return tangents; | |
} | |
function d3_svg_lineMonotone(points) { | |
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points)); | |
} | |
d3.geom.hull = function(vertices) { | |
var x = d3_svg_lineX, y = d3_svg_lineY; | |
if (arguments.length) return hull(vertices); | |
function hull(data) { | |
if (data.length < 3) return []; | |
var fx = d3_functor(x), fy = d3_functor(y), n = data.length, vertices, plen = n - 1, points = [], stack = [], d, i, j, h = 0, x1, y1, x2, y2, u, v, a, sp; | |
if (fx === d3_svg_lineX && y === d3_svg_lineY) vertices = data; else for (i = 0, | |
vertices = []; i < n; ++i) { | |
vertices.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]); | |
} | |
for (i = 1; i < n; ++i) { | |
if (vertices[i][1] < vertices[h][1] || vertices[i][1] == vertices[h][1] && vertices[i][0] < vertices[h][0]) h = i; | |
} | |
for (i = 0; i < n; ++i) { | |
if (i === h) continue; | |
y1 = vertices[i][1] - vertices[h][1]; | |
x1 = vertices[i][0] - vertices[h][0]; | |
points.push({ | |
angle: Math.atan2(y1, x1), | |
index: i | |
}); | |
} | |
points.sort(function(a, b) { | |
return a.angle - b.angle; | |
}); | |
a = points[0].angle; | |
v = points[0].index; | |
u = 0; | |
for (i = 1; i < plen; ++i) { | |
j = points[i].index; | |
if (a == points[i].angle) { | |
x1 = vertices[v][0] - vertices[h][0]; | |
y1 = vertices[v][1] - vertices[h][1]; | |
x2 = vertices[j][0] - vertices[h][0]; | |
y2 = vertices[j][1] - vertices[h][1]; | |
if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) { | |
points[i].index = -1; | |
continue; | |
} else { | |
points[u].index = -1; | |
} | |
} | |
a = points[i].angle; | |
u = i; | |
v = j; | |
} | |
stack.push(h); | |
for (i = 0, j = 0; i < 2; ++j) { | |
if (points[j].index > -1) { | |
stack.push(points[j].index); | |
i++; | |
} | |
} | |
sp = stack.length; | |
for (;j < plen; ++j) { | |
if (points[j].index < 0) continue; | |
while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) { | |
--sp; | |
} | |
stack[sp++] = points[j].index; | |
} | |
var poly = []; | |
for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]); | |
return poly; | |
} | |
hull.x = function(_) { | |
return arguments.length ? (x = _, hull) : x; | |
}; | |
hull.y = function(_) { | |
return arguments.length ? (y = _, hull) : y; | |
}; | |
return hull; | |
}; | |
function d3_geom_hullCCW(i1, i2, i3, v) { | |
var t, a, b, c, d, e, f; | |
t = v[i1]; | |
a = t[0]; | |
b = t[1]; | |
t = v[i2]; | |
c = t[0]; | |
d = t[1]; | |
t = v[i3]; | |
e = t[0]; | |
f = t[1]; | |
return (f - b) * (c - a) - (d - b) * (e - a) > 0; | |
} | |
d3.geom.polygon = function(coordinates) { | |
d3_subclass(coordinates, d3_geom_polygonPrototype); | |
return coordinates; | |
}; | |
var d3_geom_polygonPrototype = d3.geom.polygon.prototype = []; | |
d3_geom_polygonPrototype.area = function() { | |
var i = -1, n = this.length, a, b = this[n - 1], area = 0; | |
while (++i < n) { | |
a = b; | |
b = this[i]; | |
area += a[1] * b[0] - a[0] * b[1]; | |
} | |
return area * .5; | |
}; | |
d3_geom_polygonPrototype.centroid = function(k) { | |
var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c; | |
if (!arguments.length) k = -1 / (6 * this.area()); | |
while (++i < n) { | |
a = b; | |
b = this[i]; | |
c = a[0] * b[1] - b[0] * a[1]; | |
x += (a[0] + b[0]) * c; | |
y += (a[1] + b[1]) * c; | |
} | |
return [ x * k, y * k ]; | |
}; | |
d3_geom_polygonPrototype.clip = function(subject) { | |
var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d; | |
while (++i < n) { | |
input = subject.slice(); | |
subject.length = 0; | |
b = this[i]; | |
c = input[(m = input.length - closed) - 1]; | |
j = -1; | |
while (++j < m) { | |
d = input[j]; | |
if (d3_geom_polygonInside(d, a, b)) { | |
if (!d3_geom_polygonInside(c, a, b)) { | |
subject.push(d3_geom_polygonIntersect(c, d, a, b)); | |
} | |
subject.push(d); | |
} else if (d3_geom_polygonInside(c, a, b)) { | |
subject.push(d3_geom_polygonIntersect(c, d, a, b)); | |
} | |
c = d; | |
} | |
if (closed) subject.push(subject[0]); | |
a = b; | |
} | |
return subject; | |
}; | |
function d3_geom_polygonInside(p, a, b) { | |
return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]); | |
} | |
function d3_geom_polygonIntersect(c, d, a, b) { | |
var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21); | |
return [ x1 + ua * x21, y1 + ua * y21 ]; | |
} | |
function d3_geom_polygonClosed(coordinates) { | |
var a = coordinates[0], b = coordinates[coordinates.length - 1]; | |
return !(a[0] - b[0] || a[1] - b[1]); | |
} | |
d3.geom.delaunay = function(vertices) { | |
var edges = vertices.map(function() { | |
return []; | |
}), triangles = []; | |
d3_geom_voronoiTessellate(vertices, function(e) { | |
edges[e.region.l.index].push(vertices[e.region.r.index]); | |
}); | |
edges.forEach(function(edge, i) { | |
var v = vertices[i], cx = v[0], cy = v[1]; | |
edge.forEach(function(v) { | |
v.angle = Math.atan2(v[0] - cx, v[1] - cy); | |
}); | |
edge.sort(function(a, b) { | |
return a.angle - b.angle; | |
}); | |
for (var j = 0, m = edge.length - 1; j < m; j++) { | |
triangles.push([ v, edge[j], edge[j + 1] ]); | |
} | |
}); | |
return triangles; | |
}; | |
d3.geom.voronoi = function(points) { | |
var x = d3_svg_lineX, y = d3_svg_lineY, clipPolygon = null; | |
if (arguments.length) return voronoi(points); | |
function voronoi(data) { | |
var points, polygons = data.map(function() { | |
return []; | |
}), fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length, Z = 1e6; | |
if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = new Array(n), | |
i = 0; i < n; ++i) { | |
points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]; | |
} | |
d3_geom_voronoiTessellate(points, function(e) { | |
var s1, s2, x1, x2, y1, y2; | |
if (e.a === 1 && e.b >= 0) { | |
s1 = e.ep.r; | |
s2 = e.ep.l; | |
} else { | |
s1 = e.ep.l; | |
s2 = e.ep.r; | |
} | |
if (e.a === 1) { | |
y1 = s1 ? s1.y : -Z; | |
x1 = e.c - e.b * y1; | |
y2 = s2 ? s2.y : Z; | |
x2 = e.c - e.b * y2; | |
} else { | |
x1 = s1 ? s1.x : -Z; | |
y1 = e.c - e.a * x1; | |
x2 = s2 ? s2.x : Z; | |
y2 = e.c - e.a * x2; | |
} | |
var v1 = [ x1, y1 ], v2 = [ x2, y2 ]; | |
polygons[e.region.l.index].push(v1, v2); | |
polygons[e.region.r.index].push(v1, v2); | |
}); | |
polygons = polygons.map(function(polygon, i) { | |
var cx = points[i][0], cy = points[i][1], angle = polygon.map(function(v) { | |
return Math.atan2(v[0] - cx, v[1] - cy); | |
}), order = d3.range(polygon.length).sort(function(a, b) { | |
return angle[a] - angle[b]; | |
}); | |
return order.filter(function(d, i) { | |
return !i || angle[d] - angle[order[i - 1]] > ε; | |
}).map(function(d) { | |
return polygon[d]; | |
}); | |
}); | |
polygons.forEach(function(polygon, i) { | |
var n = polygon.length; | |
if (!n) return polygon.push([ -Z, -Z ], [ -Z, Z ], [ Z, Z ], [ Z, -Z ]); | |
if (n > 2) return; | |
var p0 = points[i], p1 = polygon[0], p2 = polygon[1], x0 = p0[0], y0 = p0[1], x1 = p1[0], y1 = p1[1], x2 = p2[0], y2 = p2[1], dx = Math.abs(x2 - x1), dy = y2 - y1; | |
if (Math.abs(dy) < ε) { | |
var y = y0 < y1 ? -Z : Z; | |
polygon.push([ -Z, y ], [ Z, y ]); | |
} else if (dx < ε) { | |
var x = x0 < x1 ? -Z : Z; | |
polygon.push([ x, -Z ], [ x, Z ]); | |
} else { | |
var y = (x2 - x1) * (y1 - y0) < (x1 - x0) * (y2 - y1) ? Z : -Z, z = Math.abs(dy) - dx; | |
if (Math.abs(z) < ε) { | |
polygon.push([ dy < 0 ? y : -y, y ]); | |
} else { | |
if (z > 0) y *= -1; | |
polygon.push([ -Z, y ], [ Z, y ]); | |
} | |
} | |
}); | |
if (clipPolygon) for (i = 0; i < n; ++i) clipPolygon.clip(polygons[i]); | |
for (i = 0; i < n; ++i) polygons[i].point = data[i]; | |
return polygons; | |
} | |
voronoi.x = function(_) { | |
return arguments.length ? (x = _, voronoi) : x; | |
}; | |
voronoi.y = function(_) { | |
return arguments.length ? (y = _, voronoi) : y; | |
}; | |
voronoi.clipExtent = function(_) { | |
if (!arguments.length) return clipPolygon && [ clipPolygon[0], clipPolygon[2] ]; | |
if (_ == null) clipPolygon = null; else { | |
var x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1]; | |
clipPolygon = d3.geom.polygon([ [ x1, y1 ], [ x1, y2 ], [ x2, y2 ], [ x2, y1 ] ]); | |
} | |
return voronoi; | |
}; | |
voronoi.size = function(_) { | |
if (!arguments.length) return clipPolygon && clipPolygon[2]; | |
return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]); | |
}; | |
voronoi.links = function(data) { | |
var points, graph = data.map(function() { | |
return []; | |
}), links = [], fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length; | |
if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = new Array(n), | |
i = 0; i < n; ++i) { | |
points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]; | |
} | |
d3_geom_voronoiTessellate(points, function(e) { | |
var l = e.region.l.index, r = e.region.r.index; | |
if (graph[l][r]) return; | |
graph[l][r] = graph[r][l] = true; | |
links.push({ | |
source: data[l], | |
target: data[r] | |
}); | |
}); | |
return links; | |
}; | |
voronoi.triangles = function(data) { | |
if (x === d3_svg_lineX && y === d3_svg_lineY) return d3.geom.delaunay(data); | |
var points = new Array(n), fx = d3_functor(x), fy = d3_functor(y), d, i = -1, n = data.length; | |
while (++i < n) { | |
(points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]).data = d; | |
} | |
return d3.geom.delaunay(points).map(function(triangle) { | |
return triangle.map(function(point) { | |
return point.data; | |
}); | |
}); | |
}; | |
return voronoi; | |
}; | |
var d3_geom_voronoiOpposite = { | |
l: "r", | |
r: "l" | |
}; | |
function d3_geom_voronoiTessellate(points, callback) { | |
var Sites = { | |
list: points.map(function(v, i) { | |
return { | |
index: i, | |
x: v[0], | |
y: v[1] | |
}; | |
}).sort(function(a, b) { | |
return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0; | |
}), | |
bottomSite: null | |
}; | |
var EdgeList = { | |
list: [], | |
leftEnd: null, | |
rightEnd: null, | |
init: function() { | |
EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l"); | |
EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l"); | |
EdgeList.leftEnd.r = EdgeList.rightEnd; | |
EdgeList.rightEnd.l = EdgeList.leftEnd; | |
EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd); | |
}, | |
createHalfEdge: function(edge, side) { | |
return { | |
edge: edge, | |
side: side, | |
vertex: null, | |
l: null, | |
r: null | |
}; | |
}, | |
insert: function(lb, he) { | |
he.l = lb; | |
he.r = lb.r; | |
lb.r.l = he; | |
lb.r = he; | |
}, | |
leftBound: function(p) { | |
var he = EdgeList.leftEnd; | |
do { | |
he = he.r; | |
} while (he != EdgeList.rightEnd && Geom.rightOf(he, p)); | |
he = he.l; | |
return he; | |
}, | |
del: function(he) { | |
he.l.r = he.r; | |
he.r.l = he.l; | |
he.edge = null; | |
}, | |
right: function(he) { | |
return he.r; | |
}, | |
left: function(he) { | |
return he.l; | |
}, | |
leftRegion: function(he) { | |
return he.edge == null ? Sites.bottomSite : he.edge.region[he.side]; | |
}, | |
rightRegion: function(he) { | |
return he.edge == null ? Sites.bottomSite : he.edge.region[d3_geom_voronoiOpposite[he.side]]; | |
} | |
}; | |
var Geom = { | |
bisect: function(s1, s2) { | |
var newEdge = { | |
region: { | |
l: s1, | |
r: s2 | |
}, | |
ep: { | |
l: null, | |
r: null | |
} | |
}; | |
var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy; | |
newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5; | |
if (adx > ady) { | |
newEdge.a = 1; | |
newEdge.b = dy / dx; | |
newEdge.c /= dx; | |
} else { | |
newEdge.b = 1; | |
newEdge.a = dx / dy; | |
newEdge.c /= dy; | |
} | |
return newEdge; | |
}, | |
intersect: function(el1, el2) { | |
var e1 = el1.edge, e2 = el2.edge; | |
if (!e1 || !e2 || e1.region.r == e2.region.r) { | |
return null; | |
} | |
var d = e1.a * e2.b - e1.b * e2.a; | |
if (Math.abs(d) < 1e-10) { | |
return null; | |
} | |
var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e; | |
if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) { | |
el = el1; | |
e = e1; | |
} else { | |
el = el2; | |
e = e2; | |
} | |
var rightOfSite = xint >= e.region.r.x; | |
if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") { | |
return null; | |
} | |
return { | |
x: xint, | |
y: yint | |
}; | |
}, | |
rightOf: function(he, p) { | |
var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x; | |
if (rightOfSite && he.side === "l") { | |
return 1; | |
} | |
if (!rightOfSite && he.side === "r") { | |
return 0; | |
} | |
if (e.a === 1) { | |
var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0; | |
if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) { | |
above = fast = dyp >= e.b * dxp; | |
} else { | |
above = p.x + p.y * e.b > e.c; | |
if (e.b < 0) { | |
above = !above; | |
} | |
if (!above) { | |
fast = 1; | |
} | |
} | |
if (!fast) { | |
var dxs = topsite.x - e.region.l.x; | |
above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b); | |
if (e.b < 0) { | |
above = !above; | |
} | |
} | |
} else { | |
var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y; | |
above = t1 * t1 > t2 * t2 + t3 * t3; | |
} | |
return he.side === "l" ? above : !above; | |
}, | |
endPoint: function(edge, side, site) { | |
edge.ep[side] = site; | |
if (!edge.ep[d3_geom_voronoiOpposite[side]]) return; | |
callback(edge); | |
}, | |
distance: function(s, t) { | |
var dx = s.x - t.x, dy = s.y - t.y; | |
return Math.sqrt(dx * dx + dy * dy); | |
} | |
}; | |
var EventQueue = { | |
list: [], | |
insert: function(he, site, offset) { | |
he.vertex = site; | |
he.ystar = site.y + offset; | |
for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) { | |
var next = list[i]; | |
if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) { | |
continue; | |
} else { | |
break; | |
} | |
} | |
list.splice(i, 0, he); | |
}, | |
del: function(he) { | |
for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {} | |
ls.splice(i, 1); | |
}, | |
empty: function() { | |
return EventQueue.list.length === 0; | |
}, | |
nextEvent: function(he) { | |
for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) { | |
if (ls[i] == he) return ls[i + 1]; | |
} | |
return null; | |
}, | |
min: function() { | |
var elem = EventQueue.list[0]; | |
return { | |
x: elem.vertex.x, | |
y: elem.ystar | |
}; | |
}, | |
extractMin: function() { | |
return EventQueue.list.shift(); | |
} | |
}; | |
EdgeList.init(); | |
Sites.bottomSite = Sites.list.shift(); | |
var newSite = Sites.list.shift(), newIntStar; | |
var lbnd, rbnd, llbnd, rrbnd, bisector; | |
var bot, top, temp, p, v; | |
var e, pm; | |
while (true) { | |
if (!EventQueue.empty()) { | |
newIntStar = EventQueue.min(); | |
} | |
if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) { | |
lbnd = EdgeList.leftBound(newSite); | |
rbnd = EdgeList.right(lbnd); | |
bot = EdgeList.rightRegion(lbnd); | |
e = Geom.bisect(bot, newSite); | |
bisector = EdgeList.createHalfEdge(e, "l"); | |
EdgeList.insert(lbnd, bisector); | |
p = Geom.intersect(lbnd, bisector); | |
if (p) { | |
EventQueue.del(lbnd); | |
EventQueue.insert(lbnd, p, Geom.distance(p, newSite)); | |
} | |
lbnd = bisector; | |
bisector = EdgeList.createHalfEdge(e, "r"); | |
EdgeList.insert(lbnd, bisector); | |
p = Geom.intersect(bisector, rbnd); | |
if (p) { | |
EventQueue.insert(bisector, p, Geom.distance(p, newSite)); | |
} | |
newSite = Sites.list.shift(); | |
} else if (!EventQueue.empty()) { | |
lbnd = EventQueue.extractMin(); | |
llbnd = EdgeList.left(lbnd); | |
rbnd = EdgeList.right(lbnd); | |
rrbnd = EdgeList.right(rbnd); | |
bot = EdgeList.leftRegion(lbnd); | |
top = EdgeList.rightRegion(rbnd); | |
v = lbnd.vertex; | |
Geom.endPoint(lbnd.edge, lbnd.side, v); | |
Geom.endPoint(rbnd.edge, rbnd.side, v); | |
EdgeList.del(lbnd); | |
EventQueue.del(rbnd); | |
EdgeList.del(rbnd); | |
pm = "l"; | |
if (bot.y > top.y) { | |
temp = bot; | |
bot = top; | |
top = temp; | |
pm = "r"; | |
} | |
e = Geom.bisect(bot, top); | |
bisector = EdgeList.createHalfEdge(e, pm); | |
EdgeList.insert(llbnd, bisector); | |
Geom.endPoint(e, d3_geom_voronoiOpposite[pm], v); | |
p = Geom.intersect(llbnd, bisector); | |
if (p) { | |
EventQueue.del(llbnd); | |
EventQueue.insert(llbnd, p, Geom.distance(p, bot)); | |
} | |
p = Geom.intersect(bisector, rrbnd); | |
if (p) { | |
EventQueue.insert(bisector, p, Geom.distance(p, bot)); | |
} | |
} else { | |
break; | |
} | |
} | |
for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) { | |
callback(lbnd.edge); | |
} | |
} | |
d3.geom.quadtree = function(points, x1, y1, x2, y2) { | |
var x = d3_svg_lineX, y = d3_svg_lineY, compat; | |
if (compat = arguments.length) { | |
x = d3_geom_quadtreeCompatX; | |
y = d3_geom_quadtreeCompatY; | |
if (compat === 3) { | |
y2 = y1; | |
x2 = x1; | |
y1 = x1 = 0; | |
} | |
return quadtree(points); | |
} | |
function quadtree(data) { | |
var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_; | |
if (x1 != null) { | |
x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2; | |
} else { | |
x2_ = y2_ = -(x1_ = y1_ = Infinity); | |
xs = [], ys = []; | |
n = data.length; | |
if (compat) for (i = 0; i < n; ++i) { | |
d = data[i]; | |
if (d.x < x1_) x1_ = d.x; | |
if (d.y < y1_) y1_ = d.y; | |
if (d.x > x2_) x2_ = d.x; | |
if (d.y > y2_) y2_ = d.y; | |
xs.push(d.x); | |
ys.push(d.y); | |
} else for (i = 0; i < n; ++i) { | |
var x_ = +fx(d = data[i], i), y_ = +fy(d, i); | |
if (x_ < x1_) x1_ = x_; | |
if (y_ < y1_) y1_ = y_; | |
if (x_ > x2_) x2_ = x_; | |
if (y_ > y2_) y2_ = y_; | |
xs.push(x_); | |
ys.push(y_); | |
} | |
} | |
var dx = x2_ - x1_, dy = y2_ - y1_; | |
if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy; | |
function insert(n, d, x, y, x1, y1, x2, y2) { | |
if (isNaN(x) || isNaN(y)) return; | |
if (n.leaf) { | |
var nx = n.x, ny = n.y; | |
if (nx != null) { | |
if (Math.abs(nx - x) + Math.abs(ny - y) < .01) { | |
insertChild(n, d, x, y, x1, y1, x2, y2); | |
} else { | |
var nPoint = n.point; | |
n.x = n.y = n.point = null; | |
insertChild(n, nPoint, nx, ny, x1, y1, x2, y2); | |
insertChild(n, d, x, y, x1, y1, x2, y2); | |
} | |
} else { | |
n.x = x, n.y = y, n.point = d; | |
} | |
} else { | |
insertChild(n, d, x, y, x1, y1, x2, y2); | |
} | |
} | |
function insertChild(n, d, x, y, x1, y1, x2, y2) { | |
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = x >= sx, bottom = y >= sy, i = (bottom << 1) + right; | |
n.leaf = false; | |
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode()); | |
if (right) x1 = sx; else x2 = sx; | |
if (bottom) y1 = sy; else y2 = sy; | |
insert(n, d, x, y, x1, y1, x2, y2); | |
} | |
var root = d3_geom_quadtreeNode(); | |
root.add = function(d) { | |
insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_); | |
}; | |
root.visit = function(f) { | |
d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_); | |
}; | |
i = -1; | |
if (x1 == null) { | |
while (++i < n) { | |
insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_); | |
} | |
--i; | |
} else data.forEach(root.add); | |
xs = ys = data = d = null; | |
return root; | |
} | |
quadtree.x = function(_) { | |
return arguments.length ? (x = _, quadtree) : x; | |
}; | |
quadtree.y = function(_) { | |
return arguments.length ? (y = _, quadtree) : y; | |
}; | |
quadtree.extent = function(_) { | |
if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ]; | |
if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], | |
y2 = +_[1][1]; | |
return quadtree; | |
}; | |
quadtree.size = function(_) { | |
if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ]; | |
if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1]; | |
return quadtree; | |
}; | |
return quadtree; | |
}; | |
function d3_geom_quadtreeCompatX(d) { | |
return d.x; | |
} | |
function d3_geom_quadtreeCompatY(d) { | |
return d.y; | |
} | |
function d3_geom_quadtreeNode() { | |
return { | |
leaf: true, | |
nodes: [], | |
point: null, | |
x: null, | |
y: null | |
}; | |
} | |
function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) { | |
if (!f(node, x1, y1, x2, y2)) { | |
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes; | |
if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy); | |
if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy); | |
if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2); | |
if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2); | |
} | |
} | |
d3.interpolateRgb = d3_interpolateRgb; | |
function d3_interpolateRgb(a, b) { | |
a = d3.rgb(a); | |
b = d3.rgb(b); | |
var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab; | |
return function(t) { | |
return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t)); | |
}; | |
} | |
d3.interpolateObject = d3_interpolateObject; | |
function d3_interpolateObject(a, b) { | |
var i = {}, c = {}, k; | |
for (k in a) { | |
if (k in b) { | |
i[k] = d3_interpolate(a[k], b[k]); | |
} else { | |
c[k] = a[k]; | |
} | |
} | |
for (k in b) { | |
if (!(k in a)) { | |
c[k] = b[k]; | |
} | |
} | |
return function(t) { | |
for (k in i) c[k] = i[k](t); | |
return c; | |
}; | |
} | |
d3.interpolateNumber = d3_interpolateNumber; | |
function d3_interpolateNumber(a, b) { | |
b -= a = +a; | |
return function(t) { | |
return a + b * t; | |
}; | |
} | |
d3.interpolateString = d3_interpolateString; | |
function d3_interpolateString(a, b) { | |
var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o; | |
a = a + "", b = b + ""; | |
d3_interpolate_number.lastIndex = 0; | |
for (i = 0; m = d3_interpolate_number.exec(b); ++i) { | |
if (m.index) s.push(b.substring(s0, s1 = m.index)); | |
q.push({ | |
i: s.length, | |
x: m[0] | |
}); | |
s.push(null); | |
s0 = d3_interpolate_number.lastIndex; | |
} | |
if (s0 < b.length) s.push(b.substring(s0)); | |
for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) { | |
o = q[i]; | |
if (o.x == m[0]) { | |
if (o.i) { | |
if (s[o.i + 1] == null) { | |
s[o.i - 1] += o.x; | |
s.splice(o.i, 1); | |
for (j = i + 1; j < n; ++j) q[j].i--; | |
} else { | |
s[o.i - 1] += o.x + s[o.i + 1]; | |
s.splice(o.i, 2); | |
for (j = i + 1; j < n; ++j) q[j].i -= 2; | |
} | |
} else { | |
if (s[o.i + 1] == null) { | |
s[o.i] = o.x; | |
} else { | |
s[o.i] = o.x + s[o.i + 1]; | |
s.splice(o.i + 1, 1); | |
for (j = i + 1; j < n; ++j) q[j].i--; | |
} | |
} | |
q.splice(i, 1); | |
n--; | |
i--; | |
} else { | |
o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x)); | |
} | |
} | |
while (i < n) { | |
o = q.pop(); | |
if (s[o.i + 1] == null) { | |
s[o.i] = o.x; | |
} else { | |
s[o.i] = o.x + s[o.i + 1]; | |
s.splice(o.i + 1, 1); | |
} | |
n--; | |
} | |
if (s.length === 1) { | |
return s[0] == null ? (o = q[0].x, function(t) { | |
return o(t) + ""; | |
}) : function() { | |
return b; | |
}; | |
} | |
return function(t) { | |
for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t); | |
return s.join(""); | |
}; | |
} | |
var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; | |
d3.interpolate = d3_interpolate; | |
function d3_interpolate(a, b) { | |
var i = d3.interpolators.length, f; | |
while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ; | |
return f; | |
} | |
d3.interpolators = [ function(a, b) { | |
var t = typeof b; | |
return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_Color ? d3_interpolateRgb : t === "object" ? Array.isArray(b) ? d3_interpolateArray : d3_interpolateObject : d3_interpolateNumber)(a, b); | |
} ]; | |
d3.interpolateArray = d3_interpolateArray; | |
function d3_interpolateArray(a, b) { | |
var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i; | |
for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i])); | |
for (;i < na; ++i) c[i] = a[i]; | |
for (;i < nb; ++i) c[i] = b[i]; | |
return function(t) { | |
for (i = 0; i < n0; ++i) c[i] = x[i](t); | |
return c; | |
}; | |
} | |
var d3_ease_default = function() { | |
return d3_identity; | |
}; | |
var d3_ease = d3.map({ | |
linear: d3_ease_default, | |
poly: d3_ease_poly, | |
quad: function() { | |
return d3_ease_quad; | |
}, | |
cubic: function() { | |
return d3_ease_cubic; | |
}, | |
sin: function() { | |
return d3_ease_sin; | |
}, | |
exp: function() { | |
return d3_ease_exp; | |
}, | |
circle: function() { | |
return d3_ease_circle; | |
}, | |
elastic: d3_ease_elastic, | |
back: d3_ease_back, | |
bounce: function() { | |
return d3_ease_bounce; | |
} | |
}); | |
var d3_ease_mode = d3.map({ | |
"in": d3_identity, | |
out: d3_ease_reverse, | |
"in-out": d3_ease_reflect, | |
"out-in": function(f) { | |
return d3_ease_reflect(d3_ease_reverse(f)); | |
} | |
}); | |
d3.ease = function(name) { | |
var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in"; | |
t = d3_ease.get(t) || d3_ease_default; | |
m = d3_ease_mode.get(m) || d3_identity; | |
return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1)))); | |
}; | |
function d3_ease_clamp(f) { | |
return function(t) { | |
return t <= 0 ? 0 : t >= 1 ? 1 : f(t); | |
}; | |
} | |
function d3_ease_reverse(f) { | |
return function(t) { | |
return 1 - f(1 - t); | |
}; | |
} | |
function d3_ease_reflect(f) { | |
return function(t) { | |
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t)); | |
}; | |
} | |
function d3_ease_quad(t) { | |
return t * t; | |
} | |
function d3_ease_cubic(t) { | |
return t * t * t; | |
} | |
function d3_ease_cubicInOut(t) { | |
if (t <= 0) return 0; | |
if (t >= 1) return 1; | |
var t2 = t * t, t3 = t2 * t; | |
return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75); | |
} | |
function d3_ease_poly(e) { | |
return function(t) { | |
return Math.pow(t, e); | |
}; | |
} | |
function d3_ease_sin(t) { | |
return 1 - Math.cos(t * π / 2); | |
} | |
function d3_ease_exp(t) { | |
return Math.pow(2, 10 * (t - 1)); | |
} | |
function d3_ease_circle(t) { | |
return 1 - Math.sqrt(1 - t * t); | |
} | |
function d3_ease_elastic(a, p) { | |
var s; | |
if (arguments.length < 2) p = .45; | |
if (arguments.length) s = p / (2 * π) * Math.asin(1 / a); else a = 1, s = p / 4; | |
return function(t) { | |
return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * π / p); | |
}; | |
} | |
function d3_ease_back(s) { | |
if (!s) s = 1.70158; | |
return function(t) { | |
return t * t * ((s + 1) * t - s); | |
}; | |
} | |
function d3_ease_bounce(t) { | |
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; | |
} | |
d3.interpolateHcl = d3_interpolateHcl; | |
function d3_interpolateHcl(a, b) { | |
a = d3.hcl(a); | |
b = d3.hcl(b); | |
var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al; | |
if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac; | |
if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; | |
return function(t) { | |
return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + ""; | |
}; | |
} | |
d3.interpolateHsl = d3_interpolateHsl; | |
function d3_interpolateHsl(a, b) { | |
a = d3.hsl(a); | |
b = d3.hsl(b); | |
var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al; | |
if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as; | |
if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; | |
return function(t) { | |
return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + ""; | |
}; | |
} | |
d3.interpolateLab = d3_interpolateLab; | |
function d3_interpolateLab(a, b) { | |
a = d3.lab(a); | |
b = d3.lab(b); | |
var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab; | |
return function(t) { | |
return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + ""; | |
}; | |
} | |
d3.interpolateRound = d3_interpolateRound; | |
function d3_interpolateRound(a, b) { | |
b -= a; | |
return function(t) { | |
return Math.round(a + b * t); | |
}; | |
} | |
d3.transform = function(string) { | |
var g = d3_document.createElementNS(d3.ns.prefix.svg, "g"); | |
return (d3.transform = function(string) { | |
if (string != null) { | |
g.setAttribute("transform", string); | |
var t = g.transform.baseVal.consolidate(); | |
} | |
return new d3_transform(t ? t.matrix : d3_transformIdentity); | |
})(string); | |
}; | |
function d3_transform(m) { | |
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; | |
if (r0[0] * r1[1] < r1[0] * r0[1]) { | |
r0[0] *= -1; | |
r0[1] *= -1; | |
kx *= -1; | |
kz *= -1; | |
} | |
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees; | |
this.translate = [ m.e, m.f ]; | |
this.scale = [ kx, ky ]; | |
this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0; | |
} | |
d3_transform.prototype.toString = function() { | |
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")"; | |
}; | |
function d3_transformDot(a, b) { | |
return a[0] * b[0] + a[1] * b[1]; | |
} | |
function d3_transformNormalize(a) { | |
var k = Math.sqrt(d3_transformDot(a, a)); | |
if (k) { | |
a[0] /= k; | |
a[1] /= k; | |
} | |
return k; | |
} | |
function d3_transformCombine(a, b, k) { | |
a[0] += k * b[0]; | |
a[1] += k * b[1]; | |
return a; | |
} | |
var d3_transformIdentity = { | |
a: 1, | |
b: 0, | |
c: 0, | |
d: 1, | |
e: 0, | |
f: 0 | |
}; | |
d3.interpolateTransform = d3_interpolateTransform; | |
function d3_interpolateTransform(a, b) { | |
var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale; | |
if (ta[0] != tb[0] || ta[1] != tb[1]) { | |
s.push("translate(", null, ",", null, ")"); | |
q.push({ | |
i: 1, | |
x: d3_interpolateNumber(ta[0], tb[0]) | |
}, { | |
i: 3, | |
x: d3_interpolateNumber(ta[1], tb[1]) | |
}); | |
} else if (tb[0] || tb[1]) { | |
s.push("translate(" + tb + ")"); | |
} else { | |
s.push(""); | |
} | |
if (ra != rb) { | |
if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; | |
q.push({ | |
i: s.push(s.pop() + "rotate(", null, ")") - 2, | |
x: d3_interpolateNumber(ra, rb) | |
}); | |
} else if (rb) { | |
s.push(s.pop() + "rotate(" + rb + ")"); | |
} | |
if (wa != wb) { | |
q.push({ | |
i: s.push(s.pop() + "skewX(", null, ")") - 2, | |
x: d3_interpolateNumber(wa, wb) | |
}); | |
} else if (wb) { | |
s.push(s.pop() + "skewX(" + wb + ")"); | |
} | |
if (ka[0] != kb[0] || ka[1] != kb[1]) { | |
n = s.push(s.pop() + "scale(", null, ",", null, ")"); | |
q.push({ | |
i: n - 4, | |
x: d3_interpolateNumber(ka[0], kb[0]) | |
}, { | |
i: n - 2, | |
x: d3_interpolateNumber(ka[1], kb[1]) | |
}); | |
} else if (kb[0] != 1 || kb[1] != 1) { | |
s.push(s.pop() + "scale(" + kb + ")"); | |
} | |
n = q.length; | |
return function(t) { | |
var i = -1, o; | |
while (++i < n) s[(o = q[i]).i] = o.x(t); | |
return s.join(""); | |
}; | |
} | |
function d3_uninterpolateNumber(a, b) { | |
b = b - (a = +a) ? 1 / (b - a) : 0; | |
return function(x) { | |
return (x - a) * b; | |
}; | |
} | |
function d3_uninterpolateClamp(a, b) { | |
b = b - (a = +a) ? 1 / (b - a) : 0; | |
return function(x) { | |
return Math.max(0, Math.min(1, (x - a) * b)); | |
}; | |
} | |
d3.layout = {}; | |
d3.layout.bundle = function() { | |
return function(links) { | |
var paths = [], i = -1, n = links.length; | |
while (++i < n) paths.push(d3_layout_bundlePath(links[i])); | |
return paths; | |
}; | |
}; | |
function d3_layout_bundlePath(link) { | |
var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ]; | |
while (start !== lca) { | |
start = start.parent; | |
points.push(start); | |
} | |
var k = points.length; | |
while (end !== lca) { | |
points.splice(k, 0, end); | |
end = end.parent; | |
} | |
return points; | |
} | |
function d3_layout_bundleAncestors(node) { | |
var ancestors = [], parent = node.parent; | |
while (parent != null) { | |
ancestors.push(node); | |
node = parent; | |
parent = parent.parent; | |
} | |
ancestors.push(node); | |
return ancestors; | |
} | |
function d3_layout_bundleLeastCommonAncestor(a, b) { | |
if (a === b) return a; | |
var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null; | |
while (aNode === bNode) { | |
sharedNode = aNode; | |
aNode = aNodes.pop(); | |
bNode = bNodes.pop(); | |
} | |
return sharedNode; | |
} | |
d3.layout.chord = function() { | |
var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords; | |
function relayout() { | |
var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j; | |
chords = []; | |
groups = []; | |
k = 0, i = -1; | |
while (++i < n) { | |
x = 0, j = -1; | |
while (++j < n) { | |
x += matrix[i][j]; | |
} | |
groupSums.push(x); | |
subgroupIndex.push(d3.range(n)); | |
k += x; | |
} | |
if (sortGroups) { | |
groupIndex.sort(function(a, b) { | |
return sortGroups(groupSums[a], groupSums[b]); | |
}); | |
} | |
if (sortSubgroups) { | |
subgroupIndex.forEach(function(d, i) { | |
d.sort(function(a, b) { | |
return sortSubgroups(matrix[i][a], matrix[i][b]); | |
}); | |
}); | |
} | |
k = (2 * π - padding * n) / k; | |
x = 0, i = -1; | |
while (++i < n) { | |
x0 = x, j = -1; | |
while (++j < n) { | |
var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k; | |
subgroups[di + "-" + dj] = { | |
index: di, | |
subindex: dj, | |
startAngle: a0, | |
endAngle: a1, | |
value: v | |
}; | |
} | |
groups[di] = { | |
index: di, | |
startAngle: x0, | |
endAngle: x, | |
value: (x - x0) / k | |
}; | |
x += padding; | |
} | |
i = -1; | |
while (++i < n) { | |
j = i - 1; | |
while (++j < n) { | |
var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i]; | |
if (source.value || target.value) { | |
chords.push(source.value < target.value ? { | |
source: target, | |
target: source | |
} : { | |
source: source, | |
target: target | |
}); | |
} | |
} | |
} | |
if (sortChords) resort(); | |
} | |
function resort() { | |
chords.sort(function(a, b) { | |
return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2); | |
}); | |
} | |
chord.matrix = function(x) { | |
if (!arguments.length) return matrix; | |
n = (matrix = x) && matrix.length; | |
chords = groups = null; | |
return chord; | |
}; | |
chord.padding = function(x) { | |
if (!arguments.length) return padding; | |
padding = x; | |
chords = groups = null; | |
return chord; | |
}; | |
chord.sortGroups = function(x) { | |
if (!arguments.length) return sortGroups; | |
sortGroups = x; | |
chords = groups = null; | |
return chord; | |
}; | |
chord.sortSubgroups = function(x) { | |
if (!arguments.length) return sortSubgroups; | |
sortSubgroups = x; | |
chords = null; | |
return chord; | |
}; | |
chord.sortChords = function(x) { | |
if (!arguments.length) return sortChords; | |
sortChords = x; | |
if (chords) resort(); | |
return chord; | |
}; | |
chord.chords = function() { | |
if (!chords) relayout(); | |
return chords; | |
}; | |
chord.groups = function() { | |
if (!groups) relayout(); | |
return groups; | |
}; | |
return chord; | |
}; | |
d3.layout.force = function() { | |
var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, nodes = [], links = [], distances, strengths, charges; | |
function repulse(node) { | |
return function(quad, x1, _, x2) { | |
if (quad.point !== node) { | |
var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy); | |
if ((x2 - x1) * dn < theta) { | |
var k = quad.charge * dn * dn; | |
node.px -= dx * k; | |
node.py -= dy * k; | |
return true; | |
} | |
if (quad.point && isFinite(dn)) { | |
var k = quad.pointCharge * dn * dn; | |
node.px -= dx * k; | |
node.py -= dy * k; | |
} | |
} | |
return !quad.charge; | |
}; | |
} | |
force.tick = function() { | |
if ((alpha *= .99) < .005) { | |
event.end({ | |
type: "end", | |
alpha: alpha = 0 | |
}); | |
return true; | |
} | |
var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y; | |
for (i = 0; i < m; ++i) { | |
o = links[i]; | |
s = o.source; | |
t = o.target; | |
x = t.x - s.x; | |
y = t.y - s.y; | |
if (l = x * x + y * y) { | |
l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l; | |
x *= l; | |
y *= l; | |
t.x -= x * (k = s.weight / (t.weight + s.weight)); | |
t.y -= y * k; | |
s.x += x * (k = 1 - k); | |
s.y += y * k; | |
} | |
} | |
if (k = alpha * gravity) { | |
x = size[0] / 2; | |
y = size[1] / 2; | |
i = -1; | |
if (k) while (++i < n) { | |
o = nodes[i]; | |
o.x += (x - o.x) * k; | |
o.y += (y - o.y) * k; | |
} | |
} | |
if (charge) { | |
d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges); | |
i = -1; | |
while (++i < n) { | |
if (!(o = nodes[i]).fixed) { | |
q.visit(repulse(o)); | |
} | |
} | |
} | |
i = -1; | |
while (++i < n) { | |
o = nodes[i]; | |
if (o.fixed) { | |
o.x = o.px; | |
o.y = o.py; | |
} else { | |
o.x -= (o.px - (o.px = o.x)) * friction; | |
o.y -= (o.py - (o.py = o.y)) * friction; | |
} | |
} | |
event.tick({ | |
type: "tick", | |
alpha: alpha | |
}); | |
}; | |
force.nodes = function(x) { | |
if (!arguments.length) return nodes; | |
nodes = x; | |
return force; | |
}; | |
force.links = function(x) { | |
if (!arguments.length) return links; | |
links = x; | |
return force; | |
}; | |
force.size = function(x) { | |
if (!arguments.length) return size; | |
size = x; | |
return force; | |
}; | |
force.linkDistance = function(x) { | |
if (!arguments.length) return linkDistance; | |
linkDistance = typeof x === "function" ? x : +x; | |
return force; | |
}; | |
force.distance = force.linkDistance; | |
force.linkStrength = function(x) { | |
if (!arguments.length) return linkStrength; | |
linkStrength = typeof x === "function" ? x : +x; | |
return force; | |
}; | |
force.friction = function(x) { | |
if (!arguments.length) return friction; | |
friction = +x; | |
return force; | |
}; | |
force.charge = function(x) { | |
if (!arguments.length) return charge; | |
charge = typeof x === "function" ? x : +x; | |
return force; | |
}; | |
force.gravity = function(x) { | |
if (!arguments.length) return gravity; | |
gravity = +x; | |
return force; | |
}; | |
force.theta = function(x) { | |
if (!arguments.length) return theta; | |
theta = +x; | |
return force; | |
}; | |
force.alpha = function(x) { | |
if (!arguments.length) return alpha; | |
x = +x; | |
if (alpha) { | |
if (x > 0) alpha = x; else alpha = 0; | |
} else if (x > 0) { | |
event.start({ | |
type: "start", | |
alpha: alpha = x | |
}); | |
d3.timer(force.tick); | |
} | |
return force; | |
}; | |
force.start = function() { | |
var i, j, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o; | |
for (i = 0; i < n; ++i) { | |
(o = nodes[i]).index = i; | |
o.weight = 0; | |
} | |
for (i = 0; i < m; ++i) { | |
o = links[i]; | |
if (typeof o.source == "number") o.source = nodes[o.source]; | |
if (typeof o.target == "number") o.target = nodes[o.target]; | |
++o.source.weight; | |
++o.target.weight; | |
} | |
for (i = 0; i < n; ++i) { | |
o = nodes[i]; | |
if (isNaN(o.x)) o.x = position("x", w); | |
if (isNaN(o.y)) o.y = position("y", h); | |
if (isNaN(o.px)) o.px = o.x; | |
if (isNaN(o.py)) o.py = o.y; | |
} | |
distances = []; | |
if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance; | |
strengths = []; | |
if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength; | |
charges = []; | |
if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge; | |
function position(dimension, size) { | |
var neighbors = neighbor(i), j = -1, m = neighbors.length, x; | |
while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x; | |
return Math.random() * size; | |
} | |
function neighbor() { | |
if (!neighbors) { | |
neighbors = []; | |
for (j = 0; j < n; ++j) { | |
neighbors[j] = []; | |
} | |
for (j = 0; j < m; ++j) { | |
var o = links[j]; | |
neighbors[o.source.index].push(o.target); | |
neighbors[o.target.index].push(o.source); | |
} | |
} | |
return neighbors[i]; | |
} | |
return force.resume(); | |
}; | |
force.resume = function() { | |
return force.alpha(.1); | |
}; | |
force.stop = function() { | |
return force.alpha(0); | |
}; | |
force.drag = function() { | |
if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend); | |
if (!arguments.length) return drag; | |
this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag); | |
}; | |
function dragmove(d) { | |
d.px = d3.event.x, d.py = d3.event.y; | |
force.resume(); | |
} | |
return d3.rebind(force, event, "on"); | |
}; | |
function d3_layout_forceDragstart(d) { | |
d.fixed |= 2; | |
} | |
function d3_layout_forceDragend(d) { | |
d.fixed &= ~6; | |
} | |
function d3_layout_forceMouseover(d) { | |
d.fixed |= 4; | |
d.px = d.x, d.py = d.y; | |
} | |
function d3_layout_forceMouseout(d) { | |
d.fixed &= ~4; | |
} | |
function d3_layout_forceAccumulate(quad, alpha, charges) { | |
var cx = 0, cy = 0; | |
quad.charge = 0; | |
if (!quad.leaf) { | |
var nodes = quad.nodes, n = nodes.length, i = -1, c; | |
while (++i < n) { | |
c = nodes[i]; | |
if (c == null) continue; | |
d3_layout_forceAccumulate(c, alpha, charges); | |
quad.charge += c.charge; | |
cx += c.charge * c.cx; | |
cy += c.charge * c.cy; | |
} | |
} | |
if (quad.point) { | |
if (!quad.leaf) { | |
quad.point.x += Math.random() - .5; | |
quad.point.y += Math.random() - .5; | |
} | |
var k = alpha * charges[quad.point.index]; | |
quad.charge += quad.pointCharge = k; | |
cx += k * quad.point.x; | |
cy += k * quad.point.y; | |
} | |
quad.cx = cx / quad.charge; | |
quad.cy = cy / quad.charge; | |
} | |
var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1; | |
d3.layout.hierarchy = function() { | |
var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue; | |
function recurse(node, depth, nodes) { | |
var childs = children.call(hierarchy, node, depth); | |
node.depth = depth; | |
nodes.push(node); | |
if (childs && (n = childs.length)) { | |
var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d; | |
while (++i < n) { | |
d = recurse(childs[i], j, nodes); | |
d.parent = node; | |
c.push(d); | |
v += d.value; | |
} | |
if (sort) c.sort(sort); | |
if (value) node.value = v; | |
} else if (value) { | |
node.value = +value.call(hierarchy, node, depth) || 0; | |
} | |
return node; | |
} | |
function revalue(node, depth) { | |
var children = node.children, v = 0; | |
if (children && (n = children.length)) { | |
var i = -1, n, j = depth + 1; | |
while (++i < n) v += revalue(children[i], j); | |
} else if (value) { | |
v = +value.call(hierarchy, node, depth) || 0; | |
} | |
if (value) node.value = v; | |
return v; | |
} | |
function hierarchy(d) { | |
var nodes = []; | |
recurse(d, 0, nodes); | |
return nodes; | |
} | |
hierarchy.sort = function(x) { | |
if (!arguments.length) return sort; | |
sort = x; | |
return hierarchy; | |
}; | |
hierarchy.children = function(x) { | |
if (!arguments.length) return children; | |
children = x; | |
return hierarchy; | |
}; | |
hierarchy.value = function(x) { | |
if (!arguments.length) return value; | |
value = x; | |
return hierarchy; | |
}; | |
hierarchy.revalue = function(root) { | |
revalue(root, 0); | |
return root; | |
}; | |
return hierarchy; | |
}; | |
function d3_layout_hierarchyRebind(object, hierarchy) { | |
d3.rebind(object, hierarchy, "sort", "children", "value"); | |
object.nodes = object; | |
object.links = d3_layout_hierarchyLinks; | |
return object; | |
} | |
function d3_layout_hierarchyChildren(d) { | |
return d.children; | |
} | |
function d3_layout_hierarchyValue(d) { | |
return d.value; | |
} | |
function d3_layout_hierarchySort(a, b) { | |
return b.value - a.value; | |
} | |
function d3_layout_hierarchyLinks(nodes) { | |
return d3.merge(nodes.map(function(parent) { | |
return (parent.children || []).map(function(child) { | |
return { | |
source: parent, | |
target: child | |
}; | |
}); | |
})); | |
} | |
d3.layout.partition = function() { | |
var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ]; | |
function position(node, x, dx, dy) { | |
var children = node.children; | |
node.x = x; | |
node.y = node.depth * dy; | |
node.dx = dx; | |
node.dy = dy; | |
if (children && (n = children.length)) { | |
var i = -1, n, c, d; | |
dx = node.value ? dx / node.value : 0; | |
while (++i < n) { | |
position(c = children[i], x, d = c.value * dx, dy); | |
x += d; | |
} | |
} | |
} | |
function depth(node) { | |
var children = node.children, d = 0; | |
if (children && (n = children.length)) { | |
var i = -1, n; | |
while (++i < n) d = Math.max(d, depth(children[i])); | |
} | |
return 1 + d; | |
} | |
function partition(d, i) { | |
var nodes = hierarchy.call(this, d, i); | |
position(nodes[0], 0, size[0], size[1] / depth(nodes[0])); | |
return nodes; | |
} | |
partition.size = function(x) { | |
if (!arguments.length) return size; | |
size = x; | |
return partition; | |
}; | |
return d3_layout_hierarchyRebind(partition, hierarchy); | |
}; | |
d3.layout.pie = function() { | |
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = 2 * π; | |
function pie(data) { | |
var values = data.map(function(d, i) { | |
return +value.call(pie, d, i); | |
}); | |
var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle); | |
var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values); | |
var index = d3.range(data.length); | |
if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) { | |
return values[j] - values[i]; | |
} : function(i, j) { | |
return sort(data[i], data[j]); | |
}); | |
var arcs = []; | |
index.forEach(function(i) { | |
var d; | |
arcs[i] = { | |
data: data[i], | |
value: d = values[i], | |
startAngle: a, | |
endAngle: a += d * k | |
}; | |
}); | |
return arcs; | |
} | |
pie.value = function(x) { | |
if (!arguments.length) return value; | |
value = x; | |
return pie; | |
}; | |
pie.sort = function(x) { | |
if (!arguments.length) return sort; | |
sort = x; | |
return pie; | |
}; | |
pie.startAngle = function(x) { | |
if (!arguments.length) return startAngle; | |
startAngle = x; | |
return pie; | |
}; | |
pie.endAngle = function(x) { | |
if (!arguments.length) return endAngle; | |
endAngle = x; | |
return pie; | |
}; | |
return pie; | |
}; | |
var d3_layout_pieSortByValue = {}; | |
d3.layout.stack = function() { | |
var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY; | |
function stack(data, index) { | |
var series = data.map(function(d, i) { | |
return values.call(stack, d, i); | |
}); | |
var points = series.map(function(d) { | |
return d.map(function(v, i) { | |
return [ x.call(stack, v, i), y.call(stack, v, i) ]; | |
}); | |
}); | |
var orders = order.call(stack, points, index); | |
series = d3.permute(series, orders); | |
points = d3.permute(points, orders); | |
var offsets = offset.call(stack, points, index); | |
var n = series.length, m = series[0].length, i, j, o; | |
for (j = 0; j < m; ++j) { | |
out.call(stack, series[0][j], o = offsets[j], points[0][j][1]); | |
for (i = 1; i < n; ++i) { | |
out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]); | |
} | |
} | |
return data; | |
} | |
stack.values = function(x) { | |
if (!arguments.length) return values; | |
values = x; | |
return stack; | |
}; | |
stack.order = function(x) { | |
if (!arguments.length) return order; | |
order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault; | |
return stack; | |
}; | |
stack.offset = function(x) { | |
if (!arguments.length) return offset; | |
offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero; | |
return stack; | |
}; | |
stack.x = function(z) { | |
if (!arguments.length) return x; | |
x = z; | |
return stack; | |
}; | |
stack.y = function(z) { | |
if (!arguments.length) return y; | |
y = z; | |
return stack; | |
}; | |
stack.out = function(z) { | |
if (!arguments.length) return out; | |
out = z; | |
return stack; | |
}; | |
return stack; | |
}; | |
function d3_layout_stackX(d) { | |
return d.x; | |
} | |
function d3_layout_stackY(d) { | |
return d.y; | |
} | |
function d3_layout_stackOut(d, y0, y) { | |
d.y0 = y0; | |
d.y = y; | |
} | |
var d3_layout_stackOrders = d3.map({ | |
"inside-out": function(data) { | |
var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) { | |
return max[a] - max[b]; | |
}), top = 0, bottom = 0, tops = [], bottoms = []; | |
for (i = 0; i < n; ++i) { | |
j = index[i]; | |
if (top < bottom) { | |
top += sums[j]; | |
tops.push(j); | |
} else { | |
bottom += sums[j]; | |
bottoms.push(j); | |
} | |
} | |
return bottoms.reverse().concat(tops); | |
}, | |
reverse: function(data) { | |
return d3.range(data.length).reverse(); | |
}, | |
"default": d3_layout_stackOrderDefault | |
}); | |
var d3_layout_stackOffsets = d3.map({ | |
silhouette: function(data) { | |
var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = []; | |
for (j = 0; j < m; ++j) { | |
for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; | |
if (o > max) max = o; | |
sums.push(o); | |
} | |
for (j = 0; j < m; ++j) { | |
y0[j] = (max - sums[j]) / 2; | |
} | |
return y0; | |
}, | |
wiggle: function(data) { | |
var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = []; | |
y0[0] = o = o0 = 0; | |
for (j = 1; j < m; ++j) { | |
for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1]; | |
for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) { | |
for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) { | |
s3 += (data[k][j][1] - data[k][j - 1][1]) / dx; | |
} | |
s2 += s3 * data[i][j][1]; | |
} | |
y0[j] = o -= s1 ? s2 / s1 * dx : 0; | |
if (o < o0) o0 = o; | |
} | |
for (j = 0; j < m; ++j) y0[j] -= o0; | |
return y0; | |
}, | |
expand: function(data) { | |
var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = []; | |
for (j = 0; j < m; ++j) { | |
for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; | |
if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k; | |
} | |
for (j = 0; j < m; ++j) y0[j] = 0; | |
return y0; | |
}, | |
zero: d3_layout_stackOffsetZero | |
}); | |
function d3_layout_stackOrderDefault(data) { | |
return d3.range(data.length); | |
} | |
function d3_layout_stackOffsetZero(data) { | |
var j = -1, m = data[0].length, y0 = []; | |
while (++j < m) y0[j] = 0; | |
return y0; | |
} | |
function d3_layout_stackMaxIndex(array) { | |
var i = 1, j = 0, v = array[0][1], k, n = array.length; | |
for (;i < n; ++i) { | |
if ((k = array[i][1]) > v) { | |
j = i; | |
v = k; | |
} | |
} | |
return j; | |
} | |
function d3_layout_stackReduceSum(d) { | |
return d.reduce(d3_layout_stackSum, 0); | |
} | |
function d3_layout_stackSum(p, d) { | |
return p + d[1]; | |
} | |
d3.layout.histogram = function() { | |
var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges; | |
function histogram(data, i) { | |
var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x; | |
while (++i < m) { | |
bin = bins[i] = []; | |
bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]); | |
bin.y = 0; | |
} | |
if (m > 0) { | |
i = -1; | |
while (++i < n) { | |
x = values[i]; | |
if (x >= range[0] && x <= range[1]) { | |
bin = bins[d3.bisect(thresholds, x, 1, m) - 1]; | |
bin.y += k; | |
bin.push(data[i]); | |
} | |
} | |
} | |
return bins; | |
} | |
histogram.value = function(x) { | |
if (!arguments.length) return valuer; | |
valuer = x; | |
return histogram; | |
}; | |
histogram.range = function(x) { | |
if (!arguments.length) return ranger; | |
ranger = d3_functor(x); | |
return histogram; | |
}; | |
histogram.bins = function(x) { | |
if (!arguments.length) return binner; | |
binner = typeof x === "number" ? function(range) { | |
return d3_layout_histogramBinFixed(range, x); | |
} : d3_functor(x); | |
return histogram; | |
}; | |
histogram.frequency = function(x) { | |
if (!arguments.length) return frequency; | |
frequency = !!x; | |
return histogram; | |
}; | |
return histogram; | |
}; | |
function d3_layout_histogramBinSturges(range, values) { | |
return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1)); | |
} | |
function d3_layout_histogramBinFixed(range, n) { | |
var x = -1, b = +range[0], m = (range[1] - b) / n, f = []; | |
while (++x <= n) f[x] = m * x + b; | |
return f; | |
} | |
function d3_layout_histogramRange(values) { | |
return [ d3.min(values), d3.max(values) ]; | |
} | |
d3.layout.tree = function() { | |
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; | |
function tree(d, i) { | |
var nodes = hierarchy.call(this, d, i), root = nodes[0]; | |
function firstWalk(node, previousSibling) { | |
var children = node.children, layout = node._tree; | |
if (children && (n = children.length)) { | |
var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1; | |
while (++i < n) { | |
child = children[i]; | |
firstWalk(child, previousChild); | |
ancestor = apportion(child, previousChild, ancestor); | |
previousChild = child; | |
} | |
d3_layout_treeShift(node); | |
var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim); | |
if (previousSibling) { | |
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); | |
layout.mod = layout.prelim - midpoint; | |
} else { | |
layout.prelim = midpoint; | |
} | |
} else { | |
if (previousSibling) { | |
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); | |
} | |
} | |
} | |
function secondWalk(node, x) { | |
node.x = node._tree.prelim + x; | |
var children = node.children; | |
if (children && (n = children.length)) { | |
var i = -1, n; | |
x += node._tree.mod; | |
while (++i < n) { | |
secondWalk(children[i], x); | |
} | |
} | |
} | |
function apportion(node, previousSibling, ancestor) { | |
if (previousSibling) { | |
var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift; | |
while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) { | |
vom = d3_layout_treeLeft(vom); | |
vop = d3_layout_treeRight(vop); | |
vop._tree.ancestor = node; | |
shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip); | |
if (shift > 0) { | |
d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift); | |
sip += shift; | |
sop += shift; | |
} | |
sim += vim._tree.mod; | |
sip += vip._tree.mod; | |
som += vom._tree.mod; | |
sop += vop._tree.mod; | |
} | |
if (vim && !d3_layout_treeRight(vop)) { | |
vop._tree.thread = vim; | |
vop._tree.mod += sim - sop; | |
} | |
if (vip && !d3_layout_treeLeft(vom)) { | |
vom._tree.thread = vip; | |
vom._tree.mod += sip - som; | |
ancestor = node; | |
} | |
} | |
return ancestor; | |
} | |
d3_layout_treeVisitAfter(root, function(node, previousSibling) { | |
node._tree = { | |
ancestor: node, | |
prelim: 0, | |
mod: 0, | |
change: 0, | |
shift: 0, | |
number: previousSibling ? previousSibling._tree.number + 1 : 0 | |
}; | |
}); | |
firstWalk(root); | |
secondWalk(root, -root._tree.prelim); | |
var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1; | |
d3_layout_treeVisitAfter(root, nodeSize ? function(node) { | |
node.x *= size[0]; | |
node.y = node.depth * size[1]; | |
delete node._tree; | |
} : function(node) { | |
node.x = (node.x - x0) / (x1 - x0) * size[0]; | |
node.y = node.depth / y1 * size[1]; | |
delete node._tree; | |
}); | |
return nodes; | |
} | |
tree.separation = function(x) { | |
if (!arguments.length) return separation; | |
separation = x; | |
return tree; | |
}; | |
tree.size = function(x) { | |
if (!arguments.length) return nodeSize ? null : size; | |
nodeSize = (size = x) == null; | |
return tree; | |
}; | |
tree.nodeSize = function(x) { | |
if (!arguments.length) return nodeSize ? size : null; | |
nodeSize = (size = x) != null; | |
return tree; | |
}; | |
return d3_layout_hierarchyRebind(tree, hierarchy); | |
}; | |
function d3_layout_treeSeparation(a, b) { | |
return a.parent == b.parent ? 1 : 2; | |
} | |
function d3_layout_treeLeft(node) { | |
var children = node.children; | |
return children && children.length ? children[0] : node._tree.thread; | |
} | |
function d3_layout_treeRight(node) { | |
var children = node.children, n; | |
return children && (n = children.length) ? children[n - 1] : node._tree.thread; | |
} | |
function d3_layout_treeSearch(node, compare) { | |
var children = node.children; | |
if (children && (n = children.length)) { | |
var child, n, i = -1; | |
while (++i < n) { | |
if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) { | |
node = child; | |
} | |
} | |
} | |
return node; | |
} | |
function d3_layout_treeRightmost(a, b) { | |
return a.x - b.x; | |
} | |
function d3_layout_treeLeftmost(a, b) { | |
return b.x - a.x; | |
} | |
function d3_layout_treeDeepest(a, b) { | |
return a.depth - b.depth; | |
} | |
function d3_layout_treeVisitAfter(node, callback) { | |
function visit(node, previousSibling) { | |
var children = node.children; | |
if (children && (n = children.length)) { | |
var child, previousChild = null, i = -1, n; | |
while (++i < n) { | |
child = children[i]; | |
visit(child, previousChild); | |
previousChild = child; | |
} | |
} | |
callback(node, previousSibling); | |
} | |
visit(node, null); | |
} | |
function d3_layout_treeShift(node) { | |
var shift = 0, change = 0, children = node.children, i = children.length, child; | |
while (--i >= 0) { | |
child = children[i]._tree; | |
child.prelim += shift; | |
child.mod += shift; | |
shift += child.shift + (change += child.change); | |
} | |
} | |
function d3_layout_treeMove(ancestor, node, shift) { | |
ancestor = ancestor._tree; | |
node = node._tree; | |
var change = shift / (node.number - ancestor.number); | |
ancestor.change += change; | |
node.change -= change; | |
node.shift += shift; | |
node.prelim += shift; | |
node.mod += shift; | |
} | |
function d3_layout_treeAncestor(vim, node, ancestor) { | |
return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor; | |
} | |
d3.layout.pack = function() { | |
var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius; | |
function pack(d, i) { | |
var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() { | |
return radius; | |
}; | |
root.x = root.y = 0; | |
d3_layout_treeVisitAfter(root, function(d) { | |
d.r = +r(d.value); | |
}); | |
d3_layout_treeVisitAfter(root, d3_layout_packSiblings); | |
if (padding) { | |
var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2; | |
d3_layout_treeVisitAfter(root, function(d) { | |
d.r += dr; | |
}); | |
d3_layout_treeVisitAfter(root, d3_layout_packSiblings); | |
d3_layout_treeVisitAfter(root, function(d) { | |
d.r -= dr; | |
}); | |
} | |
d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h)); | |
return nodes; | |
} | |
pack.size = function(_) { | |
if (!arguments.length) return size; | |
size = _; | |
return pack; | |
}; | |
pack.radius = function(_) { | |
if (!arguments.length) return radius; | |
radius = _ == null || typeof _ === "function" ? _ : +_; | |
return pack; | |
}; | |
pack.padding = function(_) { | |
if (!arguments.length) return padding; | |
padding = +_; | |
return pack; | |
}; | |
return d3_layout_hierarchyRebind(pack, hierarchy); | |
}; | |
function d3_layout_packSort(a, b) { | |
return a.value - b.value; | |
} | |
function d3_layout_packInsert(a, b) { | |
var c = a._pack_next; | |
a._pack_next = b; | |
b._pack_prev = a; | |
b._pack_next = c; | |
c._pack_prev = b; | |
} | |
function d3_layout_packSplice(a, b) { | |
a._pack_next = b; | |
b._pack_prev = a; | |
} | |
function d3_layout_packIntersects(a, b) { | |
var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r; | |
return .999 * dr * dr > dx * dx + dy * dy; | |
} | |
function d3_layout_packSiblings(node) { | |
if (!(nodes = node.children) || !(n = nodes.length)) return; | |
var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n; | |
function bound(node) { | |
xMin = Math.min(node.x - node.r, xMin); | |
xMax = Math.max(node.x + node.r, xMax); | |
yMin = Math.min(node.y - node.r, yMin); | |
yMax = Math.max(node.y + node.r, yMax); | |
} | |
nodes.forEach(d3_layout_packLink); | |
a = nodes[0]; | |
a.x = -a.r; | |
a.y = 0; | |
bound(a); | |
if (n > 1) { | |
b = nodes[1]; | |
b.x = b.r; | |
b.y = 0; | |
bound(b); | |
if (n > 2) { | |
c = nodes[2]; | |
d3_layout_packPlace(a, b, c); | |
bound(c); | |
d3_layout_packInsert(a, c); | |
a._pack_prev = c; | |
d3_layout_packInsert(c, b); | |
b = a._pack_next; | |
for (i = 3; i < n; i++) { | |
d3_layout_packPlace(a, b, c = nodes[i]); | |
var isect = 0, s1 = 1, s2 = 1; | |
for (j = b._pack_next; j !== b; j = j._pack_next, s1++) { | |
if (d3_layout_packIntersects(j, c)) { | |
isect = 1; | |
break; | |
} | |
} | |
if (isect == 1) { | |
for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) { | |
if (d3_layout_packIntersects(k, c)) { | |
break; | |
} | |
} | |
} | |
if (isect) { | |
if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b); | |
i--; | |
} else { | |
d3_layout_packInsert(a, c); | |
b = c; | |
bound(c); | |
} | |
} | |
} | |
} | |
var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0; | |
for (i = 0; i < n; i++) { | |
c = nodes[i]; | |
c.x -= cx; | |
c.y -= cy; | |
cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y)); | |
} | |
node.r = cr; | |
nodes.forEach(d3_layout_packUnlink); | |
} | |
function d3_layout_packLink(node) { | |
node._pack_next = node._pack_prev = node; | |
} | |
function d3_layout_packUnlink(node) { | |
delete node._pack_next; | |
delete node._pack_prev; | |
} | |
function d3_layout_packTransform(node, x, y, k) { | |
var children = node.children; | |
node.x = x += k * node.x; | |
node.y = y += k * node.y; | |
node.r *= k; | |
if (children) { | |
var i = -1, n = children.length; | |
while (++i < n) d3_layout_packTransform(children[i], x, y, k); | |
} | |
} | |
function d3_layout_packPlace(a, b, c) { | |
var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y; | |
if (db && (dx || dy)) { | |
var da = b.r + c.r, dc = dx * dx + dy * dy; | |
da *= da; | |
db *= db; | |
var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc); | |
c.x = a.x + x * dx + y * dy; | |
c.y = a.y + x * dy - y * dx; | |
} else { | |
c.x = a.x + db; | |
c.y = a.y; | |
} | |
} | |
d3.layout.cluster = function() { | |
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; | |
function cluster(d, i) { | |
var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0; | |
d3_layout_treeVisitAfter(root, function(node) { | |
var children = node.children; | |
if (children && children.length) { | |
node.x = d3_layout_clusterX(children); | |
node.y = d3_layout_clusterY(children); | |
} else { | |
node.x = previousNode ? x += separation(node, previousNode) : 0; | |
node.y = 0; | |
previousNode = node; | |
} | |
}); | |
var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2; | |
d3_layout_treeVisitAfter(root, nodeSize ? function(node) { | |
node.x = (node.x - root.x) * size[0]; | |
node.y = (root.y - node.y) * size[1]; | |
} : function(node) { | |
node.x = (node.x - x0) / (x1 - x0) * size[0]; | |
node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1]; | |
}); | |
return nodes; | |
} | |
cluster.separation = function(x) { | |
if (!arguments.length) return separation; | |
separation = x; | |
return cluster; | |
}; | |
cluster.size = function(x) { | |
if (!arguments.length) return nodeSize ? null : size; | |
nodeSize = (size = x) == null; | |
return cluster; | |
}; | |
cluster.nodeSize = function(x) { | |
if (!arguments.length) return nodeSize ? size : null; | |
nodeSize = (size = x) != null; | |
return cluster; | |
}; | |
return d3_layout_hierarchyRebind(cluster, hierarchy); | |
}; | |
function d3_layout_clusterY(children) { | |
return 1 + d3.max(children, function(child) { | |
return child.y; | |
}); | |
} | |
function d3_layout_clusterX(children) { | |
return children.reduce(function(x, child) { | |
return x + child.x; | |
}, 0) / children.length; | |
} | |
function d3_layout_clusterLeft(node) { | |
var children = node.children; | |
return children && children.length ? d3_layout_clusterLeft(children[0]) : node; | |
} | |
function d3_layout_clusterRight(node) { | |
var children = node.children, n; | |
return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node; | |
} | |
d3.layout.treemap = function() { | |
var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5)); | |
function scale(children, k) { | |
var i = -1, n = children.length, child, area; | |
while (++i < n) { | |
area = (child = children[i]).value * (k < 0 ? 0 : k); | |
child.area = isNaN(area) || area <= 0 ? 0 : area; | |
} | |
} | |
function squarify(node) { | |
var children = node.children; | |
if (children && children.length) { | |
var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n; | |
scale(remaining, rect.dx * rect.dy / node.value); | |
row.area = 0; | |
while ((n = remaining.length) > 0) { | |
row.push(child = remaining[n - 1]); | |
row.area += child.area; | |
if (mode !== "squarify" || (score = worst(row, u)) <= best) { | |
remaining.pop(); | |
best = score; | |
} else { | |
row.area -= row.pop().area; | |
position(row, u, rect, false); | |
u = Math.min(rect.dx, rect.dy); | |
row.length = row.area = 0; | |
best = Infinity; | |
} | |
} | |
if (row.length) { | |
position(row, u, rect, true); | |
row.length = row.area = 0; | |
} | |
children.forEach(squarify); | |
} | |
} | |
function stickify(node) { | |
var children = node.children; | |
if (children && children.length) { | |
var rect = pad(node), remaining = children.slice(), child, row = []; | |
scale(remaining, rect.dx * rect.dy / node.value); | |
row.area = 0; | |
while (child = remaining.pop()) { | |
row.push(child); | |
row.area += child.area; | |
if (child.z != null) { | |
position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length); | |
row.length = row.area = 0; | |
} | |
} | |
children.forEach(stickify); | |
} | |
} | |
function worst(row, u) { | |
var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length; | |
while (++i < n) { | |
if (!(r = row[i].area)) continue; | |
if (r < rmin) rmin = r; | |
if (r > rmax) rmax = r; | |
} | |
s *= s; | |
u *= u; | |
return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity; | |
} | |
function position(row, u, rect, flush) { | |
var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o; | |
if (u == rect.dx) { | |
if (flush || v > rect.dy) v = rect.dy; | |
while (++i < n) { | |
o = row[i]; | |
o.x = x; | |
o.y = y; | |
o.dy = v; | |
x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0); | |
} | |
o.z = true; | |
o.dx += rect.x + rect.dx - x; | |
rect.y += v; | |
rect.dy -= v; | |
} else { | |
if (flush || v > rect.dx) v = rect.dx; | |
while (++i < n) { | |
o = row[i]; | |
o.x = x; | |
o.y = y; | |
o.dx = v; | |
y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0); | |
} | |
o.z = false; | |
o.dy += rect.y + rect.dy - y; | |
rect.x += v; | |
rect.dx -= v; | |
} | |
} | |
function treemap(d) { | |
var nodes = stickies || hierarchy(d), root = nodes[0]; | |
root.x = 0; | |
root.y = 0; | |
root.dx = size[0]; | |
root.dy = size[1]; | |
if (stickies) hierarchy.revalue(root); | |
scale([ root ], root.dx * root.dy / root.value); | |
(stickies ? stickify : squarify)(root); | |
if (sticky) stickies = nodes; | |
return nodes; | |
} | |
treemap.size = function(x) { | |
if (!arguments.length) return size; | |
size = x; | |
return treemap; | |
}; | |
treemap.padding = function(x) { | |
if (!arguments.length) return padding; | |
function padFunction(node) { | |
var p = x.call(treemap, node, node.depth); | |
return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p); | |
} | |
function padConstant(node) { | |
return d3_layout_treemapPad(node, x); | |
} | |
var type; | |
pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], | |
padConstant) : padConstant; | |
return treemap; | |
}; | |
treemap.round = function(x) { | |
if (!arguments.length) return round != Number; | |
round = x ? Math.round : Number; | |
return treemap; | |
}; | |
treemap.sticky = function(x) { | |
if (!arguments.length) return sticky; | |
sticky = x; | |
stickies = null; | |
return treemap; | |
}; | |
treemap.ratio = function(x) { | |
if (!arguments.length) return ratio; | |
ratio = x; | |
return treemap; | |
}; | |
treemap.mode = function(x) { | |
if (!arguments.length) return mode; | |
mode = x + ""; | |
return treemap; | |
}; | |
return d3_layout_hierarchyRebind(treemap, hierarchy); | |
}; | |
function d3_layout_treemapPadNull(node) { | |
return { | |
x: node.x, | |
y: node.y, | |
dx: node.dx, | |
dy: node.dy | |
}; | |
} | |
function d3_layout_treemapPad(node, padding) { | |
var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2]; | |
if (dx < 0) { | |
x += dx / 2; | |
dx = 0; | |
} | |
if (dy < 0) { | |
y += dy / 2; | |
dy = 0; | |
} | |
return { | |
x: x, | |
y: y, | |
dx: dx, | |
dy: dy | |
}; | |
} | |
d3.random = { | |
normal: function(µ, σ) { | |
var n = arguments.length; | |
if (n < 2) σ = 1; | |
if (n < 1) µ = 0; | |
return function() { | |
var x, y, r; | |
do { | |
x = Math.random() * 2 - 1; | |
y = Math.random() * 2 - 1; | |
r = x * x + y * y; | |
} while (!r || r > 1); | |
return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r); | |
}; | |
}, | |
logNormal: function() { | |
var random = d3.random.normal.apply(d3, arguments); | |
return function() { | |
return Math.exp(random()); | |
}; | |
}, | |
irwinHall: function(m) { | |
return function() { | |
for (var s = 0, j = 0; j < m; j++) s += Math.random(); | |
return s / m; | |
}; | |
} | |
}; | |
d3.scale = {}; | |
function d3_scaleExtent(domain) { | |
var start = domain[0], stop = domain[domain.length - 1]; | |
return start < stop ? [ start, stop ] : [ stop, start ]; | |
} | |
function d3_scaleRange(scale) { | |
return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range()); | |
} | |
function d3_scale_bilinear(domain, range, uninterpolate, interpolate) { | |
var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]); | |
return function(x) { | |
return i(u(x)); | |
}; | |
} | |
function d3_scale_nice(domain, nice) { | |
var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx; | |
if (x1 < x0) { | |
dx = i0, i0 = i1, i1 = dx; | |
dx = x0, x0 = x1, x1 = dx; | |
} | |
domain[i0] = nice.floor(x0); | |
domain[i1] = nice.ceil(x1); | |
return domain; | |
} | |
function d3_scale_niceStep(step) { | |
return step ? { | |
floor: function(x) { | |
return Math.floor(x / step) * step; | |
}, | |
ceil: function(x) { | |
return Math.ceil(x / step) * step; | |
} | |
} : d3_scale_niceIdentity; | |
} | |
var d3_scale_niceIdentity = { | |
floor: d3_identity, | |
ceil: d3_identity | |
}; | |
function d3_scale_polylinear(domain, range, uninterpolate, interpolate) { | |
var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1; | |
if (domain[k] < domain[0]) { | |
domain = domain.slice().reverse(); | |
range = range.slice().reverse(); | |
} | |
while (++j <= k) { | |
u.push(uninterpolate(domain[j - 1], domain[j])); | |
i.push(interpolate(range[j - 1], range[j])); | |
} | |
return function(x) { | |
var j = d3.bisect(domain, x, 1, k) - 1; | |
return i[j](u[j](x)); | |
}; | |
} | |
d3.scale.linear = function() { | |
return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false); | |
}; | |
function d3_scale_linear(domain, range, interpolate, clamp) { | |
var output, input; | |
function rescale() { | |
var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber; | |
output = linear(domain, range, uninterpolate, interpolate); | |
input = linear(range, domain, uninterpolate, d3_interpolate); | |
return scale; | |
} | |
function scale(x) { | |
return output(x); | |
} | |
scale.invert = function(y) { | |
return input(y); | |
}; | |
scale.domain = function(x) { | |
if (!arguments.length) return domain; | |
domain = x.map(Number); | |
return rescale(); | |
}; | |
scale.range = function(x) { | |
if (!arguments.length) return range; | |
range = x; | |
return rescale(); | |
}; | |
scale.rangeRound = function(x) { | |
return scale.range(x).interpolate(d3_interpolateRound); | |
}; | |
scale.clamp = function(x) { | |
if (!arguments.length) return clamp; | |
clamp = x; | |
return rescale(); | |
}; | |
scale.interpolate = function(x) { | |
if (!arguments.length) return interpolate; | |
interpolate = x; | |
return rescale(); | |
}; | |
scale.ticks = function(m) { | |
return d3_scale_linearTicks(domain, m); | |
}; | |
scale.tickFormat = function(m, format) { | |
return d3_scale_linearTickFormat(domain, m, format); | |
}; | |
scale.nice = function(m) { | |
d3_scale_linearNice(domain, m); | |
return rescale(); | |
}; | |
scale.copy = function() { | |
return d3_scale_linear(domain, range, interpolate, clamp); | |
}; | |
return rescale(); | |
} | |
function d3_scale_linearRebind(scale, linear) { | |
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp"); | |
} | |
function d3_scale_linearNice(domain, m) { | |
return d3_scale_nice(domain, d3_scale_niceStep(m ? d3_scale_linearTickRange(domain, m)[2] : d3_scale_linearNiceStep(domain))); | |
} | |
function d3_scale_linearNiceStep(domain) { | |
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0]; | |
return Math.pow(10, Math.round(Math.log(span) / Math.LN10) - 1); | |
} | |
function d3_scale_linearTickRange(domain, m) { | |
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step; | |
if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2; | |
extent[0] = Math.ceil(extent[0] / step) * step; | |
extent[1] = Math.floor(extent[1] / step) * step + step * .5; | |
extent[2] = step; | |
return extent; | |
} | |
function d3_scale_linearTicks(domain, m) { | |
return d3.range.apply(d3, d3_scale_linearTickRange(domain, m)); | |
} | |
function d3_scale_linearTickFormat(domain, m, format) { | |
var precision = -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01); | |
return d3.format(format ? format.replace(d3_format_re, function(a, b, c, d, e, f, g, h, i, j) { | |
return [ b, c, d, e, f, g, h, i || "." + (precision - (j === "%") * 2), j ].join(""); | |
}) : ",." + precision + "f"); | |
} | |
d3.scale.log = function() { | |
return d3_scale_log(d3.scale.linear().domain([ 0, Math.LN10 ]), 10, d3_scale_logp, d3_scale_powp, [ 1, 10 ]); | |
}; | |
function d3_scale_log(linear, base, log, pow, domain) { | |
function scale(x) { | |
return linear(log(x)); | |
} | |
scale.invert = function(x) { | |
return pow(linear.invert(x)); | |
}; | |
scale.domain = function(x) { | |
if (!arguments.length) return domain; | |
if (x[0] < 0) log = d3_scale_logn, pow = d3_scale_pown; else log = d3_scale_logp, | |
pow = d3_scale_powp; | |
linear.domain((domain = x.map(Number)).map(log)); | |
return scale; | |
}; | |
scale.base = function(_) { | |
if (!arguments.length) return base; | |
base = +_; | |
return scale; | |
}; | |
scale.nice = function() { | |
function floor(x) { | |
return Math.pow(base, Math.floor(Math.log(x) / Math.log(base))); | |
} | |
function ceil(x) { | |
return Math.pow(base, Math.ceil(Math.log(x) / Math.log(base))); | |
} | |
linear.domain(d3_scale_nice(domain, log === d3_scale_logp ? { | |
floor: floor, | |
ceil: ceil | |
} : { | |
floor: function(x) { | |
return -ceil(-x); | |
}, | |
ceil: function(x) { | |
return -floor(-x); | |
} | |
}).map(log)); | |
return scale; | |
}; | |
scale.ticks = function() { | |
var extent = d3_scaleExtent(linear.domain()), ticks = []; | |
if (extent.every(isFinite)) { | |
var b = Math.log(base), i = Math.floor(extent[0] / b), j = Math.ceil(extent[1] / b), u = pow(extent[0]), v = pow(extent[1]), n = base % 1 ? 2 : base; | |
if (log === d3_scale_logn) { | |
ticks.push(-Math.pow(base, -i)); | |
for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(-Math.pow(base, -i) * k); | |
} else { | |
for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k); | |
ticks.push(Math.pow(base, i)); | |
} | |
for (i = 0; ticks[i] < u; i++) {} | |
for (j = ticks.length; ticks[j - 1] > v; j--) {} | |
ticks = ticks.slice(i, j); | |
} | |
return ticks; | |
}; | |
scale.tickFormat = function(n, format) { | |
if (!arguments.length) return d3_scale_logFormat; | |
if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format); | |
var b = Math.log(base), k = Math.max(.1, n / scale.ticks().length), f = log === d3_scale_logn ? (e = -1e-12, | |
Math.floor) : (e = 1e-12, Math.ceil), e; | |
return function(d) { | |
return d / pow(b * f(log(d) / b + e)) <= k ? format(d) : ""; | |
}; | |
}; | |
scale.copy = function() { | |
return d3_scale_log(linear.copy(), base, log, pow, domain); | |
}; | |
return d3_scale_linearRebind(scale, linear); | |
} | |
var d3_scale_logFormat = d3.format(".0e"); | |
function d3_scale_logp(x) { | |
return Math.log(x < 0 ? 0 : x); | |
} | |
function d3_scale_powp(x) { | |
return Math.exp(x); | |
} | |
function d3_scale_logn(x) { | |
return -Math.log(x > 0 ? 0 : -x); | |
} | |
function d3_scale_pown(x) { | |
return -Math.exp(-x); | |
} | |
d3.scale.pow = function() { | |
return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]); | |
}; | |
function d3_scale_pow(linear, exponent, domain) { | |
var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent); | |
function scale(x) { | |
return linear(powp(x)); | |
} | |
scale.invert = function(x) { | |
return powb(linear.invert(x)); | |
}; | |
scale.domain = function(x) { | |
if (!arguments.length) return domain; | |
linear.domain((domain = x.map(Number)).map(powp)); | |
return scale; | |
}; | |
scale.ticks = function(m) { | |
return d3_scale_linearTicks(domain, m); | |
}; | |
scale.tickFormat = function(m, format) { | |
return d3_scale_linearTickFormat(domain, m, format); | |
}; | |
scale.nice = function(m) { | |
return scale.domain(d3_scale_linearNice(domain, m)); | |
}; | |
scale.exponent = function(x) { | |
if (!arguments.length) return exponent; | |
powp = d3_scale_powPow(exponent = x); | |
powb = d3_scale_powPow(1 / exponent); | |
linear.domain(domain.map(powp)); | |
return scale; | |
}; | |
scale.copy = function() { | |
return d3_scale_pow(linear.copy(), exponent, domain); | |
}; | |
return d3_scale_linearRebind(scale, linear); | |
} | |
function d3_scale_powPow(e) { | |
return function(x) { | |
return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e); | |
}; | |
} | |
d3.scale.sqrt = function() { | |
return d3.scale.pow().exponent(.5); | |
}; | |
d3.scale.ordinal = function() { | |
return d3_scale_ordinal([], { | |
t: "range", | |
a: [ [] ] | |
}); | |
}; | |
function d3_scale_ordinal(domain, ranger) { | |
var index, range, rangeBand; | |
function scale(x) { | |
return range[((index.get(x) || index.set(x, domain.push(x))) - 1) % range.length]; | |
} | |
function steps(start, step) { | |
return d3.range(domain.length).map(function(i) { | |
return start + step * i; | |
}); | |
} | |
scale.domain = function(x) { | |
if (!arguments.length) return domain; | |
domain = []; | |
index = new d3_Map(); | |
var i = -1, n = x.length, xi; | |
while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi)); | |
return scale[ranger.t].apply(scale, ranger.a); | |
}; | |
scale.range = function(x) { | |
if (!arguments.length) return range; | |
range = x; | |
rangeBand = 0; | |
ranger = { | |
t: "range", | |
a: arguments | |
}; | |
return scale; | |
}; | |
scale.rangePoints = function(x, padding) { | |
if (arguments.length < 2) padding = 0; | |
var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding); | |
range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step); | |
rangeBand = 0; | |
ranger = { | |
t: "rangePoints", | |
a: arguments | |
}; | |
return scale; | |
}; | |
scale.rangeBands = function(x, padding, outerPadding) { | |
if (arguments.length < 2) padding = 0; | |
if (arguments.length < 3) outerPadding = padding; | |
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding); | |
range = steps(start + step * outerPadding, step); | |
if (reverse) range.reverse(); | |
rangeBand = step * (1 - padding); | |
ranger = { | |
t: "rangeBands", | |
a: arguments | |
}; | |
return scale; | |
}; | |
scale.rangeRoundBands = function(x, padding, outerPadding) { | |
if (arguments.length < 2) padding = 0; | |
if (arguments.length < 3) outerPadding = padding; | |
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step; | |
range = steps(start + Math.round(error / 2), step); | |
if (reverse) range.reverse(); | |
rangeBand = Math.round(step * (1 - padding)); | |
ranger = { | |
t: "rangeRoundBands", | |
a: arguments | |
}; | |
return scale; | |
}; | |
scale.rangeBand = function() { | |
return rangeBand; | |
}; | |
scale.rangeExtent = function() { | |
return d3_scaleExtent(ranger.a[0]); | |
}; | |
scale.copy = function() { | |
return d3_scale_ordinal(domain, ranger); | |
}; | |
return scale.domain(domain); | |
} | |
d3.scale.category10 = function() { | |
return d3.scale.ordinal().range(d3_category10); | |
}; | |
d3.scale.category20 = function() { | |
return d3.scale.ordinal().range(d3_category20); | |
}; | |
d3.scale.category20b = function() { | |
return d3.scale.ordinal().range(d3_category20b); | |
}; | |
d3.scale.category20c = function() { | |
return d3.scale.ordinal().range(d3_category20c); | |
}; | |
var d3_category10 = [ "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf" ]; | |
var d3_category20 = [ "#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ]; | |
var d3_category20b = [ "#393b79", "#5254a3", "#6b6ecf", "#9c9ede", "#637939", "#8ca252", "#b5cf6b", "#cedb9c", "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94", "#843c39", "#ad494a", "#d6616b", "#e7969c", "#7b4173", "#a55194", "#ce6dbd", "#de9ed6" ]; | |
var d3_category20c = [ "#3182bd", "#6baed6", "#9ecae1", "#c6dbef", "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2", "#31a354", "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd", "#d9d9d9" ]; | |
d3.scale.quantile = function() { | |
return d3_scale_quantile([], []); | |
}; | |
function d3_scale_quantile(domain, range) { | |
var thresholds; | |
function rescale() { | |
var k = 0, q = range.length; | |
thresholds = []; | |
while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q); | |
return scale; | |
} | |
function scale(x) { | |
if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)]; | |
} | |
scale.domain = function(x) { | |
if (!arguments.length) return domain; | |
domain = x.filter(function(d) { | |
return !isNaN(d); | |
}).sort(d3.ascending); | |
return rescale(); | |
}; | |
scale.range = function(x) { | |
if (!arguments.length) return range; | |
range = x; | |
return rescale(); | |
}; | |
scale.quantiles = function() { | |
return thresholds; | |
}; | |
scale.copy = function() { | |
return d3_scale_quantile(domain, range); | |
}; | |
return rescale(); | |
} | |
d3.scale.quantize = function() { | |
return d3_scale_quantize(0, 1, [ 0, 1 ]); | |
}; | |
function d3_scale_quantize(x0, x1, range) { | |
var kx, i; | |
function scale(x) { | |
return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; | |
} | |
function rescale() { | |
kx = range.length / (x1 - x0); | |
i = range.length - 1; | |
return scale; | |
} | |
scale.domain = function(x) { | |
if (!arguments.length) return [ x0, x1 ]; | |
x0 = +x[0]; | |
x1 = +x[x.length - 1]; | |
return rescale(); | |
}; | |
scale.range = function(x) { | |
if (!arguments.length) return range; | |
range = x; | |
return rescale(); | |
}; | |
scale.copy = function() { | |
return d3_scale_quantize(x0, x1, range); | |
}; | |
scale.invertExtent = function(y) { | |
y = range.indexOf(y); | |
y = y < 0 ? NaN : y / kx + x0; | |
return [ y, y + 1 / kx ]; | |
}; | |
return rescale(); | |
} | |
d3.scale.threshold = function() { | |
return d3_scale_threshold([ .5 ], [ 0, 1 ]); | |
}; | |
function d3_scale_threshold(domain, range) { | |
function scale(x) { | |
if (x <= x) return range[d3.bisect(domain, x)]; | |
} | |
scale.domain = function(_) { | |
if (!arguments.length) return domain; | |
domain = _; | |
return scale; | |
}; | |
scale.range = function(_) { | |
if (!arguments.length) return range; | |
range = _; | |
return scale; | |
}; | |
scale.invertExtent = function(y) { | |
y = range.indexOf(y); | |
return [ domain[y - 1], domain[y] ]; | |
}; | |
scale.copy = function() { | |
return d3_scale_threshold(domain, range); | |
}; | |
return scale; | |
} | |
d3.scale.identity = function() { | |
return d3_scale_identity([ 0, 1 ]); | |
}; | |
function d3_scale_identity(domain) { | |
function identity(x) { | |
return +x; | |
} | |
identity.invert = identity; | |
identity.domain = identity.range = function(x) { | |
if (!arguments.length) return domain; | |
domain = x.map(identity); | |
return identity; | |
}; | |
identity.ticks = function(m) { | |
return d3_scale_linearTicks(domain, m); | |
}; | |
identity.tickFormat = function(m, format) { | |
return d3_scale_linearTickFormat(domain, m, format); | |
}; | |
identity.copy = function() { | |
return d3_scale_identity(domain); | |
}; | |
return identity; | |
} | |
d3.svg.arc = function() { | |
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; | |
function arc() { | |
var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, | |
a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1); | |
return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z"; | |
} | |
arc.innerRadius = function(v) { | |
if (!arguments.length) return innerRadius; | |
innerRadius = d3_functor(v); | |
return arc; | |
}; | |
arc.outerRadius = function(v) { | |
if (!arguments.length) return outerRadius; | |
outerRadius = d3_functor(v); | |
return arc; | |
}; | |
arc.startAngle = function(v) { | |
if (!arguments.length) return startAngle; | |
startAngle = d3_functor(v); | |
return arc; | |
}; | |
arc.endAngle = function(v) { | |
if (!arguments.length) return endAngle; | |
endAngle = d3_functor(v); | |
return arc; | |
}; | |
arc.centroid = function() { | |
var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset; | |
return [ Math.cos(a) * r, Math.sin(a) * r ]; | |
}; | |
return arc; | |
}; | |
var d3_svg_arcOffset = -π / 2, d3_svg_arcMax = 2 * π - 1e-6; | |
function d3_svg_arcInnerRadius(d) { | |
return d.innerRadius; | |
} | |
function d3_svg_arcOuterRadius(d) { | |
return d.outerRadius; | |
} | |
function d3_svg_arcStartAngle(d) { | |
return d.startAngle; | |
} | |
function d3_svg_arcEndAngle(d) { | |
return d.endAngle; | |
} | |
d3.svg.line.radial = function() { | |
var line = d3_svg_line(d3_svg_lineRadial); | |
line.radius = line.x, delete line.x; | |
line.angle = line.y, delete line.y; | |
return line; | |
}; | |
function d3_svg_lineRadial(points) { | |
var point, i = -1, n = points.length, r, a; | |
while (++i < n) { | |
point = points[i]; | |
r = point[0]; | |
a = point[1] + d3_svg_arcOffset; | |
point[0] = r * Math.cos(a); | |
point[1] = r * Math.sin(a); | |
} | |
return points; | |
} | |
function d3_svg_area(projection) { | |
var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7; | |
function area(data) { | |
var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() { | |
return x; | |
} : d3_functor(x1), fy1 = y0 === y1 ? function() { | |
return y; | |
} : d3_functor(y1), x, y; | |
function segment() { | |
segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z"); | |
} | |
while (++i < n) { | |
if (defined.call(this, d = data[i], i)) { | |
points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]); | |
points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]); | |
} else if (points0.length) { | |
segment(); | |
points0 = []; | |
points1 = []; | |
} | |
} | |
if (points0.length) segment(); | |
return segments.length ? segments.join("") : null; | |
} | |
area.x = function(_) { | |
if (!arguments.length) return x1; | |
x0 = x1 = _; | |
return area; | |
}; | |
area.x0 = function(_) { | |
if (!arguments.length) return x0; | |
x0 = _; | |
return area; | |
}; | |
area.x1 = function(_) { | |
if (!arguments.length) return x1; | |
x1 = _; | |
return area; | |
}; | |
area.y = function(_) { | |
if (!arguments.length) return y1; | |
y0 = y1 = _; | |
return area; | |
}; | |
area.y0 = function(_) { | |
if (!arguments.length) return y0; | |
y0 = _; | |
return area; | |
}; | |
area.y1 = function(_) { | |
if (!arguments.length) return y1; | |
y1 = _; | |
return area; | |
}; | |
area.defined = function(_) { | |
if (!arguments.length) return defined; | |
defined = _; | |
return area; | |
}; | |
area.interpolate = function(_) { | |
if (!arguments.length) return interpolateKey; | |
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; | |
interpolateReverse = interpolate.reverse || interpolate; | |
L = interpolate.closed ? "M" : "L"; | |
return area; | |
}; | |
area.tension = function(_) { | |
if (!arguments.length) return tension; | |
tension = _; | |
return area; | |
}; | |
return area; | |
} | |
d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter; | |
d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore; | |
d3.svg.area = function() { | |
return d3_svg_area(d3_identity); | |
}; | |
d3.svg.area.radial = function() { | |
var area = d3_svg_area(d3_svg_lineRadial); | |
area.radius = area.x, delete area.x; | |
area.innerRadius = area.x0, delete area.x0; | |
area.outerRadius = area.x1, delete area.x1; | |
area.angle = area.y, delete area.y; | |
area.startAngle = area.y0, delete area.y0; | |
area.endAngle = area.y1, delete area.y1; | |
return area; | |
}; | |
d3.svg.chord = function() { | |
var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; | |
function chord(d, i) { | |
var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i); | |
return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z"; | |
} | |
function subgroup(self, f, d, i) { | |
var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset; | |
return { | |
r: r, | |
a0: a0, | |
a1: a1, | |
p0: [ r * Math.cos(a0), r * Math.sin(a0) ], | |
p1: [ r * Math.cos(a1), r * Math.sin(a1) ] | |
}; | |
} | |
function equals(a, b) { | |
return a.a0 == b.a0 && a.a1 == b.a1; | |
} | |
function arc(r, p, a) { | |
return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p; | |
} | |
function curve(r0, p0, r1, p1) { | |
return "Q 0,0 " + p1; | |
} | |
chord.radius = function(v) { | |
if (!arguments.length) return radius; | |
radius = d3_functor(v); | |
return chord; | |
}; | |
chord.source = function(v) { | |
if (!arguments.length) return source; | |
source = d3_functor(v); | |
return chord; | |
}; | |
chord.target = function(v) { | |
if (!arguments.length) return target; | |
target = d3_functor(v); | |
return chord; | |
}; | |
chord.startAngle = function(v) { | |
if (!arguments.length) return startAngle; | |
startAngle = d3_functor(v); | |
return chord; | |
}; | |
chord.endAngle = function(v) { | |
if (!arguments.length) return endAngle; | |
endAngle = d3_functor(v); | |
return chord; | |
}; | |
return chord; | |
}; | |
function d3_svg_chordRadius(d) { | |
return d.radius; | |
} | |
d3.svg.diagonal = function() { | |
var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection; | |
function diagonal(d, i) { | |
var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, { | |
x: p0.x, | |
y: m | |
}, { | |
x: p3.x, | |
y: m | |
}, p3 ]; | |
p = p.map(projection); | |
return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3]; | |
} | |
diagonal.source = function(x) { | |
if (!arguments.length) return source; | |
source = d3_functor(x); | |
return diagonal; | |
}; | |
diagonal.target = function(x) { | |
if (!arguments.length) return target; | |
target = d3_functor(x); | |
return diagonal; | |
}; | |
diagonal.projection = function(x) { | |
if (!arguments.length) return projection; | |
projection = x; | |
return diagonal; | |
}; | |
return diagonal; | |
}; | |
function d3_svg_diagonalProjection(d) { | |
return [ d.x, d.y ]; | |
} | |
d3.svg.diagonal.radial = function() { | |
var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection; | |
diagonal.projection = function(x) { | |
return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection; | |
}; | |
return diagonal; | |
}; | |
function d3_svg_diagonalRadialProjection(projection) { | |
return function() { | |
var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset; | |
return [ r * Math.cos(a), r * Math.sin(a) ]; | |
}; | |
} | |
d3.svg.symbol = function() { | |
var type = d3_svg_symbolType, size = d3_svg_symbolSize; | |
function symbol(d, i) { | |
return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i)); | |
} | |
symbol.type = function(x) { | |
if (!arguments.length) return type; | |
type = d3_functor(x); | |
return symbol; | |
}; | |
symbol.size = function(x) { | |
if (!arguments.length) return size; | |
size = d3_functor(x); | |
return symbol; | |
}; | |
return symbol; | |
}; | |
function d3_svg_symbolSize() { | |
return 64; | |
} | |
function d3_svg_symbolType() { | |
return "circle"; | |
} | |
function d3_svg_symbolCircle(size) { | |
var r = Math.sqrt(size / π); | |
return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z"; | |
} | |
var d3_svg_symbols = d3.map({ | |
circle: d3_svg_symbolCircle, | |
cross: function(size) { | |
var r = Math.sqrt(size / 5) / 2; | |
return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z"; | |
}, | |
diamond: function(size) { | |
var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30; | |
return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z"; | |
}, | |
square: function(size) { | |
var r = Math.sqrt(size) / 2; | |
return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z"; | |
}, | |
"triangle-down": function(size) { | |
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; | |
return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z"; | |
}, | |
"triangle-up": function(size) { | |
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; | |
return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z"; | |
} | |
}); | |
d3.svg.symbolTypes = d3_svg_symbols.keys(); | |
var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians); | |
function d3_transition(groups, id) { | |
d3_subclass(groups, d3_transitionPrototype); | |
groups.id = id; | |
return groups; | |
} | |
var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit = { | |
ease: d3_ease_cubicInOut, | |
delay: 0, | |
duration: 250 | |
}; | |
d3_transitionPrototype.call = d3_selectionPrototype.call; | |
d3_transitionPrototype.empty = d3_selectionPrototype.empty; | |
d3_transitionPrototype.node = d3_selectionPrototype.node; | |
d3_transitionPrototype.size = d3_selectionPrototype.size; | |
d3.transition = function(selection) { | |
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition(); | |
}; | |
d3.transition.prototype = d3_transitionPrototype; | |
d3_transitionPrototype.select = function(selector) { | |
var id = this.id, subgroups = [], subgroup, subnode, node; | |
selector = d3_selection_selector(selector); | |
for (var j = -1, m = this.length; ++j < m; ) { | |
subgroups.push(subgroup = []); | |
for (var group = this[j], i = -1, n = group.length; ++i < n; ) { | |
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i))) { | |
if ("__data__" in node) subnode.__data__ = node.__data__; | |
d3_transitionNode(subnode, i, id, node.__transition__[id]); | |
subgroup.push(subnode); | |
} else { | |
subgroup.push(null); | |
} | |
} | |
} | |
return d3_transition(subgroups, id); | |
}; | |
d3_transitionPrototype.selectAll = function(selector) { | |
var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition; | |
selector = d3_selection_selectorAll(selector); | |
for (var j = -1, m = this.length; ++j < m; ) { | |
for (var group = this[j], i = -1, n = group.length; ++i < n; ) { | |
if (node = group[i]) { | |
transition = node.__transition__[id]; | |
subnodes = selector.call(node, node.__data__, i); | |
subgroups.push(subgroup = []); | |
for (var k = -1, o = subnodes.length; ++k < o; ) { | |
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition); | |
subgroup.push(subnode); | |
} | |
} | |
} | |
} | |
return d3_transition(subgroups, id); | |
}; | |
d3_transitionPrototype.filter = function(filter) { | |
var subgroups = [], subgroup, group, node; | |
if (typeof filter !== "function") filter = d3_selection_filter(filter); | |
for (var j = 0, m = this.length; j < m; j++) { | |
subgroups.push(subgroup = []); | |
for (var group = this[j], i = 0, n = group.length; i < n; i++) { | |
if ((node = group[i]) && filter.call(node, node.__data__, i)) { | |
subgroup.push(node); | |
} | |
} | |
} | |
return d3_transition(subgroups, this.id, this.time).ease(this.ease()); | |
}; | |
d3_transitionPrototype.tween = function(name, tween) { | |
var id = this.id; | |
if (arguments.length < 2) return this.node().__transition__[id].tween.get(name); | |
return d3_selection_each(this, tween == null ? function(node) { | |
node.__transition__[id].tween.remove(name); | |
} : function(node) { | |
node.__transition__[id].tween.set(name, tween); | |
}); | |
}; | |
function d3_transition_tween(groups, name, value, tween) { | |
var id = groups.id; | |
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) { | |
node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j))); | |
} : (value = tween(value), function(node) { | |
node.__transition__[id].tween.set(name, value); | |
})); | |
} | |
d3_transitionPrototype.attr = function(nameNS, value) { | |
if (arguments.length < 2) { | |
for (value in nameNS) this.attr(value, nameNS[value]); | |
return this; | |
} | |
var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS); | |
function attrNull() { | |
this.removeAttribute(name); | |
} | |
function attrNullNS() { | |
this.removeAttributeNS(name.space, name.local); | |
} | |
function attrTween(b) { | |
return b == null ? attrNull : (b += "", function() { | |
var a = this.getAttribute(name), i; | |
return a !== b && (i = interpolate(a, b), function(t) { | |
this.setAttribute(name, i(t)); | |
}); | |
}); | |
} | |
function attrTweenNS(b) { | |
return b == null ? attrNullNS : (b += "", function() { | |
var a = this.getAttributeNS(name.space, name.local), i; | |
return a !== b && (i = interpolate(a, b), function(t) { | |
this.setAttributeNS(name.space, name.local, i(t)); | |
}); | |
}); | |
} | |
return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween); | |
}; | |
d3_transitionPrototype.attrTween = function(nameNS, tween) { | |
var name = d3.ns.qualify(nameNS); | |
function attrTween(d, i) { | |
var f = tween.call(this, d, i, this.getAttribute(name)); | |
return f && function(t) { | |
this.setAttribute(name, f(t)); | |
}; | |
} | |
function attrTweenNS(d, i) { | |
var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local)); | |
return f && function(t) { | |
this.setAttributeNS(name.space, name.local, f(t)); | |
}; | |
} | |
return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween); | |
}; | |
d3_transitionPrototype.style = function(name, value, priority) { | |
var n = arguments.length; | |
if (n < 3) { | |
if (typeof name !== "string") { | |
if (n < 2) value = ""; | |
for (priority in name) this.style(priority, name[priority], value); | |
return this; | |
} | |
priority = ""; | |
} | |
function styleNull() { | |
this.style.removeProperty(name); | |
} | |
function styleString(b) { | |
return b == null ? styleNull : (b += "", function() { | |
var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i; | |
return a !== b && (i = d3_interpolate(a, b), function(t) { | |
this.style.setProperty(name, i(t), priority); | |
}); | |
}); | |
} | |
return d3_transition_tween(this, "style." + name, value, styleString); | |
}; | |
d3_transitionPrototype.styleTween = function(name, tween, priority) { | |
if (arguments.length < 3) priority = ""; | |
function styleTween(d, i) { | |
var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name)); | |
return f && function(t) { | |
this.style.setProperty(name, f(t), priority); | |
}; | |
} | |
return this.tween("style." + name, styleTween); | |
}; | |
d3_transitionPrototype.text = function(value) { | |
return d3_transition_tween(this, "text", value, d3_transition_text); | |
}; | |
function d3_transition_text(b) { | |
if (b == null) b = ""; | |
return function() { | |
this.textContent = b; | |
}; | |
} | |
d3_transitionPrototype.remove = function() { | |
return this.each("end.transition", function() { | |
var p; | |
if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this); | |
}); | |
}; | |
d3_transitionPrototype.ease = function(value) { | |
var id = this.id; | |
if (arguments.length < 1) return this.node().__transition__[id].ease; | |
if (typeof value !== "function") value = d3.ease.apply(d3, arguments); | |
return d3_selection_each(this, function(node) { | |
node.__transition__[id].ease = value; | |
}); | |
}; | |
d3_transitionPrototype.delay = function(value) { | |
var id = this.id; | |
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { | |
node.__transition__[id].delay = value.call(node, node.__data__, i, j) | 0; | |
} : (value |= 0, function(node) { | |
node.__transition__[id].delay = value; | |
})); | |
}; | |
d3_transitionPrototype.duration = function(value) { | |
var id = this.id; | |
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { | |
node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j) | 0); | |
} : (value = Math.max(1, value | 0), function(node) { | |
node.__transition__[id].duration = value; | |
})); | |
}; | |
d3_transitionPrototype.each = function(type, listener) { | |
var id = this.id; | |
if (arguments.length < 2) { | |
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId; | |
d3_transitionInheritId = id; | |
d3_selection_each(this, function(node, i, j) { | |
d3_transitionInherit = node.__transition__[id]; | |
type.call(node, node.__data__, i, j); | |
}); | |
d3_transitionInherit = inherit; | |
d3_transitionInheritId = inheritId; | |
} else { | |
d3_selection_each(this, function(node) { | |
node.__transition__[id].event.on(type, listener); | |
}); | |
} | |
return this; | |
}; | |
d3_transitionPrototype.transition = function() { | |
var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition; | |
for (var j = 0, m = this.length; j < m; j++) { | |
subgroups.push(subgroup = []); | |
for (var group = this[j], i = 0, n = group.length; i < n; i++) { | |
if (node = group[i]) { | |
transition = Object.create(node.__transition__[id0]); | |
transition.delay += transition.duration; | |
d3_transitionNode(node, i, id1, transition); | |
} | |
subgroup.push(node); | |
} | |
} | |
return d3_transition(subgroups, id1); | |
}; | |
function d3_transitionNode(node, i, id, inherit) { | |
var lock = node.__transition__ || (node.__transition__ = { | |
active: 0, | |
count: 0 | |
}), transition = lock[id]; | |
if (!transition) { | |
var time = inherit.time; | |
transition = lock[id] = { | |
tween: new d3_Map(), | |
event: d3.dispatch("start", "end"), | |
time: time, | |
ease: inherit.ease, | |
delay: inherit.delay, | |
duration: inherit.duration | |
}; | |
++lock.count; | |
d3.timer(function(elapsed) { | |
var d = node.__data__, ease = transition.ease, event = transition.event, delay = transition.delay, duration = transition.duration, tweened = []; | |
return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1; | |
function start(elapsed) { | |
if (lock.active > id) return stop(); | |
lock.active = id; | |
event.start.call(node, d, i); | |
transition.tween.forEach(function(key, value) { | |
if (value = value.call(node, d, i)) { | |
tweened.push(value); | |
} | |
}); | |
if (!tick(elapsed)) d3.timer(tick, 0, time); | |
return 1; | |
} | |
function tick(elapsed) { | |
if (lock.active !== id) return stop(); | |
var t = (elapsed - delay) / duration, e = ease(t), n = tweened.length; | |
while (n > 0) { | |
tweened[--n].call(node, e); | |
} | |
if (t >= 1) { | |
stop(); | |
event.end.call(node, d, i); | |
return 1; | |
} | |
} | |
function stop() { | |
if (--lock.count) delete lock[id]; else delete node.__transition__; | |
return 1; | |
} | |
}, 0, time); | |
return transition; | |
} | |
} | |
d3.svg.axis = function() { | |
var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, tickMajorSize = 6, tickMinorSize = 6, tickEndSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_, tickSubdivide = 0; | |
function axis(g) { | |
g.each(function() { | |
var g = d3.select(this); | |
var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String : tickFormat_; | |
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), subtick = g.selectAll(".tick.minor").data(subticks, String), subtickEnter = subtick.enter().insert("line", ".tick").attr("class", "tick minor").style("opacity", 1e-6), subtickExit = d3.transition(subtick.exit()).style("opacity", 1e-6).remove(), subtickUpdate = d3.transition(subtick).style("opacity", 1); | |
var tick = g.selectAll(".tick.major").data(ticks, String), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick major").style("opacity", 1e-6), tickExit = d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform; | |
var range = d3_scaleRange(scale), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), | |
d3.transition(path)); | |
var scale1 = scale.copy(), scale0 = this.__chart__ || scale1; | |
this.__chart__ = scale1; | |
tickEnter.append("line"); | |
tickEnter.append("text"); | |
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"); | |
switch (orient) { | |
case "bottom": | |
{ | |
tickTransform = d3_svg_axisX; | |
subtickEnter.attr("y2", tickMinorSize); | |
subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize); | |
lineEnter.attr("y2", tickMajorSize); | |
textEnter.attr("y", Math.max(tickMajorSize, 0) + tickPadding); | |
lineUpdate.attr("x2", 0).attr("y2", tickMajorSize); | |
textUpdate.attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding); | |
text.attr("dy", ".71em").style("text-anchor", "middle"); | |
pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize); | |
break; | |
} | |
case "top": | |
{ | |
tickTransform = d3_svg_axisX; | |
subtickEnter.attr("y2", -tickMinorSize); | |
subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize); | |
lineEnter.attr("y2", -tickMajorSize); | |
textEnter.attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)); | |
lineUpdate.attr("x2", 0).attr("y2", -tickMajorSize); | |
textUpdate.attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)); | |
text.attr("dy", "0em").style("text-anchor", "middle"); | |
pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize); | |
break; | |
} | |
case "left": | |
{ | |
tickTransform = d3_svg_axisY; | |
subtickEnter.attr("x2", -tickMinorSize); | |
subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0); | |
lineEnter.attr("x2", -tickMajorSize); | |
textEnter.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)); | |
lineUpdate.attr("x2", -tickMajorSize).attr("y2", 0); | |
textUpdate.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0); | |
text.attr("dy", ".32em").style("text-anchor", "end"); | |
pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize); | |
break; | |
} | |
case "right": | |
{ | |
tickTransform = d3_svg_axisY; | |
subtickEnter.attr("x2", tickMinorSize); | |
subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0); | |
lineEnter.attr("x2", tickMajorSize); | |
textEnter.attr("x", Math.max(tickMajorSize, 0) + tickPadding); | |
lineUpdate.attr("x2", tickMajorSize).attr("y2", 0); | |
textUpdate.attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0); | |
text.attr("dy", ".32em").style("text-anchor", "start"); | |
pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize); | |
break; | |
} | |
} | |
if (scale.ticks) { | |
tickEnter.call(tickTransform, scale0); | |
tickUpdate.call(tickTransform, scale1); | |
tickExit.call(tickTransform, scale1); | |
subtickEnter.call(tickTransform, scale0); | |
subtickUpdate.call(tickTransform, scale1); | |
subtickExit.call(tickTransform, scale1); | |
} else { | |
var dx = scale1.rangeBand() / 2, x = function(d) { | |
return scale1(d) + dx; | |
}; | |
tickEnter.call(tickTransform, x); | |
tickUpdate.call(tickTransform, x); | |
} | |
}); | |
} | |
axis.scale = function(x) { | |
if (!arguments.length) return scale; | |
scale = x; | |
return axis; | |
}; | |
axis.orient = function(x) { | |
if (!arguments.length) return orient; | |
orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient; | |
return axis; | |
}; | |
axis.ticks = function() { | |
if (!arguments.length) return tickArguments_; | |
tickArguments_ = arguments; | |
return axis; | |
}; | |
axis.tickValues = function(x) { | |
if (!arguments.length) return tickValues; | |
tickValues = x; | |
return axis; | |
}; | |
axis.tickFormat = function(x) { | |
if (!arguments.length) return tickFormat_; | |
tickFormat_ = x; | |
return axis; | |
}; | |
axis.tickSize = function(x, y) { | |
if (!arguments.length) return tickMajorSize; | |
var n = arguments.length - 1; | |
tickMajorSize = +x; | |
tickMinorSize = n > 1 ? +y : tickMajorSize; | |
tickEndSize = n > 0 ? +arguments[n] : tickMajorSize; | |
return axis; | |
}; | |
axis.tickPadding = function(x) { | |
if (!arguments.length) return tickPadding; | |
tickPadding = +x; | |
return axis; | |
}; | |
axis.tickSubdivide = function(x) { | |
if (!arguments.length) return tickSubdivide; | |
tickSubdivide = +x; | |
return axis; | |
}; | |
return axis; | |
}; | |
var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = { | |
top: 1, | |
right: 1, | |
bottom: 1, | |
left: 1 | |
}; | |
function d3_svg_axisX(selection, x) { | |
selection.attr("transform", function(d) { | |
return "translate(" + x(d) + ",0)"; | |
}); | |
} | |
function d3_svg_axisY(selection, y) { | |
selection.attr("transform", function(d) { | |
return "translate(0," + y(d) + ")"; | |
}); | |
} | |
function d3_svg_axisSubdivide(scale, ticks, m) { | |
subticks = []; | |
if (m && ticks.length > 1) { | |
var extent = d3_scaleExtent(scale.domain()), subticks, i = -1, n = ticks.length, d = (ticks[1] - ticks[0]) / ++m, j, v; | |
while (++i < n) { | |
for (j = m; --j > 0; ) { | |
if ((v = +ticks[i] - j * d) >= extent[0]) { | |
subticks.push(v); | |
} | |
} | |
} | |
for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1]; ) { | |
subticks.push(v); | |
} | |
} | |
return subticks; | |
} | |
d3.svg.brush = function() { | |
var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, resizes = d3_svg_brushResizes[0], extent = [ [ 0, 0 ], [ 0, 0 ] ], clamp = [ true, true ], extentDomain; | |
function brush(g) { | |
g.each(function() { | |
var g = d3.select(this), bg = g.selectAll(".background").data([ 0 ]), fg = g.selectAll(".extent").data([ 0 ]), tz = g.selectAll(".resize").data(resizes, String), e; | |
g.style("pointer-events", "all").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart); | |
bg.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"); | |
fg.enter().append("rect").attr("class", "extent").style("cursor", "move"); | |
tz.enter().append("g").attr("class", function(d) { | |
return "resize " + d; | |
}).style("cursor", function(d) { | |
return d3_svg_brushCursor[d]; | |
}).append("rect").attr("x", function(d) { | |
return /[ew]$/.test(d) ? -3 : null; | |
}).attr("y", function(d) { | |
return /^[ns]/.test(d) ? -3 : null; | |
}).attr("width", 6).attr("height", 6).style("visibility", "hidden"); | |
tz.style("display", brush.empty() ? "none" : null); | |
tz.exit().remove(); | |
if (x) { | |
e = d3_scaleRange(x); | |
bg.attr("x", e[0]).attr("width", e[1] - e[0]); | |
redrawX(g); | |
} | |
if (y) { | |
e = d3_scaleRange(y); | |
bg.attr("y", e[0]).attr("height", e[1] - e[0]); | |
redrawY(g); | |
} | |
redraw(g); | |
}); | |
} | |
function redraw(g) { | |
g.selectAll(".resize").attr("transform", function(d) { | |
return "translate(" + extent[+/e$/.test(d)][0] + "," + extent[+/^s/.test(d)][1] + ")"; | |
}); | |
} | |
function redrawX(g) { | |
g.select(".extent").attr("x", extent[0][0]); | |
g.selectAll(".extent,.n>rect,.s>rect").attr("width", extent[1][0] - extent[0][0]); | |
} | |
function redrawY(g) { | |
g.select(".extent").attr("y", extent[0][1]); | |
g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]); | |
} | |
function brushstart() { | |
var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress("brush"), center, origin = mouse(), offset; | |
var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup); | |
if (d3.event.changedTouches) { | |
w.on("touchmove.brush", brushmove).on("touchend.brush", brushend); | |
} else { | |
w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend); | |
} | |
if (dragging) { | |
origin[0] = extent[0][0] - origin[0]; | |
origin[1] = extent[0][1] - origin[1]; | |
} else if (resizing) { | |
var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing); | |
offset = [ extent[1 - ex][0] - origin[0], extent[1 - ey][1] - origin[1] ]; | |
origin[0] = extent[ex][0]; | |
origin[1] = extent[ey][1]; | |
} else if (d3.event.altKey) center = origin.slice(); | |
g.style("pointer-events", "none").selectAll(".resize").style("display", null); | |
d3.select("body").style("cursor", eventTarget.style("cursor")); | |
event_({ | |
type: "brushstart" | |
}); | |
brushmove(); | |
function mouse() { | |
var touches = d3.event.changedTouches; | |
return touches ? d3.touches(target, touches)[0] : d3.mouse(target); | |
} | |
function keydown() { | |
if (d3.event.keyCode == 32) { | |
if (!dragging) { | |
center = null; | |
origin[0] -= extent[1][0]; | |
origin[1] -= extent[1][1]; | |
dragging = 2; | |
} | |
d3_eventPreventDefault(); | |
} | |
} | |
function keyup() { | |
if (d3.event.keyCode == 32 && dragging == 2) { | |
origin[0] += extent[1][0]; | |
origin[1] += extent[1][1]; | |
dragging = 0; | |
d3_eventPreventDefault(); | |
} | |
} | |
function brushmove() { | |
var point = mouse(), moved = false; | |
if (offset) { | |
point[0] += offset[0]; | |
point[1] += offset[1]; | |
} | |
if (!dragging) { | |
if (d3.event.altKey) { | |
if (!center) center = [ (extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2 ]; | |
origin[0] = extent[+(point[0] < center[0])][0]; | |
origin[1] = extent[+(point[1] < center[1])][1]; | |
} else center = null; | |
} | |
if (resizingX && move1(point, x, 0)) { | |
redrawX(g); | |
moved = true; | |
} | |
if (resizingY && move1(point, y, 1)) { | |
redrawY(g); | |
moved = true; | |
} | |
if (moved) { | |
redraw(g); | |
event_({ | |
type: "brush", | |
mode: dragging ? "move" : "resize" | |
}); | |
} | |
} | |
function move1(point, scale, i) { | |
var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], size = extent[1][i] - extent[0][i], min, max; | |
if (dragging) { | |
r0 -= position; | |
r1 -= size + position; | |
} | |
min = clamp[i] ? Math.max(r0, Math.min(r1, point[i])) : point[i]; | |
if (dragging) { | |
max = (min += position) + size; | |
} else { | |
if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min)); | |
if (position < min) { | |
max = min; | |
min = position; | |
} else { | |
max = position; | |
} | |
} | |
if (extent[0][i] !== min || extent[1][i] !== max) { | |
extentDomain = null; | |
extent[0][i] = min; | |
extent[1][i] = max; | |
return true; | |
} | |
} | |
function brushend() { | |
brushmove(); | |
g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null); | |
d3.select("body").style("cursor", null); | |
w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null); | |
dragRestore(); | |
event_({ | |
type: "brushend" | |
}); | |
} | |
} | |
brush.x = function(z) { | |
if (!arguments.length) return x; | |
x = z; | |
resizes = d3_svg_brushResizes[!x << 1 | !y]; | |
return brush; | |
}; | |
brush.y = function(z) { | |
if (!arguments.length) return y; | |
y = z; | |
resizes = d3_svg_brushResizes[!x << 1 | !y]; | |
return brush; | |
}; | |
brush.clamp = function(z) { | |
if (!arguments.length) return x && y ? clamp : x || y ? clamp[+!x] : null; | |
if (x && y) clamp = [ !!z[0], !!z[1] ]; else if (x || y) clamp[+!x] = !!z; | |
return brush; | |
}; | |
brush.extent = function(z) { | |
var x0, x1, y0, y1, t; | |
if (!arguments.length) { | |
z = extentDomain || extent; | |
if (x) { | |
x0 = z[0][0], x1 = z[1][0]; | |
if (!extentDomain) { | |
x0 = extent[0][0], x1 = extent[1][0]; | |
if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1); | |
if (x1 < x0) t = x0, x0 = x1, x1 = t; | |
} | |
} | |
if (y) { | |
y0 = z[0][1], y1 = z[1][1]; | |
if (!extentDomain) { | |
y0 = extent[0][1], y1 = extent[1][1]; | |
if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1); | |
if (y1 < y0) t = y0, y0 = y1, y1 = t; | |
} | |
} | |
return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ]; | |
} | |
extentDomain = [ [ 0, 0 ], [ 0, 0 ] ]; | |
if (x) { | |
x0 = z[0], x1 = z[1]; | |
if (y) x0 = x0[0], x1 = x1[0]; | |
extentDomain[0][0] = x0, extentDomain[1][0] = x1; | |
if (x.invert) x0 = x(x0), x1 = x(x1); | |
if (x1 < x0) t = x0, x0 = x1, x1 = t; | |
extent[0][0] = x0 | 0, extent[1][0] = x1 | 0; | |
} | |
if (y) { | |
y0 = z[0], y1 = z[1]; | |
if (x) y0 = y0[1], y1 = y1[1]; | |
extentDomain[0][1] = y0, extentDomain[1][1] = y1; | |
if (y.invert) y0 = y(y0), y1 = y(y1); | |
if (y1 < y0) t = y0, y0 = y1, y1 = t; | |
extent[0][1] = y0 | 0, extent[1][1] = y1 | 0; | |
} | |
return brush; | |
}; | |
brush.clear = function() { | |
extentDomain = null; | |
extent[0][0] = extent[0][1] = extent[1][0] = extent[1][1] = 0; | |
return brush; | |
}; | |
brush.empty = function() { | |
return x && extent[0][0] === extent[1][0] || y && extent[0][1] === extent[1][1]; | |
}; | |
return d3.rebind(brush, event, "on"); | |
}; | |
var d3_svg_brushCursor = { | |
n: "ns-resize", | |
e: "ew-resize", | |
s: "ns-resize", | |
w: "ew-resize", | |
nw: "nwse-resize", | |
ne: "nesw-resize", | |
se: "nwse-resize", | |
sw: "nesw-resize" | |
}; | |
var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ]; | |
d3.time = {}; | |
var d3_time = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; | |
function d3_time_utc() { | |
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]); | |
} | |
d3_time_utc.prototype = { | |
getDate: function() { | |
return this._.getUTCDate(); | |
}, | |
getDay: function() { | |
return this._.getUTCDay(); | |
}, | |
getFullYear: function() { | |
return this._.getUTCFullYear(); | |
}, | |
getHours: function() { | |
return this._.getUTCHours(); | |
}, | |
getMilliseconds: function() { | |
return this._.getUTCMilliseconds(); | |
}, | |
getMinutes: function() { | |
return this._.getUTCMinutes(); | |
}, | |
getMonth: function() { | |
return this._.getUTCMonth(); | |
}, | |
getSeconds: function() { | |
return this._.getUTCSeconds(); | |
}, | |
getTime: function() { | |
return this._.getTime(); | |
}, | |
getTimezoneOffset: function() { | |
return 0; | |
}, | |
valueOf: function() { | |
return this._.valueOf(); | |
}, | |
setDate: function() { | |
d3_time_prototype.setUTCDate.apply(this._, arguments); | |
}, | |
setDay: function() { | |
d3_time_prototype.setUTCDay.apply(this._, arguments); | |
}, | |
setFullYear: function() { | |
d3_time_prototype.setUTCFullYear.apply(this._, arguments); | |
}, | |
setHours: function() { | |
d3_time_prototype.setUTCHours.apply(this._, arguments); | |
}, | |
setMilliseconds: function() { | |
d3_time_prototype.setUTCMilliseconds.apply(this._, arguments); | |
}, | |
setMinutes: function() { | |
d3_time_prototype.setUTCMinutes.apply(this._, arguments); | |
}, | |
setMonth: function() { | |
d3_time_prototype.setUTCMonth.apply(this._, arguments); | |
}, | |
setSeconds: function() { | |
d3_time_prototype.setUTCSeconds.apply(this._, arguments); | |
}, | |
setTime: function() { | |
d3_time_prototype.setTime.apply(this._, arguments); | |
} | |
}; | |
var d3_time_prototype = Date.prototype; | |
var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S"; | |
var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; | |
function d3_time_interval(local, step, number) { | |
function round(date) { | |
var d0 = local(date), d1 = offset(d0, 1); | |
return date - d0 < d1 - date ? d0 : d1; | |
} | |
function ceil(date) { | |
step(date = local(new d3_time(date - 1)), 1); | |
return date; | |
} | |
function offset(date, k) { | |
step(date = new d3_time(+date), k); | |
return date; | |
} | |
function range(t0, t1, dt) { | |
var time = ceil(t0), times = []; | |
if (dt > 1) { | |
while (time < t1) { | |
if (!(number(time) % dt)) times.push(new Date(+time)); | |
step(time, 1); | |
} | |
} else { | |
while (time < t1) times.push(new Date(+time)), step(time, 1); | |
} | |
return times; | |
} | |
function range_utc(t0, t1, dt) { | |
try { | |
d3_time = d3_time_utc; | |
var utc = new d3_time_utc(); | |
utc._ = t0; | |
return range(utc, t1, dt); | |
} finally { | |
d3_time = Date; | |
} | |
} | |
local.floor = local; | |
local.round = round; | |
local.ceil = ceil; | |
local.offset = offset; | |
local.range = range; | |
var utc = local.utc = d3_time_interval_utc(local); | |
utc.floor = utc; | |
utc.round = d3_time_interval_utc(round); | |
utc.ceil = d3_time_interval_utc(ceil); | |
utc.offset = d3_time_interval_utc(offset); | |
utc.range = range_utc; | |
return local; | |
} | |
function d3_time_interval_utc(method) { | |
return function(date, k) { | |
try { | |
d3_time = d3_time_utc; | |
var utc = new d3_time_utc(); | |
utc._ = date; | |
return method(utc, k)._; | |
} finally { | |
d3_time = Date; | |
} | |
}; | |
} | |
d3.time.year = d3_time_interval(function(date) { | |
date = d3.time.day(date); | |
date.setMonth(0, 1); | |
return date; | |
}, function(date, offset) { | |
date.setFullYear(date.getFullYear() + offset); | |
}, function(date) { | |
return date.getFullYear(); | |
}); | |
d3.time.years = d3.time.year.range; | |
d3.time.years.utc = d3.time.year.utc.range; | |
d3.time.day = d3_time_interval(function(date) { | |
var day = new d3_time(2e3, 0); | |
day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); | |
return day; | |
}, function(date, offset) { | |
date.setDate(date.getDate() + offset); | |
}, function(date) { | |
return date.getDate() - 1; | |
}); | |
d3.time.days = d3.time.day.range; | |
d3.time.days.utc = d3.time.day.utc.range; | |
d3.time.dayOfYear = function(date) { | |
var year = d3.time.year(date); | |
return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5); | |
}; | |
d3_time_daySymbols.forEach(function(day, i) { | |
day = day.toLowerCase(); | |
i = 7 - i; | |
var interval = d3.time[day] = d3_time_interval(function(date) { | |
(date = d3.time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7); | |
return date; | |
}, function(date, offset) { | |
date.setDate(date.getDate() + Math.floor(offset) * 7); | |
}, function(date) { | |
var day = d3.time.year(date).getDay(); | |
return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i); | |
}); | |
d3.time[day + "s"] = interval.range; | |
d3.time[day + "s"].utc = interval.utc.range; | |
d3.time[day + "OfYear"] = function(date) { | |
var day = d3.time.year(date).getDay(); | |
return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7); | |
}; | |
}); | |
d3.time.week = d3.time.sunday; | |
d3.time.weeks = d3.time.sunday.range; | |
d3.time.weeks.utc = d3.time.sunday.utc.range; | |
d3.time.weekOfYear = d3.time.sundayOfYear; | |
d3.time.format = function(template) { | |
var n = template.length; | |
function format(date) { | |
var string = [], i = -1, j = 0, c, p, f; | |
while (++i < n) { | |
if (template.charCodeAt(i) === 37) { | |
string.push(template.substring(j, i)); | |
if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i); | |
if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p); | |
string.push(c); | |
j = i + 1; | |
} | |
} | |
string.push(template.substring(j, i)); | |
return string.join(""); | |
} | |
format.parse = function(string) { | |
var d = { | |
y: 1900, | |
m: 0, | |
d: 1, | |
H: 0, | |
M: 0, | |
S: 0, | |
L: 0 | |
}, i = d3_time_parse(d, template, string, 0); | |
if (i != string.length) return null; | |
if ("p" in d) d.H = d.H % 12 + d.p * 12; | |
var date = new d3_time(); | |
if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) { | |
date.setFullYear(d.y, 0, 1); | |
date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7); | |
} else date.setFullYear(d.y, d.m, d.d); | |
date.setHours(d.H, d.M, d.S, d.L); | |
return date; | |
}; | |
format.toString = function() { | |
return template; | |
}; | |
return format; | |
}; | |
function d3_time_parse(date, template, string, j) { | |
var c, p, i = 0, n = template.length, m = string.length; | |
while (i < n) { | |
if (j >= m) return -1; | |
c = template.charCodeAt(i++); | |
if (c === 37) { | |
p = d3_time_parsers[template.charAt(i++)]; | |
if (!p || (j = p(date, string, j)) < 0) return -1; | |
} else if (c != string.charCodeAt(j++)) { | |
return -1; | |
} | |
} | |
return j; | |
} | |
function d3_time_formatRe(names) { | |
return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i"); | |
} | |
function d3_time_formatLookup(names) { | |
var map = new d3_Map(), i = -1, n = names.length; | |
while (++i < n) map.set(names[i].toLowerCase(), i); | |
return map; | |
} | |
function d3_time_formatPad(value, fill, width) { | |
var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length; | |
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); | |
} | |
var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayLookup = d3_time_formatLookup(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_dayAbbrevLookup = d3_time_formatLookup(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations), d3_time_percentRe = /^%/; | |
var d3_time_formatPads = { | |
"-": "", | |
_: " ", | |
"0": "0" | |
}; | |
var d3_time_formats = { | |
a: function(d) { | |
return d3_time_dayAbbreviations[d.getDay()]; | |
}, | |
A: function(d) { | |
return d3_time_days[d.getDay()]; | |
}, | |
b: function(d) { | |
return d3_time_monthAbbreviations[d.getMonth()]; | |
}, | |
B: function(d) { | |
return d3_time_months[d.getMonth()]; | |
}, | |
c: d3.time.format(d3_time_formatDateTime), | |
d: function(d, p) { | |
return d3_time_formatPad(d.getDate(), p, 2); | |
}, | |
e: function(d, p) { | |
return d3_time_formatPad(d.getDate(), p, 2); | |
}, | |
H: function(d, p) { | |
return d3_time_formatPad(d.getHours(), p, 2); | |
}, | |
I: function(d, p) { | |
return d3_time_formatPad(d.getHours() % 12 || 12, p, 2); | |
}, | |
j: function(d, p) { | |
return d3_time_formatPad(1 + d3.time.dayOfYear(d), p, 3); | |
}, | |
L: function(d, p) { | |
return d3_time_formatPad(d.getMilliseconds(), p, 3); | |
}, | |
m: function(d, p) { | |
return d3_time_formatPad(d.getMonth() + 1, p, 2); | |
}, | |
M: function(d, p) { | |
return d3_time_formatPad(d.getMinutes(), p, 2); | |
}, | |
p: function(d) { | |
return d.getHours() >= 12 ? "PM" : "AM"; | |
}, | |
S: function(d, p) { | |
return d3_time_formatPad(d.getSeconds(), p, 2); | |
}, | |
U: function(d, p) { | |
return d3_time_formatPad(d3.time.sundayOfYear(d), p, 2); | |
}, | |
w: function(d) { | |
return d.getDay(); | |
}, | |
W: function(d, p) { | |
return d3_time_formatPad(d3.time.mondayOfYear(d), p, 2); | |
}, | |
x: d3.time.format(d3_time_formatDate), | |
X: d3.time.format(d3_time_formatTime), | |
y: function(d, p) { | |
return d3_time_formatPad(d.getFullYear() % 100, p, 2); | |
}, | |
Y: function(d, p) { | |
return d3_time_formatPad(d.getFullYear() % 1e4, p, 4); | |
}, | |
Z: d3_time_zone, | |
"%": function() { | |
return "%"; | |
} | |
}; | |
var d3_time_parsers = { | |
a: d3_time_parseWeekdayAbbrev, | |
A: d3_time_parseWeekday, | |
b: d3_time_parseMonthAbbrev, | |
B: d3_time_parseMonth, | |
c: d3_time_parseLocaleFull, | |
d: d3_time_parseDay, | |
e: d3_time_parseDay, | |
H: d3_time_parseHour24, | |
I: d3_time_parseHour24, | |
j: d3_time_parseDayOfYear, | |
L: d3_time_parseMilliseconds, | |
m: d3_time_parseMonthNumber, | |
M: d3_time_parseMinutes, | |
p: d3_time_parseAmPm, | |
S: d3_time_parseSeconds, | |
U: d3_time_parseWeekNumberSunday, | |
w: d3_time_parseWeekdayNumber, | |
W: d3_time_parseWeekNumberMonday, | |
x: d3_time_parseLocaleDate, | |
X: d3_time_parseLocaleTime, | |
y: d3_time_parseYear, | |
Y: d3_time_parseFullYear, | |
"%": d3_time_parseLiteralPercent | |
}; | |
function d3_time_parseWeekdayAbbrev(date, string, i) { | |
d3_time_dayAbbrevRe.lastIndex = 0; | |
var n = d3_time_dayAbbrevRe.exec(string.substring(i)); | |
return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; | |
} | |
function d3_time_parseWeekday(date, string, i) { | |
d3_time_dayRe.lastIndex = 0; | |
var n = d3_time_dayRe.exec(string.substring(i)); | |
return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; | |
} | |
function d3_time_parseWeekdayNumber(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 1)); | |
return n ? (date.w = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseWeekNumberSunday(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i)); | |
return n ? (date.U = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseWeekNumberMonday(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i)); | |
return n ? (date.W = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseMonthAbbrev(date, string, i) { | |
d3_time_monthAbbrevRe.lastIndex = 0; | |
var n = d3_time_monthAbbrevRe.exec(string.substring(i)); | |
return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; | |
} | |
function d3_time_parseMonth(date, string, i) { | |
d3_time_monthRe.lastIndex = 0; | |
var n = d3_time_monthRe.exec(string.substring(i)); | |
return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; | |
} | |
function d3_time_parseLocaleFull(date, string, i) { | |
return d3_time_parse(date, d3_time_formats.c.toString(), string, i); | |
} | |
function d3_time_parseLocaleDate(date, string, i) { | |
return d3_time_parse(date, d3_time_formats.x.toString(), string, i); | |
} | |
function d3_time_parseLocaleTime(date, string, i) { | |
return d3_time_parse(date, d3_time_formats.X.toString(), string, i); | |
} | |
function d3_time_parseFullYear(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 4)); | |
return n ? (date.y = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseYear(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 2)); | |
return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1; | |
} | |
function d3_time_expandYear(d) { | |
return d + (d > 68 ? 1900 : 2e3); | |
} | |
function d3_time_parseMonthNumber(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 2)); | |
return n ? (date.m = n[0] - 1, i + n[0].length) : -1; | |
} | |
function d3_time_parseDay(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 2)); | |
return n ? (date.d = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseDayOfYear(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 3)); | |
return n ? (date.j = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseHour24(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 2)); | |
return n ? (date.H = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseMinutes(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 2)); | |
return n ? (date.M = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseSeconds(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 2)); | |
return n ? (date.S = +n[0], i + n[0].length) : -1; | |
} | |
function d3_time_parseMilliseconds(date, string, i) { | |
d3_time_numberRe.lastIndex = 0; | |
var n = d3_time_numberRe.exec(string.substring(i, i + 3)); | |
return n ? (date.L = +n[0], i + n[0].length) : -1; | |
} | |
var d3_time_numberRe = /^\s*\d+/; | |
function d3_time_parseAmPm(date, string, i) { | |
var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase()); | |
return n == null ? -1 : (date.p = n, i); | |
} | |
var d3_time_amPmLookup = d3.map({ | |
am: 0, | |
pm: 1 | |
}); | |
function d3_time_zone(d) { | |
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60; | |
return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2); | |
} | |
function d3_time_parseLiteralPercent(date, string, i) { | |
d3_time_percentRe.lastIndex = 0; | |
var n = d3_time_percentRe.exec(string.substring(i, i + 1)); | |
return n ? i + n[0].length : -1; | |
} | |
d3.time.format.utc = function(template) { | |
var local = d3.time.format(template); | |
function format(date) { | |
try { | |
d3_time = d3_time_utc; | |
var utc = new d3_time(); | |
utc._ = date; | |
return local(utc); | |
} finally { | |
d3_time = Date; | |
} | |
} | |
format.parse = function(string) { | |
try { | |
d3_time = d3_time_utc; | |
var date = local.parse(string); | |
return date && date._; | |
} finally { | |
d3_time = Date; | |
} | |
}; | |
format.toString = local.toString; | |
return format; | |
}; | |
var d3_time_formatIso = d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ"); | |
d3.time.format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso; | |
function d3_time_formatIsoNative(date) { | |
return date.toISOString(); | |
} | |
d3_time_formatIsoNative.parse = function(string) { | |
var date = new Date(string); | |
return isNaN(date) ? null : date; | |
}; | |
d3_time_formatIsoNative.toString = d3_time_formatIso.toString; | |
d3.time.second = d3_time_interval(function(date) { | |
return new d3_time(Math.floor(date / 1e3) * 1e3); | |
}, function(date, offset) { | |
date.setTime(date.getTime() + Math.floor(offset) * 1e3); | |
}, function(date) { | |
return date.getSeconds(); | |
}); | |
d3.time.seconds = d3.time.second.range; | |
d3.time.seconds.utc = d3.time.second.utc.range; | |
d3.time.minute = d3_time_interval(function(date) { | |
return new d3_time(Math.floor(date / 6e4) * 6e4); | |
}, function(date, offset) { | |
date.setTime(date.getTime() + Math.floor(offset) * 6e4); | |
}, function(date) { | |
return date.getMinutes(); | |
}); | |
d3.time.minutes = d3.time.minute.range; | |
d3.time.minutes.utc = d3.time.minute.utc.range; | |
d3.time.hour = d3_time_interval(function(date) { | |
var timezone = date.getTimezoneOffset() / 60; | |
return new d3_time((Math.floor(date / 36e5 - timezone) + timezone) * 36e5); | |
}, function(date, offset) { | |
date.setTime(date.getTime() + Math.floor(offset) * 36e5); | |
}, function(date) { | |
return date.getHours(); | |
}); | |
d3.time.hours = d3.time.hour.range; | |
d3.time.hours.utc = d3.time.hour.utc.range; | |
d3.time.month = d3_time_interval(function(date) { | |
date = d3.time.day(date); | |
date.setDate(1); | |
return date; | |
}, function(date, offset) { | |
date.setMonth(date.getMonth() + offset); | |
}, function(date) { | |
return date.getMonth(); | |
}); | |
d3.time.months = d3.time.month.range; | |
d3.time.months.utc = d3.time.month.utc.range; | |
function d3_time_scale(linear, methods, format) { | |
function scale(x) { | |
return linear(x); | |
} | |
scale.invert = function(x) { | |
return d3_time_scaleDate(linear.invert(x)); | |
}; | |
scale.domain = function(x) { | |
if (!arguments.length) return linear.domain().map(d3_time_scaleDate); | |
linear.domain(x); | |
return scale; | |
}; | |
scale.nice = function(m) { | |
return scale.domain(d3_scale_nice(scale.domain(), m)); | |
}; | |
scale.ticks = function(m, k) { | |
var extent = d3_scaleExtent(scale.domain()); | |
if (typeof m !== "function") { | |
var span = extent[1] - extent[0], target = span / m, i = d3.bisect(d3_time_scaleSteps, target); | |
if (i == d3_time_scaleSteps.length) return methods.year(extent, m); | |
if (!i) return linear.ticks(m).map(d3_time_scaleDate); | |
if (Math.log(target / d3_time_scaleSteps[i - 1]) < Math.log(d3_time_scaleSteps[i] / target)) --i; | |
m = methods[i]; | |
k = m[1]; | |
m = m[0].range; | |
} | |
return m(extent[0], new Date(+extent[1] + 1), k); | |
}; | |
scale.tickFormat = function() { | |
return format; | |
}; | |
scale.copy = function() { | |
return d3_time_scale(linear.copy(), methods, format); | |
}; | |
return d3_scale_linearRebind(scale, linear); | |
} | |
function d3_time_scaleDate(t) { | |
return new Date(t); | |
} | |
function d3_time_scaleFormat(formats) { | |
return function(date) { | |
var i = formats.length - 1, f = formats[i]; | |
while (!f[1](date)) f = formats[--i]; | |
return f[0](date); | |
}; | |
} | |
function d3_time_scaleSetYear(y) { | |
var d = new Date(y, 0, 1); | |
d.setFullYear(y); | |
return d; | |
} | |
function d3_time_scaleGetYear(d) { | |
var y = d.getFullYear(), d0 = d3_time_scaleSetYear(y), d1 = d3_time_scaleSetYear(y + 1); | |
return y + (d - d0) / (d1 - d0); | |
} | |
var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ]; | |
var d3_time_scaleLocalMethods = [ [ d3.time.second, 1 ], [ d3.time.second, 5 ], [ d3.time.second, 15 ], [ d3.time.second, 30 ], [ d3.time.minute, 1 ], [ d3.time.minute, 5 ], [ d3.time.minute, 15 ], [ d3.time.minute, 30 ], [ d3.time.hour, 1 ], [ d3.time.hour, 3 ], [ d3.time.hour, 6 ], [ d3.time.hour, 12 ], [ d3.time.day, 1 ], [ d3.time.day, 2 ], [ d3.time.week, 1 ], [ d3.time.month, 1 ], [ d3.time.month, 3 ], [ d3.time.year, 1 ] ]; | |
var d3_time_scaleLocalFormats = [ [ d3.time.format("%Y"), d3_true ], [ d3.time.format("%B"), function(d) { | |
return d.getMonth(); | |
} ], [ d3.time.format("%b %d"), function(d) { | |
return d.getDate() != 1; | |
} ], [ d3.time.format("%a %d"), function(d) { | |
return d.getDay() && d.getDate() != 1; | |
} ], [ d3.time.format("%I %p"), function(d) { | |
return d.getHours(); | |
} ], [ d3.time.format("%I:%M"), function(d) { | |
return d.getMinutes(); | |
} ], [ d3.time.format(":%S"), function(d) { | |
return d.getSeconds(); | |
} ], [ d3.time.format(".%L"), function(d) { | |
return d.getMilliseconds(); | |
} ] ]; | |
var d3_time_scaleLinear = d3.scale.linear(), d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats); | |
d3_time_scaleLocalMethods.year = function(extent, m) { | |
return d3_time_scaleLinear.domain(extent.map(d3_time_scaleGetYear)).ticks(m).map(d3_time_scaleSetYear); | |
}; | |
d3.time.scale = function() { | |
return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat); | |
}; | |
var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) { | |
return [ m[0].utc, m[1] ]; | |
}); | |
var d3_time_scaleUTCFormats = [ [ d3.time.format.utc("%Y"), d3_true ], [ d3.time.format.utc("%B"), function(d) { | |
return d.getUTCMonth(); | |
} ], [ d3.time.format.utc("%b %d"), function(d) { | |
return d.getUTCDate() != 1; | |
} ], [ d3.time.format.utc("%a %d"), function(d) { | |
return d.getUTCDay() && d.getUTCDate() != 1; | |
} ], [ d3.time.format.utc("%I %p"), function(d) { | |
return d.getUTCHours(); | |
} ], [ d3.time.format.utc("%I:%M"), function(d) { | |
return d.getUTCMinutes(); | |
} ], [ d3.time.format.utc(":%S"), function(d) { | |
return d.getUTCSeconds(); | |
} ], [ d3.time.format.utc(".%L"), function(d) { | |
return d.getUTCMilliseconds(); | |
} ] ]; | |
var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats); | |
function d3_time_scaleUTCSetYear(y) { | |
var d = new Date(Date.UTC(y, 0, 1)); | |
d.setUTCFullYear(y); | |
return d; | |
} | |
function d3_time_scaleUTCGetYear(d) { | |
var y = d.getUTCFullYear(), d0 = d3_time_scaleUTCSetYear(y), d1 = d3_time_scaleUTCSetYear(y + 1); | |
return y + (d - d0) / (d1 - d0); | |
} | |
d3_time_scaleUTCMethods.year = function(extent, m) { | |
return d3_time_scaleLinear.domain(extent.map(d3_time_scaleUTCGetYear)).ticks(m).map(d3_time_scaleUTCSetYear); | |
}; | |
d3.time.scale.utc = function() { | |
return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat); | |
}; | |
d3.text = d3_xhrType(function(request) { | |
return request.responseText; | |
}); | |
d3.json = function(url, callback) { | |
return d3_xhr(url, "application/json", d3_json, callback); | |
}; | |
function d3_json(request) { | |
return JSON.parse(request.responseText); | |
} | |
d3.html = function(url, callback) { | |
return d3_xhr(url, "text/html", d3_html, callback); | |
}; | |
function d3_html(request) { | |
var range = d3_document.createRange(); | |
range.selectNode(d3_document.body); | |
return range.createContextualFragment(request.responseText); | |
} | |
d3.xml = d3_xhrType(function(request) { | |
return request.responseXML; | |
}); | |
return d3; | |
}(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.dc-chart { | |
float: left; | |
} | |
.dc-chart rect.bar { | |
stroke: none; | |
cursor: pointer; | |
} | |
.dc-chart rect.bar:hover { | |
fill-opacity: .5; | |
} | |
.dc-chart rect.stack1 { | |
stroke: none; | |
fill: red; | |
} | |
.dc-chart rect.stack2 { | |
stroke: none; | |
fill: green; | |
} | |
.dc-chart rect.deselected { | |
stroke: none; | |
fill: #ccc; | |
} | |
.dc-chart .sub .bar { | |
stroke: none; | |
fill: #ccc; | |
} | |
.dc-chart .pie-slice { | |
fill: white; | |
font-size: 12px; | |
cursor: pointer; | |
} | |
.dc-chart .pie-slice :hover { | |
fill-opacity: .8; | |
} | |
.dc-chart .selected path { | |
stroke-width: 3; | |
stroke: #ccc; | |
fill-opacity: 1; | |
} | |
.dc-chart .deselected path { | |
strok: none; | |
fill-opacity: .5; | |
fill: #ccc; | |
} | |
.dc-chart .axis path, .axis line { | |
fill: none; | |
stroke: #000; | |
shape-rendering: crispEdges; | |
} | |
.dc-chart .axis text { | |
font: 10px sans-serif; | |
} | |
.dc-chart .grid-line { | |
fill: none; | |
stroke: #ccc; | |
opacity: .5; | |
shape-rendering: crispEdges; | |
} | |
.dc-chart .grid-line line { | |
fill: none; | |
stroke: #ccc; | |
opacity: .5; | |
shape-rendering: crispEdges; | |
} | |
.dc-chart .brush rect.background { | |
z-index: -999; | |
} | |
.dc-chart .brush rect.extent { | |
fill: steelblue; | |
fill-opacity: .125; | |
} | |
.dc-chart .brush .resize path { | |
fill: #eee; | |
stroke: #666; | |
} | |
.dc-chart path.line { | |
fill: none; | |
stroke-width: 1.5px; | |
} | |
.dc-chart circle.dot { | |
stroke: none; | |
} | |
.dc-chart g.dc-tooltip path { | |
fill: none; | |
stroke: grey; | |
stroke-opacity: .8; | |
} | |
.dc-chart path.area { | |
fill-opacity: .3; | |
stroke: none; | |
} | |
.dc-chart .node { | |
font-size: 0.7em; | |
cursor: pointer; | |
} | |
.dc-chart .node :hover { | |
fill-opacity: .8; | |
} | |
.dc-chart .selected circle { | |
stroke-width: 3; | |
stroke: #ccc; | |
fill-opacity: 1; | |
} | |
.dc-chart .deselected circle { | |
strok: none; | |
fill-opacity: .5; | |
fill: #ccc; | |
} | |
.dc-chart .bubble { | |
stroke: none; | |
fill-opacity: 0.6; | |
} | |
.dc-data-count { | |
float: right; | |
margin-top: 15px; | |
margin-right: 15px; | |
} | |
.dc-data-count .filter-count { | |
color: #3182bd; | |
font-weight: bold; | |
} | |
.dc-data-count .total-count { | |
color: #3182bd; | |
font-weight: bold; | |
} | |
.dc-data-table { | |
} | |
.dc-chart g.state { | |
cursor: pointer; | |
} | |
.dc-chart g.state :hover { | |
fill-opacity: .8; | |
} | |
.dc-chart g.state path { | |
stroke: white; | |
} | |
.dc-chart g.selected path { | |
} | |
.dc-chart g.deselected path { | |
fill: grey; | |
} | |
.dc-chart g.selected text { | |
} | |
.dc-chart g.deselected text { | |
display: none; | |
} | |
.dc-chart g.county path { | |
stroke: white; | |
fill: none; | |
} | |
.dc-chart g.debug rect { | |
fill: blue; | |
fill-opacity: .2; | |
} | |
.dc-chart g.row rect { | |
fill-opacity: 0.8; | |
cursor: pointer; | |
} | |
.dc-chart g.row rect:hover { | |
fill-opacity: 0.6; | |
} | |
.dc-chart g.row text { | |
fill: white; | |
font-size: 12px; | |
cursor: pointer; | |
} | |
.dc-chart g text { | |
/* Makes it so the user can't accidentally click and select text that is meant as a label only */ | |
-webkit-user-select: none; /* Chrome/Safari */ | |
-moz-user-select: none; /* Firefox */ | |
-ms-user-select: none; /* IE10 */ | |
-o-user-select: none; | |
user-select: none; | |
pointer-events: none; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright 2012 the original author or authors. | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
dc = { | |
version: "1.5.0", | |
constants : { | |
CHART_CLASS: "dc-chart", | |
DEBUG_GROUP_CLASS: "debug", | |
STACK_CLASS: "stack", | |
DESELECTED_CLASS: "deselected", | |
SELECTED_CLASS: "selected", | |
NODE_INDEX_NAME: "__index__", | |
GROUP_INDEX_NAME: "__group_index__", | |
DEFAULT_CHART_GROUP: "__default_chart_group__", | |
EVENT_DELAY: 40, | |
NEGLIGIBLE_NUMBER: 1e-10 | |
}, | |
_renderlet : null | |
}; | |
dc.chartRegistry = function() { | |
// chartGroup:string => charts:array | |
var _chartMap = {}; | |
this.has = function(chart) { | |
for (var e in _chartMap) { | |
if (_chartMap[e].indexOf(chart) >= 0) | |
return true; | |
} | |
return false; | |
}; | |
function initializeChartGroup(group) { | |
if (!group) | |
group = dc.constants.DEFAULT_CHART_GROUP; | |
if (!_chartMap[group]) | |
_chartMap[group] = []; | |
return group; | |
} | |
this.register = function(chart, group) { | |
group = initializeChartGroup(group); | |
_chartMap[group].push(chart); | |
}; | |
this.clear = function() { | |
_chartMap = {}; | |
}; | |
this.list = function(group) { | |
group = initializeChartGroup(group); | |
return _chartMap[group]; | |
}; | |
return this; | |
}(); | |
dc.registerChart = function(chart, group) { | |
dc.chartRegistry.register(chart, group); | |
}; | |
dc.hasChart = function(chart) { | |
return dc.chartRegistry.has(chart); | |
}; | |
dc.deregisterAllCharts = function() { | |
dc.chartRegistry.clear(); | |
}; | |
dc.filterAll = function(group) { | |
var charts = dc.chartRegistry.list(group); | |
for (var i = 0; i < charts.length; ++i) { | |
charts[i].filterAll(); | |
} | |
}; | |
dc.renderAll = function(group) { | |
var charts = dc.chartRegistry.list(group); | |
for (var i = 0; i < charts.length; ++i) { | |
charts[i].render(); | |
} | |
if(dc._renderlet !== null) | |
dc._renderlet(group); | |
}; | |
dc.redrawAll = function(group) { | |
var charts = dc.chartRegistry.list(group); | |
for (var i = 0; i < charts.length; ++i) { | |
charts[i].redraw(); | |
} | |
if(dc._renderlet !== null) | |
dc._renderlet(group); | |
}; | |
dc.transition = function(selections, duration, callback) { | |
if (duration <= 0 || duration === undefined) | |
return selections; | |
var s = selections | |
.transition() | |
.duration(duration); | |
if (callback instanceof Function) { | |
callback(s); | |
} | |
return s; | |
}; | |
dc.units = {}; | |
dc.units.integers = function(s, e) { | |
return Math.abs(e - s); | |
}; | |
dc.units.ordinal = function(s, e, domain){ | |
return domain; | |
}; | |
dc.units.fp = {}; | |
dc.units.fp.precision= function(precision){ | |
var _f = function(s, e, domain){return Math.ceil(Math.abs((e-s)/_f.resolution));}; | |
_f.resolution = precision; | |
return _f; | |
}; | |
dc.round = {}; | |
dc.round.floor = function(n) { | |
return Math.floor(n); | |
}; | |
dc.round.ceil = function(n) { | |
return Math.ceil(n); | |
}; | |
dc.round.round = function(n) { | |
return Math.round(n); | |
}; | |
dc.override = function(obj, functionName, newFunction) { | |
var existingFunction = obj[functionName]; | |
obj["_" + functionName] = existingFunction; | |
obj[functionName] = newFunction; | |
}; | |
dc.renderlet = function(_){ | |
if(!arguments.length) return dc._renderlet; | |
dc._renderlet = _; | |
return dc; | |
}; | |
dc.instanceOfChart = function (o) { | |
return o instanceof Object && o.__dc_flag__; | |
}; | |
dc.errors = {}; | |
dc.errors.Exception = function(msg) { | |
var _msg = msg != null ? msg : "Unexpected internal error"; | |
this.message = _msg; | |
this.toString = function(){ | |
return _msg; | |
}; | |
}; | |
dc.errors.InvalidStateException = function() { | |
dc.errors.Exception.apply(this, arguments); | |
};dc.dateFormat = d3.time.format("%m/%d/%Y"); | |
dc.printers = {}; | |
dc.printers.filters = function (filters) { | |
var s = ""; | |
for (var i = 0; i < filters.length; ++i) { | |
if (i > 0) s += ", "; | |
s += dc.printers.filter(filters[i]); | |
} | |
return s; | |
}; | |
dc.printers.filter = function (filter) { | |
var s = ""; | |
if (filter) { | |
if (filter instanceof Array) { | |
if (filter.length >= 2) | |
s = "[" + dc.utils.printSingleValue(filter[0]) + " -> " + dc.utils.printSingleValue(filter[1]) + "]"; | |
else if (filter.length >= 1) | |
s = dc.utils.printSingleValue(filter[0]); | |
} else { | |
s = dc.utils.printSingleValue(filter) | |
} | |
} | |
return s; | |
}; | |
dc.utils = {}; | |
dc.utils.printSingleValue = function (filter) { | |
var s = "" + filter; | |
if (filter instanceof Date) | |
s = dc.dateFormat(filter); | |
else if (typeof(filter) == "string") | |
s = filter; | |
else if (typeof(filter) == "number") | |
s = Math.round(filter); | |
return s; | |
}; | |
dc.utils.add = function (l, r) { | |
if (typeof r === "string") | |
r = r.replace("%", "") | |
if (l instanceof Date) { | |
if (typeof r === "string") r = +r | |
var d = new Date(); | |
d.setTime(l.getTime()); | |
d.setDate(l.getDate() + r); | |
return d; | |
} else if (typeof r === "string") { | |
var percentage = (+r / 100); | |
return l > 0 ? l * (1 + percentage) : l * (1 - percentage); | |
} else { | |
return l + r; | |
} | |
}; | |
dc.utils.subtract = function (l, r) { | |
if (typeof r === "string") | |
r = r.replace("%", "") | |
if (l instanceof Date) { | |
if (typeof r === "string") r = +r | |
var d = new Date(); | |
d.setTime(l.getTime()); | |
d.setDate(l.getDate() - r); | |
return d; | |
} else if (typeof r === "string") { | |
var percentage = (+r / 100); | |
return l < 0 ? l * (1 + percentage) : l * (1 - percentage); | |
} else { | |
return l - r; | |
} | |
}; | |
dc.utils.GroupStack = function () { | |
var _dataLayers = []; | |
var _groups = []; | |
var _defaultAccessor; | |
function initializeDataLayer(i) { | |
if (!_dataLayers[i]) | |
_dataLayers[i] = []; | |
} | |
this.setDataPoint = function (layerIndex, pointIndex, data) { | |
initializeDataLayer(layerIndex); | |
_dataLayers[layerIndex][pointIndex] = data; | |
}; | |
this.getDataPoint = function (x, y) { | |
initializeDataLayer(x); | |
var dataPoint = _dataLayers[x][y]; | |
if (dataPoint == undefined) | |
dataPoint = 0; | |
return dataPoint; | |
}; | |
this.addGroup = function (group, accessor) { | |
if (!accessor) | |
accessor = _defaultAccessor; | |
_groups.push([group, accessor]); | |
return _groups.length - 1; | |
}; | |
this.getGroupByIndex = function (index) { | |
return _groups[index][0]; | |
}; | |
this.getAccessorByIndex = function (index) { | |
return _groups[index][1]; | |
}; | |
this.size = function () { | |
return _groups.length; | |
}; | |
this.clear = function () { | |
_dataLayers = []; | |
_groups = []; | |
}; | |
this.setDefaultAccessor = function (retriever) { | |
_defaultAccessor = retriever; | |
}; | |
this.getDataLayers = function () { | |
return _dataLayers; | |
}; | |
this.toLayers = function () { | |
var layers = []; | |
for (var i = 0; i < _dataLayers.length; ++i) { | |
var layer = {index: i, points: []}; | |
var dataPoints = _dataLayers[i]; | |
for (var j = 0; j < dataPoints.length; ++j) | |
layer.points.push(dataPoints[j]); | |
layers.push(layer); | |
} | |
return layers; | |
}; | |
}; | |
dc.utils.isNegligible = function (max) { | |
return max === undefined || (max < dc.constants.NEGLIGIBLE_NUMBER && max > -dc.constants.NEGLIGIBLE_NUMBER); | |
} | |
dc.utils.groupMax = function (group, accessor) { | |
var max = d3.max(group.all(), function (e) { | |
return accessor(e); | |
}); | |
if (dc.utils.isNegligible(max)) max = 0; | |
return max; | |
}; | |
dc.utils.groupMin = function (group, accessor) { | |
var min = d3.min(group.all(), function (e) { | |
return accessor(e); | |
}); | |
if (dc.utils.isNegligible(min)) min = 0; | |
return min; | |
}; | |
dc.utils.nameToId = function (name) { | |
return name.toLowerCase().replace(/[\s]/g, "_").replace(/[\.']/g, ""); | |
}; | |
dc.utils.appendOrSelect = function (parent, name) { | |
var element = parent.select(name); | |
if (element.empty()) element = parent.append(name); | |
return element; | |
}; | |
dc.utils.createLegendable = function (chart, group, index, accessor) { | |
var legendable = {name: chart.getGroupName(group, accessor), data: group}; | |
if (typeof chart.colors === 'function') legendable.color = chart.colors()(index); | |
return legendable; | |
}; | |
dc.utils.safeNumber = function(n){return isNaN(n)?0:n;}; | |
dc.events = { | |
current: null | |
}; | |
dc.events.trigger = function(closure, delay) { | |
if (!delay){ | |
closure(); | |
return; | |
} | |
dc.events.current = closure; | |
setTimeout(function() { | |
if (closure == dc.events.current) | |
closure(); | |
}, delay); | |
}; | |
dc.cumulative = {}; | |
dc.cumulative.Base = function() { | |
this._keyIndex = []; | |
this._map = {}; | |
this.sanitizeKey = function(key) { | |
key = key + ""; | |
return key; | |
}; | |
this.clear = function() { | |
this._keyIndex = []; | |
this._map = {}; | |
}; | |
this.size = function() { | |
return this._keyIndex.length; | |
}; | |
this.getValueByKey = function(key) { | |
key = this.sanitizeKey(key); | |
var value = this._map[key]; | |
return value; | |
}; | |
this.setValueByKey = function(key, value) { | |
key = this.sanitizeKey(key); | |
return this._map[key] = value; | |
}; | |
this.indexOfKey = function(key) { | |
key = this.sanitizeKey(key); | |
return this._keyIndex.indexOf(key); | |
}; | |
this.addToIndex = function(key) { | |
key = this.sanitizeKey(key); | |
this._keyIndex.push(key); | |
}; | |
this.getKeyByIndex = function(index) { | |
return this._keyIndex[index]; | |
}; | |
}; | |
dc.cumulative.Sum = function() { | |
dc.cumulative.Base.apply(this, arguments); | |
this.add = function(key, value) { | |
if (value == null) | |
value = 0; | |
if (this.getValueByKey(key) == null) { | |
this.addToIndex(key); | |
this.setValueByKey(key, value); | |
} else { | |
this.setValueByKey(key, this.getValueByKey(key) + value); | |
} | |
}; | |
this.minus = function(key, value) { | |
this.setValueByKey(key, this.getValueByKey(key) - value); | |
}; | |
this.cumulativeSum = function(key) { | |
var keyIndex = this.indexOfKey(key); | |
if (keyIndex < 0) return 0; | |
var cumulativeValue = 0; | |
for (var i = 0; i <= keyIndex; ++i) { | |
var k = this.getKeyByIndex(i); | |
cumulativeValue += this.getValueByKey(k); | |
} | |
return cumulativeValue; | |
}; | |
}; | |
dc.cumulative.Sum.prototype = new dc.cumulative.Base(); | |
dc.cumulative.CountUnique = function() { | |
dc.cumulative.Base.apply(this, arguments); | |
function hashSize(hash) { | |
var size = 0, key; | |
for (key in hash) { | |
if (hash.hasOwnProperty(key)) size++; | |
} | |
return size; | |
} | |
this.add = function(key, e) { | |
if (this.getValueByKey(key) == null) { | |
this.setValueByKey(key, {}); | |
this.addToIndex(key); | |
} | |
if (e != null) { | |
if (this.getValueByKey(key)[e] == null) | |
this.getValueByKey(key)[e] = 0; | |
this.getValueByKey(key)[e] += 1; | |
} | |
}; | |
this.minus = function(key, e) { | |
this.getValueByKey(key)[e] -= 1; | |
if (this.getValueByKey(key)[e] <= 0) | |
delete this.getValueByKey(key)[e]; | |
}; | |
this.count = function(key) { | |
return hashSize(this.getValueByKey(key)); | |
}; | |
this.cumulativeCount = function(key) { | |
var keyIndex = this.indexOfKey(key); | |
if (keyIndex < 0) return 0; | |
var cumulativeCount = 0; | |
for (var i = 0; i <= keyIndex; ++i) { | |
var k = this.getKeyByIndex(i); | |
cumulativeCount += this.count(k); | |
} | |
return cumulativeCount; | |
}; | |
}; | |
dc.cumulative.CountUnique.prototype = new dc.cumulative.Base(); | |
dc.baseChart = function (_chart) { | |
_chart.__dc_flag__ = true; | |
var _dimension; | |
var _group; | |
var _anchor; | |
var _root; | |
var _svg; | |
var _width = 200, _height = 200; | |
var _keyAccessor = function (d) { | |
return d.key; | |
}; | |
var _valueAccessor = function (d) { | |
return d.value; | |
}; | |
var _label = function (d) { | |
return d.key; | |
}; | |
var _renderLabel = false; | |
var _title = function (d) { | |
return d.key + ": " + d.value; | |
}; | |
var _renderTitle = false; | |
var _transitionDuration = 750; | |
var _filterPrinter = dc.printers.filters; | |
var _renderlets = []; | |
var _chartGroup = dc.constants.DEFAULT_CHART_GROUP; | |
var NULL_LISTENER = function (chart) { | |
}; | |
var _listeners = { | |
preRender: NULL_LISTENER, | |
postRender: NULL_LISTENER, | |
preRedraw: NULL_LISTENER, | |
postRedraw: NULL_LISTENER, | |
filtered: NULL_LISTENER, | |
zoomed: NULL_LISTENER | |
}; | |
var _legend; | |
var _filters = []; | |
var _filterHandler = function (dimension, filters) { | |
dimension.filter(null); | |
if (filters.length == 0) | |
dimension.filter(null); | |
else if (filters.length == 1) | |
dimension.filter(filters[0]); | |
else | |
dimension.filterFunction(function (d) { | |
return filters.indexOf(d) >= 0; | |
}); | |
return filters; | |
}; | |
_chart.width = function (w) { | |
if (!arguments.length) return _width; | |
_width = w; | |
return _chart; | |
}; | |
_chart.height = function (h) { | |
if (!arguments.length) return _height; | |
_height = h; | |
return _chart; | |
}; | |
_chart.dimension = function (d) { | |
if (!arguments.length) return _dimension; | |
_dimension = d; | |
_chart.expireCache(); | |
return _chart; | |
}; | |
_chart.group = function (g, name) { | |
if (!arguments.length) return _group; | |
_group = g; | |
_chart.expireCache(); | |
if (typeof name === 'string') _chart.setGroupName(_group, name); | |
return _chart; | |
}; | |
_chart.setGroupName = function (g, name, accessor) { | |
if (!g.__names__) g.__names__ = {}; | |
g.__names__[groupNameKey(accessor)] = name; | |
}; | |
function groupNameKey(accessor) { | |
var defaultKey = "default"; | |
return accessor ? (accessor == _chart.valueAccessor() ? defaultKey : accessor) : defaultKey; | |
} | |
_chart.getGroupName = function (g, accessor) { | |
if (!g.__names__) g.__names__ = {}; | |
return g.__names__[groupNameKey(accessor)]; | |
}; | |
_chart.orderedGroup = function () { | |
return _group.order(function (p) { | |
return p.key; | |
}); | |
}; | |
_chart.filterAll = function () { | |
return _chart.filter(null); | |
}; | |
_chart.dataSet = function () { | |
return _dimension != undefined && _group != undefined; | |
}; | |
_chart.select = function (s) { | |
return _root.select(s); | |
}; | |
_chart.selectAll = function (s) { | |
return _root ? _root.selectAll(s) : null; | |
}; | |
_chart.anchor = function (a, chartGroup) { | |
if (!arguments.length) return _anchor; | |
if (dc.instanceOfChart(a)) { | |
_anchor = a.anchor(); | |
_root = a.root(); | |
} else { | |
_anchor = a; | |
_root = d3.select(_anchor); | |
_root.classed(dc.constants.CHART_CLASS, true); | |
dc.registerChart(_chart, chartGroup); | |
} | |
_chartGroup = chartGroup; | |
return _chart; | |
}; | |
_chart.root = function (r) { | |
if (!arguments.length) return _root; | |
_root = r; | |
return _chart; | |
}; | |
_chart.svg = function (_) { | |
if (!arguments.length) return _svg; | |
_svg = _; | |
return _chart; | |
}; | |
_chart.resetSvg = function () { | |
_chart.select("svg").remove(); | |
return _chart.generateSvg(); | |
}; | |
_chart.generateSvg = function () { | |
_svg = _chart.root().append("svg") | |
.attr("width", _chart.width()) | |
.attr("height", _chart.height()); | |
return _svg; | |
}; | |
_chart.filterPrinter = function (_) { | |
if (!arguments.length) return _filterPrinter; | |
_filterPrinter = _; | |
return _chart; | |
}; | |
_chart.turnOnControls = function () { | |
if (_root) { | |
_chart.selectAll(".reset").style("display", null); | |
_chart.selectAll(".filter").text(_filterPrinter(_chart.filters())).style("display", null); | |
} | |
return _chart; | |
}; | |
_chart.turnOffControls = function () { | |
if (_root) { | |
_chart.selectAll(".reset").style("display", "none"); | |
_chart.selectAll(".filter").style("display", "none").text(_chart.filter()); | |
} | |
return _chart; | |
}; | |
_chart.transitionDuration = function (d) { | |
if (!arguments.length) return _transitionDuration; | |
_transitionDuration = d; | |
return _chart; | |
}; | |
_chart.render = function () { | |
_listeners.preRender(_chart); | |
if (_dimension == null) | |
throw new dc.errors.InvalidStateException("Mandatory attribute chart.dimension is missing on chart[" | |
+ _chart.anchor() + "]"); | |
if (_group == null) | |
throw new dc.errors.InvalidStateException("Mandatory attribute chart.group is missing on chart[" | |
+ _chart.anchor() + "]"); | |
var result = _chart.doRender(); | |
if (_legend) _legend.render(); | |
_chart.activateRenderlets("postRender"); | |
return result; | |
}; | |
_chart.activateRenderlets = function (event) { | |
if (_chart.transitionDuration() > 0 && _svg) { | |
_svg.transition().duration(_chart.transitionDuration()) | |
.each("end", function () { | |
runAllRenderlets(); | |
if (event) _listeners[event](_chart); | |
}); | |
} else { | |
runAllRenderlets(); | |
if (event) _listeners[event](_chart); | |
} | |
} | |
_chart.redraw = function () { | |
_listeners.preRedraw(_chart); | |
var result = _chart.doRedraw(); | |
_chart.activateRenderlets("postRedraw"); | |
return result; | |
}; | |
_chart.invokeFilteredListener = function (chart, f) { | |
if (f !== undefined) _listeners.filtered(_chart, f); | |
}; | |
_chart.invokeZoomedListener = function (chart) { | |
_listeners.zoomed(_chart); | |
}; | |
_chart.hasFilter = function (filter) { | |
if (!arguments.length) return _filters.length > 0; | |
return _filters.indexOf(filter) >= 0; | |
}; | |
function removeFilter(_) { | |
_filters.splice(_filters.indexOf(_), 1); | |
applyFilters(); | |
_chart.invokeFilteredListener(_chart, _); | |
} | |
function addFilter(_) { | |
_filters.push(_); | |
applyFilters(); | |
_chart.invokeFilteredListener(_chart, _); | |
} | |
function resetFilters() { | |
_filters = []; | |
applyFilters(); | |
_chart.invokeFilteredListener(_chart, null); | |
} | |
function applyFilters() { | |
if (_chart.dataSet() && _chart.dimension().filter != undefined) { | |
var fs = _filterHandler(_chart.dimension(), _filters); | |
_filters = fs ? fs : _filters; | |
} | |
} | |
_chart.filter = function (_) { | |
if (!arguments.length) return _filters.length > 0 ? _filters[0] : null; | |
if (_ == null) { | |
resetFilters(); | |
} else { | |
if (_chart.hasFilter(_)) | |
removeFilter(_); | |
else | |
addFilter(_); | |
} | |
if (_root != null && _chart.hasFilter()) { | |
_chart.turnOnControls(); | |
} else { | |
_chart.turnOffControls(); | |
} | |
return _chart; | |
}; | |
_chart.filters = function () { | |
return _filters; | |
}; | |
_chart.highlightSelected = function (e) { | |
d3.select(e).classed(dc.constants.SELECTED_CLASS, true); | |
d3.select(e).classed(dc.constants.DESELECTED_CLASS, false); | |
}; | |
_chart.fadeDeselected = function (e) { | |
d3.select(e).classed(dc.constants.SELECTED_CLASS, false); | |
d3.select(e).classed(dc.constants.DESELECTED_CLASS, true); | |
}; | |
_chart.resetHighlight = function (e) { | |
d3.select(e).classed(dc.constants.SELECTED_CLASS, false); | |
d3.select(e).classed(dc.constants.DESELECTED_CLASS, false); | |
}; | |
_chart.onClick = function (d) { | |
var filter = _chart.keyAccessor()(d); | |
dc.events.trigger(function () { | |
_chart.filter(filter); | |
dc.redrawAll(_chart.chartGroup()); | |
}); | |
}; | |
_chart.filterHandler = function (_) { | |
if (!arguments.length) return _filterHandler; | |
_filterHandler = _; | |
return _chart; | |
}; | |
// abstract function stub | |
_chart.doRender = function () { | |
// do nothing in base, should be overridden by sub-function | |
return _chart; | |
}; | |
_chart.doRedraw = function () { | |
// do nothing in base, should be overridden by sub-function | |
return _chart; | |
}; | |
_chart.legendables = function () { | |
// do nothing in base, should be overridden by sub-function | |
return []; | |
}; | |
_chart.legendHighlight = function (d) { | |
// do nothing in base, should be overridden by sub-function | |
}; | |
_chart.legendReset = function (d) { | |
// do nothing in base, should be overridden by sub-function | |
}; | |
_chart.keyAccessor = function (_) { | |
if (!arguments.length) return _keyAccessor; | |
_keyAccessor = _; | |
return _chart; | |
}; | |
_chart.valueAccessor = function (_) { | |
if (!arguments.length) return _valueAccessor; | |
_valueAccessor = _; | |
return _chart; | |
}; | |
_chart.label = function (_) { | |
if (!arguments.length) return _label; | |
_label = _; | |
_renderLabel = true; | |
return _chart; | |
}; | |
_chart.renderLabel = function (_) { | |
if (!arguments.length) return _renderLabel; | |
_renderLabel = _; | |
return _chart; | |
}; | |
_chart.title = function (_) { | |
if (!arguments.length) return _title; | |
_title = _; | |
_renderTitle = true; | |
return _chart; | |
}; | |
_chart.renderTitle = function (_) { | |
if (!arguments.length) return _renderTitle; | |
_renderTitle = _; | |
return _chart; | |
}; | |
_chart.renderlet = function (_) { | |
_renderlets.push(_); | |
return _chart; | |
}; | |
function runAllRenderlets() { | |
for (var i = 0; i < _renderlets.length; ++i) { | |
_renderlets[i](_chart); | |
} | |
} | |
_chart.chartGroup = function (_) { | |
if (!arguments.length) return _chartGroup; | |
_chartGroup = _; | |
return _chart; | |
}; | |
_chart.on = function (event, listener) { | |
_listeners[event] = listener; | |
return _chart; | |
}; | |
_chart.expireCache = function () { | |
// do nothing in base, should be overridden by sub-function | |
return _chart; | |
}; | |
_chart.legend = function (l) { | |
if (!arguments.length) return _legend; | |
_legend = l; | |
_legend.parent(_chart); | |
return _chart; | |
}; | |
return _chart; | |
}; | |
dc.marginable = function (_chart) { | |
var _margin = {top: 10, right: 50, bottom: 30, left: 30}; | |
_chart.margins = function (m) { | |
if (!arguments.length) return _margin; | |
_margin = m; | |
return _chart; | |
}; | |
_chart.effectiveWidth = function () { | |
return _chart.width() - _chart.margins().left - _chart.margins().right; | |
}; | |
_chart.effectiveHeight = function () { | |
return _chart.height() - _chart.margins().top - _chart.margins().bottom; | |
}; | |
return _chart; | |
};dc.coordinateGridChart = function (_chart) { | |
var GRID_LINE_CLASS = "grid-line"; | |
var HORIZONTAL_CLASS = "horizontal"; | |
var VERTICAL_CLASS = "vertical"; | |
_chart = dc.colorChart(dc.marginable(dc.baseChart(_chart))); | |
_chart.colors(d3.scale.category10()); | |
var _parent; | |
var _g; | |
var _chartBodyG; | |
var _x; | |
var _xOriginalDomain; | |
var _xAxis = d3.svg.axis(); | |
var _xUnits = dc.units.integers; | |
var _xAxisPadding = 0; | |
var _xElasticity = false; | |
var _y; | |
var _yAxis = d3.svg.axis(); | |
var _yAxisPadding = 0; | |
var _yElasticity = false; | |
var _brush = d3.svg.brush(); | |
var _brushOn = true; | |
var _round; | |
var _renderHorizontalGridLine = false; | |
var _renderVerticalGridLine = false; | |
var _refocused = false; | |
var _unitCount; | |
var _rangeChart; | |
var _focusChart; | |
var _mouseZoomable = false; | |
var _clipPadding = 0; | |
_chart.title(function (d) { | |
return d.data.key + ": " + d.data.value; | |
}); | |
_chart.rescale = function () { | |
_unitCount = null; | |
_chart.xUnitCount(); | |
} | |
_chart.rangeChart = function (_) { | |
if (!arguments.length) return _rangeChart; | |
_rangeChart = _; | |
_rangeChart.focusChart(_chart); | |
return _chart; | |
} | |
_chart.generateG = function (parent) { | |
if (parent == null) | |
_parent = _chart.svg(); | |
else | |
_parent = parent; | |
_g = _parent.append("g"); | |
_chartBodyG = _g.append("g").attr("class", "chart-body") | |
.attr("transform", "translate(" + _chart.margins().left + ", " + _chart.margins().top + ")") | |
.attr("clip-path", "url(#" + getClipPathId() + ")"); | |
return _g; | |
}; | |
_chart.g = function (_) { | |
if (!arguments.length) return _g; | |
_g = _; | |
return _chart; | |
}; | |
_chart.mouseZoomable = function (z) { | |
if (!arguments.length) return _mouseZoomable; | |
_mouseZoomable = z; | |
return _chart; | |
}; | |
_chart.chartBodyG = function (_) { | |
if (!arguments.length) return _chartBodyG; | |
_chartBodyG = _; | |
return _chart; | |
}; | |
_chart.x = function (_) { | |
if (!arguments.length) return _x; | |
_x = _; | |
_xOriginalDomain = _x.domain(); | |
return _chart; | |
}; | |
_chart.xOriginalDomain = function () { | |
return _xOriginalDomain; | |
}; | |
_chart.xUnits = function (_) { | |
if (!arguments.length) return _xUnits; | |
_xUnits = _; | |
return _chart; | |
}; | |
_chart.xAxis = function (_) { | |
if (!arguments.length) return _xAxis; | |
_xAxis = _; | |
return _chart; | |
}; | |
_chart.elasticX = function (_) { | |
if (!arguments.length) return _xElasticity; | |
_xElasticity = _; | |
return _chart; | |
}; | |
_chart.xAxisPadding = function (_) { | |
if (!arguments.length) return _xAxisPadding; | |
_xAxisPadding = _; | |
return _chart; | |
}; | |
_chart.xUnitCount = function () { | |
if (_unitCount == null) { | |
var units = _chart.xUnits()(_chart.x().domain()[0], _chart.x().domain()[1], _chart.x().domain()); | |
if (units instanceof Array) | |
_unitCount = units.length; | |
else | |
_unitCount = units; | |
} | |
return _unitCount; | |
}; | |
_chart.isOrdinal = function () { | |
return _chart.xUnits() === dc.units.ordinal; | |
}; | |
_chart.prepareOrdinalXAxis = function (count) { | |
if (!count) | |
count = _chart.xUnitCount(); | |
var range = []; | |
var currentPosition = 0; | |
var increment = _chart.xAxisLength() / count; | |
for (var i = 0; i < count; i++) { | |
range[i] = currentPosition; | |
currentPosition += increment; | |
} | |
_x.range(range); | |
}; | |
function prepareXAxis(g) { | |
if (_chart.elasticX() && !_chart.isOrdinal()) { | |
_x.domain([_chart.xAxisMin(), _chart.xAxisMax()]); | |
} | |
if (_chart.isOrdinal()) { | |
_chart.prepareOrdinalXAxis(); | |
} else { | |
_x.range([0, _chart.xAxisLength()]); | |
} | |
_xAxis = _xAxis.scale(_chart.x()).orient("bottom"); | |
renderVerticalGridLines(g); | |
} | |
_chart.renderXAxis = function (g) { | |
var axisXG = g.selectAll("g.x"); | |
if (axisXG.empty()) | |
axisXG = g.append("g") | |
.attr("class", "axis x") | |
.attr("transform", "translate(" + _chart.margins().left + "," + _chart.xAxisY() + ")"); | |
dc.transition(axisXG, _chart.transitionDuration()) | |
.call(_xAxis); | |
}; | |
function renderVerticalGridLines(g) { | |
var gridLineG = g.selectAll("g." + VERTICAL_CLASS); | |
if (_renderVerticalGridLine) { | |
if (gridLineG.empty()) | |
gridLineG = g.insert("g", ":first-child") | |
.attr("class", GRID_LINE_CLASS + " " + VERTICAL_CLASS) | |
.attr("transform", "translate(" + _chart.yAxisX() + "," + _chart.margins().top + ")"); | |
var ticks = _xAxis.tickValues() ? _xAxis.tickValues() : _x.ticks(_xAxis.ticks()[0]); | |
var lines = gridLineG.selectAll("line") | |
.data(ticks); | |
// enter | |
var linesGEnter = lines.enter() | |
.append("line") | |
.attr("x1", function (d) { | |
return _x(d); | |
}) | |
.attr("y1", _chart.xAxisY() - _chart.margins().top) | |
.attr("x2", function (d) { | |
return _x(d); | |
}) | |
.attr("y2", 0) | |
.attr("opacity", 0); | |
dc.transition(linesGEnter, _chart.transitionDuration()) | |
.attr("opacity", 1); | |
// update | |
dc.transition(lines, _chart.transitionDuration()) | |
.attr("x1", function (d) { | |
return _x(d); | |
}) | |
.attr("y1", _chart.xAxisY() - _chart.margins().top) | |
.attr("x2", function (d) { | |
return _x(d); | |
}) | |
.attr("y2", 0); | |
// exit | |
lines.exit().remove(); | |
} | |
else { | |
gridLineG.selectAll("line").remove() | |
} | |
} | |
_chart.xAxisY = function () { | |
return (_chart.height() - _chart.margins().bottom); | |
}; | |
_chart.xAxisLength = function () { | |
return _chart.effectiveWidth(); | |
}; | |
function prepareYAxis(g) { | |
if (_y == null || _chart.elasticY()) { | |
_y = d3.scale.linear(); | |
_y.domain([_chart.yAxisMin(), _chart.yAxisMax()]).rangeRound([_chart.yAxisHeight(), 0]); | |
} | |
_y.range([_chart.yAxisHeight(), 0]); | |
_yAxis = _yAxis.scale(_y).orient("left"); | |
renderHorizontalGridLines(g); | |
} | |
_chart.renderYAxis = function (g) { | |
var axisYG = g.selectAll("g.y"); | |
if (axisYG.empty()) | |
axisYG = g.append("g") | |
.attr("class", "axis y") | |
.attr("transform", "translate(" + _chart.yAxisX() + "," + _chart.margins().top + ")"); | |
dc.transition(axisYG, _chart.transitionDuration()) | |
.call(_yAxis); | |
}; | |
function renderHorizontalGridLines(g) { | |
var gridLineG = g.selectAll("g." + HORIZONTAL_CLASS); | |
if (_renderHorizontalGridLine) { | |
var ticks = _yAxis.tickValues() ? _yAxis.tickValues() : _y.ticks(_yAxis.ticks()[0]); | |
if (gridLineG.empty()) | |
gridLineG = g.insert("g", ":first-child") | |
.attr("class", GRID_LINE_CLASS + " " + HORIZONTAL_CLASS) | |
.attr("transform", "translate(" + _chart.yAxisX() + "," + _chart.margins().top + ")"); | |
var lines = gridLineG.selectAll("line") | |
.data(ticks); | |
// enter | |
var linesGEnter = lines.enter() | |
.append("line") | |
.attr("x1", 1) | |
.attr("y1", function (d) { | |
return _y(d); | |
}) | |
.attr("x2", _chart.xAxisLength()) | |
.attr("y2", function (d) { | |
return _y(d); | |
}) | |
.attr("opacity", 0); | |
dc.transition(linesGEnter, _chart.transitionDuration()) | |
.attr("opacity", 1); | |
// update | |
dc.transition(lines, _chart.transitionDuration()) | |
.attr("x1", 1) | |
.attr("y1", function (d) { | |
return _y(d); | |
}) | |
.attr("x2", _chart.xAxisLength()) | |
.attr("y2", function (d) { | |
return _y(d); | |
}); | |
// exit | |
lines.exit().remove(); | |
} | |
else { | |
gridLineG.selectAll("line").remove() | |
} | |
} | |
_chart.yAxisX = function () { | |
return _chart.margins().left; | |
}; | |
_chart.y = function (_) { | |
if (!arguments.length) return _y; | |
_y = _; | |
return _chart; | |
}; | |
_chart.yAxis = function (y) { | |
if (!arguments.length) return _yAxis; | |
_yAxis = y; | |
return _chart; | |
}; | |
_chart.elasticY = function (_) { | |
if (!arguments.length) return _yElasticity; | |
_yElasticity = _; | |
return _chart; | |
}; | |
_chart.renderHorizontalGridLines = function (_) { | |
if (!arguments.length) return _renderHorizontalGridLine; | |
_renderHorizontalGridLine = _; | |
return _chart; | |
}; | |
_chart.renderVerticalGridLines = function (_) { | |
if (!arguments.length) return _renderVerticalGridLine; | |
_renderVerticalGridLine = _; | |
return _chart; | |
}; | |
_chart.xAxisMin = function () { | |
var min = d3.min(_chart.group().all(), function (e) { | |
return _chart.keyAccessor()(e); | |
}); | |
return dc.utils.subtract(min, _xAxisPadding); | |
}; | |
_chart.xAxisMax = function () { | |
var max = d3.max(_chart.group().all(), function (e) { | |
return _chart.keyAccessor()(e); | |
}); | |
return dc.utils.add(max, _xAxisPadding); | |
}; | |
_chart.yAxisMin = function () { | |
var min = d3.min(_chart.group().all(), function (e) { | |
return _chart.valueAccessor()(e); | |
}); | |
min = dc.utils.subtract(min, _yAxisPadding); | |
return min; | |
}; | |
_chart.yAxisMax = function () { | |
var max = d3.max(_chart.group().all(), function (e) { | |
return _chart.valueAccessor()(e); | |
}); | |
max = dc.utils.add(max, _yAxisPadding); | |
return max; | |
}; | |
_chart.yAxisPadding = function (_) { | |
if (!arguments.length) return _yAxisPadding; | |
_yAxisPadding = _; | |
return _chart; | |
}; | |
_chart.yAxisHeight = function () { | |
return _chart.effectiveHeight(); | |
}; | |
_chart.round = function (_) { | |
if (!arguments.length) return _round; | |
_round = _; | |
return _chart; | |
}; | |
dc.override(_chart, "filter", function (_) { | |
if (!arguments.length) return _chart._filter(); | |
_chart._filter(_); | |
if (_) { | |
_chart.brush().extent(_); | |
} else { | |
_chart.brush().clear(); | |
} | |
return _chart; | |
}); | |
_chart.brush = function (_) { | |
if (!arguments.length) return _brush; | |
_brush = _; | |
return _chart; | |
}; | |
function brushHeight() { | |
return _chart.xAxisY() - _chart.margins().top; | |
} | |
_chart.renderBrush = function (g) { | |
if (_chart.isOrdinal()) | |
_brushOn = false; | |
if (_brushOn) { | |
_brush.on("brushstart", brushStart) | |
.on("brush", brushing) | |
.on("brushend", brushEnd); | |
var gBrush = g.append("g") | |
.attr("class", "brush") | |
.attr("transform", "translate(" + _chart.margins().left + "," + _chart.margins().top + ")") | |
.call(_brush.x(_chart.x())); | |
gBrush.selectAll("rect").attr("height", brushHeight()); | |
gBrush.selectAll(".resize").append("path").attr("d", _chart.resizeHandlePath); | |
if (_chart.hasFilter()) { | |
_chart.redrawBrush(g); | |
} | |
} | |
}; | |
function brushStart(p) { | |
} | |
_chart.extendBrush = function () { | |
var extent = _brush.extent(); | |
if (_chart.round()) { | |
extent[0] = extent.map(_chart.round())[0]; | |
extent[1] = extent.map(_chart.round())[1]; | |
_g.select(".brush") | |
.call(_brush.extent(extent)); | |
} | |
return extent; | |
}; | |
_chart.brushIsEmpty = function (extent) { | |
return _brush.empty() || !extent || extent[1] <= extent[0]; | |
}; | |
function brushing(p) { | |
var extent = _chart.extendBrush(); | |
_chart.redrawBrush(_g); | |
if (_chart.brushIsEmpty(extent)) { | |
dc.events.trigger(function () { | |
_chart.filter(null); | |
dc.redrawAll(_chart.chartGroup()); | |
}); | |
} else { | |
dc.events.trigger(function () { | |
_chart.filter(null); | |
_chart.filter([extent[0], extent[1]]); | |
dc.redrawAll(_chart.chartGroup()); | |
}, dc.constants.EVENT_DELAY); | |
} | |
} | |
function brushEnd(p) { | |
} | |
_chart.redrawBrush = function (g) { | |
if (_brushOn) { | |
if (_chart.filter() && _chart.brush().empty()) | |
_chart.brush().extent(_chart.filter()); | |
var gBrush = g.select("g.brush"); | |
gBrush.call(_chart.brush().x(_chart.x())); | |
gBrush.selectAll("rect").attr("height", brushHeight()); | |
} | |
_chart.fadeDeselectedArea(); | |
}; | |
_chart.fadeDeselectedArea = function () { | |
// do nothing, sub-chart should override this function | |
}; | |
// borrowed from Crossfilter example | |
_chart.resizeHandlePath = function (d) { | |
var e = +(d == "e"), x = e ? 1 : -1, y = brushHeight() / 3; | |
return "M" + (.5 * x) + "," + y | |
+ "A6,6 0 0 " + e + " " + (6.5 * x) + "," + (y + 6) | |
+ "V" + (2 * y - 6) | |
+ "A6,6 0 0 " + e + " " + (.5 * x) + "," + (2 * y) | |
+ "Z" | |
+ "M" + (2.5 * x) + "," + (y + 8) | |
+ "V" + (2 * y - 8) | |
+ "M" + (4.5 * x) + "," + (y + 8) | |
+ "V" + (2 * y - 8); | |
}; | |
function getClipPathId() { | |
return _chart.anchor().replace('#', '') + "-clip"; | |
} | |
_chart.clipPadding = function (p) { | |
if (!arguments.length) return _clipPadding; | |
_clipPadding = p; | |
return _chart; | |
}; | |
function generateClipPath() { | |
var defs = dc.utils.appendOrSelect(_parent, "defs"); | |
var chartBodyClip = dc.utils.appendOrSelect(defs, "clipPath").attr("id", getClipPathId()); | |
var padding = _clipPadding * 2; | |
dc.utils.appendOrSelect(chartBodyClip, "rect") | |
.attr("width", _chart.xAxisLength() + padding) | |
.attr("height", _chart.yAxisHeight() + padding); | |
} | |
_chart.doRender = function () { | |
if (_x == null) | |
throw new dc.errors.InvalidStateException("Mandatory attribute chart.x is missing on chart[" | |
+ _chart.anchor() + "]"); | |
_chart.resetSvg(); | |
if (_chart.dataSet()) { | |
_chart.generateG(); | |
generateClipPath(); | |
prepareXAxis(_chart.g()); | |
prepareYAxis(_chart.g()); | |
_chart.plotData(); | |
_chart.renderXAxis(_chart.g()); | |
_chart.renderYAxis(_chart.g()); | |
_chart.renderBrush(_chart.g()); | |
enableMouseZoom(); | |
} | |
return _chart; | |
}; | |
function enableMouseZoom() { | |
if (_mouseZoomable) { | |
_chart.root().call(d3.behavior.zoom() | |
.x(_chart.x()) | |
.scaleExtent([1, 100]) | |
.on("zoom", function () { | |
_chart.focus(_chart.x().domain()); | |
_chart.invokeZoomedListener(_chart); | |
updateRangeSelChart(); | |
})); | |
} | |
} | |
function updateRangeSelChart() { | |
if (_rangeChart) { | |
var refDom = _chart.x().domain(); | |
var origDom = _rangeChart.xOriginalDomain(); | |
var newDom = [ | |
refDom[0] < origDom[0] ? refDom[0] : origDom[0], | |
refDom[1] > origDom[1] ? refDom[1] : origDom[1]]; | |
_rangeChart.focus(newDom); | |
_rangeChart.filter(null); | |
_rangeChart.filter(refDom); | |
dc.events.trigger(function () { | |
dc.redrawAll(_chart.chartGroup()); | |
}); | |
} | |
} | |
_chart.doRedraw = function () { | |
prepareXAxis(_chart.g()); | |
prepareYAxis(_chart.g()); | |
_chart.plotData(); | |
if (_chart.elasticY()) | |
_chart.renderYAxis(_chart.g()); | |
if (_chart.elasticX() || _refocused) | |
_chart.renderXAxis(_chart.g()); | |
_chart.redrawBrush(_chart.g()); | |
return _chart; | |
}; | |
_chart.subRender = function () { | |
if (_chart.dataSet()) { | |
_chart.plotData(); | |
} | |
return _chart; | |
}; | |
_chart.brushOn = function (_) { | |
if (!arguments.length) return _brushOn; | |
_brushOn = _; | |
return _chart; | |
}; | |
_chart.getDataWithinXDomain = function (group) { | |
var data = []; | |
if (_chart.isOrdinal()) { | |
data = group.all(); | |
} else { | |
group.all().forEach(function (d) { | |
var key = _chart.keyAccessor()(d); | |
if (key >= _chart.x().domain()[0] && key <= _chart.x().domain()[1]) | |
data.push(d); | |
}); | |
} | |
return data; | |
}; | |
function hasRangeSelected(range) { | |
return range instanceof Array && range.length > 1; | |
} | |
_chart.focus = function (range) { | |
_refocused = true; | |
if (hasRangeSelected(range)) { | |
_chart.x().domain(range); | |
} else { | |
_chart.x().domain(_chart.xOriginalDomain()); | |
} | |
_chart.rescale(); | |
_chart.redraw(); | |
if (!hasRangeSelected(range)) | |
_refocused = false; | |
}; | |
_chart.refocused = function () { | |
return _refocused; | |
}; | |
_chart.focusChart = function (c) { | |
if (!arguments.length) return _focusChart; | |
_focusChart = c; | |
_chart.on("filtered", function (chart) { | |
dc.events.trigger(function () { | |
_focusChart.focus(chart.filter()); | |
_focusChart.filter(chart.filter()); | |
dc.redrawAll(chart.chartGroup()); | |
}); | |
}); | |
return _chart; | |
}; | |
return _chart; | |
}; | |
dc.colorChart = function(_chart) { | |
var _colors = d3.scale.category20c(); | |
var _colorDomain = [0, _colors.range().length]; | |
var _colorCalculator = function(value) { | |
var minValue = _colorDomain[0]; | |
var maxValue = _colorDomain[1]; | |
if (isNaN(value)) value = 0; | |
if(maxValue == null) return _colors(value); | |
var colorsLength = _chart.colors().range().length; | |
var denominator = (maxValue - minValue) / colorsLength; | |
var colorValue = Math.abs(Math.min(colorsLength - 1, Math.round((value - minValue) / denominator))); | |
return _chart.colors()(colorValue); | |
}; | |
var _colorAccessor = function(d, i){return i;}; | |
_chart.colors = function(_) { | |
if (!arguments.length) return _colors; | |
if (_ instanceof Array) { | |
_colors = d3.scale.ordinal().range(_); | |
var domain = []; | |
for(var i = 0; i < _.length; ++i){ | |
domain.push(i); | |
} | |
_colors.domain(domain); | |
} else { | |
_colors = _; | |
} | |
_colorDomain = [0, _colors.range().length]; | |
return _chart; | |
}; | |
_chart.colorCalculator = function(_){ | |
if(!arguments.length) return _colorCalculator; | |
_colorCalculator = _; | |
return _chart; | |
}; | |
_chart.getColor = function(d, i){ | |
return _colorCalculator(_colorAccessor(d, i)); | |
}; | |
_chart.colorAccessor = function(_){ | |
if(!arguments.length) return _colorAccessor; | |
_colorAccessor = _; | |
return _chart; | |
}; | |
_chart.colorDomain = function(_){ | |
if(!arguments.length) return _colorDomain; | |
_colorDomain = _; | |
return _chart; | |
}; | |
return _chart; | |
}; | |
dc.stackableChart = function (_chart) { | |
var _groupStack = new dc.utils.GroupStack(); | |
var _stackLayout = d3.layout.stack() | |
.offset("zero") | |
.order("default") | |
.values(function (d) { | |
return d.points; | |
}); | |
var _allGroups; | |
var _allValueAccessors; | |
var _allKeyAccessors; | |
var _stackLayers; | |
_chart.stack = function (group, p2, retriever) { | |
if (typeof p2 === 'string') | |
_chart.setGroupName(group, p2, retriever); | |
else if (typeof p2 === 'function') | |
retriever = p2; | |
_groupStack.setDefaultAccessor(_chart.valueAccessor()); | |
_groupStack.addGroup(group, retriever); | |
_chart.expireCache(); | |
return _chart; | |
}; | |
_chart.expireCache = function () { | |
_allGroups = null; | |
_allValueAccessors = null; | |
_allKeyAccessors = null; | |
_stackLayers = null; | |
return _chart; | |
}; | |
_chart.allGroups = function () { | |
if (_allGroups == null) { | |
_allGroups = []; | |
_allGroups.push(_chart.group()); | |
for (var i = 0; i < _groupStack.size(); ++i) | |
_allGroups.push(_groupStack.getGroupByIndex(i)); | |
} | |
return _allGroups; | |
}; | |
_chart.allValueAccessors = function () { | |
if (_allValueAccessors == null) { | |
_allValueAccessors = []; | |
_allValueAccessors.push(_chart.valueAccessor()); | |
for (var i = 0; i < _groupStack.size(); ++i) | |
_allValueAccessors.push(_groupStack.getAccessorByIndex(i)); | |
} | |
return _allValueAccessors; | |
}; | |
_chart.getValueAccessorByIndex = function (groupIndex) { | |
return _chart.allValueAccessors()[groupIndex]; | |
}; | |
_chart.yAxisMin = function () { | |
var min, all = flattenStack(); | |
min = d3.min(all, function (p) { | |
return (p.y + p.y0 < p.y0) ? (p.y + p.y0) : p.y0; | |
}); | |
min = dc.utils.subtract(min, _chart.yAxisPadding()); | |
return min; | |
}; | |
_chart.yAxisMax = function () { | |
var max, all = flattenStack(); | |
max = d3.max(all, function (p) { | |
return p.y + p.y0; | |
}); | |
max = dc.utils.add(max, _chart.yAxisPadding()); | |
return max; | |
}; | |
function flattenStack() { | |
var all = []; | |
if (_chart.x()) { | |
var xDomain = _chart.x().domain(); | |
_chart.stackLayers().forEach(function (e) { | |
e.points.forEach(function (p) { | |
if (p.x >= xDomain[0] && p.x <= xDomain[1]) | |
all.push(p); | |
}); | |
}); | |
} else { | |
_chart.stackLayers().forEach(function (e) { | |
all = all.concat(e.points); | |
}); | |
} | |
return all; | |
} | |
_chart.allKeyAccessors = function () { | |
if (_allKeyAccessors == null) { | |
_allKeyAccessors = []; | |
_allKeyAccessors.push(_chart.keyAccessor()); | |
for (var i = 0; i < _groupStack.size(); ++i) | |
_allKeyAccessors.push(_chart.keyAccessor()); | |
} | |
return _allKeyAccessors; | |
}; | |
_chart.getKeyAccessorByIndex = function (groupIndex) { | |
return _chart.allKeyAccessors()[groupIndex]; | |
}; | |
_chart.xAxisMin = function () { | |
var min = null; | |
var allGroups = _chart.allGroups(); | |
for (var groupIndex = 0; groupIndex < allGroups.length; ++groupIndex) { | |
var group = allGroups[groupIndex]; | |
var m = dc.utils.groupMin(group, _chart.getKeyAccessorByIndex(groupIndex)); | |
if (min == null || min > m) min = m; | |
} | |
return dc.utils.subtract(min, _chart.xAxisPadding()); | |
}; | |
_chart.xAxisMax = function () { | |
var max = null; | |
var allGroups = _chart.allGroups(); | |
for (var groupIndex = 0; groupIndex < allGroups.length; ++groupIndex) { | |
var group = allGroups[groupIndex]; | |
var m = dc.utils.groupMax(group, _chart.getKeyAccessorByIndex(groupIndex)); | |
if (max == null || max < m) max = m; | |
} | |
return dc.utils.add(max, _chart.xAxisPadding()); | |
}; | |
function getKeyFromData(groupIndex, d) { | |
return _chart.getKeyAccessorByIndex(groupIndex)(d); | |
} | |
function getValueFromData(groupIndex, d) { | |
return _chart.getValueAccessorByIndex(groupIndex)(d); | |
} | |
function calculateDataPointMatrix(data, groupIndex) { | |
for (var dataIndex = 0; dataIndex < data.length; ++dataIndex) { | |
var d = data[dataIndex]; | |
var key = getKeyFromData(groupIndex, d); | |
var value = getValueFromData(groupIndex, d); | |
_groupStack.setDataPoint(groupIndex, dataIndex, {data: d, x: key, y: value}); | |
} | |
} | |
_chart.calculateDataPointMatrixForAll = function () { | |
var groups = _chart.allGroups(); | |
for (var groupIndex = 0; groupIndex < groups.length; ++groupIndex) { | |
var group = groups[groupIndex]; | |
var data = group.all(); | |
calculateDataPointMatrix(data, groupIndex); | |
} | |
}; | |
_chart.getChartStack = function () { | |
return _groupStack; | |
}; | |
dc.override(_chart, "valueAccessor", function (_) { | |
if (!arguments.length) return _chart._valueAccessor(); | |
_chart.expireCache(); | |
return _chart._valueAccessor(_); | |
}); | |
dc.override(_chart, "keyAccessor", function (_) { | |
if (!arguments.length) return _chart._keyAccessor(); | |
_chart.expireCache(); | |
return _chart._keyAccessor(_); | |
}); | |
_chart.stackLayout = function (stack) { | |
if (!arguments.length) return _stackLayout; | |
_stackLayout = stack; | |
return _chart; | |
}; | |
_chart.stackLayers = function (_) { | |
if (!arguments.length) { | |
if (_stackLayers == null) { | |
_chart.calculateDataPointMatrixForAll(); | |
_stackLayers = _chart.stackLayout()(_groupStack.toLayers()); | |
} | |
return _stackLayers; | |
} else { | |
_stackLayers = _; | |
} | |
}; | |
_chart.legendables = function () { | |
var items = []; | |
_allGroups.forEach(function (g, i) { | |
items.push(dc.utils.createLegendable(_chart, g, i, _chart.getValueAccessorByIndex(i))); | |
}); | |
return items; | |
}; | |
return _chart; | |
}; | |
dc.abstractBubbleChart = function (_chart) { | |
var _maxBubbleRelativeSize = 0.3; | |
var _minRadiusWithLabel = 10; | |
_chart.BUBBLE_NODE_CLASS = "node"; | |
_chart.BUBBLE_CLASS = "bubble"; | |
_chart.MIN_RADIUS = 10; | |
_chart = dc.colorChart(_chart); | |
_chart.renderLabel(true); | |
_chart.renderTitle(false); | |
var _r = d3.scale.linear().domain([0, 100]); | |
var _rValueAccessor = function (d) { | |
return d.r; | |
}; | |
_chart.r = function (_) { | |
if (!arguments.length) return _r; | |
_r = _; | |
return _chart; | |
}; | |
_chart.radiusValueAccessor = function (_) { | |
if (!arguments.length) return _rValueAccessor; | |
_rValueAccessor = _; | |
return _chart; | |
}; | |
_chart.rMin = function () { | |
var min = d3.min(_chart.group().all(), function (e) { | |
return _chart.radiusValueAccessor()(e); | |
}); | |
return min; | |
}; | |
_chart.rMax = function () { | |
var max = d3.max(_chart.group().all(), function (e) { | |
return _chart.radiusValueAccessor()(e); | |
}); | |
return max; | |
}; | |
_chart.bubbleR = function (d) { | |
var value = _chart.radiusValueAccessor()(d); | |
var r = _chart.r()(value); | |
if (isNaN(r) || value <= 0) | |
r = 0; | |
return r; | |
}; | |
var labelFunction = function (d) { | |
return _chart.label()(d); | |
}; | |
var labelOpacity = function (d) { | |
return (_chart.bubbleR(d) > _minRadiusWithLabel) ? 1 : 0; | |
}; | |
_chart.doRenderLabel = function (bubbleGEnter) { | |
if (_chart.renderLabel()) { | |
var label = bubbleGEnter.select("text"); | |
if (label.empty()) { | |
label = bubbleGEnter.append("text") | |
.attr("text-anchor", "middle") | |
.attr("dy", ".3em") | |
.on("click", _chart.onClick); | |
} | |
label | |
.attr("opacity", 0) | |
.text(labelFunction); | |
dc.transition(label, _chart.transitionDuration()) | |
.attr("opacity", labelOpacity); | |
} | |
}; | |
_chart.doUpdateLabels = function (bubbleGEnter) { | |
if (_chart.renderLabel()) { | |
var labels = bubbleGEnter.selectAll("text") | |
.text(labelFunction); | |
dc.transition(labels, _chart.transitionDuration()) | |
.attr("opacity", labelOpacity); | |
} | |
}; | |
var titleFunction = function (d) { | |
return _chart.title()(d); | |
}; | |
_chart.doRenderTitles = function (g) { | |
if (_chart.renderTitle()) { | |
var title = g.select("title"); | |
if (title.empty()) | |
g.append("title").text(titleFunction); | |
} | |
}; | |
_chart.doUpdateTitles = function (g) { | |
if (_chart.renderTitle()) { | |
g.selectAll("title").text(titleFunction); | |
} | |
}; | |
_chart.minRadiusWithLabel = function (_) { | |
if (!arguments.length) return _minRadiusWithLabel; | |
_minRadiusWithLabel = _; | |
return _chart; | |
}; | |
_chart.maxBubbleRelativeSize = function (_) { | |
if (!arguments.length) return _maxBubbleRelativeSize; | |
_maxBubbleRelativeSize = _; | |
return _chart; | |
}; | |
_chart.initBubbleColor = function (d, i) { | |
this[dc.constants.NODE_INDEX_NAME] = i; | |
return _chart.getColor(d, i); | |
}; | |
_chart.updateBubbleColor = function (d, i) { | |
// a work around to get correct node index since | |
return _chart.getColor(d, this[dc.constants.NODE_INDEX_NAME]); | |
}; | |
_chart.fadeDeselectedArea = function () { | |
if (_chart.hasFilter()) { | |
_chart.selectAll("g." + _chart.BUBBLE_NODE_CLASS).each(function (d) { | |
if (_chart.isSelectedNode(d)) { | |
_chart.highlightSelected(this); | |
} else { | |
_chart.fadeDeselected(this); | |
} | |
}); | |
} else { | |
_chart.selectAll("g." + _chart.BUBBLE_NODE_CLASS).each(function (d) { | |
_chart.resetHighlight(this); | |
}); | |
} | |
}; | |
_chart.isSelectedNode = function (d) { | |
return _chart.hasFilter(d.key); | |
}; | |
_chart.onClick = function (d) { | |
var filter = d.key; | |
dc.events.trigger(function () { | |
_chart.filter(filter); | |
dc.redrawAll(_chart.chartGroup()); | |
}); | |
}; | |
return _chart; | |
}; | |
dc.pieChart = function (parent, chartGroup) { | |
var DEFAULT_MIN_ANGLE_FOR_LABEL = 0.5; | |
var _sliceCssClass = "pie-slice"; | |
var _radius, | |
_innerRadius = 0; | |
var _g; | |
var _minAngleForLabel = DEFAULT_MIN_ANGLE_FOR_LABEL; | |
var _chart = dc.colorChart(dc.baseChart({})); | |
var _slicesCap = Infinity; | |
var _othersLabel = "Others"; | |
var _othersGrouper = function (data, sum) { | |
data.push({"key": _othersLabel, "value": sum }); | |
}; | |
function assemblePieData() { | |
if (_slicesCap == Infinity) { | |
return _chart.orderedGroup().top(_slicesCap); // ordered by keys | |
} else { | |
var topRows = _chart.group().top(_slicesCap); // ordered by value | |
var topRowsSum = d3.sum(topRows, _chart.valueAccessor()); | |
var allRows = _chart.group().all(); | |
var allRowsSum = d3.sum(allRows, _chart.valueAccessor()); | |
_othersGrouper(topRows, allRowsSum - topRowsSum); | |
return topRows; | |
} | |
} | |
_chart.label(function (d) { | |
return _chart.keyAccessor()(d.data); | |
}); | |
_chart.renderLabel(true); | |
_chart.title(function (d) { | |
return _chart.keyAccessor()(d.data) + ": " + _chart.valueAccessor()(d.data); | |
}); | |
_chart.transitionDuration(350); | |
_chart.doRender = function () { | |
_chart.resetSvg(); | |
_g = _chart.svg() | |
.append("g") | |
.attr("transform", "translate(" + _chart.cx() + "," + _chart.cy() + ")"); | |
drawChart(); | |
return _chart; | |
}; | |
function drawChart() { | |
if (_chart.dataSet()) { | |
var pie = calculateDataPie(); | |
// set radius on basis of chart dimension if missing | |
_radius = _radius ? _radius : d3.min([_chart.width(), _chart.height()]) /2; | |
var arc = _chart.buildArcs(); | |
var pieData = pie(assemblePieData()); | |
if (_g) { | |
var slices = _g.selectAll("g." + _sliceCssClass) | |
.data(pieData); | |
createElements(slices, arc, pieData); | |
updateElements(pieData, arc); | |
removeElements(slices); | |
highlightFilter(); | |
} | |
} | |
} | |
function createElements(slices, arc, pieData) { | |
var slicesEnter = createSliceNodes(slices); | |
createSlicePath(slicesEnter, arc); | |
createTitles(slicesEnter); | |
createLabels(pieData, arc); | |
} | |
function createSliceNodes(slices) { | |
var slicesEnter = slices | |
.enter() | |
.append("g") | |
.attr("class", function (d, i) { | |
return _sliceCssClass + " _" + i; | |
}); | |
return slicesEnter; | |
} | |
function createSlicePath(slicesEnter, arc) { | |
var slicePath = slicesEnter.append("path") | |
.attr("fill", function (d, i) { | |
return _chart.getColor(d, i); | |
}) | |
.on("click", onClick) | |
.attr("d", function (d, i) { | |
return safeArc(d, i, arc); | |
}); | |
slicePath.transition() | |
.duration(_chart.transitionDuration()) | |
.attrTween("d", tweenPie); | |
} | |
function createTitles(slicesEnter) { | |
if (_chart.renderTitle()) { | |
slicesEnter.append("title").text(function (d) { | |
return _chart.title()(d); | |
}); | |
} | |
} | |
function createLabels(pieData, arc) { | |
if (_chart.renderLabel()) { | |
var labels = _g.selectAll("text." + _sliceCssClass) | |
.data(pieData); | |
var labelsEnter = labels | |
.enter() | |
.append("text") | |
.attr("class", function (d, i) { | |
return _sliceCssClass + " _" + i; | |
}) | |
.on("click", onClick); | |
dc.transition(labelsEnter, _chart.transitionDuration()) | |
.attr("transform", function (d) { | |
d.innerRadius = _chart.innerRadius(); | |
d.outerRadius = _radius; | |
var centroid = arc.centroid(d); | |
if (isNaN(centroid[0]) || isNaN(centroid[1])) { | |
return "translate(0,0)"; | |
} else { | |
return "translate(" + centroid + ")"; | |
} | |
}) | |
.attr("text-anchor", "middle") | |
.text(function (d) { | |
var data = d.data; | |
if (sliceHasNoData(data) || sliceTooSmall(d)) | |
return ""; | |
return _chart.label()(d); | |
}); | |
} | |
} | |
function updateElements(pieData, arc) { | |
updateSlicePaths(pieData, arc); | |
updateLabels(pieData, arc); | |
updateTitles(pieData); | |
} | |
function updateSlicePaths(pieData, arc) { | |
var slicePaths = _g.selectAll("g." + _sliceCssClass) | |
.data(pieData) | |
.select("path") | |
.attr("d", function (d, i) { | |
return safeArc(d, i, arc); | |
}); | |
dc.transition(slicePaths, _chart.transitionDuration(), | |
function (s) { | |
s.attrTween("d", tweenPie); | |
}).attr("fill", function (d, i) { | |
return _chart.getColor(d, i); | |
}); | |
} | |
function updateLabels(pieData, arc) { | |
if (_chart.renderLabel()) { | |
var labels = _g.selectAll("text." + _sliceCssClass) | |
.data(pieData); | |
dc.transition(labels, _chart.transitionDuration()) | |
.attr("transform", function (d) { | |
d.innerRadius = _chart.innerRadius(); | |
d.outerRadius = _radius; | |
var centroid = arc.centroid(d); | |
if (isNaN(centroid[0]) || isNaN(centroid[1])) { | |
return "translate(0,0)"; | |
} else { | |
return "translate(" + centroid + ")"; | |
} | |
}) | |
.attr("text-anchor", "middle") | |
.text(function (d) { | |
var data = d.data; | |
if (sliceHasNoData(data) || sliceTooSmall(d)) | |
return ""; | |
return _chart.label()(d); | |
}); | |
} | |
} | |
function updateTitles(pieData) { | |
if (_chart.renderTitle()) { | |
_g.selectAll("g." + _sliceCssClass) | |
.data(pieData) | |
.select("title") | |
.text(function (d) { | |
return _chart.title()(d); | |
}); | |
} | |
} | |
function removeElements(slices) { | |
slices.exit().remove(); | |
} | |
function highlightFilter() { | |
if (_chart.hasFilter()) { | |
_chart.selectAll("g." + _sliceCssClass).each(function (d) { | |
if (_chart.isSelectedSlice(d)) { | |
_chart.highlightSelected(this); | |
} else { | |
_chart.fadeDeselected(this); | |
} | |
}); | |
} else { | |
_chart.selectAll("g." + _sliceCssClass).each(function (d) { | |
_chart.resetHighlight(this); | |
}); | |
} | |
} | |
_chart.innerRadius = function (r) { | |
if (!arguments.length) return _innerRadius; | |
_innerRadius = r; | |
return _chart; | |
}; | |
_chart.radius = function (r) { | |
if (!arguments.length) return _radius; | |
_radius = r; | |
return _chart; | |
}; | |
_chart.cx = function () { | |
return _chart.width() / 2; | |
}; | |
_chart.cy = function () { | |
return _chart.height() / 2; | |
}; | |
_chart.buildArcs = function () { | |
return d3.svg.arc().outerRadius(_radius).innerRadius(_innerRadius); | |
}; | |
_chart.isSelectedSlice = function (d) { | |
return _chart.hasFilter(_chart.keyAccessor()(d.data)); | |
}; | |
_chart.doRedraw = function () { | |
drawChart(); | |
return _chart; | |
}; | |
_chart.minAngleForLabel = function (_) { | |
if (!arguments.length) return _minAngleForLabel; | |
_minAngleForLabel = _; | |
return _chart; | |
}; | |
_chart.slicesCap = function (_) { | |
if (!arguments.length) return _slicesCap; | |
_slicesCap = _; | |
return _chart; | |
}; | |
_chart.othersLabel = function (_) { | |
if (!arguments.length) return _othersLabel; | |
_othersLabel = _; | |
return _chart; | |
}; | |
_chart.othersGrouper = function (_) { | |
if (!arguments.length) return _othersGrouper; | |
_othersGrouper = _; | |
return _chart; | |
}; | |
function calculateDataPie() { | |
return d3.layout.pie().sort(null).value(function (d) { | |
return _chart.valueAccessor()(d); | |
}); | |
} | |
function sliceTooSmall(d) { | |
var angle = (d.endAngle - d.startAngle); | |
return isNaN(angle) || angle < _minAngleForLabel; | |
} | |
function sliceHasNoData(data) { | |
return _chart.valueAccessor()(data) == 0; | |
} | |
function tweenPie(b) { | |
b.innerRadius = _chart.innerRadius(); | |
var current = this._current; | |
if (isOffCanvas(current)) | |
current = {startAngle: 0, endAngle: 0}; | |
var i = d3.interpolate(current, b); | |
this._current = i(0); | |
return function (t) { | |
return safeArc(i(t), 0, _chart.buildArcs()); | |
}; | |
} | |
function isOffCanvas(current) { | |
return current == null || isNaN(current.startAngle) || isNaN(current.endAngle); | |
} | |
function onClick(d) { | |
_chart.onClick(d.data); | |
} | |
function safeArc(d, i, arc) { | |
var path = arc(d, i); | |
if (path.indexOf("NaN") >= 0) | |
path = "M0,0"; | |
return path; | |
} | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.barChart = function (parent, chartGroup) { | |
var MIN_BAR_WIDTH = 1; | |
var DEFAULT_GAP_BETWEEN_BARS = 2; | |
var _chart = dc.stackableChart(dc.coordinateGridChart({})); | |
var _gap = DEFAULT_GAP_BETWEEN_BARS; | |
var _centerBar = false; | |
var _numberOfBars; | |
var _barWidth; | |
dc.override(_chart, 'rescale', function () { | |
_chart._rescale(); | |
_numberOfBars = null; | |
_barWidth = null; | |
getNumberOfBars(); | |
}); | |
_chart.plotData = function () { | |
var layers = _chart.chartBodyG().selectAll("g.stack") | |
.data(_chart.stackLayers()); | |
calculateBarWidth(); | |
layers | |
.enter() | |
.append("g") | |
.attr("class", function (d, i) { | |
return "stack " + "_" + i; | |
}); | |
layers.each(function (d, i) { | |
var layer = d3.select(this); | |
renderBars(layer, d, i); | |
}); | |
_chart.stackLayers(null); | |
}; | |
function barHeight(d) { | |
return dc.utils.safeNumber(Math.abs(_chart.y()(d.y + d.y0) - _chart.y()(d.y0))); | |
} | |
function renderBars(layer, d, i) { | |
var bars = layer.selectAll("rect.bar") | |
.data(d.points); | |
bars.enter() | |
.append("rect") | |
.attr("class", "bar") | |
.attr("fill", function (d) { | |
return _chart.colors()(i); | |
}) | |
.append("title").text(_chart.title()); | |
dc.transition(bars, _chart.transitionDuration()) | |
.attr("x", function (d) { | |
var x = _chart.x()(d.x); | |
if (_centerBar) x -= _barWidth / 2; | |
return dc.utils.safeNumber(x); | |
}) | |
.attr("y", function (d) { | |
var y = _chart.y()(d.y + d.y0); | |
if (d.y < 0) | |
y -= barHeight(d); | |
return dc.utils.safeNumber(y); | |
}) | |
.attr("width", _barWidth) | |
.attr("height", function (d) { | |
return barHeight(d); | |
}) | |
.select("title").text(_chart.title()); | |
dc.transition(bars.exit(), _chart.transitionDuration()) | |
.attr("height", 0) | |
.remove(); | |
} | |
function calculateBarWidth() { | |
if (_barWidth == null) { | |
var numberOfBars = _chart.isOrdinal() ? getNumberOfBars() + 1 : getNumberOfBars(); | |
var w = Math.floor((_chart.xAxisLength() - (numberOfBars - 1) * _gap) / numberOfBars); | |
if (w == Infinity || isNaN(w) || w < MIN_BAR_WIDTH) | |
w = MIN_BAR_WIDTH; | |
_barWidth = w; | |
} | |
} | |
function getNumberOfBars() { | |
if (_numberOfBars == null) { | |
_numberOfBars = _chart.xUnitCount(); | |
} | |
return _numberOfBars; | |
} | |
_chart.fadeDeselectedArea = function () { | |
var bars = _chart.chartBodyG().selectAll("rect.bar"); | |
var extent = _chart.brush().extent(); | |
if (_chart.isOrdinal()) { | |
if (_chart.hasFilter()) { | |
bars.classed(dc.constants.SELECTED_CLASS, function (d) { | |
return _chart.hasFilter(_chart.keyAccessor()(d.data)); | |
}); | |
bars.classed(dc.constants.DESELECTED_CLASS, function (d) { | |
return !_chart.hasFilter(_chart.keyAccessor()(d.data)); | |
}); | |
} else { | |
bars.classed(dc.constants.SELECTED_CLASS, false); | |
bars.classed(dc.constants.DESELECTED_CLASS, false); | |
} | |
} else { | |
if (!_chart.brushIsEmpty(extent)) { | |
var start = extent[0]; | |
var end = extent[1]; | |
bars.classed(dc.constants.DESELECTED_CLASS, function (d) { | |
var xValue = _chart.keyAccessor()(d.data); | |
return xValue < start || xValue >= end; | |
}); | |
} else { | |
bars.classed(dc.constants.DESELECTED_CLASS, false); | |
} | |
} | |
}; | |
_chart.centerBar = function (_) { | |
if (!arguments.length) return _centerBar; | |
_centerBar = _; | |
return _chart; | |
}; | |
_chart.gap = function (_) { | |
if (!arguments.length) return _gap; | |
_gap = _; | |
return _chart; | |
}; | |
_chart.extendBrush = function () { | |
var extent = _chart.brush().extent(); | |
if (_chart.round() && !_centerBar) { | |
extent[0] = extent.map(_chart.round())[0]; | |
extent[1] = extent.map(_chart.round())[1]; | |
_chart.chartBodyG().select(".brush") | |
.call(_chart.brush().extent(extent)); | |
} | |
return extent; | |
}; | |
dc.override(_chart, "prepareOrdinalXAxis", function () { | |
return this._prepareOrdinalXAxis(_chart.xUnitCount() + 1); | |
}); | |
_chart.legendHighlight = function (d) { | |
_chart.select('.chart-body').selectAll('rect.bar').filter(function () { | |
return d3.select(this).attr('fill') == d.color; | |
}).classed('highlight', true); | |
_chart.select('.chart-body').selectAll('rect.bar').filter(function () { | |
return d3.select(this).attr('fill') != d.color; | |
}).classed('fadeout', true); | |
}; | |
_chart.legendReset = function (d) { | |
_chart.selectAll('.chart-body').selectAll('rect.bar').filter(function () { | |
return d3.select(this).attr('fill') == d.color; | |
}).classed('highlight', false); | |
_chart.selectAll('.chart-body').selectAll('rect.bar').filter(function () { | |
return d3.select(this).attr('fill') != d.color; | |
}).classed('fadeout', false); | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.lineChart = function (parent, chartGroup) { | |
var DEFAULT_DOT_RADIUS = 5; | |
var TOOLTIP_G_CLASS = "dc-tooltip"; | |
var DOT_CIRCLE_CLASS = "dot"; | |
var Y_AXIS_REF_LINE_CLASS = "yRef"; | |
var X_AXIS_REF_LINE_CLASS = "xRef"; | |
var _chart = dc.stackableChart(dc.coordinateGridChart({})); | |
var _renderArea = false; | |
var _dotRadius = DEFAULT_DOT_RADIUS; | |
_chart.transitionDuration(500); | |
_chart.plotData = function () { | |
var layers = _chart.chartBodyG().selectAll("g.stack") | |
.data(_chart.stackLayers()); | |
var layersEnter = layers | |
.enter() | |
.append("g") | |
.attr("class", function (d, i) { | |
return "stack " + "_" + i; | |
}); | |
drawLine(layersEnter, layers); | |
drawArea(layersEnter, layers); | |
drawDots(layers); | |
_chart.stackLayers(null); | |
}; | |
_chart.renderArea = function (_) { | |
if (!arguments.length) return _renderArea; | |
_renderArea = _; | |
return _chart; | |
}; | |
function drawLine(layersEnter, layers) { | |
var line = d3.svg.line() | |
.x(function (d) { | |
return _chart.x()(d.x); | |
}) | |
.y(function (d) { | |
return _chart.y()(d.y + d.y0); | |
}); | |
layersEnter.append("path") | |
.attr("class", "line") | |
.attr("stroke", function (d, i) { | |
return _chart.colors()(i); | |
}) | |
.attr("fill", function (d, i) { | |
return _chart.colors()(i); | |
}); | |
dc.transition(layers.select("path.line"), _chart.transitionDuration()) | |
.attr("d", function (d) { | |
return safeD(line(d.points)); | |
}); | |
} | |
function drawArea(layersEnter, layers) { | |
if (_renderArea) { | |
var area = d3.svg.area() | |
.x(function (d) { | |
return _chart.x()(d.x); | |
}) | |
.y(function (d) { | |
return _chart.y()(d.y + d.y0); | |
}) | |
.y0(function (d) { | |
return _chart.y()(d.y0); | |
}); | |
layersEnter.append("path") | |
.attr("class", "area") | |
.attr("fill", function (d, i) { | |
return _chart.colors()(i); | |
}) | |
.attr("d", function (d) { | |
return safeD(area(d.points)); | |
}); | |
dc.transition(layers.select("path.area"), _chart.transitionDuration()) | |
.attr("d", function (d) { | |
return safeD(area(d.points)); | |
}); | |
} | |
} | |
function safeD(d){ | |
return d.indexOf("NaN") >= 0 ? "M0,0" : d; | |
}; | |
function drawDots(layersEnter) { | |
if (!_chart.brushOn()) { | |
layersEnter.each(function (d, i) { | |
var layer = d3.select(this); | |
var g = layer.select("g." + TOOLTIP_G_CLASS); | |
if (g.empty()) g = layer.append("g").attr("class", TOOLTIP_G_CLASS); | |
createRefLines(g); | |
var dots = g.selectAll("circle." + DOT_CIRCLE_CLASS) | |
.data(g.datum().points); | |
dots.enter() | |
.append("circle") | |
.attr("class", DOT_CIRCLE_CLASS) | |
.attr("r", _dotRadius) | |
.attr("fill", function (d) { | |
return _chart.colors()(i); | |
}) | |
.style("fill-opacity", 1e-6) | |
.style("stroke-opacity", 1e-6) | |
.on("mousemove", function (d) { | |
var dot = d3.select(this); | |
showDot(dot); | |
showRefLines(dot, g); | |
}) | |
.on("mouseout", function (d) { | |
var dot = d3.select(this); | |
hideDot(dot); | |
hideRefLines(g); | |
}) | |
.append("title").text(_chart.title()); | |
dots.attr("cx", function (d) { | |
return dc.utils.safeNumber(_chart.x()(d.x)); | |
}) | |
.attr("cy", function (d) { | |
return dc.utils.safeNumber(_chart.y()(d.y + d.y0)); | |
}) | |
.select("title").text(_chart.title()); | |
dots.exit().remove(); | |
}); | |
} | |
} | |
function createRefLines(g) { | |
var yRefLine = g.select("path." + Y_AXIS_REF_LINE_CLASS).empty() ? g.append("path").attr("class", Y_AXIS_REF_LINE_CLASS) : g.select("path." + Y_AXIS_REF_LINE_CLASS); | |
yRefLine.style("display", "none").attr("stroke-dasharray", "5,5"); | |
var xRefLine = g.select("path." + X_AXIS_REF_LINE_CLASS).empty() ? g.append("path").attr("class", X_AXIS_REF_LINE_CLASS) : g.select("path." + X_AXIS_REF_LINE_CLASS); | |
xRefLine.style("display", "none").attr("stroke-dasharray", "5,5"); | |
} | |
function showDot(dot) { | |
dot.style("fill-opacity", .8); | |
dot.style("stroke-opacity", .8); | |
return dot; | |
} | |
function showRefLines(dot, g) { | |
var x = dot.attr("cx"); | |
var y = dot.attr("cy"); | |
g.select("path." + Y_AXIS_REF_LINE_CLASS).style("display", "").attr("d", "M0 " + y + "L" + (x) + " " + (y)); | |
g.select("path." + X_AXIS_REF_LINE_CLASS).style("display", "").attr("d", "M" + x + " " + _chart.yAxisHeight() + "L" + x + " " + y); | |
} | |
function hideDot(dot) { | |
dot.style("fill-opacity", 1e-6).style("stroke-opacity", 1e-6); | |
} | |
function hideRefLines(g) { | |
g.select("path." + Y_AXIS_REF_LINE_CLASS).style("display", "none"); | |
g.select("path." + X_AXIS_REF_LINE_CLASS).style("display", "none"); | |
} | |
_chart.dotRadius = function (_) { | |
if (!arguments.length) return _dotRadius; | |
_dotRadius = _; | |
return _chart; | |
}; | |
_chart.legendHighlight = function (d) { | |
_chart.selectAll('.chart-body').selectAll('path').filter(function () { | |
return d3.select(this).attr('fill') == d.color; | |
}).classed('highlight', true); | |
_chart.selectAll('.chart-body').selectAll('path').filter(function () { | |
return d3.select(this).attr('fill') != d.color; | |
}).classed('fadeout', true); | |
}; | |
_chart.legendReset = function (d) { | |
_chart.selectAll('.chart-body').selectAll('path').filter(function () { | |
return d3.select(this).attr('fill') == d.color; | |
}).classed('highlight', false); | |
_chart.selectAll('.chart-body').selectAll('path').filter(function () { | |
return d3.select(this).attr('fill') != d.color; | |
}).classed('fadeout', false); | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.dataCount = function(parent, chartGroup) { | |
var _formatNumber = d3.format(",d"); | |
var _chart = dc.baseChart({}); | |
_chart.doRender = function() { | |
_chart.selectAll(".total-count").text(_formatNumber(_chart.dimension().size())); | |
_chart.selectAll(".filter-count").text(_formatNumber(_chart.group().value())); | |
return _chart; | |
}; | |
_chart.doRedraw = function(){ | |
return _chart.doRender(); | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.dataTable = function(parent, chartGroup) { | |
var LABEL_CSS_CLASS = "dc-table-label"; | |
var ROW_CSS_CLASS = "dc-table-row"; | |
var COLUMN_CSS_CLASS = "dc-table-column"; | |
var GROUP_CSS_CLASS = "dc-table-group"; | |
var _chart = dc.baseChart({}); | |
var _size = 25; | |
var _columns = []; | |
var _sortBy = function(d) { | |
return d; | |
}; | |
var _order = d3.ascending; | |
var _sort; | |
_chart.doRender = function() { | |
_chart.selectAll("tbody").remove(); | |
renderRows(renderGroups()); | |
return _chart; | |
}; | |
function renderGroups() { | |
var groups = _chart.root().selectAll("tbody") | |
.data(nestEntries(), function(d) { | |
return _chart.keyAccessor()(d); | |
}); | |
var rowGroup = groups | |
.enter() | |
.append("tbody"); | |
rowGroup | |
.append("tr") | |
.attr("class", GROUP_CSS_CLASS) | |
.append("td") | |
.attr("class", LABEL_CSS_CLASS) | |
.attr("colspan", _columns.length) | |
.html(function(d) { | |
return _chart.keyAccessor()(d); | |
}); | |
groups.exit().remove(); | |
return rowGroup; | |
} | |
function nestEntries() { | |
if (!_sort) | |
_sort = crossfilter.quicksort.by(_sortBy); | |
var entries = _chart.dimension().top(_size); | |
return d3.nest() | |
.key(_chart.group()) | |
.sortKeys(_order) | |
.sortValues(_order) | |
.entries(_sort(entries, 0, entries.length)); | |
} | |
function renderRows(groups) { | |
var rows = groups.order() | |
.selectAll("tr." + ROW_CSS_CLASS) | |
.data(function(d) { | |
return d.values; | |
}); | |
var rowEnter = rows.enter() | |
.append("tr") | |
.attr("class", ROW_CSS_CLASS); | |
for (var i = 0; i < _columns.length; ++i) { | |
var f = _columns[i]; | |
rowEnter.append("td") | |
.attr("class", COLUMN_CSS_CLASS + " _" + i) | |
.html(function(d) { | |
return f(d); | |
}); | |
} | |
rows.exit().remove(); | |
return rows; | |
} | |
_chart.doRedraw = function() { | |
return _chart.doRender(); | |
}; | |
_chart.size = function(s) { | |
if (!arguments.length) return _size; | |
_size = s; | |
return _chart; | |
}; | |
_chart.columns = function(_) { | |
if (!arguments.length) return _columns; | |
_columns = _; | |
return _chart; | |
}; | |
_chart.sortBy = function(_) { | |
if (!arguments.length) return _sortBy; | |
_sortBy = _; | |
return _chart; | |
}; | |
_chart.order = function(_) { | |
if (!arguments.length) return _order; | |
_order = _; | |
return _chart; | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.bubbleChart = function(parent, chartGroup) { | |
var _chart = dc.abstractBubbleChart(dc.coordinateGridChart({})); | |
var _elasticRadius = false; | |
_chart.transitionDuration(750); | |
var bubbleLocator = function(d) { | |
return "translate(" + (bubbleX(d)) + "," + (bubbleY(d)) + ")"; | |
}; | |
_chart.elasticRadius = function(_) { | |
if (!arguments.length) return _elasticRadius; | |
_elasticRadius = _; | |
return _chart; | |
}; | |
_chart.plotData = function() { | |
if (_elasticRadius) | |
_chart.r().domain([_chart.rMin(), _chart.rMax()]); | |
_chart.r().range([_chart.MIN_RADIUS, _chart.xAxisLength() * _chart.maxBubbleRelativeSize()]); | |
var bubbleG = _chart.chartBodyG().selectAll("g." + _chart.BUBBLE_NODE_CLASS) | |
.data(_chart.group().all()); | |
renderNodes(bubbleG); | |
updateNodes(bubbleG); | |
removeNodes(bubbleG); | |
_chart.fadeDeselectedArea(); | |
}; | |
function renderNodes(bubbleG) { | |
var bubbleGEnter = bubbleG.enter().append("g"); | |
bubbleGEnter | |
.attr("class", _chart.BUBBLE_NODE_CLASS) | |
.attr("transform", bubbleLocator) | |
.append("circle").attr("class", function(d, i) { | |
return _chart.BUBBLE_CLASS + " _" + i; | |
}) | |
.on("click", _chart.onClick) | |
.attr("fill", _chart.initBubbleColor) | |
.attr("r", 0); | |
dc.transition(bubbleG, _chart.transitionDuration()) | |
.attr("r", function(d) { | |
return _chart.bubbleR(d); | |
}) | |
.attr("opacity", function(d) { | |
return (_chart.bubbleR(d) > 0) ? 1 : 0; | |
}); | |
_chart.doRenderLabel(bubbleGEnter); | |
_chart.doRenderTitles(bubbleGEnter); | |
} | |
function updateNodes(bubbleG) { | |
dc.transition(bubbleG, _chart.transitionDuration()) | |
.attr("transform", bubbleLocator) | |
.selectAll("circle." + _chart.BUBBLE_CLASS) | |
.attr("fill", _chart.updateBubbleColor) | |
.attr("r", function(d) { | |
return _chart.bubbleR(d); | |
}) | |
.attr("opacity", function(d) { | |
return (_chart.bubbleR(d) > 0) ? 1 : 0; | |
}); | |
_chart.doUpdateLabels(bubbleG); | |
_chart.doUpdateTitles(bubbleG); | |
} | |
function removeNodes(bubbleG) { | |
bubbleG.exit().remove(); | |
} | |
function bubbleX(d) { | |
var x = _chart.x()(_chart.keyAccessor()(d)) + _chart.margins().left; | |
if (isNaN(x)) | |
x = 0; | |
return x; | |
} | |
function bubbleY(d) { | |
var y = _chart.margins().top + _chart.y()(_chart.valueAccessor()(d)); | |
if (isNaN(y)) | |
y = 0; | |
return y; | |
} | |
_chart.renderBrush = function(g) { | |
// override default x axis brush from parent chart | |
}; | |
_chart.redrawBrush = function(g) { | |
// override default x axis brush from parent chart | |
_chart.fadeDeselectedArea(); | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.compositeChart = function (parent, chartGroup) { | |
var SUB_CHART_CLASS = "sub"; | |
var _chart = dc.coordinateGridChart({}); | |
var _children = []; | |
_chart.transitionDuration(500); | |
dc.override(_chart, "generateG", function () { | |
var g = this._generateG(); | |
for (var i = 0; i < _children.length; ++i) { | |
var child = _children[i]; | |
generateChildG(child, i); | |
if (child.dimension() == null) child.dimension(_chart.dimension()); | |
if (child.group() == null) child.group(_chart.group()); | |
child.chartGroup(_chart.chartGroup()); | |
child.svg(_chart.svg()); | |
child.xUnits(_chart.xUnits()); | |
child.transitionDuration(_chart.transitionDuration()); | |
child.brushOn(_chart.brushOn()); | |
} | |
return g; | |
}); | |
function generateChildG(child, i) { | |
child.generateG(_chart.g()); | |
child.g().attr("class", SUB_CHART_CLASS + " _" + i); | |
} | |
_chart.plotData = function () { | |
for (var i = 0; i < _children.length; ++i) { | |
var child = _children[i]; | |
if (child.g() == null) { | |
generateChildG(child, i); | |
} | |
child.x(_chart.x()); | |
child.y(_chart.y()); | |
child.xAxis(_chart.xAxis()); | |
child.yAxis(_chart.yAxis()); | |
child.plotData(); | |
child.activateRenderlets(); | |
} | |
}; | |
_chart.fadeDeselectedArea = function () { | |
for (var i = 0; i < _children.length; ++i) { | |
var child = _children[i]; | |
child.brush(_chart.brush()); | |
child.fadeDeselectedArea(); | |
} | |
}; | |
_chart.compose = function (charts) { | |
_children = charts; | |
for (var i = 0; i < _children.length; ++i) { | |
var child = _children[i]; | |
child.height(_chart.height()); | |
child.width(_chart.width()); | |
child.margins(_chart.margins()); | |
} | |
return _chart; | |
}; | |
_chart.children = function () { | |
return _children; | |
}; | |
function getAllYAxisMinFromChildCharts() { | |
var allMins = []; | |
for (var i = 0; i < _children.length; ++i) { | |
allMins.push(_children[i].yAxisMin()); | |
} | |
return allMins; | |
} | |
_chart.yAxisMin = function () { | |
return d3.min(getAllYAxisMinFromChildCharts()); | |
}; | |
function getAllYAxisMaxFromChildCharts() { | |
var allMaxes = []; | |
for (var i = 0; i < _children.length; ++i) { | |
allMaxes.push(_children[i].yAxisMax()); | |
} | |
return allMaxes; | |
} | |
_chart.yAxisMax = function () { | |
return dc.utils.add(d3.max(getAllYAxisMaxFromChildCharts()), _chart.yAxisPadding()); | |
}; | |
function getAllXAxisMinFromChildCharts() { | |
var allMins = []; | |
for (var i = 0; i < _children.length; ++i) { | |
allMins.push(_children[i].xAxisMin()); | |
} | |
return allMins; | |
} | |
_chart.xAxisMin = function () { | |
return dc.utils.subtract(d3.min(getAllXAxisMinFromChildCharts()), _chart.xAxisPadding()); | |
}; | |
function getAllXAxisMaxFromChildCharts() { | |
var allMaxes = []; | |
for (var i = 0; i < _children.length; ++i) { | |
allMaxes.push(_children[i].xAxisMax()); | |
} | |
return allMaxes; | |
} | |
_chart.xAxisMax = function () { | |
return dc.utils.add(d3.max(getAllXAxisMaxFromChildCharts()), _chart.xAxisPadding()); | |
}; | |
_chart.legendables = function () { | |
var items = []; | |
for (var j = 0; j < _children.length; ++j) { | |
var childChart = _children[j]; | |
childChart.allGroups().forEach(function (g, i) { | |
items.push(dc.utils.createLegendable(childChart, g, i, childChart.getValueAccessorByIndex(i))); | |
}); | |
} | |
return items; | |
}; | |
_chart.legendHighlight = function (d) { | |
for (var j = 0; j < _children.length; ++j) { | |
var child = _children[j]; | |
child.legendHighlight(d); | |
} | |
}; | |
_chart.legendReset = function (d) { | |
for (var j = 0; j < _children.length; ++j) { | |
var child = _children[j]; | |
child.legendReset(d); | |
} | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.geoChoroplethChart = function (parent, chartGroup) { | |
var _chart = dc.colorChart(dc.baseChart({})); | |
_chart.colorAccessor(function (d, i) { | |
return d; | |
}); | |
var _geoPath = d3.geo.path(); | |
var _projectionFlag; | |
var _geoJsons = []; | |
_chart.doRender = function () { | |
_chart.resetSvg(); | |
for (var layerIndex = 0; layerIndex < _geoJsons.length; ++layerIndex) { | |
var states = _chart.svg().append("g") | |
.attr("class", "layer" + layerIndex); | |
var regionG = states.selectAll("g." + geoJson(layerIndex).name) | |
.data(geoJson(layerIndex).data) | |
.enter() | |
.append("g") | |
.attr("class", geoJson(layerIndex).name); | |
regionG | |
.append("path") | |
.attr("fill", "white") | |
.attr("d", _geoPath); | |
regionG.append("title"); | |
plotData(layerIndex); | |
} | |
_projectionFlag = false; | |
}; | |
function plotData(layerIndex) { | |
var maxValue = dc.utils.groupMax(_chart.group(), _chart.valueAccessor()); | |
var data = generateLayeredData(); | |
if (isDataLayer(layerIndex)) { | |
var regionG = renderRegionG(layerIndex); | |
renderPaths(regionG, layerIndex, data, maxValue); | |
renderTitle(regionG, layerIndex, data); | |
} | |
} | |
function generateLayeredData() { | |
var data = {}; | |
var groupAll = _chart.group().all(); | |
for (var i = 0; i < groupAll.length; ++i) { | |
data[_chart.keyAccessor()(groupAll[i])] = _chart.valueAccessor()(groupAll[i]); | |
} | |
return data; | |
} | |
function isDataLayer(layerIndex) { | |
return geoJson(layerIndex).keyAccessor; | |
} | |
function renderRegionG(layerIndex) { | |
var regionG = _chart.svg() | |
.selectAll(layerSelector(layerIndex)) | |
.classed("selected", function (d) { | |
return isSelected(layerIndex, d); | |
}) | |
.classed("deselected", function (d) { | |
return isDeselected(layerIndex, d); | |
}) | |
.attr("class", function (d) { | |
var layerNameClass = geoJson(layerIndex).name; | |
var regionClass = dc.utils.nameToId(geoJson(layerIndex).keyAccessor(d)); | |
var baseClasses = layerNameClass + " " + regionClass; | |
if (isSelected(layerIndex, d)) baseClasses += " selected"; | |
if (isDeselected(layerIndex, d)) baseClasses += " deselected"; | |
return baseClasses; | |
}); | |
return regionG; | |
} | |
function layerSelector(layerIndex) { | |
return "g.layer" + layerIndex + " g." + geoJson(layerIndex).name; | |
} | |
function isSelected(layerIndex, d) { | |
return _chart.hasFilter() && _chart.hasFilter(getKey(layerIndex, d)); | |
} | |
function isDeselected(layerIndex, d) { | |
return _chart.hasFilter() && !_chart.hasFilter(getKey(layerIndex, d)); | |
} | |
function getKey(layerIndex, d) { | |
return geoJson(layerIndex).keyAccessor(d); | |
} | |
function geoJson(index) { | |
return _geoJsons[index]; | |
} | |
function renderPaths(regionG, layerIndex, data, maxValue) { | |
var paths = regionG | |
.select("path") | |
.attr("fill", function (d) { | |
var currentFill = d3.select(this).attr("fill"); | |
if (currentFill) | |
return currentFill; | |
return "none"; | |
}) | |
.on("click", function (d) { | |
return _chart.onClick(d, layerIndex); | |
}); | |
dc.transition(paths, _chart.transitionDuration()).attr("fill", function (d, i) { | |
return _chart.getColor(data[geoJson(layerIndex).keyAccessor(d)], i); | |
}); | |
} | |
_chart.onClick = function (d, layerIndex) { | |
var selectedRegion = geoJson(layerIndex).keyAccessor(d); | |
dc.events.trigger(function () { | |
_chart.filter(selectedRegion); | |
dc.redrawAll(_chart.chartGroup()); | |
}); | |
}; | |
function renderTitle(regionG, layerIndex, data) { | |
if (_chart.renderTitle()) { | |
regionG.selectAll("title").text(function (d) { | |
var key = getKey(layerIndex, d); | |
var value = data[key]; | |
return _chart.title()({key: key, value: value}); | |
}); | |
} | |
} | |
_chart.doRedraw = function () { | |
for (var layerIndex = 0; layerIndex < _geoJsons.length; ++layerIndex) { | |
plotData(layerIndex); | |
if(_projectionFlag) { | |
_chart.svg().selectAll("g." + geoJson(layerIndex).name + " path").attr("d", _geoPath) | |
}; | |
} | |
_projectionFlag = false | |
}; | |
_chart.overlayGeoJson = function (json, name, keyAccessor) { | |
for (var i = 0; i < _geoJsons.length; ++i) { | |
if (_geoJsons[i].name == name) { | |
_geoJsons[i].data = json; | |
_geoJsons[i].keyAccessor = keyAccessor; | |
return _chart | |
} | |
} | |
_geoJsons.push({name: name, data: json, keyAccessor: keyAccessor}); | |
return _chart; | |
}; | |
_chart.projection = function (projection) { | |
_geoPath.projection(projection); | |
_projectionFlag = true; | |
return _chart; | |
}; | |
_chart.geoJsons = function () { | |
return _geoJsons; | |
}; | |
_chart.removeGeoJson = function (name) { | |
var geoJsons = []; | |
for (var i = 0; i < _geoJsons.length; ++i) { | |
var layer = _geoJsons[i]; | |
if (layer.name != name) { | |
geoJsons.push(layer); | |
} | |
} | |
_geoJsons = geoJsons; | |
return _chart; | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.bubbleOverlay = function(root, chartGroup) { | |
var BUBBLE_OVERLAY_CLASS = "bubble-overlay"; | |
var BUBBLE_NODE_CLASS = "node"; | |
var BUBBLE_CLASS = "bubble"; | |
var _chart = dc.abstractBubbleChart(dc.baseChart({})); | |
var _g; | |
var _points = []; | |
_chart.transitionDuration(750); | |
_chart.radiusValueAccessor(function(d) { | |
return d.value; | |
}); | |
_chart.point = function(name, x, y) { | |
_points.push({name: name, x: x, y: y}); | |
return _chart; | |
}; | |
_chart.doRender = function() { | |
_g = initOverlayG(); | |
_chart.r().range([_chart.MIN_RADIUS, _chart.width() * _chart.maxBubbleRelativeSize()]); | |
initializeBubbles(); | |
_chart.fadeDeselectedArea(); | |
return _chart; | |
}; | |
function initOverlayG() { | |
_g = _chart.select("g." + BUBBLE_OVERLAY_CLASS); | |
if (_g.empty()) | |
_g = _chart.svg().append("g").attr("class", BUBBLE_OVERLAY_CLASS); | |
return _g; | |
} | |
function initializeBubbles() { | |
var data = mapData(); | |
_points.forEach(function(point) { | |
var nodeG = getNodeG(point, data); | |
var circle = nodeG.select("circle." + BUBBLE_CLASS); | |
if (circle.empty()) | |
circle = nodeG.append("circle") | |
.attr("class", BUBBLE_CLASS) | |
.attr("r", 0) | |
.attr("fill", _chart.initBubbleColor) | |
.on("click", _chart.onClick); | |
dc.transition(circle, _chart.transitionDuration()) | |
.attr("r", function(d) { | |
return _chart.bubbleR(d); | |
}); | |
_chart.doRenderLabel(nodeG); | |
_chart.doRenderTitles(nodeG); | |
}); | |
} | |
function mapData() { | |
var data = {}; | |
_chart.group().all().forEach(function(datum) { | |
data[_chart.keyAccessor()(datum)] = datum; | |
}); | |
return data; | |
} | |
function getNodeG(point, data) { | |
var bubbleNodeClass = BUBBLE_NODE_CLASS + " " + dc.utils.nameToId(point.name); | |
var nodeG = _g.select("g." + dc.utils.nameToId(point.name)); | |
if (nodeG.empty()) { | |
nodeG = _g.append("g") | |
.attr("class", bubbleNodeClass) | |
.attr("transform", "translate(" + point.x + "," + point.y + ")"); | |
} | |
nodeG.datum(data[point.name]); | |
return nodeG; | |
} | |
_chart.doRedraw = function() { | |
updateBubbles(); | |
_chart.fadeDeselectedArea(); | |
return _chart; | |
}; | |
function updateBubbles() { | |
var data = mapData(); | |
_points.forEach(function(point) { | |
var nodeG = getNodeG(point, data); | |
var circle = nodeG.select("circle." + BUBBLE_CLASS); | |
dc.transition(circle, _chart.transitionDuration()) | |
.attr("r", function(d) { | |
return _chart.bubbleR(d); | |
}) | |
.attr("fill", _chart.updateBubbleColor); | |
_chart.doUpdateLabels(nodeG); | |
_chart.doUpdateTitles(nodeG); | |
}); | |
} | |
_chart.debug = function(flag) { | |
if(flag){ | |
var debugG = _chart.select("g." + dc.constants.DEBUG_GROUP_CLASS); | |
if(debugG.empty()) | |
debugG = _chart.svg() | |
.append("g") | |
.attr("class", dc.constants.DEBUG_GROUP_CLASS); | |
var debugText = debugG.append("text") | |
.attr("x", 10) | |
.attr("y", 20); | |
debugG | |
.append("rect") | |
.attr("width", _chart.width()) | |
.attr("height", _chart.height()) | |
.on("mousemove", function() { | |
var position = d3.mouse(debugG.node()); | |
var msg = position[0] + ", " + position[1]; | |
debugText.text(msg); | |
}); | |
}else{ | |
_chart.selectAll(".debug").remove(); | |
} | |
return _chart; | |
}; | |
_chart.anchor(root, chartGroup); | |
return _chart; | |
};dc.rowChart = function (parent, chartGroup) { | |
var _g; | |
var _labelOffsetX = 10; | |
var _labelOffsetY = 15; | |
var _gap = 5; | |
var _rowCssClass = "row"; | |
var _chart = dc.marginable(dc.colorChart(dc.baseChart({}))); | |
var _x; | |
var _elasticX; | |
var _xAxis = d3.svg.axis().orient("bottom"); | |
function calculateAxisScale() { | |
if (!_x || _elasticX) { | |
_x = d3.scale.linear().domain([0, d3.max(_chart.group().all(), _chart.valueAccessor())]) | |
.range([0, _chart.effectiveWidth()]); | |
_xAxis.scale(_x); | |
} | |
} | |
function drawAxis() { | |
var axisG = _g.select("g.axis"); | |
calculateAxisScale(); | |
if (axisG.empty()) | |
axisG = _g.append("g").attr("class", "axis") | |
.attr("transform", "translate(0, " + _chart.effectiveHeight() + ")"); | |
dc.transition(axisG, _chart.transitionDuration()) | |
.call(_xAxis); | |
} | |
_chart.doRender = function () { | |
_chart.resetSvg(); | |
_g = _chart.svg() | |
.append("g") | |
.attr("transform", "translate(" + _chart.margins().left + "," + _chart.margins().top + ")"); | |
drawAxis(); | |
drawGridLines(); | |
drawChart(); | |
return _chart; | |
}; | |
_chart.title(function (d) { | |
return _chart.keyAccessor()(d) + ": " + _chart.valueAccessor()(d); | |
}); | |
_chart.label(function (d) { | |
return _chart.keyAccessor()(d); | |
}); | |
_chart.x = function(x){ | |
if(!arguments.length) return _x; | |
_x = x; | |
return _chart; | |
}; | |
function drawGridLines() { | |
_g.selectAll("g.tick") | |
.select("line.grid-line") | |
.remove(); | |
_g.selectAll("g.tick") | |
.append("line") | |
.attr("class", "grid-line") | |
.attr("x1", 0) | |
.attr("y1", 0) | |
.attr("x2", 0) | |
.attr("y2", function (d) { | |
return -_chart.effectiveHeight(); | |
}); | |
} | |
function drawChart() { | |
drawAxis(); | |
drawGridLines(); | |
var rows = _g.selectAll("g." + _rowCssClass) | |
.data(_chart.group().all()); | |
createElements(rows); | |
removeElements(rows); | |
updateElements(rows); | |
} | |
function createElements(rows) { | |
var rowEnter = rows.enter() | |
.append("g") | |
.attr("class", function (d, i) { | |
return _rowCssClass + " _" + i; | |
}); | |
rowEnter.append("rect").attr("width", 0); | |
createLabels(rowEnter); | |
updateLabels(rows); | |
} | |
function removeElements(rows) { | |
rows.exit().remove(); | |
} | |
function updateElements(rows) { | |
var height = rowHeight(); | |
rows = rows.attr("transform",function (d, i) { | |
return "translate(0," + ((i + 1) * _gap + i * height) + ")"; | |
}).select("rect") | |
.attr("height", height) | |
.attr("fill", _chart.getColor) | |
.on("click", onClick) | |
.classed("deselected", function (d) { | |
return (_chart.hasFilter()) ? !_chart.isSelectedRow(d) : false; | |
}) | |
.classed("selected", function (d) { | |
return (_chart.hasFilter()) ? _chart.isSelectedRow(d) : false; | |
}); | |
dc.transition(rows, _chart.transitionDuration()) | |
.attr("width", function (d) { | |
return _x(_chart.valueAccessor()(d)); | |
}); | |
createTitles(rows); | |
} | |
function createTitles(rows) { | |
if (_chart.renderTitle()) { | |
rows.selectAll("title").remove(); | |
rows.append("title").text(function (d) { | |
return _chart.title()(d); | |
}); | |
} | |
} | |
function createLabels(rowEnter) { | |
if (_chart.renderLabel()) { | |
rowEnter.append("text") | |
.on("click", onClick); | |
} | |
} | |
function updateLabels(rows) { | |
if (_chart.renderLabel()) { | |
rows.select("text") | |
.attr("x", _labelOffsetX) | |
.attr("y", _labelOffsetY) | |
.attr("class", function (d, i) { | |
return _rowCssClass + " _" + i; | |
}) | |
.text(function (d) { | |
return _chart.label()(d); | |
}); | |
} | |
} | |
function numberOfRows() { | |
return _chart.group().all().length; | |
} | |
function rowHeight() { | |
var n = numberOfRows(); | |
return (_chart.effectiveHeight() - (n + 1) * _gap) / n; | |
} | |
function onClick(d) { | |
_chart.onClick(d); | |
} | |
_chart.doRedraw = function () { | |
drawChart(); | |
return _chart; | |
}; | |
_chart.xAxis = function () { | |
return _xAxis; | |
}; | |
_chart.gap = function (g) { | |
if (!arguments.length) return _gap; | |
_gap = g; | |
return _chart; | |
}; | |
_chart.elasticX = function (_) { | |
if (!arguments.length) return _elasticX; | |
_elasticX = _; | |
return _chart; | |
}; | |
_chart.labelOffsetX = function (o) { | |
if (!arguments.length) return _labelOffsetX; | |
_labelOffsetX = o; | |
return _chart; | |
}; | |
_chart.labelOffsetY = function (o) { | |
if (!arguments.length) return _labelOffsetY; | |
_labelOffsetY = o; | |
return _chart; | |
}; | |
_chart.isSelectedRow = function (d) { | |
return _chart.hasFilter(_chart.keyAccessor()(d)); | |
}; | |
return _chart.anchor(parent, chartGroup); | |
}; | |
dc.legend = function () { | |
var LABEL_GAP = 2; | |
var _legend = {}, | |
_parent, | |
_x = 0, | |
_y = 0, | |
_itemHeight = 12, | |
_gap = 5; | |
var _g; | |
_legend.parent = function (p) { | |
if (!arguments.length) return _parent; | |
_parent = p; | |
return _legend; | |
}; | |
_legend.render = function () { | |
_g = _parent.svg().append("g") | |
.attr("class", "dc-legend") | |
.attr("transform", "translate(" + _x + "," + _y + ")"); | |
var itemEnter = _g.selectAll('g.dc-legend-item') | |
.data(_parent.legendables()) | |
.enter() | |
.append("g") | |
.attr("class", "dc-legend-item") | |
.attr("transform", function (d, i) { | |
return "translate(0," + i * legendItemHeight() + ")"; | |
}) | |
.on("mouseover", function(d){ | |
_parent.legendHighlight(d); | |
}) | |
.on("mouseout", function (d) { | |
_parent.legendReset(d); | |
}); | |
itemEnter | |
.append("rect") | |
.attr("width", _itemHeight) | |
.attr("height", _itemHeight) | |
.attr("fill", function(d){return d.color;}); | |
itemEnter.append("text") | |
.text(function(d){return d.name;}) | |
.attr("x", _itemHeight + LABEL_GAP) | |
.attr("y", function(){return _itemHeight / 2 + (this.clientHeight?this.clientHeight:13) / 2 - 2}); | |
}; | |
function legendItemHeight() { | |
return _gap + _itemHeight; | |
} | |
_legend.x = function (x) { | |
if (!arguments.length) return _x; | |
_x = x; | |
return _legend; | |
}; | |
_legend.y = function (y) { | |
if (!arguments.length) return _y; | |
_y = y; | |
return _legend; | |
}; | |
_legend.gap = function (gap) { | |
if (!arguments.length) return _gap; | |
_gap = gap; | |
return _legend; | |
}; | |
_legend.itemHeight = function (h) { | |
if (!arguments.length) return _itemHeight; | |
_itemHeight = h; | |
return _legend; | |
}; | |
return _legend; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang='en'> | |
<head> | |
<meta charset='utf-8'> | |
<title>dc.js Experiment</title> | |
<script src='d3.v3.js' type='text/javascript'></script> | |
<script src='crossfilter.js' type='text/javascript'></script> | |
<script src='dc.js' type='text/javascript'></script> | |
<script src='jquery-1.9.1.min.js' type='text/javascript'></script> | |
<script src='bootstrap.min.js' type='text/javascript'></script> | |
<link href='bootstrap.min.css' rel='stylesheet' type='text/css'> | |
<link href='dc.css' rel='stylesheet' type='text/css'> | |
<style type="text/css"></style> | |
<style> | |
h4 span { | |
font-size:14px; | |
font-weight:normal; | |
} | |
h2 { | |
float: right; | |
} | |
h2 span { | |
font-size:14px; | |
font-weight:normal; | |
} | |
</style> | |
</head> | |
<body> | |
<div class='container' style='font: 12px sans-serif;'> | |
<div class="dc-data-count" style="float: left;"> | |
<h2>New Zealand Earthquakes | |
<span> | |
<span class="filter-count"></span> | |
selected out of | |
<span class="total-count"></span> | |
records | | |
<a href="javascript:dc.filterAll(); dc.renderAll();">Reset All</a> | |
</span> | |
</h2> | |
</div> | |
<div class='row'> | |
<div class='span6' id='dc-magnitude-chart'> | |
<h4> | |
Number of Events by Magnitude | |
<span> | |
<a class="reset" | |
href="javascript:magnitudeChart.filterAll();dc.redrawAll();" | |
style="display: none;"> | |
reset | |
</a> | |
</span> | |
</h4> | |
</div> | |
<div class='span6' id='dc-depth-chart'> | |
<h4> | |
Events by Depth (km) | |
<span> | |
<a class="reset" | |
href="javascript:depthChart.filterAll();dc.redrawAll();" | |
style="display: none;"> | |
reset | |
</a> | |
</span> | |
</h4> | |
</div> | |
</div> | |
<div class='row'> | |
<div class='span12' id='dc-time-chart'> | |
<h4> | |
Events per hour | |
<span> | |
<a class="reset" | |
href="javascript:timeChart.filterAll();dc.redrawAll();" | |
style="display: none;"> | |
reset | |
</a> | |
</span> | |
</h4> | |
</div> | |
</div> | |
<div class='row'> | |
<div class='span4' id='dc-dayweek-chart'> | |
<h4> | |
Day of the Week | |
<span> | |
<a class="reset" | |
href="javascript:dayOfWeekChart.filterAll();dc.redrawAll();" | |
style="display: none;"> | |
reset | |
</a> | |
</span> | |
</h4> | |
<div class="clearfix"></div> | |
</div> | |
<div class='span4' id='dc-island-chart'> | |
<h4> | |
North or South Island | |
<span> | |
<a class="reset" | |
href="javascript:islandChart.filterAll();dc.redrawAll();" | |
style="display: none;"> | |
reset | |
</a> | |
</span> | |
</h4> | |
</div> | |
<div class='span4' id='blank2'> | |
<h4>Blank 2</h4> | |
</div> | |
</div> | |
<div class='row'> | |
<div class='span12'> | |
<table class='table table-hover' id='dc-table-graph'> | |
<thead> | |
<tr class='header'> | |
<th>DTG</th> | |
<th>Lat</th> | |
<th>Long</th> | |
<th>Depth</th> | |
<th>Magnitude</th> | |
<th>Google Map</th> | |
<th>OSM Map</th> | |
</tr> | |
</thead> | |
</table> | |
</div> | |
</div> | |
</div> | |
<script type="text/javascript"> | |
// Create the dc.js chart objects & link to div | |
var dataTable = dc.dataTable("#dc-table-graph"); | |
var magnitudeChart = dc.barChart("#dc-magnitude-chart"); | |
var depthChart = dc.barChart("#dc-depth-chart"); | |
var dayOfWeekChart = dc.rowChart("#dc-dayweek-chart"); | |
var islandChart = dc.pieChart("#dc-island-chart"); | |
var timeChart = dc.lineChart("#dc-time-chart"); | |
// load data from a csv file | |
d3.csv("quake-later3.csv", function (data) { | |
// format our data | |
var dtgFormat = d3.time.format("%Y-%m-%dT%H:%M:%S"); | |
var dtgFormat2 = d3.time.format("%a %e %b %H:%M"); | |
data.forEach(function(d) { | |
d.dtg1 = d.origintime.substr(0,10) + " " + d.origintime.substr(11,8); | |
d.dtg = dtgFormat.parse(d.origintime.substr(0,19)); | |
d.lat = +d.latitude; | |
d.long = +d.longitude; | |
d.mag = d3.round(+d.magnitude,1); | |
d.depth = d3.round(+d.depth,0); | |
}); | |
// Run the data through crossfilter and load our 'facts' | |
var facts = crossfilter(data); | |
var all = facts.groupAll(); | |
// for Magnitude | |
var magValue = facts.dimension(function (d) { | |
return d.mag; // add the magnitude dimension | |
}); | |
var magValueGroupSum = magValue.group() | |
.reduceSum(function(d) { return d.mag; }); // sums | |
var magValueGroupCount = magValue.group() | |
.reduceCount(function(d) { return d.mag; }) // counts | |
// for Depth | |
var depthValue = facts.dimension(function (d) { | |
return d.depth; | |
}); | |
var depthValueGroup = depthValue.group(); | |
// time chart | |
var volumeByHour = facts.dimension(function(d) { | |
return d3.time.hour(d.dtg); | |
}); | |
var volumeByHourGroup = volumeByHour.group() | |
.reduceCount(function(d) { return d.dtg; }); | |
// row chart Day of Week | |
var dayOfWeek = facts.dimension(function (d) { | |
var day = d.dtg.getDay(); | |
switch (day) { | |
case 0: | |
return "0.Sun"; | |
case 1: | |
return "1.Mon"; | |
case 2: | |
return "2.Tue"; | |
case 3: | |
return "3.Wed"; | |
case 4: | |
return "4.Thu"; | |
case 5: | |
return "5.Fri"; | |
case 6: | |
return "6.Sat"; | |
} | |
}); | |
var dayOfWeekGroup = dayOfWeek.group(); | |
// Pie Chart | |
var islands = facts.dimension(function (d) { | |
if (d.lat <= -40.555907 && d.long <= 174.590607) | |
return "South"; | |
else | |
return "North"; | |
}); | |
var islandsGroup = islands.group(); | |
// Create datatable dimension | |
var timeDimension = facts.dimension(function (d) { | |
return d.dtg; | |
}); | |
// Setup the charts | |
// count all the facts | |
dc.dataCount(".dc-data-count") | |
.dimension(facts) | |
.group(all); | |
// Magnitide Bar Graph Counted | |
magnitudeChart.width(480) | |
.height(150) | |
.margins({top: 10, right: 10, bottom: 20, left: 40}) | |
.dimension(magValue) | |
.group(magValueGroupCount) | |
.transitionDuration(500) | |
.centerBar(true) | |
.gap(65) // 65 = norm | |
// .filter([3, 5]) | |
.x(d3.scale.linear().domain([0.5, 7.5])) | |
.elasticY(true) | |
.xAxis().tickFormat(); | |
// Depth bar graph | |
depthChart.width(480) | |
.height(150) | |
.margins({top: 10, right: 10, bottom: 20, left: 40}) | |
.dimension(depthValue) | |
.group(depthValueGroup) | |
.transitionDuration(500) | |
.centerBar(true) | |
.gap(1) | |
.x(d3.scale.linear().domain([0, 100])) | |
.elasticY(true) | |
.xAxis().tickFormat(function(v) {return v;}); | |
// time graph | |
timeChart.width(960) | |
.height(150) | |
.transitionDuration(500) | |
// .mouseZoomable(true) | |
.margins({top: 10, right: 10, bottom: 20, left: 40}) | |
.dimension(volumeByHour) | |
.group(volumeByHourGroup) | |
// .brushOn(false) // added for title | |
.title(function(d){ | |
return dtgFormat2(d.data.key) | |
+ "\nNumber of Events: " + d.data.value; | |
}) | |
.elasticY(true) | |
.x(d3.time.scale().domain(d3.extent(data, function(d) { return d.dtg; }))) | |
.xAxis(); | |
// row chart day of week | |
dayOfWeekChart.width(300) | |
.height(220) | |
.margins({top: 5, left: 10, right: 10, bottom: 20}) | |
.dimension(dayOfWeek) | |
.group(dayOfWeekGroup) | |
.colors(d3.scale.category10()) | |
.label(function (d){ | |
return d.key.split(".")[1]; | |
}) | |
.title(function(d){return d.value;}) | |
.elasticX(true) | |
.xAxis().ticks(4); | |
// islands pie chart | |
islandChart.width(250) | |
.height(220) | |
.radius(100) | |
.innerRadius(30) | |
.dimension(islands) | |
.title(function(d){return d.value;}) | |
.group(islandsGroup); | |
// Table of earthquake data | |
dataTable.width(960).height(800) | |
.dimension(timeDimension) | |
.group(function(d) { return "Earthquake Table" | |
}) | |
.size(10) | |
.columns([ | |
function(d) { return d.dtg1; }, | |
function(d) { return d.lat; }, | |
function(d) { return d.long; }, | |
function(d) { return d.depth; }, | |
function(d) { return d.mag; }, | |
function(d) { return '<a href=\"http://maps.google.com/maps?z=12&t=m&q=loc:' + d.lat + '+' + d.long +"\" target=\"_blank\">Google Map</a>"}, | |
function(d) { return '<a href=\"http://www.openstreetmap.org/?mlat=' + d.lat + '&mlon=' + d.long +'&zoom=12'+ "\" target=\"_blank\"> OSM Map</a>"} | |
]) | |
.sortBy(function(d){ return d.dtg; }) | |
.order(d3.ascending); | |
// Render the Charts | |
dc.renderAll(); | |
}); | |
</script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license | |
//@ sourceMappingURL=jquery.min.map | |
*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; | |
return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) | |
}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.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(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,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"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window); |
We can make this file beautiful and searchable if this error is corrected: It looks like row 1334 should actually have 14 columns, instead of 12 in line 1333.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FID,publicid,origintime,longitude,latitude,depth,magnitude,magnitudetype,status,phases,type,agency,updatetime,origin_geom | |
quake.2013p618454,2013p618454,2013-08-17T19:52:50.074,174.1242,-41.5396,24.5703,1.7345,M,automatic,17,,WEL(GNS_Primary),2013-08-17T19:54:11.27,POINT (174.12425 -41.539614) | |
quake.2013p618440,2013p618440,2013-08-17T19:45:25.076,175.9561,-38.8725,26.3281,2.6901,M,automatic,13,,WEL(GNS_Primary),2013-08-17T19:48:15.374,POINT (175.95611 -38.872468) | |
quake.2013p618439,2013p618439,2013-08-17T19:44:28.998,174.3117,-41.8992,27.0312,4.6968,M,automatic,130,,WEL(GNS_Primary),2013-08-17T19:48:39.064,POINT (174.31173 -41.899212) | |
quake.2013p618432,2013p618432,2013-08-17T19:40:45.348,174.02,-41.7495,5.9961,1.8642,M,automatic,11,,WEL(GNS_Primary),2013-08-17T19:42:33.279,POINT (174.02 -41.749481) | |
quake.2013p618429,2013p618429,2013-08-17T19:39:16.665,174.0876,-41.7008,5.9375,2.1629,M,automatic,19,,WEL(GNS_Primary),2013-08-17T19:41:32.969,POINT (174.08765 -41.700788) | |
quake.2013p618424,2013p618424,2013-08-17T19:36:38.068,174.0682,-41.7371,5.0586,2.0408,M,automatic,11,,WEL(GNS_Primary),2013-08-17T19:38:32.797,POINT (174.06825 -41.737132) | |
quake.2013p618391,2013p618391,2013-08-17T19:18:45.724,173.3502,-41.372,39.6875,2.7565,M,automatic,13,,WEL(GNS_Primary),2013-08-17T19:22:01.731,POINT (173.35015 -41.372038) | |
quake.2013p618387,2013p618387,2013-08-17T19:16:55.737,174.0623,-41.7511,5.6445,2.4531,M,automatic,26,,WEL(GNS_Primary),2013-08-17T19:19:14.581,POINT (174.06226 -41.751138) | |
quake.2013p618382,2013p618382,2013-08-17T19:15:05.884,174.3391,-41.7557,43.2031,2.1871,M,automatic,12,,WEL(GNS_Primary),2013-08-17T19:17:23.575,POINT (174.33909 -41.755714) | |
quake.2013p618373,2013p618373,2013-08-17T19:09:38.454,174.2726,-41.6881,7.6367,3.1336,M,automatic,59,,WEL(GNS_Primary),2013-08-17T19:13:30.043,POINT (174.27258 -41.688075) | |
quake.2013p618367,2013p618367,2013-08-17T19:05:55.324,174.1194,-41.7463,19.4141,2.7113,M,automatic,41,,WEL(GNS_Primary),2013-08-17T19:08:38.494,POINT (174.11941 -41.746349) | |
quake.2013p618362,2013p618362,2013-08-17T19:03:45.107,174.1238,-41.6966,7.4023,2.4168,M,automatic,29,,WEL(GNS_Primary),2013-08-17T19:07:14.16,POINT (174.1238 -41.696636) | |
quake.2013p618352,2013p618352,2013-08-17T18:59:05.698,174.1796,-41.6795,5.0586,2.4466,M,automatic,30,,WEL(GNS_Primary),2013-08-17T19:02:13.08,POINT (174.17965 -41.679507) | |
quake.2013p618344,2013p618344,2013-08-17T18:54:06.179,174.3466,-41.6204,5.1172,2.7889,M,automatic,18,,WEL(GNS_Primary),2013-08-17T18:56:39.055,POINT (174.34662 -41.620394) | |
quake.2013p618341,2013p618341,2013-08-17T18:52:31.189,174.146,-41.7546,14.0234,3.7814,M,automatic,97,,WEL(GNS_Primary),2013-08-17T19:00:31.91,POINT (174.14599 -41.754637) | |
quake.2013p618306,2013p618306,2013-08-17T18:33:30.502,174.2695,-41.6515,6.5234,2.742,M,automatic,42,,WEL(GNS_Primary),2013-08-17T18:36:16.928,POINT (174.26951 -41.651492) | |
quake.2013p618299,2013p618299,2013-08-17T18:29:58.478,174.0588,-41.7688,14.4922,3.157,M,automatic,60,,WEL(GNS_Primary),2013-08-17T18:36:22.686,POINT (174.05882 -41.768764) | |
quake.2013p618281,2013p618281,2013-08-17T18:20:20.85,174.1213,-41.6978,5.0586,2.4599,M,automatic,17,,WEL(GNS_Primary),2013-08-17T18:22:38.929,POINT (174.12131 -41.697814) | |
quake.2013p618267,2013p618267,2013-08-17T18:13:16.722,174.3044,-41.6819,13.4961,2.7218,M,automatic,52,,WEL(GNS_Primary),2013-08-17T18:16:46.436,POINT (174.30438 -41.681919) | |
quake.2013p618265,2013p618265,2013-08-17T18:11:36.541,174.3148,-41.6482,5.2344,2.3351,M,automatic,13,,WEL(GNS_Primary),2013-08-17T18:15:01.428,POINT (174.31475 -41.648234) | |
quake.2013p618255,2013p618255,2013-08-17T18:06:20.225,174.0651,-41.712,5.0586,2.4174,M,automatic,23,,WEL(GNS_Primary),2013-08-17T18:08:27.554,POINT (174.0651 -41.712013) | |
quake.2013p618251,2013p618251,2013-08-17T18:04:26.377,174.2735,-41.6506,5.0586,2.4945,M,automatic,33,,WEL(GNS_Primary),2013-08-17T18:08:03.617,POINT (174.2735 -41.650567) | |
quake.2013p618233,2013p618233,2013-08-17T17:54:42.529,174.2449,-41.6355,5.0586,2.5431,M,automatic,39,,WEL(GNS_Primary),2013-08-17T17:58:13.944,POINT (174.24486 -41.635545) | |
quake.2013p618228,2013p618228,2013-08-17T17:52:15.396,174.2562,-41.6371,11.8555,2.6045,M,automatic,34,,WEL(GNS_Primary),2013-08-17T17:54:32.487,POINT (174.2562 -41.637129) | |
quake.2013p618214,2013p618214,2013-08-17T17:44:41.781,174.3687,-39.4119,151.7188,2.5669,M,automatic,16,,WEL(GNS_Primary),2013-08-17T17:48:06.985,POINT (174.36867 -39.411922) | |
quake.2013p618212,2013p618212,2013-08-17T17:43:49.65,174.0118,-41.6967,5.0586,2.0811,M,automatic,11,,WEL(GNS_Primary),2013-08-17T17:46:44.319,POINT (174.01181 -41.696684) | |
quake.2013p618209,2013p618209,2013-08-17T17:41:50.093,176.0921,-37.8206,207.0312,2.7475,M,automatic,45,,WEL(GNS_Primary),2013-08-17T17:45:24.277,POINT (176.09208 -37.820565) | |
quake.2013p618204,2013p618204,2013-08-17T17:39:34.524,174.2257,-41.5726,12.8516,2.4065,M,automatic,24,,WEL(GNS_Primary),2013-08-17T17:41:51.934,POINT (174.22567 -41.572628) | |
quake.2013p618192,2013p618192,2013-08-17T17:32:49.654,174.0037,-41.7755,6.7578,2.6557,M,automatic,35,,WEL(GNS_Primary),2013-08-17T17:36:11.823,POINT (174.00367 -41.775488) | |
quake.2013p618186,2013p618186,2013-08-17T17:29:57.879,177.1106,-37.9963,51.6406,2.0317,M,automatic,20,,WEL(GNS_Primary),2013-08-17T17:32:34.126,POINT (177.11063 -37.996306) | |
quake.2013p618184,2013p618184,2013-08-17T17:28:50.797,173.9714,-41.6532,23.5156,2.0981,M,automatic,17,,WEL(GNS_Primary),2013-08-17T17:31:01.905,POINT (173.97135 -41.653158) | |
quake.2013p618175,2013p618175,2013-08-17T17:24:00.363,174.257,-41.6736,7.6953,2.2162,M,automatic,22,,WEL(GNS_Primary),2013-08-17T17:26:26.259,POINT (174.25696 -41.673645) | |
quake.2013p618159,2013p618159,2013-08-17T17:15:13.251,174.4159,-41.5526,9.9805,2.2889,M,automatic,31,,WEL(GNS_Primary),2013-08-17T17:19:08.472,POINT (174.4159 -41.552576) | |
quake.2013p618155,2013p618155,2013-08-17T17:13:12.025,174.1403,-41.6796,7.9883,2.3214,M,automatic,28,,WEL(GNS_Primary),2013-08-17T17:16:42.453,POINT (174.14026 -41.679601) | |
quake.2013p618151,2013p618151,2013-08-17T17:10:58.616,174.1171,-41.6639,13.3789,2.5522,M,automatic,41,,WEL(GNS_Primary),2013-08-17T17:13:56.953,POINT (174.11714 -41.663907) | |
quake.2013p618137,2013p618137,2013-08-17T17:03:42.909,174.1024,-41.695,5.1172,2.3448,M,automatic,20,,WEL(GNS_Primary),2013-08-17T17:06:37.805,POINT (174.10243 -41.694965) | |
quake.2013p618135,2013p618135,2013-08-17T17:02:39.761,174.1044,-41.6873,11.5039,2.5223,M,automatic,36,,WEL(GNS_Primary),2013-08-17T17:07:18.481,POINT (174.10436 -41.687306) | |
quake.2013p618119,2013p618119,2013-08-17T16:53:49.994,174.2681,-41.6663,5.0586,2.5186,M,automatic,30,,WEL(GNS_Primary),2013-08-17T16:56:49.818,POINT (174.26809 -41.666256) | |
quake.2013p618116,2013p618116,2013-08-17T16:52:35.997,174.2653,-41.638,5.1172,2.3547,M,automatic,23,,WEL(GNS_Primary),2013-08-17T16:56:23.372,POINT (174.26533 -41.638023) | |
quake.2013p618107,2013p618107,2013-08-17T16:48:36.28,174.2095,-41.6089,10.9766,3.3966,M,automatic,46,,WEL(GNS_Primary),2013-08-17T16:54:57.859,POINT (174.20949 -41.608855) | |
quake.2013p618098,2013p618098,2013-08-17T16:42:52.635,173.7294,-41.7787,42.0312,1.9488,M,automatic,10,,WEL(GNS_Primary),2013-08-17T16:44:35.204,POINT (173.72943 -41.778708) | |
quake.2013p618088,2013p618088,2013-08-17T16:38:08.702,174.1014,-41.6916,5.1172,2.3239,M,automatic,21,,WEL(GNS_Primary),2013-08-17T16:40:25.627,POINT (174.10139 -41.691598) | |
quake.2013p618078,2013p618078,2013-08-17T16:32:22.853,174.261,-41.636,5.0586,2.705,M,automatic,40,,WEL(GNS_Primary),2013-08-17T16:38:11.745,POINT (174.261 -41.636019) | |
quake.2013p618069,2013p618069,2013-08-17T16:27:09.459,174.0959,-41.6868,8.0469,1.8837,M,automatic,14,,WEL(GNS_Primary),2013-08-17T16:30:09.423,POINT (174.09593 -41.68685) | |
quake.2013p618032,2013p618032,2013-08-17T16:07:52.423,174.1024,-41.731,20.0586,5.0437,M,reviewed,49,,WEL(GNS_Primary),2013-08-17T16:23:31.115,POINT (174.1024 -41.731043) | |
quake.2013p618016,2013p618016,2013-08-17T15:59:10.264,174.0703,-41.7234,5.0586,2.2417,M,automatic,17,,WEL(GNS_Primary),2013-08-17T16:01:19.349,POINT (174.07032 -41.723428) | |
quake.2013p618007,2013p618007,2013-08-17T15:54:15.213,174.4115,-41.5512,5.0586,2.906,M,automatic,53,,WEL(GNS_Primary),2013-08-17T15:57:51.979,POINT (174.41148 -41.551195) | |
quake.2013p618005,2013p618005,2013-08-17T15:53:35.351,176.2573,-40.2793,12.9688,2.0347,M,automatic,12,,WEL(GNS_Primary),2013-08-17T15:56:30.644,POINT (176.25726 -40.279332) | |
quake.2013p618001,2013p618001,2013-08-17T15:51:52.687,174.0538,-41.7302,5.8203,2.6276,M,automatic,18,,WEL(GNS_Primary),2013-08-17T15:55:29.598,POINT (174.05384 -41.730244) | |
quake.2013p618000,2013p618000,2013-08-17T15:50:38.208,178.5001,-36.5646,239.375,3.6157,M,automatic,48,,WEL(GNS_Primary),2013-08-17T15:54:45.489,POINT (178.50014 -36.564568) | |
quake.2013p617998,2013p617998,2013-08-17T15:49:32.834,174.2573,-41.682,5.8203,2.1655,M,automatic,21,,WEL(GNS_Primary),2013-08-17T15:53:26.275,POINT (174.25727 -41.681995) | |
quake.2013p617991,2013p617991,2013-08-17T15:46:19.733,174.312,-41.6044,7.2266,2.3079,M,automatic,26,,WEL(GNS_Primary),2013-08-17T15:48:56.245,POINT (174.31196 -41.604361) | |
quake.2013p617985,2013p617985,2013-08-17T15:42:38.752,174.238,-41.5626,7.5781,2.0492,M,automatic,11,,WEL(GNS_Primary),2013-08-17T15:45:41.199,POINT (174.23795 -41.562563) | |
quake.2013p617981,2013p617981,2013-08-17T15:40:28.523,174.0558,-41.7274,26.3281,2.4108,M,automatic,22,,WEL(GNS_Primary),2013-08-17T15:42:39.909,POINT (174.05582 -41.727382) | |
quake.2013p617979,2013p617979,2013-08-17T15:39:20.127,174.2173,-41.743,50.4688,2.1297,M,automatic,13,,WEL(GNS_Primary),2013-08-17T15:41:19.676,POINT (174.2173 -41.742965) | |
quake.2013p617976,2013p617976,2013-08-17T15:38:02.22,174.28,-41.6226,11.2109,2.2958,M,automatic,22,,WEL(GNS_Primary),2013-08-17T15:40:30.478,POINT (174.27995 -41.622604) | |
quake.2013p617950,2013p617950,2013-08-17T15:24:10.695,174.4114,-41.5356,10.0391,1.9822,M,automatic,23,,WEL(GNS_Primary),2013-08-17T15:26:01.302,POINT (174.41145 -41.535555) | |
quake.2013p617946,2013p617946,2013-08-17T15:21:54.538,174.2996,-41.6674,5.1172,2.2513,M,automatic,16,,WEL(GNS_Primary),2013-08-17T15:23:57.805,POINT (174.29958 -41.667389) | |
quake.2013p617935,2013p617935,2013-08-17T15:16:11.324,174.2706,-41.78,5.1172,3.9589,M,automatic,97,,WEL(GNS_Primary),2013-08-17T15:23:27.496,POINT (174.27056 -41.779978) | |
quake.2013p617922,2013p617922,2013-08-17T15:09:12.466,174.2473,-41.6867,5.1172,2.3737,M,automatic,21,,WEL(GNS_Primary),2013-08-17T15:11:36.301,POINT (174.2473 -41.686707) | |
quake.2013p617919,2013p617919,2013-08-17T15:07:18.171,174.1251,-41.6981,7.2266,2.4831,M,automatic,28,,WEL(GNS_Primary),2013-08-17T15:09:27.86,POINT (174.12512 -41.698134) | |
quake.2013p617898,2013p617898,2013-08-17T14:56:22.605,174.4363,-41.8741,5.1172,3.8384,M,automatic,81,,WEL(GNS_Primary),2013-08-17T15:00:09.638,POINT (174.43626 -41.874082) | |
quake.2013p617895,2013p617895,2013-08-17T14:54:41.953,174.1919,-41.6646,6.6406,1.9223,M,automatic,15,,WEL(GNS_Primary),2013-08-17T14:56:32.9,POINT (174.19191 -41.664644) | |
quake.2013p617889,2013p617889,2013-08-17T14:51:37.053,174.5396,-41.5552,8.8672,2.0727,M,automatic,16,,WEL(GNS_Primary),2013-08-17T14:53:30.111,POINT (174.53959 -41.555173) | |
quake.2013p617878,2013p617878,2013-08-17T14:45:24.557,173.9985,-41.6775,5.0586,2.4505,M,automatic,34,,WEL(GNS_Primary),2013-08-17T14:47:36.79,POINT (173.99851 -41.677523) | |
quake.2013p617874,2013p617874,2013-08-17T14:43:34.09,174.0787,-41.7293,10.5078,2.5445,M,automatic,37,,WEL(GNS_Primary),2013-08-17T14:47:30.789,POINT (174.07871 -41.729305) | |
quake.2013p617869,2013p617869,2013-08-17T14:40:39.343,174.1102,-41.6739,37.1094,2.8228,M,automatic,39,,WEL(GNS_Primary),2013-08-17T14:44:13.728,POINT (174.11023 -41.673923) | |
quake.2013p617859,2013p617859,2013-08-17T14:35:32.893,174.1642,-41.757,5.0586,2.0103,M,automatic,10,,WEL(GNS_Primary),2013-08-17T14:37:20.269,POINT (174.16418 -41.757047) | |
quake.2013p617851,2013p617851,2013-08-17T14:31:29.132,174.222,-41.639,10.332,2.4075,M,automatic,32,,WEL(GNS_Primary),2013-08-17T14:35:16.546,POINT (174.22197 -41.639043) | |
quake.2013p617844,2013p617844,2013-08-17T14:27:40.975,174.1276,-41.6813,8.3398,2.2885,M,automatic,23,,WEL(GNS_Primary),2013-08-17T14:29:55.276,POINT (174.12765 -41.681316) | |
quake.2013p617835,2013p617835,2013-08-17T14:22:43.02,174.0187,-41.7378,5.9961,2.5164,M,automatic,36,,WEL(GNS_Primary),2013-08-17T14:25:27.9,POINT (174.01869 -41.737763) | |
quake.2013p617833,2013p617833,2013-08-17T14:21:29.967,174.0734,-41.5093,8.9844,2.297,M,automatic,19,,WEL(GNS_Primary),2013-08-17T14:25:04.518,POINT (174.07335 -41.509335) | |
quake.2013p617823,2013p617823,2013-08-17T14:16:29.056,174.0733,-41.7955,13.9062,3.6255,M,automatic,81,,WEL(GNS_Primary),2013-08-17T14:21:31.431,POINT (174.07334 -41.795467) | |
quake.2013p617818,2013p617818,2013-08-17T14:13:43.068,174.0124,-41.6473,23.3984,2.1598,M,automatic,15,,WEL(GNS_Primary),2013-08-17T14:16:42.695,POINT (174.01238 -41.647273) | |
quake.2013p617812,2013p617812,2013-08-17T14:10:45.393,174.1528,-41.6472,14.7266,2.1307,M,automatic,19,,WEL(GNS_Primary),2013-08-17T14:12:39.857,POINT (174.15284 -41.647229) | |
quake.2013p617811,2013p617811,2013-08-17T14:09:18.031,176.772,-41.6762,312.5,2.8624,M,automatic,17,,WEL(GNS_Primary),2013-08-17T14:12:25.508,POINT (176.772 -41.676196) | |
quake.2013p617794,2013p617794,2013-08-17T14:00:54.886,173.9633,-41.7464,25.8594,2.2044,M,automatic,16,,WEL(GNS_Primary),2013-08-17T14:03:03.08,POINT (173.96328 -41.746356) | |
quake.2013p617787,2013p617787,2013-08-17T13:57:00.458,174.2989,-41.5256,10.9766,2.0621,M,automatic,15,,WEL(GNS_Primary),2013-08-17T13:58:59.262,POINT (174.2989 -41.52557) | |
quake.2013p617777,2013p617777,2013-08-17T13:52:06.489,174.2502,-41.6151,12.6172,2.4859,M,automatic,23,,WEL(GNS_Primary),2013-08-17T13:54:19.277,POINT (174.25022 -41.615057) | |
quake.2013p617766,2013p617766,2013-08-17T13:45:59.89,174.1336,-41.683,5.2344,2.1949,M,automatic,15,,WEL(GNS_Primary),2013-08-17T13:47:53.675,POINT (174.13358 -41.68295) | |
quake.2013p617760,2013p617760,2013-08-17T13:42:55.144,174.013,-41.7349,6.7578,2.5696,M,automatic,24,,WEL(GNS_Primary),2013-08-17T13:46:52.99,POINT (174.01295 -41.734883) | |
quake.2013p617758,2013p617758,2013-08-17T13:41:44.389,174.1059,-41.99,39.2188,2.006,M,automatic,12,,WEL(GNS_Primary),2013-08-17T13:43:21.949,POINT (174.10588 -41.989953) | |
quake.2013p617753,2013p617753,2013-08-17T13:38:58.42,174.1405,-41.6164,17.8906,1.9665,M,automatic,14,,WEL(GNS_Primary),2013-08-17T13:41:01.828,POINT (174.14048 -41.616419) | |
quake.2013p617749,2013p617749,2013-08-17T13:37:07.757,174.0838,-41.7005,5.0586,2.3406,M,automatic,26,,WEL(GNS_Primary),2013-08-17T13:40:30.856,POINT (174.08384 -41.700467) | |
quake.2013p617740,2013p617740,2013-08-17T13:32:07.908,174.9797,-40.3361,14.375,2.9515,M,automatic,14,,WEL(GNS_Primary),2013-08-17T13:35:26.454,POINT (174.9797 -40.336079) | |
quake.2013p617739,2013p617739,2013-08-17T13:31:38.6,174.1782,-41.7147,19.6484,3.0804,M,automatic,66,,WEL(GNS_Primary),2013-08-17T13:35:07.843,POINT (174.17825 -41.714709) | |
quake.2013p617737,2013p617737,2013-08-17T13:30:26.751,174.0453,-41.7154,6.1719,1.8717,M,automatic,10,,WEL(GNS_Primary),2013-08-17T13:31:56.291,POINT (174.04527 -41.715394) | |
quake.2013p617729,2013p617729,2013-08-17T13:26:23.637,174.1742,-41.623,13.6133,2.2847,M,automatic,25,,WEL(GNS_Primary),2013-08-17T13:29:28.59,POINT (174.1742 -41.623041) | |
quake.2013p617720,2013p617720,2013-08-17T13:21:13.784,174.0404,-41.7069,6.1719,2.4579,M,automatic,19,,WEL(GNS_Primary),2013-08-17T13:24:00.847,POINT (174.04038 -41.706908) | |
quake.2013p617711,2013p617711,2013-08-17T13:16:36.58,174.0042,-41.7213,5.1172,2.4461,M,automatic,25,,WEL(GNS_Primary),2013-08-17T13:19:46.673,POINT (174.0042 -41.721279) | |
quake.2013p617706,2013p617706,2013-08-17T13:13:54.496,174.2477,-41.5074,16.6016,2.0394,M,automatic,17,,WEL(GNS_Primary),2013-08-17T13:15:54.102,POINT (174.24768 -41.507379) | |
quake.2013p617698,2013p617698,2013-08-17T13:09:39.843,176.4576,-38.1036,5.9375,3.1129,M,automatic,29,,WEL(GNS_Primary),2013-08-17T13:13:23.258,POINT (176.4576 -38.103596) | |
quake.2013p617693,2013p617693,2013-08-17T13:06:56,177.4303,-37.164,87.5,2.342,M,automatic,19,,WEL(GNS_Primary),2013-08-17T13:09:16.294,POINT (177.43031 -37.16397) | |
quake.2013p617692,2013p617692,2013-08-17T13:06:24.972,174.0688,-41.7641,10.7422,2.1754,M,automatic,12,,WEL(GNS_Primary),2013-08-17T13:07:59.308,POINT (174.06881 -41.764051) | |
quake.2013p617689,2013p617689,2013-08-17T13:05:04.432,178.2922,-38.1757,19.6484,1.7608,M,automatic,13,,WEL(GNS_Primary),2013-08-17T13:07:11.515,POINT (178.29225 -38.175678) | |
quake.2013p617688,2013p617688,2013-08-17T13:04:39.258,174.301,-41.8463,26.3281,2.4827,M,automatic,12,,WEL(GNS_Primary),2013-08-17T13:07:06.627,POINT (174.30096 -41.846348) | |
quake.2013p617675,2013p617675,2013-08-17T12:57:23.54,174.0453,-41.6336,23.9844,2.0316,M,automatic,14,,WEL(GNS_Primary),2013-08-17T12:59:27.41,POINT (174.04531 -41.633642) | |
quake.2013p617668,2013p617668,2013-08-17T12:53:48.299,174.2528,-41.6915,5.2344,1.9319,M,automatic,11,,WEL(GNS_Primary),2013-08-17T12:55:50.449,POINT (174.25278 -41.691456) | |
quake.2013p617662,2013p617662,2013-08-17T12:50:49.452,174.2464,-41.6514,5.0586,2.418,M,automatic,31,,WEL(GNS_Primary),2013-08-17T12:53:58.621,POINT (174.24636 -41.651437) | |
quake.2013p617658,2013p617658,2013-08-17T12:48:12.977,174.219,-41.659,5.0586,2.3365,M,automatic,23,,WEL(GNS_Primary),2013-08-17T12:51:24.435,POINT (174.219 -41.658975) | |
quake.2013p617652,2013p617652,2013-08-17T12:45:06.591,174.2814,-41.6758,7.6367,3.2552,M,automatic,66,,WEL(GNS_Primary),2013-08-17T12:50:51.285,POINT (174.28135 -41.675821) | |
quake.2013p617642,2013p617642,2013-08-17T12:40:29.723,176.2626,-38.6806,14.2578,2.5927,M,automatic,23,,WEL(GNS_Primary),2013-08-17T12:43:38.884,POINT (176.26265 -38.680568) | |
quake.2013p617640,2013p617640,2013-08-17T12:39:28.52,174.1583,-41.8167,8.8672,4.4451,M,automatic,125,,WEL(GNS_Primary),2013-08-17T12:43:38.981,POINT (174.15833 -41.816727) | |
quake.2013p617617,2013p617617,2013-08-17T12:26:45.386,174.1027,-41.6829,8.2812,2.1262,M,automatic,20,,WEL(GNS_Primary),2013-08-17T12:28:48.054,POINT (174.10271 -41.682878) | |
quake.2013p617606,2013p617606,2013-08-17T12:20:58.786,174.1314,-41.5332,19.6484,1.9703,M,automatic,15,,WEL(GNS_Primary),2013-08-17T12:22:54.573,POINT (174.13138 -41.53315) | |
quake.2013p617591,2013p617591,2013-08-17T12:12:56.692,175.7481,-40.8465,24.9805,3.0296,M,automatic,57,,WEL(GNS_Primary),2013-08-17T12:16:41.901,POINT (175.74809 -40.846537) | |
quake.2013p617589,2013p617589,2013-08-17T12:11:38.284,174.1136,-41.6106,22.1094,2.2967,M,automatic,13,,WEL(GNS_Primary),2013-08-17T12:13:48.778,POINT (174.11358 -41.610623) | |
quake.2013p617579,2013p617579,2013-08-17T12:06:17.218,174.2537,-41.5397,10.8594,2.167,M,automatic,11,,WEL(GNS_Primary),2013-08-17T12:08:11.237,POINT (174.25368 -41.53967) | |
quake.2013p617562,2013p617562,2013-08-17T11:57:19.352,174.071,-41.7191,8.3984,2.3132,M,automatic,19,,WEL(GNS_Primary),2013-08-17T11:59:27.515,POINT (174.07098 -41.719068) | |
quake.2013p617550,2013p617550,2013-08-17T11:50:48.382,177.193,-37.1066,259.0625,3.2252,M,automatic,78,,WEL(GNS_Primary),2013-08-17T11:54:40.252,POINT (177.19301 -37.106553) | |
quake.2013p617547,2013p617547,2013-08-17T11:49:30.634,174.1859,-41.5915,9.8047,2.158,M,automatic,22,,WEL(GNS_Primary),2013-08-17T11:53:26.067,POINT (174.18586 -41.591477) | |
quake.2013p617541,2013p617541,2013-08-17T11:46:16.315,174.2276,-41.6528,5.8203,2.2688,M,automatic,20,,WEL(GNS_Primary),2013-08-17T11:49:25.947,POINT (174.22764 -41.652764) | |
quake.2013p617539,2013p617539,2013-08-17T11:44:54.446,174.2643,-41.7074,5.0586,2.3109,M,automatic,22,,WEL(GNS_Primary),2013-08-17T11:46:56.859,POINT (174.26431 -41.707434) | |
quake.2013p617534,2013p617534,2013-08-17T11:42:25.526,174.2529,-41.7113,5.0586,2.2085,M,automatic,11,,WEL(GNS_Primary),2013-08-17T11:44:26.378,POINT (174.25293 -41.711271) | |
quake.2013p617524,2013p617524,2013-08-17T11:37:01.049,174.1507,-41.4662,16.3672,1.8298,M,automatic,11,,WEL(GNS_Primary),2013-08-17T11:38:34.943,POINT (174.15066 -41.46615) | |
quake.2013p617516,2013p617516,2013-08-17T11:32:53.563,173.5731,-41.906,34.0625,2.2742,M,automatic,14,,WEL(GNS_Primary),2013-08-17T11:36:06.151,POINT (173.57308 -41.905955) | |
quake.2013p617512,2013p617512,2013-08-17T11:30:39.411,174.273,-41.6699,5.1172,2.6333,M,automatic,29,,WEL(GNS_Primary),2013-08-17T11:33:00.23,POINT (174.27295 -41.669944) | |
quake.2013p617506,2013p617506,2013-08-17T11:27:20.56,174.1244,-41.6827,8.0469,2.2355,M,automatic,21,,WEL(GNS_Primary),2013-08-17T11:29:31.358,POINT (174.12436 -41.68268) | |
quake.2013p617496,2013p617496,2013-08-17T11:21:58.48,174.0312,-41.6249,29.1406,1.9287,M,automatic,11,,WEL(GNS_Primary),2013-08-17T11:23:37.36,POINT (174.03121 -41.624885) | |
quake.2013p617492,2013p617492,2013-08-17T11:20:14.311,173.9723,-41.7683,77.8906,2.3807,M,automatic,16,,WEL(GNS_Primary),2013-08-17T11:22:18.327,POINT (173.97229 -41.768311) | |
quake.2013p617490,2013p617490,2013-08-17T11:18:53.799,174.2763,-41.585,9.3359,2.3912,M,automatic,23,,WEL(GNS_Primary),2013-08-17T11:22:40.533,POINT (174.27626 -41.58496) | |
quake.2013p617473,2013p617473,2013-08-17T11:10:02.815,174.1478,-41.5883,19.2969,2.0778,M,automatic,12,,WEL(GNS_Primary),2013-08-17T11:11:40.953,POINT (174.14778 -41.588272) | |
quake.2013p617470,2013p617470,2013-08-17T11:08:51.016,174.2736,-41.6132,9.8047,2.6212,M,automatic,33,,WEL(GNS_Primary),2013-08-17T11:11:09.152,POINT (174.27362 -41.613243) | |
quake.2013p617465,2013p617465,2013-08-17T11:05:59.934,174.1372,-41.7513,5.0586,2.6721,M,automatic,30,,WEL(GNS_Primary),2013-08-17T11:09:22.777,POINT (174.13723 -41.751252) | |
quake.2013p617447,2013p617447,2013-08-17T10:55:54.574,174.0658,-41.7125,5.0586,2.1142,M,automatic,16,,WEL(GNS_Primary),2013-08-17T10:59:14.258,POINT (174.0658 -41.712451) | |
quake.2013p617440,2013p617440,2013-08-17T10:52:17.824,174.006,-41.7599,5.0586,2.7874,M,automatic,11,,WEL(GNS_Primary),2013-08-17T10:54:45.29,POINT (174.00605 -41.759916) | |
quake.2013p617437,2013p617437,2013-08-17T10:50:49.773,174.5422,-41.5208,14.5508,3.3821,M,automatic,77,,WEL(GNS_Primary),2013-08-17T10:54:33.923,POINT (174.54221 -41.520847) | |
quake.2013p617427,2013p617427,2013-08-17T10:46:04.979,174.0305,-41.7519,8.457,3.4816,M,automatic,76,,WEL(GNS_Primary),2013-08-17T10:51:34.244,POINT (174.03046 -41.751873) | |
quake.2013p617424,2013p617424,2013-08-17T10:43:32.349,174.0409,-41.7338,5.0586,2.4808,M,automatic,22,,WEL(GNS_Primary),2013-08-17T10:46:52.978,POINT (174.04093 -41.733827) | |
quake.2013p617420,2013p617420,2013-08-17T10:41:33.257,174.0096,-41.7164,29.9609,2.3329,M,automatic,13,,WEL(GNS_Primary),2013-08-17T10:43:40.112,POINT (174.00958 -41.716431) | |
quake.2013p617416,2013p617416,2013-08-17T10:39:41.915,174.235,-41.6444,5.0586,2.533,M,automatic,33,,WEL(GNS_Primary),2013-08-17T10:43:07.703,POINT (174.23505 -41.644432) | |
quake.2013p617411,2013p617411,2013-08-17T10:36:51.71,175.8566,-39.5013,11.7969,2.3597,M,automatic,11,,WEL(GNS_Primary),2013-08-17T10:39:24.667,POINT (175.85662 -39.501276) | |
quake.2013p617410,2013p617410,2013-08-17T10:36:03.602,174.0033,-41.778,6.9922,3.3589,M,automatic,65,,WEL(GNS_Primary),2013-08-17T10:40:05.881,POINT (174.00329 -41.77798) | |
quake.2013p617406,2013p617406,2013-08-17T10:34:18.407,174.5321,-40.5479,5.4688,2.7325,M,automatic,19,,WEL(GNS_Primary),2013-08-17T10:36:51.112,POINT (174.5321 -40.547855) | |
quake.2013p617405,2013p617405,2013-08-17T10:33:36.805,172.9166,-41.6831,128.75,3.4929,M,automatic,19,,WEL(GNS_Primary),2013-08-17T10:36:41.524,POINT (172.91665 -41.683079) | |
quake.2013p617399,2013p617399,2013-08-17T10:30:32.937,174.2409,-41.6984,5.0586,2.2478,M,automatic,19,,WEL(GNS_Primary),2013-08-17T10:32:48.455,POINT (174.24093 -41.698407) | |
quake.2013p617395,2013p617395,2013-08-17T10:28:08.794,174.0746,-41.7002,7.0508,2.4233,M,automatic,20,,WEL(GNS_Primary),2013-08-17T10:30:20.911,POINT (174.07461 -41.700196) | |
quake.2013p617388,2013p617388,2013-08-17T10:24:20.229,173.3345,-42.1527,24.6875,2.5648,M,automatic,10,,WEL(GNS_Primary),2013-08-17T10:26:38.187,POINT (173.33447 -42.152652) | |
quake.2013p617376,2013p617376,2013-08-17T10:18:18.453,173.9776,-41.7539,5.1172,2.3837,M,automatic,13,,WEL(GNS_Primary),2013-08-17T10:20:30.25,POINT (173.97759 -41.753867) | |
quake.2013p617372,2013p617372,2013-08-17T10:16:06.793,174.0605,-41.6758,5.2344,2.0835,M,automatic,17,,WEL(GNS_Primary),2013-08-17T10:19:02.624,POINT (174.06054 -41.6758) | |
quake.2013p617364,2013p617364,2013-08-17T10:12:31.801,174.1143,-41.6676,12.793,3.1293,M,automatic,64,,WEL(GNS_Primary),2013-08-17T10:17:30.138,POINT (174.11428 -41.667577) | |
quake.2013p617356,2013p617356,2013-08-17T10:07:32.523,174.018,-41.7169,6.1133,2.1777,M,automatic,11,,WEL(GNS_Primary),2013-08-17T10:09:20.174,POINT (174.01801 -41.716887) | |
quake.2013p617354,2013p617354,2013-08-17T10:06:33.111,174.0423,-41.674,21.9922,2.2202,M,automatic,14,,WEL(GNS_Primary),2013-08-17T10:08:40.901,POINT (174.04228 -41.674012) | |
quake.2013p617351,2013p617351,2013-08-17T10:04:57.228,174.0681,-41.7125,7.9883,2.5195,M,automatic,32,,WEL(GNS_Primary),2013-08-17T10:07:39.45,POINT (174.06811 -41.712519) | |
quake.2013p617347,2013p617347,2013-08-17T10:02:51.66,174.0005,-41.6644,22.2266,2.2091,M,automatic,11,,WEL(GNS_Primary),2013-08-17T10:05:02.785,POINT (174.0005 -41.664443) | |
quake.2013p617339,2013p617339,2013-08-17T09:58:54.066,175.8159,-39.6392,5.4688,2.4234,M,automatic,16,,WEL(GNS_Primary),2013-08-17T10:02:08.145,POINT (175.81589 -39.63925) | |
quake.2013p617338,2013p617338,2013-08-17T09:58:09.003,174.3619,-42.085,8.0469,3.7056,M,automatic,64,,WEL(GNS_Primary),2013-08-17T10:17:35.477,POINT (174.36189 -42.085014) | |
quake.2013p617325,2013p617325,2013-08-17T09:51:44.282,174.2584,-41.612,5.1172,2.6225,M,automatic,28,,WEL(GNS_Primary),2013-08-17T09:54:56.937,POINT (174.25839 -41.611961) | |
quake.2013p617324,2013p617324,2013-08-17T09:50:38.934,173.5827,-41.5341,59.8438,2.336,M,automatic,11,,WEL(GNS_Primary),2013-08-17T09:52:16.911,POINT (173.58274 -41.5341) | |
quake.2013p617319,2013p617319,2013-08-17T09:47:50.519,174.0685,-41.7148,7.4609,2.3625,M,automatic,20,,WEL(GNS_Primary),2013-08-17T09:50:02.108,POINT (174.06853 -41.714825) | |
quake.2013p617314,2013p617314,2013-08-17T09:45:01.776,174.0878,-41.6995,9.8047,2.4094,M,automatic,26,,WEL(GNS_Primary),2013-08-17T09:47:22.988,POINT (174.08784 -41.699542) | |
quake.2013p617309,2013p617309,2013-08-17T09:43:00.564,174.0578,-41.7197,9.6289,2.6763,M,automatic,49,,WEL(GNS_Primary),2013-08-17T09:46:02.33,POINT (174.05775 -41.719722) | |
quake.2013p617303,2013p617303,2013-08-17T09:39:19.237,174.0649,-41.7133,9.8633,2.5079,M,automatic,35,,WEL(GNS_Primary),2013-08-17T09:41:34.815,POINT (174.06491 -41.713259) | |
quake.2013p617296,2013p617296,2013-08-17T09:35:47.407,174.0322,-41.7304,5.5859,1.9965,M,automatic,11,,WEL(GNS_Primary),2013-08-17T09:37:26.333,POINT (174.03217 -41.730442) | |
quake.2013p617293,2013p617293,2013-08-17T09:33:40.806,173.7771,-41.8302,51.4062,2.0808,M,automatic,11,,WEL(GNS_Primary),2013-08-17T09:35:25.369,POINT (173.77709 -41.830164) | |
quake.2013p617288,2013p617288,2013-08-17T09:31:24.273,174.1776,-41.5952,6.1133,2.0992,M,automatic,12,,WEL(GNS_Primary),2013-08-17T09:33:43.34,POINT (174.17759 -41.595196) | |
quake.2013p617280,2013p617280,2013-08-17T09:26:56.012,174.2305,-41.6545,23.8672,2.2351,M,automatic,11,,WEL(GNS_Primary),2013-08-17T09:28:24.541,POINT (174.23047 -41.654516) | |
quake.2013p617277,2013p617277,2013-08-17T09:25:11.397,174.0664,-41.7237,5.0586,2.2854,M,automatic,20,,WEL(GNS_Primary),2013-08-17T09:27:33.65,POINT (174.06641 -41.723731) | |
quake.2013p617269,2013p617269,2013-08-17T09:21:15.99,176.1541,-40.2312,16.25,3.0106,M,automatic,14,,WEL(GNS_Primary),2013-08-17T09:24:18.764,POINT (176.15407 -40.231233) | |
quake.2013p617268,2013p617268,2013-08-17T09:20:32.823,174.0745,-41.8493,5.1172,3.9375,M,automatic,93,,WEL(GNS_Primary),2013-08-17T10:17:24.665,POINT (174.07447 -41.849306) | |
quake.2013p617264,2013p617264,2013-08-17T09:18:22.531,174.0561,-41.7562,15.1953,3.5329,M,automatic,63,,WEL(GNS_Primary),2013-08-17T09:24:47.689,POINT (174.05609 -41.75617) | |
quake.2013p617258,2013p617258,2013-08-17T09:15:26.431,174.0958,-41.7079,8.457,2.7254,M,automatic,36,,WEL(GNS_Primary),2013-08-17T09:18:26.5,POINT (174.09584 -41.707911) | |
quake.2013p617250,2013p617250,2013-08-17T09:10:59.637,174.1212,-41.7243,8.9844,2.7962,M,automatic,31,,WEL(GNS_Primary),2013-08-17T09:14:14.542,POINT (174.12119 -41.724296) | |
quake.2013p617246,2013p617246,2013-08-17T09:09:10.394,174.2829,-41.6027,12.1484,3.1272,M,automatic,61,,WEL(GNS_Primary),2013-08-17T09:12:52.274,POINT (174.2829 -41.602672) | |
quake.2013p617242,2013p617242,2013-08-17T09:06:32.482,174.0688,-41.7027,8.5156,2.8051,M,automatic,39,,WEL(GNS_Primary),2013-08-17T09:10:14.719,POINT (174.06882 -41.702738) | |
quake.2013p617238,2013p617238,2013-08-17T09:04:25.596,174.074,-41.7094,9.2773,2.9795,M,automatic,35,,WEL(GNS_Primary),2013-08-17T09:09:15.483,POINT (174.074 -41.709355) | |
quake.2013p617227,2013p617227,2013-08-17T08:58:39.68,174.0486,-41.7699,19.5898,5.4837,M,reviewed,61,,WEL(GNS_Primary),2013-08-17T09:07:29.304,POINT (174.04859 -41.769924) | |
quake.2013p617220,2013p617220,2013-08-17T08:55:28.01,174.093,-41.8498,5.1172,3.7153,M,automatic,79,,WEL(GNS_Primary),2013-08-17T08:59:27.426,POINT (174.09297 -41.849848) | |
quake.2013p617210,2013p617210,2013-08-17T08:49:27.296,174.0222,-41.74,5.0586,2.5105,M,automatic,19,,WEL(GNS_Primary),2013-08-17T08:52:37.877,POINT (174.02223 -41.739952) | |
quake.2013p617209,2013p617209,2013-08-17T08:49:12.852,175.4075,-38.7131,186.4062,2.4522,M,automatic,30,,WEL(GNS_Primary),2013-08-17T08:53:07.115,POINT (175.40752 -38.713109) | |
quake.2013p617195,2013p617195,2013-08-17T08:41:30.026,174.1331,-41.7378,14.7852,4.3245,M,reviewed,58,,WEL(GNS_Primary),2013-08-17T08:50:54.634,POINT (174.13307 -41.737783) | |
quake.2013p617189,2013p617189,2013-08-17T08:38:32.612,174.2626,-41.6254,13.0859,2.2701,M,automatic,19,,WEL(GNS_Primary),2013-08-17T08:40:39.461,POINT (174.26256 -41.62543) | |
quake.2013p617184,2013p617184,2013-08-17T08:35:46.126,174.0146,-41.7543,5.0586,2.1717,M,automatic,10,,WEL(GNS_Primary),2013-08-17T08:37:25.495,POINT (174.01463 -41.754328) | |
quake.2013p617175,2013p617175,2013-08-17T08:31:07.63,174.021,-41.7228,5.8789,2.1689,M,automatic,17,,WEL(GNS_Primary),2013-08-17T08:33:17.055,POINT (174.02097 -41.722814) | |
quake.2013p617170,2013p617170,2013-08-17T08:28:26.276,174.0926,-41.7141,5.0586,2.4156,M,automatic,19,,WEL(GNS_Primary),2013-08-17T08:32:05.364,POINT (174.0926 -41.714072) | |
quake.2013p617167,2013p617167,2013-08-17T08:26:55.005,174.0609,-41.7346,11.6797,2.5458,M,automatic,15,,WEL(GNS_Primary),2013-08-17T08:29:02.133,POINT (174.0609 -41.734622) | |
quake.2013p617151,2013p617151,2013-08-17T08:18:59.035,174.283,-41.5762,10.6836,3.2528,M,automatic,52,,WEL(GNS_Primary),2013-08-17T08:24:04.899,POINT (174.28296 -41.57619) | |
quake.2013p617142,2013p617142,2013-08-17T08:13:36.253,173.9986,-41.7887,15.8984,3.9124,M,reviewed,43,,WEL(GNS_Primary),2013-08-17T08:24:44.924,POINT (173.99857 -41.788686) | |
quake.2013p617136,2013p617136,2013-08-17T08:10:11.581,176.1159,-39.3299,21.875,3.2219,M,automatic,11,,WEL(GNS_Primary),2013-08-17T08:12:55.981,POINT (176.11594 -39.32994) | |
quake.2013p617134,2013p617134,2013-08-17T08:09:28.228,174.5614,-41.5429,30.7812,4.4184,M,automatic,84,,WEL(GNS_Primary),2013-08-17T10:37:44.644,POINT (174.56139 -41.542887) | |
quake.2013p617132,2013p617132,2013-08-17T08:07:51.681,172.7744,-41.7924,96.875,2.6013,M,automatic,11,,WEL(GNS_Primary),2013-08-17T08:09:50.284,POINT (172.77437 -41.792417) | |
quake.2013p617115,2013p617115,2013-08-17T07:59:24.203,174.3626,-41.6059,6.7578,2.0745,M,automatic,12,,WEL(GNS_Primary),2013-08-17T08:01:20.946,POINT (174.36264 -41.605851) | |
quake.2013p617112,2013p617112,2013-08-17T07:57:32.47,174.2113,-41.5964,13.5547,2.2491,M,automatic,20,,WEL(GNS_Primary),2013-08-17T07:59:32.777,POINT (174.21134 -41.596397) | |
quake.2013p617100,2013p617100,2013-08-17T07:51:09.522,174.2953,-41.6124,5.0586,2.5671,M,automatic,31,,WEL(GNS_Primary),2013-08-17T07:55:00.401,POINT (174.29534 -41.612422) | |
quake.2013p617094,2013p617094,2013-08-17T07:48:51.633,174.2609,-41.5428,6.0547,2.142,M,automatic,17,,WEL(GNS_Primary),2013-08-17T07:50:42.999,POINT (174.26092 -41.542802) | |
quake.2013p617073,2013p617073,2013-08-17T07:36:33.448,174.0873,-41.7285,7.2852,2.8694,M,automatic,44,,WEL(GNS_Primary),2013-08-17T07:54:38.016,POINT (174.08733 -41.728515) | |
quake.2013p617063,2013p617063,2013-08-17T07:30:52.48,174.0056,-41.6717,50.9375,1.9612,M,automatic,11,,WEL(GNS_Primary),2013-08-17T07:32:28.151,POINT (174.00558 -41.671683) | |
quake.2013p617062,2013p617062,2013-08-17T07:30:40.589,172.5315,-43.6164,7.4609,2.6621,M,automatic,22,,WEL(GNS_Primary),2013-08-17T07:33:04.554,POINT (172.53151 -43.616411) | |
quake.2013p617055,2013p617055,2013-08-17T07:27:24.214,174.1881,-41.8556,52.3438,2.9583,M,automatic,18,,WEL(GNS_Primary),2013-08-17T07:30:27.121,POINT (174.18811 -41.855554) | |
quake.2013p617036,2013p617036,2013-08-17T07:16:55.594,174.1729,-41.6161,17.5391,2.1937,M,automatic,18,,WEL(GNS_Primary),2013-08-17T07:18:52.828,POINT (174.17292 -41.616121) | |
quake.2013p617025,2013p617025,2013-08-17T07:11:12.111,174.2635,-41.5981,7.5195,2.2482,M,automatic,22,,WEL(GNS_Primary),2013-08-17T07:13:12.954,POINT (174.26352 -41.59814) | |
quake.2013p617015,2013p617015,2013-08-17T07:06:04.739,174.3157,-41.642,5.1172,1.8009,M,automatic,11,,WEL(GNS_Primary),2013-08-17T07:07:40.774,POINT (174.31567 -41.642005) | |
quake.2013p617012,2013p617012,2013-08-17T07:04:21.042,173.4692,-41.7811,121.7188,2.5373,M,automatic,14,,WEL(GNS_Primary),2013-08-17T07:06:29.732,POINT (173.46922 -41.781087) | |
quake.2013p617007,2013p617007,2013-08-17T07:01:49.786,174.2925,-41.663,11.4453,3.1262,M,automatic,52,,WEL(GNS_Primary),2013-08-17T07:08:21.201,POINT (174.2925 -41.663011) | |
quake.2013p616991,2013p616991,2013-08-17T06:52:57.317,174.0813,-41.7275,5.0586,1.9875,M,automatic,14,,WEL(GNS_Primary),2013-08-17T06:55:02.418,POINT (174.0813 -41.727504) | |
quake.2013p616984,2013p616984,2013-08-17T06:49:18.292,173.7815,-41.7571,8.9258,2.3293,M,automatic,18,,WEL(GNS_Primary),2013-08-17T06:51:26.12,POINT (173.78152 -41.757083) | |
quake.2013p616976,2013p616976,2013-08-17T06:45:07.728,174.1299,-41.584,8.3984,1.7803,M,automatic,10,,WEL(GNS_Primary),2013-08-17T06:46:42.363,POINT (174.12992 -41.583992) | |
quake.2013p616969,2013p616969,2013-08-17T06:41:15.319,174.0847,-41.7303,5.8203,3.0959,M,automatic,57,,WEL(GNS_Primary),2013-08-17T06:45:50.67,POINT (174.08474 -41.730316) | |
quake.2013p616965,2013p616965,2013-08-17T06:39:04.784,174.0622,-41.7055,5.5859,2.4161,M,automatic,20,,WEL(GNS_Primary),2013-08-17T06:41:20.244,POINT (174.06223 -41.705464) | |
quake.2013p616956,2013p616956,2013-08-17T06:34:34.059,174.1734,-41.7675,42.7344,2.2606,M,automatic,17,,WEL(GNS_Primary),2013-08-17T06:36:35.374,POINT (174.17344 -41.767537) | |
quake.2013p616953,2013p616953,2013-08-17T06:32:37.519,173.9407,-41.7323,6.1719,2.3123,M,automatic,15,,WEL(GNS_Primary),2013-08-17T06:34:47.684,POINT (173.9407 -41.732346) | |
quake.2013p616949,2013p616949,2013-08-17T06:30:32.919,173.818,-41.6862,22.8125,1.907,M,automatic,13,,WEL(GNS_Primary),2013-08-17T06:31:22.312,POINT (173.81804 -41.686196) | |
quake.2013p616938,2013p616938,2013-08-17T06:24:57.946,174.3169,-41.6862,13.3203,2.9922,M,automatic,42,,WEL(GNS_Primary),2013-08-17T06:29:47.292,POINT (174.31687 -41.686248) | |
quake.2013p616935,2013p616935,2013-08-17T06:23:27.547,174.0209,-41.7234,6.9922,2.4652,M,automatic,28,,WEL(GNS_Primary),2013-08-17T06:26:10.232,POINT (174.02087 -41.723437) | |
quake.2013p616934,2013p616934,2013-08-17T06:22:02.003,177.4611,-38.5882,53.8672,1.438,M,automatic,11,,WEL(GNS_Primary),2013-08-17T06:23:56.346,POINT (177.46106 -38.58819) | |
quake.2013p616933,2013p616933,2013-08-17T06:21:51.775,173.3994,-41.754,116.5625,2.2239,M,automatic,10,,WEL(GNS_Primary),2013-08-17T06:23:24.461,POINT (173.39936 -41.754004) | |
quake.2013p616927,2013p616927,2013-08-17T06:19:10.538,174.0811,-41.6729,9.8633,2.4997,M,automatic,32,,WEL(GNS_Primary),2013-08-17T06:22:57.342,POINT (174.08106 -41.672857) | |
quake.2013p616919,2013p616919,2013-08-17T06:14:25.811,174.1269,-41.6965,8.8672,2.2913,M,automatic,17,,WEL(GNS_Primary),2013-08-17T06:16:53.946,POINT (174.12691 -41.696519) | |
quake.2013p616918,2013p616918,2013-08-17T06:14:07.589,169.9016,-44.7049,5.1172,2.8871,M,automatic,16,,WEL(GNS_Primary),2013-08-17T06:16:34.196,POINT (169.90159 -44.70489) | |
quake.2013p616914,2013p616914,2013-08-17T06:12:03.311,174.1813,-41.6839,5.8203,2.4926,M,automatic,33,,WEL(GNS_Primary),2013-08-17T06:17:09.438,POINT (174.18131 -41.683935) | |
quake.2013p616912,2013p616912,2013-08-17T06:10:50.015,174.1681,-41.6485,5.1172,2.2107,M,automatic,12,,WEL(GNS_Primary),2013-08-17T06:12:52.641,POINT (174.16808 -41.648512) | |
quake.2013p616899,2013p616899,2013-08-17T06:04:13.009,174.1403,-41.5251,12.3828,2.1896,M,automatic,13,,WEL(GNS_Primary),2013-08-17T06:05:51.289,POINT (174.1403 -41.525071) | |
quake.2013p616897,2013p616897,2013-08-17T06:02:54.423,174.2913,-41.5562,5.1172,1.9321,M,automatic,14,,WEL(GNS_Primary),2013-08-17T06:04:58.528,POINT (174.2913 -41.556208) | |
quake.2013p616893,2013p616893,2013-08-17T06:01:02.514,174.3046,-41.5182,5.1172,2.1072,M,automatic,17,,WEL(GNS_Primary),2013-08-17T06:03:19.397,POINT (174.3046 -41.51823) | |
quake.2013p616877,2013p616877,2013-08-17T05:52:29.261,174.0706,-41.7113,5.293,2.435,M,automatic,24,,WEL(GNS_Primary),2013-08-17T05:54:39.401,POINT (174.07061 -41.711341) | |
quake.2013p616873,2013p616873,2013-08-17T05:50:11.204,174.1308,-41.609,25.7422,2.1168,M,automatic,15,,WEL(GNS_Primary),2013-08-17T05:52:11.333,POINT (174.13079 -41.609043) | |
quake.2013p616869,2013p616869,2013-08-17T05:48:27.865,174.2836,-41.5929,5.0586,2.0192,M,automatic,15,,WEL(GNS_Primary),2013-08-17T05:50:51.522,POINT (174.28357 -41.592891) | |
quake.2013p616863,2013p616863,2013-08-17T05:45:04.297,174.2581,-41.6662,10.2734,2.4451,M,automatic,16,,WEL(GNS_Primary),2013-08-17T05:47:21.532,POINT (174.25807 -41.66617) | |
quake.2013p616860,2013p616860,2013-08-17T05:43:41.304,174.2416,-41.8913,5.2344,3.3528,M,automatic,57,,WEL(GNS_Primary),2013-08-17T05:49:00.679,POINT (174.24163 -41.891321) | |
quake.2013p616857,2013p616857,2013-08-17T05:41:31.895,174.0187,-41.7275,8.3984,2.5858,M,automatic,26,,WEL(GNS_Primary),2013-08-17T05:45:34.057,POINT (174.0187 -41.727544) | |
quake.2013p616856,2013p616856,2013-08-17T05:41:01.52,176.567,-38.9409,8.9258,1.6103,M,automatic,10,,WEL(GNS_Primary),2013-08-17T05:42:22.95,POINT (176.56702 -38.940944) | |
quake.2013p616852,2013p616852,2013-08-17T05:38:55.838,174.2541,-41.6202,12.8516,2.2864,M,automatic,17,,WEL(GNS_Primary),2013-08-17T05:41:04.274,POINT (174.25408 -41.620176) | |
quake.2013p616837,2013p616837,2013-08-17T05:31:15.68,174.2431,-41.5277,8.9844,2.4792,M,automatic,18,,WEL(GNS_Primary),2013-08-17T05:34:15.1,POINT (174.24313 -41.527681) | |
quake.2013p616833,2013p616833,2013-08-17T05:29:04.279,174.2786,-41.6837,17.2461,3.124,M,automatic,57,,WEL(GNS_Primary),2013-08-17T05:34:14.308,POINT (174.27864 -41.683666) | |
quake.2013p616831,2013p616831,2013-08-17T05:28:16.941,175.7447,-41.1872,10.2734,2.1854,M,automatic,10,,WEL(GNS_Primary),2013-08-17T05:29:56.354,POINT (175.74468 -41.187162) | |
quake.2013p616829,2013p616829,2013-08-17T05:26:37.685,174.2105,-41.5401,11.3281,2.2382,M,automatic,12,,WEL(GNS_Primary),2013-08-17T05:29:45.78,POINT (174.21047 -41.540066) | |
quake.2013p616815,2013p616815,2013-08-17T05:19:15.02,174.2912,-41.7139,21.5234,4.3429,M,reviewed,44,,WEL(GNS_Primary),2013-08-17T08:17:41.619,POINT (174.29117 -41.713853) | |
quake.2013p616807,2013p616807,2013-08-17T05:16:09.956,174.301,-41.6785,5.0586,3.2794,M,automatic,14,,WEL(GNS_Primary),2013-08-17T05:18:35.603,POINT (174.30103 -41.678484) | |
quake.2013p616808,2013p616808,2013-08-17T05:15:40.234,174.5268,-40.1157,132.5,2.9367,M,automatic,15,,WEL(GNS_Primary),2013-08-17T05:18:46.345,POINT (174.52679 -40.115661) | |
quake.2013p616805,2013p616805,2013-08-17T05:14:03,174.1681,-41.6485,11.9141,2.4961,M,automatic,23,,WEL(GNS_Primary),2013-08-17T05:16:04.781,POINT (174.16808 -41.648512) | |
quake.2013p616795,2013p616795,2013-08-17T05:08:28.74,174.2593,-41.6996,5.1172,2.3334,M,automatic,20,,WEL(GNS_Primary),2013-08-17T05:10:30.685,POINT (174.2593 -41.699571) | |
quake.2013p616792,2013p616792,2013-08-17T05:07:00.276,174.3553,-41.5823,8.1641,1.9053,M,automatic,10,,WEL(GNS_Primary),2013-08-17T05:08:30.398,POINT (174.3553 -41.58228) | |
quake.2013p616788,2013p616788,2013-08-17T05:04:43.738,173.9888,-41.7717,5.1172,2.5164,M,automatic,26,,WEL(GNS_Primary),2013-08-17T05:08:04.377,POINT (173.98878 -41.771715) | |
quake.2013p616783,2013p616783,2013-08-17T05:02:28.28,174.0673,-41.774,13.5547,3.3623,M,automatic,64,,WEL(GNS_Primary),2013-08-17T05:06:23.34,POINT (174.0673 -41.774018) | |
quake.2013p616779,2013p616779,2013-08-17T04:59:58.423,173.9315,-41.7417,6.0547,2.5575,M,automatic,11,,WEL(GNS_Primary),2013-08-17T05:02:08.017,POINT (173.93154 -41.741671) | |
quake.2013p616776,2013p616776,2013-08-17T04:58:51.016,174.199,-41.5547,20.2344,2.9123,M,automatic,15,,WEL(GNS_Primary),2013-08-17T05:01:48.891,POINT (174.19904 -41.554745) | |
quake.2013p616773,2013p616773,2013-08-17T04:57:44.323,174.0783,-41.7011,5.0586,2.8252,M,automatic,27,,WEL(GNS_Primary),2013-08-17T05:01:15.499,POINT (174.07833 -41.70114) | |
quake.2013p616771,2013p616771,2013-08-17T04:55:46.805,174.2999,-41.6023,5.1172,2.9062,M,automatic,20,,WEL(GNS_Primary),2013-08-17T04:59:14.469,POINT (174.29991 -41.602338) | |
quake.2013p616767,2013p616767,2013-08-17T04:53:57.452,174.2081,-41.608,16.1328,3.5072,M,automatic,43,,WEL(GNS_Primary),2013-08-17T04:57:32.683,POINT (174.20807 -41.607979) | |
quake.2013p616764,2013p616764,2013-08-17T04:52:09.189,173.9848,-41.8183,10.2734,3.4604,M,automatic,78,,WEL(GNS_Primary),2013-08-17T04:56:12.468,POINT (173.98476 -41.818314) | |
quake.2013p616758,2013p616758,2013-08-17T04:49:07.154,177.2333,-39.3243,20.3516,2.5632,M,automatic,28,,WEL(GNS_Primary),2013-08-17T04:52:17.884,POINT (177.23331 -39.324313) | |
quake.2013p616756,2013p616756,2013-08-17T04:47:45.627,177.2495,-39.3338,21.8164,2.6783,M,automatic,40,,WEL(GNS_Primary),2013-08-17T04:51:13.579,POINT (177.2495 -39.333761) | |
quake.2013p616749,2013p616749,2013-08-17T04:44:29.426,175.4952,-39.617,21.6406,2.4971,M,automatic,13,,WEL(GNS_Primary),2013-08-17T04:46:53.184,POINT (175.4952 -39.617038) | |
quake.2013p616748,2013p616748,2013-08-17T04:43:46.568,174.0906,-41.753,19.4141,3.3436,M,automatic,62,,WEL(GNS_Primary),2013-08-17T04:47:28.813,POINT (174.09058 -41.753011) | |
quake.2013p616746,2013p616746,2013-08-17T04:42:35.027,174.0094,-41.7381,6.0547,2.2424,M,automatic,13,,WEL(GNS_Primary),2013-08-17T04:44:34.528,POINT (174.00937 -41.738115) | |
quake.2013p616738,2013p616738,2013-08-17T04:38:18.077,173.9957,-41.7773,6.6406,2.8293,M,automatic,30,,WEL(GNS_Primary),2013-08-17T04:41:44.397,POINT (173.99566 -41.777339) | |
quake.2013p616729,2013p616729,2013-08-17T04:33:20.212,174.119,-41.708,5.1172,3.0947,M,automatic,46,,WEL(GNS_Primary),2013-08-17T04:36:14.328,POINT (174.11901 -41.707965) | |
quake.2013p616722,2013p616722,2013-08-17T04:29:43.293,174.1895,-41.6706,15.3711,3.4474,M,automatic,63,,WEL(GNS_Primary),2013-08-17T04:34:23.565,POINT (174.18947 -41.67062) | |
quake.2013p616712,2013p616712,2013-08-17T04:24:21.261,173.9993,-41.7735,7.4023,2.8661,M,automatic,28,,WEL(GNS_Primary),2013-08-17T04:27:50.821,POINT (173.99934 -41.773484) | |
quake.2013p616705,2013p616705,2013-08-17T04:20:46.48,174.1482,-41.6886,5.0586,2.5155,M,automatic,21,,WEL(GNS_Primary),2013-08-17T04:22:44.156,POINT (174.14818 -41.688593) | |
quake.2013p616702,2013p616702,2013-08-17T04:19:16.959,173.934,-41.6954,25.3906,2.303,M,automatic,11,,WEL(GNS_Primary),2013-08-17T04:21:04.168,POINT (173.934 -41.695442) | |
quake.2013p616691,2013p616691,2013-08-17T04:13:20.905,173.9923,-41.7793,19.6484,5.0356,M,reviewed,53,,WEL(GNS_Primary),2013-08-17T04:28:36.198,POINT (173.99226 -41.779325) | |
quake.2013p616687,2013p616687,2013-08-17T04:11:01.735,174.0673,-41.7692,12.4414,4.77,M,reviewed,69,,WEL(GNS_Primary),2013-08-17T04:45:59.84,POINT (174.06726 -41.76922) | |
quake.2013p616685,2013p616685,2013-08-17T04:09:59.879,174.4584,-41.509,10.3906,2.1341,M,automatic,16,,WEL(GNS_Primary),2013-08-17T04:11:43.367,POINT (174.45844 -41.508997) | |
quake.2013p616683,2013p616683,2013-08-17T04:09:00.933,174.2336,-41.6129,5.1172,2.133,M,automatic,11,,WEL(GNS_Primary),2013-08-17T04:10:36.279,POINT (174.23357 -41.612899) | |
quake.2013p616680,2013p616680,2013-08-17T04:07:28.953,174.2114,-41.6168,5.2344,2.0298,M,automatic,14,,WEL(GNS_Primary),2013-08-17T04:09:23.056,POINT (174.21138 -41.616835) | |
quake.2013p616661,2013p616661,2013-08-17T03:57:01.845,174.2759,-41.629,5.0586,3.7505,M,automatic,79,,WEL(GNS_Primary),2013-08-17T04:01:10.789,POINT (174.27593 -41.628951) | |
quake.2013p616657,2013p616657,2013-08-17T03:55:15.417,174.4054,-41.5454,9.8047,3.4389,M,automatic,72,,WEL(GNS_Primary),2013-08-17T03:58:56.312,POINT (174.40539 -41.545386) | |
quake.2013p616650,2013p616650,2013-08-17T03:51:17.406,174.8578,-40.254,61.7188,3.0193,M,automatic,26,,WEL(GNS_Primary),2013-08-17T03:54:26.836,POINT (174.85779 -40.254037) | |
quake.2013p616649,2013p616649,2013-08-17T03:50:47.32,174.1654,-41.6203,5.0586,3.5331,M,automatic,55,,WEL(GNS_Primary),2013-08-17T03:54:36.197,POINT (174.16536 -41.620278) | |
quake.2013p616640,2013p616640,2013-08-17T03:46:19.187,174.2757,-41.6621,6.1719,2.2966,M,automatic,25,,WEL(GNS_Primary),2013-08-17T03:48:34.745,POINT (174.27566 -41.662099) | |
quake.2013p616634,2013p616634,2013-08-17T03:42:50.367,174.1191,-41.6971,5.1172,2.3677,M,automatic,19,,WEL(GNS_Primary),2013-08-17T03:44:45.281,POINT (174.1191 -41.697123) | |
quake.2013p616630,2013p616630,2013-08-17T03:40:43.985,176.4549,-39.7765,5.1172,2.2239,M,automatic,23,,WEL(GNS_Primary),2013-08-17T03:42:19.786,POINT (176.45491 -39.776501) | |
quake.2013p616628,2013p616628,2013-08-17T03:39:25.621,174.1716,-41.7078,5.1172,2.2576,M,automatic,14,,WEL(GNS_Primary),2013-08-17T03:41:21.669,POINT (174.17155 -41.707839) | |
quake.2013p616620,2013p616620,2013-08-17T03:35:29.576,173.9383,-41.7377,7.2266,2.1446,M,automatic,13,,WEL(GNS_Primary),2013-08-17T03:37:36.723,POINT (173.93833 -41.737699) | |
quake.2013p616615,2013p616615,2013-08-17T03:32:43.831,174.2297,-41.6439,5.0586,2.2258,M,automatic,14,,WEL(GNS_Primary),2013-08-17T03:34:34.02,POINT (174.22974 -41.643859) | |
quake.2013p616608,2013p616608,2013-08-17T03:29:00.992,172.6124,-43.663,24.5703,2.6053,M,automatic,12,,WEL(GNS_Primary),2013-08-17T03:31:26.185,POINT (172.61236 -43.662957) | |
quake.2013p616595,2013p616595,2013-08-17T03:22:18.079,174.2414,-41.6015,11.2109,1.9535,M,automatic,16,,WEL(GNS_Primary),2013-08-17T03:24:02.496,POINT (174.24144 -41.601453) | |
quake.2013p616593,2013p616593,2013-08-17T03:20:59.179,174.1715,-41.5227,27.3828,1.9556,M,automatic,14,,WEL(GNS_Primary),2013-08-17T03:22:46.945,POINT (174.17147 -41.522652) | |
quake.2013p616589,2013p616589,2013-08-17T03:18:57.497,174.1969,-41.6936,11.4453,2.0683,M,automatic,14,,WEL(GNS_Primary),2013-08-17T03:20:51.373,POINT (174.19686 -41.693567) | |
quake.2013p616587,2013p616587,2013-08-17T03:17:38.193,174.3253,-41.5555,8.3984,2.0807,M,automatic,14,,WEL(GNS_Primary),2013-08-17T03:19:47.408,POINT (174.32531 -41.555541) | |
quake.2013p616582,2013p616582,2013-08-17T03:15:26.558,174.1534,-41.7674,12.6172,2.9972,M,automatic,46,,WEL(GNS_Primary),2013-08-17T03:19:05.155,POINT (174.15336 -41.767366) | |
quake.2013p616578,2013p616578,2013-08-17T03:13:00.943,174.0442,-41.7325,5.1172,2.3035,M,automatic,17,,WEL(GNS_Primary),2013-08-17T03:15:05.895,POINT (174.04423 -41.732464) | |
quake.2013p616574,2013p616574,2013-08-17T03:10:57.779,174.2337,-41.6538,5.1172,2.4785,M,automatic,26,,WEL(GNS_Primary),2013-08-17T03:14:40.728,POINT (174.23367 -41.653775) | |
quake.2013p616568,2013p616568,2013-08-17T03:07:41.854,174.194,-41.6509,8.3984,2.4459,M,automatic,22,,WEL(GNS_Primary),2013-08-17T03:09:42.314,POINT (174.19396 -41.65094) | |
quake.2013p616560,2013p616560,2013-08-17T03:03:48.593,174.2488,-41.5414,14.668,2.4882,M,automatic,23,,WEL(GNS_Primary),2013-08-17T03:06:29.366,POINT (174.2488 -41.541403) | |
quake.2013p616554,2013p616554,2013-08-17T03:00:23.506,174.8519,-40.3856,6.875,2.9551,M,automatic,14,,WEL(GNS_Primary),2013-08-17T03:03:38.239,POINT (174.85187 -40.385619) | |
quake.2013p616553,2013p616553,2013-08-17T03:00:02.413,173.747,-41.7458,23.2812,3.7045,M,automatic,26,,WEL(GNS_Primary),2013-08-17T03:03:38.24,POINT (173.74695 -41.745848) | |
quake.2013p616547,2013p616547,2013-08-17T02:56:41.667,174.0767,-41.6709,19.4141,2.4269,M,automatic,21,,WEL(GNS_Primary),2013-08-17T03:00:19.084,POINT (174.07673 -41.670853) | |
quake.2013p616534,2013p616534,2013-08-17T02:49:54.781,173.9118,-41.7492,5.0586,3.1205,M,automatic,33,,WEL(GNS_Primary),2013-08-17T02:54:12.473,POINT (173.91183 -41.749227) | |
quake.2013p616528,2013p616528,2013-08-17T02:46:45.753,176.4336,-39.0521,19.2969,2.5591,M,automatic,11,,WEL(GNS_Primary),2013-08-17T02:48:47.91,POINT (176.43364 -39.052083) | |
quake.2013p616527,2013p616527,2013-08-17T02:45:47.76,173.9241,-41.7398,6.7578,4.088,M,reviewed,35,,WEL(GNS_Primary),2013-08-17T03:13:28.645,POINT (173.9241 -41.739784) | |
quake.2013p616518,2013p616518,2013-08-17T02:41:21.26,177.7291,-36.7002,205.625,2.9356,M,automatic,21,,WEL(GNS_Primary),2013-08-17T02:44:48.309,POINT (177.72911 -36.700184) | |
quake.2013p616515,2013p616515,2013-08-17T02:39:15.104,174.2484,-41.6167,5.1172,2.1081,M,automatic,12,,WEL(GNS_Primary),2013-08-17T02:41:02.848,POINT (174.24843 -41.616673) | |
quake.2013p616512,2013p616512,2013-08-17T02:37:49.572,176.8019,-39.732,35.8203,2.0425,M,automatic,17,,WEL(GNS_Primary),2013-08-17T02:39:29.823,POINT (176.80187 -39.731983) | |
quake.2013p616502,2013p616502,2013-08-17T02:32:24.093,174.225,-41.6293,21.2891,2.4783,M,automatic,27,,WEL(GNS_Primary),2013-08-17T02:34:29.743,POINT (174.22495 -41.629329) | |
quake.2013p616495,2013p616495,2013-08-17T02:28:51.633,174.1578,-41.6449,5.1172,2.4192,M,automatic,10,,WEL(GNS_Primary),2013-08-17T02:31:05.875,POINT (174.15782 -41.644873) | |
quake.2013p616491,2013p616491,2013-08-17T02:27:28.76,174.1008,-41.6851,5.0586,3.2926,M,automatic,31,,WEL(GNS_Primary),2013-08-17T02:31:45.725,POINT (174.10083 -41.685117) | |
quake.2013p616486,2013p616486,2013-08-17T02:23:45.587,174.2713,-41.6499,5.5859,3.6288,M,automatic,68,,WEL(GNS_Primary),2013-08-17T02:27:42.654,POINT (174.27129 -41.649876) | |
quake.2013p616474,2013p616474,2013-08-17T02:17:47.847,173.3731,-40.8487,48.125,2.8905,M,automatic,11,,WEL(GNS_Primary),2013-08-17T02:20:49.12,POINT (173.3731 -40.848668) | |
quake.2013p616469,2013p616469,2013-08-17T02:15:04.931,174.1962,-41.636,16.3672,3.1914,M,automatic,60,,WEL(GNS_Primary),2013-08-17T02:19:58.573,POINT (174.19619 -41.635991) | |
quake.2013p616467,2013p616467,2013-08-17T02:13:53.586,174.1612,-41.6633,5.1172,2.4863,M,automatic,12,,WEL(GNS_Primary),2013-08-17T02:15:43.497,POINT (174.16123 -41.663325) | |
quake.2013p616457,2013p616457,2013-08-17T02:08:22.58,174.3088,-41.7302,20.8203,3.4017,M,automatic,70,,WEL(GNS_Primary),2013-08-17T02:11:59.911,POINT (174.30884 -41.73022) | |
quake.2013p616449,2013p616449,2013-08-17T02:04:05.665,174.2738,-41.6072,5.4102,2.9018,M,automatic,30,,WEL(GNS_Primary),2013-08-17T02:11:36.574,POINT (174.27375 -41.607199) | |
quake.2013p616443,2013p616443,2013-08-17T02:01:05.033,174.1391,-41.7388,11.7383,4.067,M,reviewed,35,,WEL(GNS_Primary),2013-08-17T03:07:12.114,POINT (174.1391 -41.738794) | |
quake.2013p616440,2013p616440,2013-08-17T01:59:34.099,174.3175,-41.7029,7.6953,2.2164,M,automatic,16,,WEL(GNS_Primary),2013-08-17T02:02:09.158,POINT (174.3175 -41.702948) | |
quake.2013p616437,2013p616437,2013-08-17T01:58:01.843,174.1771,-41.7222,5.1172,2.7436,M,automatic,32,,WEL(GNS_Primary),2013-08-17T02:01:10.324,POINT (174.17713 -41.722184) | |
quake.2013p616432,2013p616432,2013-08-17T01:55:09.203,174.2381,-41.6654,19.9414,3.3074,M,automatic,59,,WEL(GNS_Primary),2013-08-17T01:58:50.283,POINT (174.23812 -41.665376) | |
quake.2013p616427,2013p616427,2013-08-17T01:52:37.555,174.2254,-41.616,8.3984,2.3417,M,automatic,18,,WEL(GNS_Primary),2013-08-17T01:58:29.78,POINT (174.22539 -41.615996) | |
quake.2013p616417,2013p616417,2013-08-17T01:47:02.143,174.2338,-41.5804,19.1797,2.7159,M,automatic,26,,WEL(GNS_Primary),2013-08-17T01:49:03.416,POINT (174.23377 -41.580374) | |
quake.2013p616404,2013p616404,2013-08-17T01:40:33.105,174.2362,-41.6472,18.0078,2.6122,M,automatic,32,,WEL(GNS_Primary),2013-08-17T01:45:44.141,POINT (174.23619 -41.647176) | |
quake.2013p616395,2013p616395,2013-08-17T01:35:18.83,174.1629,-41.6834,5.1172,2.3399,M,automatic,15,,WEL(GNS_Primary),2013-08-17T01:38:04.014,POINT (174.16286 -41.683393) | |
quake.2013p616387,2013p616387,2013-08-17T01:31:23.328,176.2836,-38.9358,92.8906,2.5818,M,automatic,59,,WEL(GNS_Primary),2013-08-17T02:00:55.149,POINT (176.28364 -38.935826) | |
quake.2013p616375,2013p616375,2013-08-17T01:24:36.197,174.1231,-41.7323,21.5234,2.9332,M,automatic,46,,WEL(GNS_Primary),2013-08-17T01:28:14.049,POINT (174.12308 -41.732276) | |
quake.2013p616372,2013p616372,2013-08-17T01:23:26.674,174.1893,-41.4752,16.7188,2.0835,M,automatic,15,,WEL(GNS_Primary),2013-08-17T01:25:20.545,POINT (174.18932 -41.475213) | |
quake.2013p616368,2013p616368,2013-08-17T01:20:54.745,174.011,-41.7473,7.6953,2.5111,M,automatic,23,,WEL(GNS_Primary),2013-08-17T01:23:50.151,POINT (174.01105 -41.747341) | |
quake.2013p616363,2013p616363,2013-08-17T01:18:30.882,174.3046,-41.665,11.2109,2.9612,M,automatic,37,,WEL(GNS_Primary),2013-08-17T01:20:51.763,POINT (174.30456 -41.665033) | |
quake.2013p616360,2013p616360,2013-08-17T01:16:34.573,173.7693,-41.9593,36.1719,2.274,M,automatic,11,,WEL(GNS_Primary),2013-08-17T01:18:44.258,POINT (173.76931 -41.959255) | |
quake.2013p616356,2013p616356,2013-08-17T01:14:47.7,167.8506,-44.6432,5.1172,2.9316,M,automatic,13,,WEL(GNS_Primary),2013-08-17T01:17:55.519,POINT (167.85058 -44.643207) | |
quake.2013p616355,2013p616355,2013-08-17T01:14:39.264,174.3121,-41.5827,10.0391,2.2927,M,automatic,18,,WEL(GNS_Primary),2013-08-17T01:18:14.615,POINT (174.31206 -41.582677) | |
quake.2013p616352,2013p616352,2013-08-17T01:12:33.619,173.7771,-41.7509,35.2344,2.3849,M,automatic,18,,WEL(GNS_Primary),2013-08-17T01:15:35.695,POINT (173.77707 -41.750904) | |
quake.2013p616348,2013p616348,2013-08-17T01:10:23.961,174.148,-41.5717,5.0293,2.1878,M,automatic,12,,WEL(GNS_Primary),2013-08-17T01:12:20.395,POINT (174.14795 -41.571697) | |
quake.2013p616341,2013p616341,2013-08-17T01:06:28.084,176.7644,-39.0701,5.8203,2.6584,M,automatic,48,,WEL(GNS_Primary),2013-08-17T01:52:38.654,POINT (176.76438 -39.070088) | |
quake.2013p616338,2013p616338,2013-08-17T01:06:11.786,174.2896,-41.7142,20.7031,3.5297,M,automatic,54,,WEL(GNS_Primary),2013-08-17T01:10:00.412,POINT (174.28957 -41.714223) | |
quake.2013p616328,2013p616328,2013-08-17T01:00:02.81,174.2832,-41.6844,12.6172,3.0214,M,automatic,43,,WEL(GNS_Primary),2013-08-17T01:02:47.995,POINT (174.28316 -41.684424) | |
quake.2013p616319,2013p616319,2013-08-17T00:54:59.964,175.5725,-40.8909,23.457,1.6053,M,automatic,12,,WEL(GNS_Primary),2013-08-17T00:56:34.448,POINT (175.57246 -40.890917) | |
quake.2013p616309,2013p616309,2013-08-17T00:49:27.38,174.081,-41.7246,5.0586,2.4762,M,automatic,23,,WEL(GNS_Primary),2013-08-17T00:51:39.984,POINT (174.08097 -41.724575) | |
quake.2013p616299,2013p616299,2013-08-17T00:44:29.777,174.0014,-41.6486,20.8203,2.0515,M,automatic,11,,WEL(GNS_Primary),2013-08-17T00:46:12.247,POINT (174.00137 -41.648618) | |
quake.2013p616272,2013p616272,2013-08-17T00:30:06.87,176.2891,-40.8291,24.1016,1.892,M,automatic,10,,WEL(GNS_Primary),2013-08-17T00:31:35.33,POINT (176.28908 -40.829071) | |
quake.2013p616263,2013p616263,2013-08-17T00:25:12.822,174.1392,-41.743,11.8555,4.0894,M,reviewed,42,,WEL(GNS_Primary),2013-08-17T03:18:43.486,POINT (174.13924 -41.742969) | |
quake.2013p616258,2013p616258,2013-08-17T00:22:48.012,174.1218,-41.6688,8.3984,2.8907,M,automatic,27,,WEL(GNS_Primary),2013-08-17T00:25:28.14,POINT (174.12181 -41.668841) | |
quake.2013p616255,2013p616255,2013-08-17T00:20:39.368,174.153,-41.5125,6.875,3.6043,M,automatic,22,,WEL(GNS_Primary),2013-08-17T00:24:14.916,POINT (174.15296 -41.512514) | |
quake.2013p616253,2013p616253,2013-08-17T00:20:29.146,174.1354,-41.7174,5.0586,3.3357,M,automatic,49,,WEL(GNS_Primary),2013-08-17T00:24:04.946,POINT (174.13536 -41.717412) | |
quake.2013p616229,2013p616229,2013-08-17T00:07:18.243,174.0881,-41.7235,7.7539,2.8949,M,automatic,45,,WEL(GNS_Primary),2013-08-17T00:10:10.84,POINT (174.08808 -41.723532) | |
quake.2013p616224,2013p616224,2013-08-17T00:04:21.889,174.239,-41.5864,5.1172,2.208,M,automatic,14,,WEL(GNS_Primary),2013-08-17T00:06:01.023,POINT (174.23905 -41.586368) | |
quake.2013p616221,2013p616221,2013-08-17T00:02:55.37,173.8086,-41.5683,36.6406,2.2288,M,automatic,11,,WEL(GNS_Primary),2013-08-17T00:05:03.767,POINT (173.80855 -41.568281) | |
quake.2013p616218,2013p616218,2013-08-17T00:01:06.614,174.1088,-41.5709,19.4141,2.2126,M,automatic,13,,WEL(GNS_Primary),2013-08-17T00:03:05.415,POINT (174.10877 -41.570857) | |
quake.2013p616208,2013p616208,2013-08-16T23:56:02.468,174.4327,-41.4211,7.4609,2.1403,M,automatic,14,,WEL(GNS_Primary),2013-08-16T23:57:47.696,POINT (174.4327 -41.42108) | |
quake.2013p616205,2013p616205,2013-08-16T23:54:17.571,174.0829,-41.7115,9.4531,2.7566,M,automatic,32,,WEL(GNS_Primary),2013-08-16T23:57:42.148,POINT (174.08294 -41.711494) | |
quake.2013p616191,2013p616191,2013-08-16T23:46:42.851,174.2766,-41.5933,10.0391,2.5643,M,automatic,25,,WEL(GNS_Primary),2013-08-16T23:48:41.687,POINT (174.27657 -41.593311) | |
quake.2013p616184,2013p616184,2013-08-16T23:43:11.742,174.092,-41.6313,21.7578,2.5382,M,automatic,22,,WEL(GNS_Primary),2013-08-16T23:45:22.915,POINT (174.09196 -41.631259) | |
quake.2013p616175,2013p616175,2013-08-16T23:39:01.049,174.0852,-41.7326,5.0586,3.0703,M,automatic,35,,WEL(GNS_Primary),2013-08-16T23:43:05.879,POINT (174.08516 -41.732623) | |
quake.2013p616172,2013p616172,2013-08-16T23:36:46.074,174.0227,-41.7519,9.5703,1.9833,M,automatic,13,,WEL(GNS_Primary),2013-08-16T23:38:59.485,POINT (174.02273 -41.751855) | |
quake.2013p616166,2013p616166,2013-08-16T23:33:34.245,174.121,-41.7412,5.0586,2.8821,M,automatic,29,,WEL(GNS_Primary),2013-08-16T23:35:51.287,POINT (174.12096 -41.741181) | |
quake.2013p616158,2013p616158,2013-08-16T23:29:36.499,174.2583,-41.6336,9.5703,2.8287,M,automatic,22,,WEL(GNS_Primary),2013-08-16T23:31:51.274,POINT (174.25826 -41.633645) | |
quake.2013p616132,2013p616132,2013-08-16T23:15:31.198,174.1949,-41.6651,5.1172,2.3359,M,automatic,17,,WEL(GNS_Primary),2013-08-16T23:17:31.963,POINT (174.19492 -41.665149) | |
quake.2013p616125,2013p616125,2013-08-16T23:11:38.025,174.1785,-41.6665,8.457,2.7158,M,automatic,34,,WEL(GNS_Primary),2013-08-16T23:14:30.886,POINT (174.1785 -41.666544) | |
quake.2013p616095,2013p616095,2013-08-16T22:55:34.1,174.284,-41.5952,13.3203,2.5199,M,automatic,16,,WEL(GNS_Primary),2013-08-16T22:57:34.692,POINT (174.284 -41.595197) | |
quake.2013p616090,2013p616090,2013-08-16T22:53:07.214,173.9976,-41.5822,22.1094,1.867,M,automatic,11,,WEL(GNS_Primary),2013-08-16T22:55:14.915,POINT (173.99759 -41.582185) | |
quake.2013p616085,2013p616085,2013-08-16T22:50:21.529,174.0738,-41.7256,5.0586,3.1346,M,automatic,23,,WEL(GNS_Primary),2013-08-16T22:53:32.82,POINT (174.07385 -41.725618) | |
quake.2013p616082,2013p616082,2013-08-16T22:49:15.543,176.1102,-39.0747,9.2188,2.4017,M,automatic,12,,WEL(GNS_Primary),2013-08-16T22:51:47.634,POINT (176.11019 -39.074719) | |
quake.2013p616081,2013p616081,2013-08-16T22:48:20.415,174.0847,-41.7664,12.5586,3.7807,M,automatic,73,,WEL(GNS_Primary),2013-08-16T22:52:21.839,POINT (174.08469 -41.766394) | |
quake.2013p616070,2013p616070,2013-08-16T22:42:17.885,173.9892,-41.7993,13.0859,3.1333,M,automatic,50,,WEL(GNS_Primary),2013-08-16T22:46:20.895,POINT (173.98922 -41.799257) | |
quake.2013p616066,2013p616066,2013-08-16T22:40:24.031,174.1405,-41.6369,15.8984,2.5299,M,automatic,22,,WEL(GNS_Primary),2013-08-16T22:42:28.897,POINT (174.1405 -41.636857) | |
quake.2013p616057,2013p616057,2013-08-16T22:35:27.668,174.278,-41.584,14.1992,3.332,M,automatic,50,,WEL(GNS_Primary),2013-08-16T22:38:56.489,POINT (174.27795 -41.583967) | |
quake.2013p616052,2013p616052,2013-08-16T22:32:56.846,174.0737,-41.7317,6.9922,3.0486,M,automatic,38,,WEL(GNS_Primary),2013-08-16T22:36:15.632,POINT (174.07371 -41.731661) | |
quake.2013p616050,2013p616050,2013-08-16T22:31:32.143,174.1458,-41.6681,13.6133,2.7046,M,automatic,34,,WEL(GNS_Primary),2013-08-16T22:35:17.473,POINT (174.14585 -41.668087) | |
quake.2013p616046,2013p616046,2013-08-16T22:29:49.609,174.2717,-41.6053,8.0469,2.5064,M,automatic,23,,WEL(GNS_Primary),2013-08-16T22:32:12.625,POINT (174.27172 -41.605263) | |
quake.2013p616044,2013p616044,2013-08-16T22:28:23.878,174.2785,-41.6638,9.9219,2.21,M,automatic,19,,WEL(GNS_Primary),2013-08-16T22:30:25.226,POINT (174.27848 -41.66385) | |
quake.2013p616035,2013p616035,2013-08-16T22:23:57.969,175.3693,-39.2801,9.8047,2.6175,M,automatic,12,,WEL(GNS_Primary),2013-08-16T22:26:39.685,POINT (175.36934 -39.280145) | |
quake.2013p616034,2013p616034,2013-08-16T22:23:11.295,174.2528,-41.6493,20.1172,4.2041,M,reviewed,35,,WEL(GNS_Primary),2013-08-16T23:01:30.858,POINT (174.25285 -41.649334) | |
quake.2013p616030,2013p616030,2013-08-16T22:21:55.568,174.1694,-41.7637,10.5078,4.255,M,reviewed,32,,WEL(GNS_Primary),2013-08-16T23:02:49.611,POINT (174.16938 -41.763665) | |
quake.2013p616020,2013p616020,2013-08-16T22:15:57.117,174.1557,-41.649,16.6016,2.6471,M,automatic,30,,WEL(GNS_Primary),2013-08-16T22:18:51.137,POINT (174.15566 -41.648981) | |
quake.2013p616012,2013p616012,2013-08-16T22:11:35.768,174.191,-41.6709,5.1172,3.0214,M,automatic,31,,WEL(GNS_Primary),2013-08-16T22:13:44.321,POINT (174.19098 -41.670873) | |
quake.2013p616009,2013p616009,2013-08-16T22:09:57.872,174.1864,-41.7014,5.0586,2.5952,M,automatic,21,,WEL(GNS_Primary),2013-08-16T22:13:57.282,POINT (174.18642 -41.701394) | |
quake.2013p616006,2013p616006,2013-08-16T22:08:22.678,174.1644,-41.6421,41.3281,1.775,M,automatic,10,,WEL(GNS_Primary),2013-08-16T22:09:47.955,POINT (174.1644 -41.642147) | |
quake.2013p615995,2013p615995,2013-08-16T22:01:42.86,172.2277,-42.4911,173.75,2.9939,M,automatic,12,,WEL(GNS_Primary),2013-08-16T22:03:45.151,POINT (172.22767 -42.491056) | |
quake.2013p615990,2013p615990,2013-08-16T21:59:41.315,174.2762,-41.5332,12.3828,1.9171,M,automatic,10,,WEL(GNS_Primary),2013-08-16T22:01:07.561,POINT (174.2762 -41.533243) | |
quake.2013p615987,2013p615987,2013-08-16T21:58:00.881,174.1783,-41.5596,19.4141,2.3405,M,automatic,21,,WEL(GNS_Primary),2013-08-16T21:59:53.775,POINT (174.17829 -41.559556) | |
quake.2013p615979,2013p615979,2013-08-16T21:53:48.731,174.3049,-41.5891,9.3359,2.9701,M,automatic,37,,WEL(GNS_Primary),2013-08-16T21:56:48.289,POINT (174.30494 -41.58914) | |
quake.2013p615978,2013p615978,2013-08-16T21:53:22.744,174.1545,-41.6565,15.4297,2.952,M,automatic,15,,WEL(GNS_Primary),2013-08-16T21:56:14.479,POINT (174.15454 -41.656455) | |
quake.2013p615975,2013p615975,2013-08-16T21:51:33.341,174.015,-41.5998,11.2109,2.1757,M,automatic,15,,WEL(GNS_Primary),2013-08-16T21:53:39.559,POINT (174.01496 -41.599798) | |
quake.2013p615961,2013p615961,2013-08-16T21:44:51.35,174.2173,-41.681,5.293,2.7204,M,automatic,23,,WEL(GNS_Primary),2013-08-16T21:46:57.519,POINT (174.21726 -41.681029) | |
quake.2013p615954,2013p615954,2013-08-16T21:40:24.529,174.0688,-41.8458,5.1172,3.7652,M,automatic,82,,WEL(GNS_Primary),2013-08-16T21:44:17.661,POINT (174.06881 -41.845803) | |
quake.2013p615948,2013p615948,2013-08-16T21:37:31.715,174.1101,-41.7467,5.0586,2.8139,M,automatic,12,,WEL(GNS_Primary),2013-08-16T21:39:58.968,POINT (174.11008 -41.746701) | |
quake.2013p615945,2013p615945,2013-08-16T21:36:36.801,174.4136,-41.5417,5.0586,2.8253,M,automatic,31,,WEL(GNS_Primary),2013-08-16T21:38:45.947,POINT (174.41364 -41.541667) | |
quake.2013p615943,2013p615943,2013-08-16T21:34:39.987,174.0304,-41.7423,7.5195,2.3211,M,automatic,13,,WEL(GNS_Primary),2013-08-16T21:36:37.987,POINT (174.03037 -41.742277) | |
quake.2013p615935,2013p615935,2013-08-16T21:30:29.947,174.0037,-41.7598,5.0586,2.4538,M,automatic,23,,WEL(GNS_Primary),2013-08-16T21:32:52.927,POINT (174.00374 -41.759848) | |
quake.2013p615933,2013p615933,2013-08-16T21:29:14.669,174.0155,-41.6874,22.2266,2.3689,M,automatic,18,,WEL(GNS_Primary),2013-08-16T21:32:12.365,POINT (174.01554 -41.687408) | |
quake.2013p615931,2013p615931,2013-08-16T21:28:18.734,176.2397,-40.5863,16.9531,1.9029,M,automatic,11,,WEL(GNS_Primary),2013-08-16T21:29:54.321,POINT (176.23972 -40.586334) | |
quake.2013p615928,2013p615928,2013-08-16T21:26:54.173,174.227,-41.6361,5.1172,2.1265,M,automatic,10,,WEL(GNS_Primary),2013-08-16T21:28:31.691,POINT (174.22704 -41.636064) | |
quake.2013p615920,2013p615920,2013-08-16T21:22:09.351,173.6512,-40.63,78.125,3.4262,M,automatic,13,,WEL(GNS_Primary),2013-08-16T21:25:15.646,POINT (173.65115 -40.629992) | |
quake.2013p615916,2013p615916,2013-08-16T21:20:39.004,174.2815,-41.6018,11.9141,4.0024,M,reviewed,44,,WEL(GNS_Primary),2013-08-17T03:24:04.88,POINT (174.28149 -41.601796) | |
quake.2013p615914,2013p615914,2013-08-16T21:19:00.958,174.1616,-41.6091,5.1172,2.5079,M,automatic,22,,WEL(GNS_Primary),2013-08-16T21:21:19.108,POINT (174.16163 -41.609116) | |
quake.2013p615909,2013p615909,2013-08-16T21:16:42.427,174.1222,-41.7229,5.0586,1.9968,M,automatic,11,,WEL(GNS_Primary),2013-08-16T21:18:26.24,POINT (174.12217 -41.722865) | |
quake.2013p615905,2013p615905,2013-08-16T21:14:39.374,174.2625,-41.6261,5.0586,2.343,M,automatic,16,,WEL(GNS_Primary),2013-08-16T21:17:03.286,POINT (174.26247 -41.626053) | |
quake.2013p615893,2013p615893,2013-08-16T21:08:02.766,174.8408,-40.1134,29.8438,3.6526,M,automatic,115,,WEL(GNS_Primary),2013-08-16T21:16:05.362,POINT (174.84079 -40.113426) | |
quake.2013p615890,2013p615890,2013-08-16T21:06:15.297,174.1365,-41.6534,10.9766,2.4664,M,automatic,21,,WEL(GNS_Primary),2013-08-16T21:08:27.079,POINT (174.13647 -41.653422) | |
quake.2013p615887,2013p615887,2013-08-16T21:04:38.35,174.0583,-41.6703,19.8828,2.4358,M,automatic,15,,WEL(GNS_Primary),2013-08-16T21:06:49.209,POINT (174.05828 -41.670311) | |
quake.2013p615883,2013p615883,2013-08-16T21:02:56.785,174.2973,-41.704,18.7109,2.9521,M,automatic,36,,WEL(GNS_Primary),2013-08-16T21:06:35.397,POINT (174.29726 -41.704022) | |
quake.2013p615880,2013p615880,2013-08-16T21:00:57.846,174.0052,-41.7655,6.7578,2.2899,M,automatic,10,,WEL(GNS_Primary),2013-08-16T21:02:31.272,POINT (174.00519 -41.765522) | |
quake.2013p615872,2013p615872,2013-08-16T20:57:57.231,174.2627,-41.6867,9.4531,3.1524,M,automatic,40,,WEL(GNS_Primary),2013-08-16T21:01:07.221,POINT (174.26274 -41.686744) | |
quake.2013p615860,2013p615860,2013-08-16T20:50:31.511,174.3058,-41.604,5.0586,2.6912,M,automatic,25,,WEL(GNS_Primary),2013-08-16T20:52:31.236,POINT (174.30584 -41.603972) | |
quake.2013p615857,2013p615857,2013-08-16T20:49:06.954,174.1633,-41.6905,5.2344,1.9478,M,automatic,13,,WEL(GNS_Primary),2013-08-16T20:50:52.195,POINT (174.16334 -41.690498) | |
quake.2013p615853,2013p615853,2013-08-16T20:46:57.403,174.0931,-41.7055,7.4609,2.6753,M,automatic,31,,WEL(GNS_Primary),2013-08-16T20:50:07.219,POINT (174.09311 -41.705536) | |
quake.2013p615846,2013p615846,2013-08-16T20:43:11.515,174.2233,-41.6453,5.0586,2.5398,M,automatic,20,,WEL(GNS_Primary),2013-08-16T20:45:09.97,POINT (174.22334 -41.645339) | |
quake.2013p615844,2013p615844,2013-08-16T20:41:45.021,174.2637,-41.5554,5.1172,1.9336,M,automatic,11,,WEL(GNS_Primary),2013-08-16T20:43:22.177,POINT (174.26368 -41.555396) | |
quake.2013p615840,2013p615840,2013-08-16T20:40:00.507,174.0205,-41.7259,6.2891,2.4373,M,automatic,18,,WEL(GNS_Primary),2013-08-16T20:43:23.887,POINT (174.02049 -41.725928) | |
quake.2013p615823,2013p615823,2013-08-16T20:31:14.56,174.1518,-41.5921,15.6641,3.0784,M,automatic,47,,WEL(GNS_Primary),2013-08-16T20:35:00.283,POINT (174.15183 -41.592144) | |
quake.2013p615814,2013p615814,2013-08-16T20:26:09.993,173.9631,-41.6767,23.3984,2.257,M,automatic,13,,WEL(GNS_Primary),2013-08-16T20:28:21.542,POINT (173.96312 -41.676692) | |
quake.2013p615803,2013p615803,2013-08-16T20:20:18.566,174.2822,-41.6546,12.793,3.1676,M,automatic,45,,WEL(GNS_Primary),2013-08-16T20:23:48.356,POINT (174.28217 -41.654575) | |
quake.2013p615798,2013p615798,2013-08-16T20:17:24.706,174.3147,-41.617,8.6328,3.8982,M,automatic,81,,WEL(GNS_Primary),2013-08-16T20:21:27.462,POINT (174.31473 -41.616954) | |
quake.2013p615796,2013p615796,2013-08-16T20:16:23.77,174.2562,-41.6317,5.0586,3.7928,M,automatic,30,,WEL(GNS_Primary),2013-08-16T20:19:26.422,POINT (174.25623 -41.631708) | |
quake.2013p615790,2013p615790,2013-08-16T20:13:27.47,174.1055,-41.7568,15.1953,3.7395,M,automatic,73,,WEL(GNS_Primary),2013-08-16T20:18:09.11,POINT (174.10547 -41.756785) | |
quake.2013p615788,2013p615788,2013-08-16T20:12:07.839,174.2604,-41.6404,6.2891,2.564,M,automatic,22,,WEL(GNS_Primary),2013-08-16T20:15:43.329,POINT (174.26035 -41.640379) | |
quake.2013p615784,2013p615784,2013-08-16T20:09:59.657,174.308,-41.5944,5.293,3.1893,M,automatic,48,,WEL(GNS_Primary),2013-08-16T20:13:28.987,POINT (174.30802 -41.594444) | |
quake.2013p615780,2013p615780,2013-08-16T20:07:54.851,174.0849,-41.7243,7.6367,3.1115,M,automatic,51,,WEL(GNS_Primary),2013-08-16T20:11:19.348,POINT (174.08488 -41.724273) | |
quake.2013p615777,2013p615777,2013-08-16T20:06:08.349,174.1152,-41.7437,5.1172,2.4412,M,automatic,15,,WEL(GNS_Primary),2013-08-16T20:08:08.355,POINT (174.11517 -41.743722) | |
quake.2013p615773,2013p615773,2013-08-16T20:04:40.165,174.259,-41.5769,14.4922,2.448,M,automatic,22,,WEL(GNS_Primary),2013-08-16T20:06:48.693,POINT (174.25895 -41.576944) | |
quake.2013p615767,2013p615767,2013-08-16T20:00:44.473,174.2032,-41.5995,5.5859,2.5421,M,automatic,19,,WEL(GNS_Primary),2013-08-16T20:03:04.964,POINT (174.20317 -41.599493) | |
quake.2013p615753,2013p615753,2013-08-16T19:53:25.894,174.0719,-41.7285,5.0586,2.3545,M,automatic,20,,WEL(GNS_Primary),2013-08-16T19:55:38.052,POINT (174.07188 -41.728479) | |
quake.2013p615742,2013p615742,2013-08-16T19:47:32.377,174.0404,-41.7273,5.8203,2.2497,M,automatic,16,,WEL(GNS_Primary),2013-08-16T19:49:18.431,POINT (174.04037 -41.727346) | |
quake.2013p615737,2013p615737,2013-08-16T19:44:48.63,174.0996,-41.683,5.5273,2.6169,M,automatic,13,,WEL(GNS_Primary),2013-08-16T19:46:43.039,POINT (174.0996 -41.682995) | |
quake.2013p615733,2013p615733,2013-08-16T19:43:04.584,174.1573,-41.5765,40.5078,2.2883,M,automatic,12,,WEL(GNS_Primary),2013-08-16T19:44:32.349,POINT (174.15726 -41.576455) | |
quake.2013p615729,2013p615729,2013-08-16T19:40:44.72,174.2552,-41.6596,5.0586,2.6892,M,automatic,28,,WEL(GNS_Primary),2013-08-16T19:42:49.713,POINT (174.25518 -41.659621) | |
quake.2013p615727,2013p615727,2013-08-16T19:39:38.573,174.1964,-41.7382,5.2344,2.1576,M,automatic,10,,WEL(GNS_Primary),2013-08-16T19:41:17.172,POINT (174.19638 -41.738181) | |
quake.2013p615718,2013p615718,2013-08-16T19:34:39.61,174.1056,-41.7562,5.4102,2.254,M,automatic,11,,WEL(GNS_Primary),2013-08-16T19:36:51.263,POINT (174.10557 -41.756162) | |
quake.2013p615709,2013p615709,2013-08-16T19:29:58.52,175.1189,-39.4055,148.2031,2.5617,M,automatic,46,,WEL(GNS_Primary),2013-08-16T19:33:28.172,POINT (175.11891 -39.405522) | |
quake.2013p615695,2013p615695,2013-08-16T19:22:17.192,174.0318,-41.7432,5.0586,2.5318,M,automatic,33,,WEL(GNS_Primary),2013-08-16T20:34:58.672,POINT (174.03179 -41.743153) | |
quake.2013p615692,2013p615692,2013-08-16T19:20:52.184,174.0772,-41.7441,5.0586,2.0189,M,automatic,11,,WEL(GNS_Primary),2013-08-16T19:22:38.137,POINT (174.07725 -41.74407) | |
quake.2013p615687,2013p615687,2013-08-16T19:18:21.246,172.8329,-43.4606,23.1641,2.994,M,automatic,16,,WEL(GNS_Primary),2013-08-16T19:20:26.362,POINT (172.83293 -43.460566) | |
quake.2013p615685,2013p615685,2013-08-16T19:17:00.053,174.0748,-41.735,6.2891,2.9264,M,automatic,44,,WEL(GNS_Primary),2013-08-16T19:20:42.428,POINT (174.07475 -41.735029) | |
quake.2013p615681,2013p615681,2013-08-16T19:15:12.945,174.0713,-41.7274,5.1172,2.4997,M,automatic,22,,WEL(GNS_Primary),2013-08-16T19:17:51.407,POINT (174.07126 -41.727418) | |
quake.2013p615679,2013p615679,2013-08-16T19:13:49.151,174.1796,-41.7264,5.1172,2.5652,M,automatic,14,,WEL(GNS_Primary),2013-08-16T19:15:49.68,POINT (174.17959 -41.726427) | |
quake.2013p615674,2013p615674,2013-08-16T19:11:20.779,174.2864,-41.6103,5.1172,2.2886,M,automatic,19,,WEL(GNS_Primary),2013-08-16T19:13:16.027,POINT (174.2864 -41.610282) | |
quake.2013p615672,2013p615672,2013-08-16T19:10:09.79,174.4615,-41.6046,5.1172,2.4833,M,automatic,21,,WEL(GNS_Primary),2013-08-16T19:12:49.184,POINT (174.46154 -41.604588) | |
quake.2013p615667,2013p615667,2013-08-16T19:07:41.282,174.0655,-41.7756,14.7266,3.5685,M,automatic,69,,WEL(GNS_Primary),2013-08-16T19:11:15.702,POINT (174.06551 -41.775634) | |
quake.2013p615661,2013p615661,2013-08-16T19:04:33.096,174.3884,-41.5566,5.1172,2.1961,M,automatic,15,,WEL(GNS_Primary),2013-08-16T19:06:29.533,POINT (174.38835 -41.556562) | |
quake.2013p615640,2013p615640,2013-08-16T18:53:34.749,174.1687,-41.6339,19.7656,3.2474,M,automatic,41,,WEL(GNS_Primary),2013-08-16T18:57:06.979,POINT (174.16872 -41.633932) | |
quake.2013p615639,2013p615639,2013-08-16T18:52:57.374,175.8184,-39.3001,43.2031,2.9022,M,automatic,32,,WEL(GNS_Primary),2013-08-16T19:04:45.399,POINT (175.81839 -39.300056) | |
quake.2013p615630,2013p615630,2013-08-16T18:47:53.875,174.2625,-41.5737,17.0703,2.0512,M,automatic,15,,WEL(GNS_Primary),2013-08-16T18:49:43.704,POINT (174.26251 -41.573712) | |
quake.2013p615622,2013p615622,2013-08-16T18:43:44.504,174.2757,-41.6621,12.7344,2.6855,M,automatic,34,,WEL(GNS_Primary),2013-08-16T19:00:26.726,POINT (174.27566 -41.662099) | |
quake.2013p615618,2013p615618,2013-08-16T18:42:19.806,174.2299,-41.627,16.3672,1.9475,M,automatic,11,,WEL(GNS_Primary),2013-08-16T18:43:55.241,POINT (174.22993 -41.626973) | |
quake.2013p615615,2013p615615,2013-08-16T18:40:09.345,174.0124,-41.7693,5.293,2.2245,M,automatic,19,,WEL(GNS_Primary),2013-08-16T18:42:13.805,POINT (174.01235 -41.769278) | |
quake.2013p615612,2013p615612,2013-08-16T18:38:23.098,176.7585,-38.6724,57.6172,1.7918,M,automatic,19,,WEL(GNS_Primary),2013-08-16T18:40:49.606,POINT (176.75847 -38.672441) | |
quake.2013p615613,2013p615613,2013-08-16T18:38:19.946,174.0804,-41.6977,5.1172,2.1986,M,automatic,16,,WEL(GNS_Primary),2013-08-16T18:40:59.739,POINT (174.0804 -41.697655) | |
quake.2013p615607,2013p615607,2013-08-16T18:35:45.814,174.0496,-41.7276,8.6328,2.334,M,automatic,22,,WEL(GNS_Primary),2013-08-16T18:37:57.335,POINT (174.0496 -41.727617) | |
quake.2013p615603,2013p615603,2013-08-16T18:33:21.669,174.2952,-41.613,7.6953,2.4138,M,automatic,15,,WEL(GNS_Primary),2013-08-16T18:35:18.74,POINT (174.29525 -41.613045) | |
quake.2013p615593,2013p615593,2013-08-16T18:28:05.71,174.1807,-41.8428,45.5469,2.7395,M,automatic,19,,WEL(GNS_Primary),2013-08-16T18:30:18.502,POINT (174.18073 -41.842826) | |
quake.2013p615590,2013p615590,2013-08-16T18:26:29.418,174.1791,-41.6472,7.6953,2.4227,M,automatic,23,,WEL(GNS_Primary),2013-08-16T18:29:25.522,POINT (174.17908 -41.647167) | |
quake.2013p615585,2013p615585,2013-08-16T18:24:56.204,174.2864,-41.6259,7.168,2.4918,M,automatic,30,,WEL(GNS_Primary),2013-08-16T18:27:22.155,POINT (174.28641 -41.625922) | |
quake.2013p615579,2013p615579,2013-08-16T18:20:40.224,174.0297,-41.838,10.0391,3.6862,M,automatic,81,,WEL(GNS_Primary),2013-08-16T18:53:00.769,POINT (174.02974 -41.837985) | |
quake.2013p615573,2013p615573,2013-08-16T18:17:38.019,174.0146,-41.8259,5.1172,3.4498,M,automatic,38,,WEL(GNS_Primary),2013-08-16T18:25:52.363,POINT (174.01456 -41.825861) | |
quake.2013p615566,2013p615566,2013-08-16T18:13:35.528,174.2491,-41.6382,5.0586,2.7396,M,automatic,28,,WEL(GNS_Primary),2013-08-16T18:16:11.375,POINT (174.2491 -41.638172) | |
quake.2013p615558,2013p615558,2013-08-16T18:09:29.66,174.0807,-41.7264,8.5156,2.3549,M,automatic,21,,WEL(GNS_Primary),2013-08-16T18:11:44.082,POINT (174.08068 -41.726444) | |
quake.2013p615544,2013p615544,2013-08-16T18:02:06.425,174.2358,-41.6497,5.1172,2.1937,M,automatic,21,,WEL(GNS_Primary),2013-08-16T18:04:30.206,POINT (174.23582 -41.649668) | |
quake.2013p615539,2013p615539,2013-08-16T17:59:09.79,175.2442,-39.297,26.7383,2.0964,M,automatic,20,,WEL(GNS_Primary),2013-08-16T18:01:54.157,POINT (175.24423 -39.296974) | |
quake.2013p615538,2013p615538,2013-08-16T17:58:46.601,174.2071,-41.7285,13.6719,3.5605,M,automatic,61,,WEL(GNS_Primary),2013-08-16T18:45:08.361,POINT (174.2071 -41.728485) | |
quake.2013p615532,2013p615532,2013-08-16T17:55:53.43,174.075,-41.7181,5.0586,2.5883,M,automatic,30,,WEL(GNS_Primary),2013-08-16T17:58:33.187,POINT (174.07499 -41.718143) | |
quake.2013p615530,2013p615530,2013-08-16T17:54:53.634,174.4568,-41.8392,57.2656,2.4732,M,automatic,11,,WEL(GNS_Primary),2013-08-16T17:57:48.313,POINT (174.45682 -41.839236) | |
quake.2013p615524,2013p615524,2013-08-16T17:52:31.46,174.1496,-41.6997,8.6328,3.2707,M,automatic,65,,WEL(GNS_Primary),2013-08-16T18:42:56.715,POINT (174.1496 -41.699687) | |
quake.2013p615509,2013p615509,2013-08-16T17:43:20.933,174.1931,-41.7185,8.6328,2.0633,M,automatic,15,,WEL(GNS_Primary),2013-08-16T17:45:22.911,POINT (174.19314 -41.718483) | |
quake.2013p615506,2013p615506,2013-08-16T17:41:42.301,174.097,-41.6181,23.6328,2.281,M,automatic,18,,WEL(GNS_Primary),2013-08-16T17:43:42.915,POINT (174.09704 -41.618061) | |
quake.2013p615500,2013p615500,2013-08-16T17:39:32.393,174.2808,-41.6687,12.0898,2.8626,M,automatic,35,,WEL(GNS_Primary),2013-08-16T17:41:52.046,POINT (174.28085 -41.668716) | |
quake.2013p615497,2013p615497,2013-08-16T17:37:08.682,174.0669,-41.6948,11.2109,2.0277,M,automatic,10,,WEL(GNS_Primary),2013-08-16T17:38:54.831,POINT (174.06694 -41.694757) | |
quake.2013p615492,2013p615492,2013-08-16T17:34:36.782,174.1046,-41.6957,6.2305,2.4267,M,automatic,24,,WEL(GNS_Primary),2013-08-16T19:53:40.242,POINT (174.10464 -41.695656) | |
quake.2013p615489,2013p615489,2013-08-16T17:32:45.989,174.015,-41.6503,22.3438,2.2193,M,automatic,12,,WEL(GNS_Primary),2013-08-16T17:34:43.778,POINT (174.01501 -41.65027) | |
quake.2013p615485,2013p615485,2013-08-16T17:30:28.27,173.9867,-41.7349,8.8672,2.3213,M,automatic,17,,WEL(GNS_Primary),2013-08-16T17:33:08.791,POINT (173.98667 -41.734946) | |
quake.2013p615484,2013p615484,2013-08-16T17:29:54.95,177.4166,-37.3327,8.9844,2.72,M,automatic,34,,WEL(GNS_Primary),2013-08-16T19:52:17.664,POINT (177.41655 -37.332655) | |
quake.2013p615481,2013p615481,2013-08-16T17:28:29.289,174.2493,-41.6941,5.0586,2.3471,M,automatic,21,,WEL(GNS_Primary),2013-08-16T17:31:42.264,POINT (174.2493 -41.694065) | |
quake.2013p615476,2013p615476,2013-08-16T17:25:37.289,172.9213,-38.7319,312.5,3.7951,M,automatic,20,,WEL(GNS_Primary),2013-08-16T17:29:18.829,POINT (172.92127 -38.731925) | |
quake.2013p615474,2013p615474,2013-08-16T17:24:59.713,174.2772,-41.5475,5.1172,2.8445,M,automatic,27,,WEL(GNS_Primary),2013-08-16T17:28:33.292,POINT (174.27718 -41.547452) | |
quake.2013p615473,2013p615473,2013-08-16T17:24:07.962,177.3675,-38.2683,443.75,2.7322,M,automatic,15,,WEL(GNS_Primary),2013-08-16T17:27:49.524,POINT (177.36754 -38.26834) | |
quake.2013p615471,2013p615471,2013-08-16T17:23:23.748,174.2374,-41.618,9.5703,2.5618,M,automatic,24,,WEL(GNS_Primary),2013-08-16T17:25:32.755,POINT (174.23743 -41.618018) | |
quake.2013p615466,2013p615466,2013-08-16T17:21:41.239,174.4023,-41.5557,16.0156,2.057,M,automatic,13,,WEL(GNS_Primary),2013-08-16T17:23:03.297,POINT (174.40234 -41.555722) | |
quake.2013p615463,2013p615463,2013-08-16T17:18:42.084,174.2575,-41.6495,5.1172,2.5432,M,automatic,12,,WEL(GNS_Primary),2013-08-16T17:20:17.333,POINT (174.25746 -41.64947) | |
quake.2013p615460,2013p615460,2013-08-16T17:18:09.799,174.2197,-41.6233,10.0391,2.3034,M,automatic,11,,WEL(GNS_Primary),2013-08-16T17:19:44.665,POINT (174.21967 -41.623335) | |
quake.2013p615457,2013p615457,2013-08-16T17:15:37.731,174.2901,-41.5854,5.1172,2.1951,M,automatic,15,,WEL(GNS_Primary),2013-08-16T17:17:25.161,POINT (174.29008 -41.585367) | |
quake.2013p615453,2013p615453,2013-08-16T17:13:22.209,174.0904,-41.7182,5.293,1.9259,M,automatic,10,,WEL(GNS_Primary),2013-08-16T17:15:22.686,POINT (174.09043 -41.718179) | |
quake.2013p615434,2013p615434,2013-08-16T17:03:40.745,174.2258,-41.67,5.0586,2.6308,M,automatic,24,,WEL(GNS_Primary),2013-08-16T17:07:28.32,POINT (174.22585 -41.67002) | |
quake.2013p615432,2013p615432,2013-08-16T17:02:13.73,174.2031,-41.6933,11.3281,2.6397,M,automatic,24,,WEL(GNS_Primary),2013-08-16T17:04:17.605,POINT (174.20307 -41.693333) | |
quake.2013p615424,2013p615424,2013-08-16T16:58:25.636,175.13,-41.4854,21.6406,3.5777,M,automatic,51,,WEL(GNS_Primary),2013-08-16T17:04:46.48,POINT (175.13003 -41.485409) | |
quake.2013p615422,2013p615422,2013-08-16T16:58:01.353,175.321,-41.5786,31.7188,3.3019,M,automatic,12,,WEL(GNS_Primary),2013-08-16T17:00:55.292,POINT (175.32101 -41.578573) | |
quake.2013p615418,2013p615418,2013-08-16T16:54:58.968,174.057,-41.7295,20.5859,2.4411,M,automatic,21,,WEL(GNS_Primary),2013-08-16T17:11:42.825,POINT (174.05704 -41.729504) | |
quake.2013p615406,2013p615406,2013-08-16T16:48:24.777,174.0402,-41.6673,28.7891,2.3176,M,automatic,18,,WEL(GNS_Primary),2013-08-16T16:50:28.448,POINT (174.04021 -41.667278) | |
quake.2013p615394,2013p615394,2013-08-16T16:41:59.489,174.1386,-41.7732,18.3594,3.9269,M,automatic,82,,WEL(GNS_Primary),2013-08-16T17:07:36.653,POINT (174.13857 -41.773188) | |
quake.2013p615390,2013p615390,2013-08-16T16:40:04.905,174.2454,-41.5849,10.0391,2.3786,M,automatic,20,,WEL(GNS_Primary),2013-08-16T16:42:22.23,POINT (174.24543 -41.584888) | |
quake.2013p615386,2013p615386,2013-08-16T16:38:03.42,174.2701,-41.6165,5.1172,2.1286,M,automatic,15,,WEL(GNS_Primary),2013-08-16T16:39:59.771,POINT (174.27006 -41.616475) | |
quake.2013p615379,2013p615379,2013-08-16T16:34:07.264,174.261,-41.6462,8.1641,2.3376,M,automatic,22,,WEL(GNS_Primary),2013-08-16T16:36:05.903,POINT (174.26102 -41.646238) | |
quake.2013p615375,2013p615375,2013-08-16T16:31:53.232,174.0231,-41.7494,6.9922,2.4525,M,automatic,17,,WEL(GNS_Primary),2013-08-16T16:34:04.092,POINT (174.02311 -41.749363) | |
quake.2013p615367,2013p615367,2013-08-16T16:27:38.249,174.2766,-41.1758,12.5,3.4724,M,automatic,13,,WEL(GNS_Primary),2013-08-16T16:31:09.575,POINT (174.27663 -41.175831) | |
quake.2013p615366,2013p615366,2013-08-16T16:27:21.085,174.2251,-41.7736,7.6953,3.2522,M,automatic,50,,WEL(GNS_Primary),2013-08-16T17:02:38.711,POINT (174.2251 -41.773641) | |
quake.2013p615363,2013p615363,2013-08-16T16:25:33.532,174.093,-41.5938,22.6953,2.5534,M,automatic,23,,WEL(GNS_Primary),2013-08-16T16:27:47.877,POINT (174.09299 -41.593751) | |
quake.2013p615359,2013p615359,2013-08-16T16:23:24.229,174.2449,-41.6199,5.1172,3.0123,M,automatic,38,,WEL(GNS_Primary),2013-08-16T16:26:22.022,POINT (174.24487 -41.619905) | |
quake.2013p615357,2013p615357,2013-08-16T16:22:13.768,174.2119,-41.6757,5.1172,2.4366,M,automatic,20,,WEL(GNS_Primary),2013-08-16T16:24:15.003,POINT (174.21188 -41.675657) | |
quake.2013p615351,2013p615351,2013-08-16T16:19:25.116,174.0298,-41.746,7.0508,2.2369,M,automatic,16,,WEL(GNS_Primary),2013-08-16T16:21:33.159,POINT (174.02981 -41.746014) | |
quake.2013p615348,2013p615348,2013-08-16T16:17:31.245,174.1245,-41.6814,5.1172,2.1469,M,automatic,15,,WEL(GNS_Primary),2013-08-16T16:20:41.109,POINT (174.12454 -41.681434) | |
quake.2013p615342,2013p615342,2013-08-16T16:14:29.685,174.1803,-41.5976,10.3906,2.3925,M,automatic,23,,WEL(GNS_Primary),2013-08-16T16:17:27.137,POINT (174.18032 -41.59757) | |
quake.2013p615337,2013p615337,2013-08-16T16:11:55.932,174.2456,-41.74,7.6953,3.0055,M,automatic,41,,WEL(GNS_Primary),2013-08-16T16:15:57.731,POINT (174.24556 -41.740041) | |
quake.2013p615332,2013p615332,2013-08-16T16:09:11.861,174.2936,-41.6664,10.9766,2.7703,M,automatic,40,,WEL(GNS_Primary),2013-08-16T16:55:44.872,POINT (174.29355 -41.666378) | |
quake.2013p615325,2013p615325,2013-08-16T16:05:16.846,174.0541,-41.6977,15.8984,2.2804,M,automatic,21,,WEL(GNS_Primary),2013-08-16T16:07:19.762,POINT (174.05413 -41.697718) | |
quake.2013p615319,2013p615319,2013-08-16T16:02:02.413,174.3071,-41.5538,7.8125,2.2972,M,automatic,10,,WEL(GNS_Primary),2013-08-16T16:03:32.322,POINT (174.30707 -41.553753) | |
quake.2013p615315,2013p615315,2013-08-16T16:00:01.509,174.0829,-41.7217,5.0586,2.4893,M,automatic,15,,WEL(GNS_Primary),2013-08-16T16:02:35.914,POINT (174.08294 -41.721713) | |
quake.2013p615307,2013p615307,2013-08-16T15:56:56.502,174.2198,-41.5187,16.9531,2.3224,M,automatic,11,,WEL(GNS_Primary),2013-08-16T15:59:31.712,POINT (174.21982 -41.518654) | |
quake.2013p615305,2013p615305,2013-08-16T15:54:36.265,174.2326,-41.5572,8.9258,2.2791,M,automatic,12,,WEL(GNS_Primary),2013-08-16T15:57:27.743,POINT (174.23259 -41.557192) | |
quake.2013p615298,2013p615298,2013-08-16T15:51:05.949,174.2482,-41.7743,5.1172,3.6557,M,automatic,74,,WEL(GNS_Primary),2013-08-16T16:50:27.767,POINT (174.2482 -41.774318) | |
quake.2013p615294,2013p615294,2013-08-16T15:48:44.816,173.9876,-41.7389,7.8711,3.3081,M,automatic,28,,WEL(GNS_Primary),2013-08-16T15:51:52.589,POINT (173.9876 -41.738936) | |
quake.2013p615289,2013p615289,2013-08-16T15:46:13.74,174.2342,-41.7126,12.2656,4.238,M,automatic,102,,WEL(GNS_Primary),2013-08-16T16:48:43.386,POINT (174.23419 -41.712598) | |
quake.2013p615286,2013p615286,2013-08-16T15:44:30.97,174.242,-41.6651,5.0586,4.0428,M,automatic,46,,WEL(GNS_Primary),2013-08-16T15:48:07.524,POINT (174.24202 -41.665073) | |
quake.2013p615283,2013p615283,2013-08-16T15:43:00.035,174.1034,-41.7603,5.0586,2.7412,M,automatic,32,,WEL(GNS_Primary),2013-08-16T15:46:30.507,POINT (174.1034 -41.760269) | |
quake.2013p615276,2013p615276,2013-08-16T15:39:07.212,174.2206,-41.4824,15.1953,2.2011,M,automatic,14,,WEL(GNS_Primary),2013-08-16T15:42:21.029,POINT (174.22058 -41.482391) | |
quake.2013p615264,2013p615264,2013-08-16T15:32:54.449,174.1844,-41.5906,10.0391,2.1237,M,automatic,10,,WEL(GNS_Primary),2013-08-16T15:34:33.227,POINT (174.18445 -41.590601) | |
quake.2013p615261,2013p615261,2013-08-16T15:31:10.556,174.1294,-41.5877,26.3281,2.0554,M,automatic,11,,WEL(GNS_Primary),2013-08-16T15:33:11.486,POINT (174.12936 -41.58773) | |
quake.2013p615256,2013p615256,2013-08-16T15:28:26.435,174.0846,-41.7309,5.0586,2.4213,M,automatic,18,,WEL(GNS_Primary),2013-08-16T15:30:45.82,POINT (174.08464 -41.730939) | |
quake.2013p615254,2013p615254,2013-08-16T15:27:26.365,174.0809,-41.7354,5.0586,2.245,M,automatic,14,,WEL(GNS_Primary),2013-08-16T15:29:35.077,POINT (174.08087 -41.735417) | |
quake.2013p615249,2013p615249,2013-08-16T15:24:43.656,174.1236,-41.6059,23.9844,2.0771,M,automatic,11,,WEL(GNS_Primary),2013-08-16T15:26:10.146,POINT (174.12355 -41.605911) | |
quake.2013p615243,2013p615243,2013-08-16T15:21:55.266,174.0339,-41.724,6.6992,2.7713,M,automatic,39,,WEL(GNS_Primary),2013-08-16T15:25:26.052,POINT (174.03392 -41.724028) | |
quake.2013p615237,2013p615237,2013-08-16T15:18:39.185,175.5761,-40.2622,5.4688,2.3716,M,automatic,12,,WEL(GNS_Primary),2013-08-16T15:22:24.708,POINT (175.57609 -40.262243) | |
quake.2013p615236,2013p615236,2013-08-16T15:18:04.768,174.0423,-41.7858,14.0234,2.8202,M,automatic,45,,WEL(GNS_Primary),2013-08-16T15:23:09.437,POINT (174.04232 -41.785798) | |
quake.2013p615233,2013p615233,2013-08-16T15:16:17.755,174.2677,-41.664,5.1172,2.2233,M,automatic,18,,WEL(GNS_Primary),2013-08-16T15:18:11.702,POINT (174.26766 -41.66395) | |
quake.2013p615227,2013p615227,2013-08-16T15:13:27.112,174.2645,-41.6178,5.0586,2.6816,M,automatic,35,,WEL(GNS_Primary),2013-08-16T15:15:51.161,POINT (174.26447 -41.61777) | |
quake.2013p615224,2013p615224,2013-08-16T15:12:19.468,172.9514,-42.063,26.0938,3.0721,M,automatic,12,,WEL(GNS_Primary),2013-08-16T15:14:44.112,POINT (172.95143 -42.063023) | |
quake.2013p615218,2013p615218,2013-08-16T15:08:09.462,174.1192,-41.6454,18.9453,2.3721,M,automatic,14,,WEL(GNS_Primary),2013-08-16T15:10:21.169,POINT (174.11915 -41.645405) | |
quake.2013p615215,2013p615215,2013-08-16T15:06:36.791,174.0219,-41.7977,9.1016,2.8962,M,automatic,43,,WEL(GNS_Primary),2013-08-16T15:09:48.182,POINT (174.02194 -41.797714) | |
quake.2013p615209,2013p615209,2013-08-16T15:03:26.282,174.1748,-41.7071,5.1172,2.5648,M,automatic,30,,WEL(GNS_Primary),2013-08-16T15:05:41.964,POINT (174.17475 -41.707099) | |
quake.2013p615204,2013p615204,2013-08-16T15:00:41.808,174.1622,-41.6775,5.1172,2.2145,M,automatic,17,,WEL(GNS_Primary),2013-08-16T15:03:08.963,POINT (174.16219 -41.677534) | |
quake.2013p615199,2013p615199,2013-08-16T14:59:15.728,174.0292,-41.8417,21.1719,2.6381,M,automatic,28,,WEL(GNS_Primary),2013-08-16T15:03:00.029,POINT (174.02917 -41.841722) | |
quake.2013p615196,2013p615196,2013-08-16T14:56:46.123,174.1868,-41.6676,11.5039,2.9146,M,automatic,43,,WEL(GNS_Primary),2013-08-16T15:00:16.838,POINT (174.18683 -41.667623) | |
quake.2013p615193,2013p615193,2013-08-16T14:54:52.442,174.117,-41.706,6.6992,2.9453,M,automatic,44,,WEL(GNS_Primary),2013-08-16T18:57:00.447,POINT (174.11698 -41.706029) | |
quake.2013p615188,2013p615188,2013-08-16T14:52:42.164,174.1625,-41.6342,5.1172,2.3075,M,automatic,15,,WEL(GNS_Primary),2013-08-16T14:54:45.073,POINT (174.16251 -41.634167) | |
quake.2013p615184,2013p615184,2013-08-16T14:50:01.895,174.0133,-41.748,5.0586,3.2344,M,automatic,21,,WEL(GNS_Primary),2013-08-16T14:52:57.805,POINT (174.01327 -41.748032) | |
quake.2013p615178,2013p615178,2013-08-16T14:47:02.523,174.3202,-41.6951,19.7656,4.9417,M,reviewed,51,,WEL(GNS_Primary),2013-08-16T14:57:52.509,POINT (174.3202 -41.695104) | |
quake.2013p615174,2013p615174,2013-08-16T14:45:08.519,173.7344,-41.5494,5.2344,2.2159,M,automatic,11,,WEL(GNS_Primary),2013-08-16T14:46:57.276,POINT (173.73442 -41.549413) | |
quake.2013p615170,2013p615170,2013-08-16T14:42:39.52,174.1098,-41.6151,18.4766,2.5407,M,automatic,22,,WEL(GNS_Primary),2013-08-16T14:46:09.348,POINT (174.10982 -41.6151) | |
quake.2013p615166,2013p615166,2013-08-16T14:40:51.796,175.7132,-40.278,51.875,2.5673,M,automatic,12,,WEL(GNS_Primary),2013-08-16T14:43:31.708,POINT (175.71318 -40.278025) | |
quake.2013p615165,2013p615165,2013-08-16T14:40:17.752,174.2922,-41.7281,20.3516,3.5451,M,automatic,70,,WEL(GNS_Primary),2013-08-16T14:44:03.069,POINT (174.29216 -41.728062) | |
quake.2013p615161,2013p615161,2013-08-16T14:37:53.13,174.3124,-41.591,10.5078,2.6153,M,automatic,31,,WEL(GNS_Primary),2013-08-16T14:40:53.319,POINT (174.31238 -41.591027) | |
quake.2013p615148,2013p615148,2013-08-16T14:31:19.083,174.1578,-41.7483,5.1172,3.0056,M,automatic,32,,WEL(GNS_Primary),2013-08-16T14:34:34.377,POINT (174.15776 -41.748309) | |
quake.2013p615146,2013p615146,2013-08-16T14:29:51.685,174.6758,-40.1718,11.0938,2.926,M,automatic,24,,WEL(GNS_Primary),2013-08-16T14:33:05.11,POINT (174.67582 -40.171849) | |
quake.2013p615145,2013p615145,2013-08-16T14:29:23.489,174.2028,-41.7265,5.0586,3.2101,M,automatic,42,,WEL(GNS_Primary),2013-08-16T14:32:50.853,POINT (174.20276 -41.726481) | |
quake.2013p615137,2013p615137,2013-08-16T14:25:03.23,174.064,-41.7195,5.0586,3.0267,M,automatic,19,,WEL(GNS_Primary),2013-08-16T14:27:36.859,POINT (174.06397 -41.719488) | |
quake.2013p615135,2013p615135,2013-08-16T14:23:55.902,175.0765,-40.6992,14.375,2.724,M,automatic,11,,WEL(GNS_Primary),2013-08-16T14:26:40.524,POINT (175.07646 -40.699197) | |
quake.2013p615134,2013p615134,2013-08-16T14:23:29.727,174.264,-41.6732,6.9336,3.1703,M,automatic,41,,WEL(GNS_Primary),2013-08-16T14:26:09.906,POINT (174.26397 -41.673225) | |
quake.2013p615129,2013p615129,2013-08-16T14:21:09.647,174.1499,-41.708,5.1172,2.6407,M,automatic,30,,WEL(GNS_Primary),2013-08-16T14:23:25.009,POINT (174.1499 -41.708038) | |
quake.2013p615126,2013p615126,2013-08-16T14:19:06.915,173.2843,-41.8524,41.0938,2.6474,M,automatic,15,,WEL(GNS_Primary),2013-08-16T14:21:19.416,POINT (173.28432 -41.852437) | |
quake.2013p615123,2013p615123,2013-08-16T14:17:42.905,174.0689,-41.7123,10.0391,2.7998,M,automatic,46,,WEL(GNS_Primary),2013-08-16T14:22:35.623,POINT (174.06891 -41.712334) | |
quake.2013p615120,2013p615120,2013-08-16T14:16:16.871,175.7055,-39.951,83.75,2.3405,M,automatic,11,,WEL(GNS_Primary),2013-08-16T14:18:31.459,POINT (175.70549 -39.951017) | |
quake.2013p615119,2013p615119,2013-08-16T14:15:39.877,174.2762,-41.7318,20.8203,3.0975,M,automatic,42,,WEL(GNS_Primary),2013-08-16T14:19:12.412,POINT (174.27616 -41.731763) | |
quake.2013p615117,2013p615117,2013-08-16T14:14:38.343,173.8356,-41.8119,34.5312,3.0096,M,automatic,13,,WEL(GNS_Primary),2013-08-16T14:16:43.806,POINT (173.83565 -41.811857) | |
quake.2013p615115,2013p615115,2013-08-16T14:13:21.116,174.0692,-41.7459,5.0586,2.76,M,automatic,28,,WEL(GNS_Primary),2013-08-16T14:15:33.314,POINT (174.06924 -41.74592) | |
quake.2013p615107,2013p615107,2013-08-16T14:09:00.824,174.1884,-41.6931,5.4102,3.4049,M,automatic,57,,WEL(GNS_Primary),2013-08-16T14:12:29.204,POINT (174.18843 -41.693111) | |
quake.2013p615103,2013p615103,2013-08-16T14:07:45.274,174.1887,-41.6756,9.043,3.3595,M,automatic,41,,WEL(GNS_Primary),2013-08-16T18:41:06.709,POINT (174.18873 -41.675603) | |
quake.2013p615097,2013p615097,2013-08-16T14:03:59.831,177.0081,-39.3825,20.8203,1.8681,M,automatic,14,,WEL(GNS_Primary),2013-08-16T14:05:52.239,POINT (177.00806 -39.382456) | |
quake.2013p615098,2013p615098,2013-08-16T14:03:59.204,174.2962,-41.5858,5.0586,2.3298,M,automatic,24,,WEL(GNS_Primary),2013-08-16T14:06:10.298,POINT (174.29619 -41.585755) | |
quake.2013p615087,2013p615087,2013-08-16T13:58:37.464,174.1131,-41.737,11.2109,2.492,M,automatic,20,,WEL(GNS_Primary),2013-08-16T14:00:40.167,POINT (174.11309 -41.736988) | |
quake.2013p615082,2013p615082,2013-08-16T13:56:46.113,174.2598,-41.5816,13.6719,2.6693,M,automatic,32,,WEL(GNS_Primary),2013-08-16T14:00:18.39,POINT (174.25981 -41.581557) | |
quake.2013p615076,2013p615076,2013-08-16T13:52:27.91,174.1578,-42.0574,10.8594,2.6282,M,automatic,11,,WEL(GNS_Primary),2013-08-16T13:54:29.211,POINT (174.15781 -42.05737) | |
quake.2013p615071,2013p615071,2013-08-16T13:50:18.096,174.0822,-41.7778,12.6172,3.0298,M,automatic,49,,WEL(GNS_Primary),2013-08-16T13:53:53.245,POINT (174.0822 -41.777791) | |
quake.2013p615062,2013p615062,2013-08-16T13:45:03.544,174.101,-41.6941,5.3516,2.5249,M,automatic,27,,WEL(GNS_Primary),2013-08-16T13:47:54.282,POINT (174.10102 -41.69409) | |
quake.2013p615058,2013p615058,2013-08-16T13:43:42.82,174.2415,-41.6063,5.1758,2.6848,M,automatic,21,,WEL(GNS_Primary),2013-08-16T13:47:27.961,POINT (174.24149 -41.606251) | |
quake.2013p615051,2013p615051,2013-08-16T13:39:16.179,174.1534,-41.6231,18.2422,1.9819,M,automatic,10,,WEL(GNS_Primary),2013-08-16T13:41:27.06,POINT (174.15337 -41.623054) | |
quake.2013p615044,2013p615044,2013-08-16T13:35:54.558,174.4952,-42.0447,21.4062,4.2546,M,reviewed,51,,WEL(GNS_Primary),2013-08-16T15:03:15.642,POINT (174.49518 -42.0447) | |
quake.2013p615042,2013p615042,2013-08-16T13:34:31.399,174.2206,-41.7001,10.0391,2.5697,M,automatic,13,,WEL(GNS_Primary),2013-08-16T13:36:44.627,POINT (174.2206 -41.700104) | |
quake.2013p615039,2013p615039,2013-08-16T13:33:03.55,174.2935,-41.6147,5.1172,2.3493,M,automatic,17,,WEL(GNS_Primary),2013-08-16T13:34:59.612,POINT (174.29347 -41.614661) | |
quake.2013p615036,2013p615036,2013-08-16T13:31:22.28,174.36,-41.5078,19.7656,2.2988,M,automatic,12,,WEL(GNS_Primary),2013-08-16T13:33:25.788,POINT (174.36005 -41.507768) | |
quake.2013p615033,2013p615033,2013-08-16T13:30:15.488,174.2886,-41.5953,8.8672,2.4163,M,automatic,13,,WEL(GNS_Primary),2013-08-16T13:32:51.349,POINT (174.28861 -41.595333) | |
quake.2013p615032,2013p615032,2013-08-16T13:29:15.643,173.8704,-41.7269,15.5469,2.5175,M,automatic,19,,WEL(GNS_Primary),2013-08-16T13:31:30.163,POINT (173.87044 -41.726946) | |
quake.2013p615024,2013p615024,2013-08-16T13:24:53.412,173.9915,-41.7843,13.0859,2.8547,M,automatic,43,,WEL(GNS_Primary),2013-08-16T13:28:07.167,POINT (173.9915 -41.784308) | |
quake.2013p615018,2013p615018,2013-08-16T13:21:47.656,174.1934,-41.4791,29.0234,2.5719,M,automatic,19,,WEL(GNS_Primary),2013-08-16T13:25:11.258,POINT (174.19336 -41.479086) | |
quake.2013p615015,2013p615015,2013-08-16T13:20:12.936,174.068,-41.739,5.1172,2.4876,M,automatic,23,,WEL(GNS_Primary),2013-08-16T13:24:14.668,POINT (174.06797 -41.739001) | |
quake.2013p615010,2013p615010,2013-08-16T13:17:38.585,174.1434,-41.7769,6.2305,3.4794,M,automatic,61,,WEL(GNS_Primary),2013-08-16T13:22:38.168,POINT (174.14343 -41.776876) | |
quake.2013p615005,2013p615005,2013-08-16T13:15:09.475,174.4349,-41.5012,5.1172,2.2224,M,automatic,21,,WEL(GNS_Primary),2013-08-16T13:18:09.595,POINT (174.43492 -41.501215) | |
quake.2013p615002,2013p615002,2013-08-16T13:13:25.289,174.0572,-41.7896,10.7422,3.0745,M,automatic,44,,WEL(GNS_Primary),2013-08-16T13:17:02.041,POINT (174.05721 -41.789572) | |
quake.2013p615000,2013p615000,2013-08-16T13:12:18.207,174.2767,-41.6552,8.5742,2.7841,M,automatic,34,,WEL(GNS_Primary),2013-08-16T13:14:44.694,POINT (174.27667 -41.655247) | |
quake.2013p614996,2013p614996,2013-08-16T13:10:38.854,174.232,-41.6963,7.9297,2.9197,M,automatic,43,,WEL(GNS_Primary),2013-08-16T13:13:58.974,POINT (174.23198 -41.696267) | |
quake.2013p614992,2013p614992,2013-08-16T13:07:56.694,174.1013,-41.7433,5.5859,2.1724,M,automatic,16,,WEL(GNS_Primary),2013-08-16T13:10:05.857,POINT (174.10132 -41.743316) | |
quake.2013p614988,2013p614988,2013-08-16T13:05:48.589,174.2281,-41.6707,14.6094,2.3584,M,automatic,10,,WEL(GNS_Primary),2013-08-16T13:08:27.539,POINT (174.22806 -41.670711) | |
quake.2013p614984,2013p614984,2013-08-16T13:03:03.802,174.2376,-41.1079,8.75,3.9375,M,automatic,20,,WEL(GNS_Primary),2013-08-16T13:06:44.307,POINT (174.23762 -41.107945) | |
quake.2013p614982,2013p614982,2013-08-16T13:02:48.037,174.1635,-41.7253,12.4414,3.5774,M,reviewed,42,,WEL(GNS_Primary),2013-08-17T03:31:35.439,POINT (174.16353 -41.72533) | |
quake.2013p614976,2013p614976,2013-08-16T13:00:34.873,174.2614,-41.6227,9.9805,3.9257,M,reviewed,49,,WEL(GNS_Primary),2013-08-16T22:27:52.257,POINT (174.26143 -41.622685) | |
quake.2013p614968,2013p614968,2013-08-16T12:55:18.626,174.1593,-41.6349,5.1172,2.6222,M,automatic,21,,WEL(GNS_Primary),2013-08-16T12:57:30.471,POINT (174.15931 -41.634907) | |
quake.2013p614963,2013p614963,2013-08-16T12:52:39.08,174.0984,-41.7163,5.0586,2.9556,M,automatic,30,,WEL(GNS_Primary),2013-08-16T12:55:46.679,POINT (174.09844 -41.716329) | |
quake.2013p614960,2013p614960,2013-08-16T12:50:47.088,174.0844,-41.7737,12.8516,3.1557,M,automatic,54,,WEL(GNS_Primary),2013-08-16T12:54:24.949,POINT (174.08437 -41.773684) | |
quake.2013p614955,2013p614955,2013-08-16T12:48:23.593,174.8732,-40.7061,16.3672,2.0988,M,automatic,15,,WEL(GNS_Primary),2013-08-16T12:50:40.311,POINT (174.87319 -40.706064) | |
quake.2013p614950,2013p614950,2013-08-16T12:45:35.552,174.1756,-41.6035,5.0586,2.8068,M,automatic,45,,WEL(GNS_Primary),2013-08-16T12:47:54.397,POINT (174.17558 -41.603479) | |
quake.2013p614946,2013p614946,2013-08-16T12:43:55.13,174.4334,-41.5539,5.0586,2.0998,M,automatic,20,,WEL(GNS_Primary),2013-08-16T12:46:13.243,POINT (174.43343 -41.553926) | |
quake.2013p614941,2013p614941,2013-08-16T12:41:04.494,174.4575,-41.5526,5.0586,2.4534,M,automatic,24,,WEL(GNS_Primary),2013-08-16T12:43:19.055,POINT (174.45752 -41.55255) | |
quake.2013p614935,2013p614935,2013-08-16T12:38:01.397,174.023,-41.8011,12.6172,3.4117,M,automatic,70,,WEL(GNS_Primary),2013-08-16T12:41:37.666,POINT (174.02298 -41.801081) | |
quake.2013p614933,2013p614933,2013-08-16T12:36:18.91,174.2631,-41.5122,5.0586,3.0152,M,automatic,13,,WEL(GNS_Primary),2013-08-16T12:39:14.299,POINT (174.26313 -41.512213) | |
quake.2013p614929,2013p614929,2013-08-16T12:35:11.207,175.4906,-39.8428,11.0938,2.9703,M,automatic,17,,WEL(GNS_Primary),2013-08-16T12:38:32.409,POINT (175.49056 -39.842831) | |
quake.2013p614924,2013p614924,2013-08-16T12:31:50.078,173.9821,-41.8255,10.332,3.5405,M,automatic,69,,WEL(GNS_Primary),2013-08-16T12:38:20.36,POINT (173.98211 -41.825536) | |
quake.2013p614919,2013p614919,2013-08-16T12:29:56.804,174.7959,-41.3534,7.6953,3.2201,M,automatic,44,,WEL(GNS_Primary),2013-08-16T12:37:04.527,POINT (174.7959 -41.353397) | |
quake.2013p614916,2013p614916,2013-08-16T12:27:19.73,174.0606,-41.7569,5.0586,2.3739,M,automatic,17,,WEL(GNS_Primary),2013-08-16T12:30:01.81,POINT (174.06061 -41.756929) | |
quake.2013p614914,2013p614914,2013-08-16T12:26:18.127,174.199,-41.6377,8.8672,2.6667,M,automatic,23,,WEL(GNS_Primary),2013-08-16T12:29:50.935,POINT (174.19901 -41.637742) | |
quake.2013p614910,2013p614910,2013-08-16T12:24:24.423,174.0883,-41.7577,19.0039,3.3619,M,automatic,64,,WEL(GNS_Primary),2013-08-16T12:28:04.86,POINT (174.08832 -41.757742) | |
quake.2013p614904,2013p614904,2013-08-16T12:20:58.705,174.1435,-41.668,5.0586,2.6162,M,automatic,22,,WEL(GNS_Primary),2013-08-16T12:23:11.144,POINT (174.14354 -41.668019) | |
quake.2013p614899,2013p614899,2013-08-16T12:18:32.981,173.9653,-41.7435,7.6953,2.5523,M,automatic,30,,WEL(GNS_Primary),2013-08-16T12:23:33.559,POINT (173.96527 -41.743495) | |
quake.2013p614895,2013p614895,2013-08-16T12:16:18.761,174.3075,-41.6607,9.7461,2.725,M,automatic,38,,WEL(GNS_Primary),2013-08-16T12:18:45.842,POINT (174.3075 -41.660741) | |
quake.2013p614889,2013p614889,2013-08-16T12:13:10.533,174.2667,-41.6497,6.7578,2.6725,M,automatic,23,,WEL(GNS_Primary),2013-08-16T12:15:22.77,POINT (174.26668 -41.649741) | |
quake.2013p614886,2013p614886,2013-08-16T12:11:47.798,174.3218,-41.4745,10.2734,2.4161,M,automatic,18,,WEL(GNS_Primary),2013-08-16T12:13:56.608,POINT (174.32181 -41.474529) | |
quake.2013p614883,2013p614883,2013-08-16T12:09:56.485,174.1686,-41.6863,5.0586,2.5413,M,automatic,31,,WEL(GNS_Primary),2013-08-16T12:12:14.894,POINT (174.1686 -41.686273) | |
quake.2013p614879,2013p614879,2013-08-16T12:07:43.669,174.2551,-41.6861,5.1172,2.1974,M,automatic,16,,WEL(GNS_Primary),2013-08-16T12:09:42.378,POINT (174.25511 -41.686103) | |
quake.2013p614875,2013p614875,2013-08-16T12:05:49.623,174.1205,-41.698,7.6953,2.2595,M,automatic,21,,WEL(GNS_Primary),2013-08-16T12:08:10.555,POINT (174.12051 -41.697999) | |
quake.2013p614870,2013p614870,2013-08-16T12:03:09.207,174.2994,-41.6109,5.4102,2.7129,M,automatic,31,,WEL(GNS_Primary),2013-08-16T12:05:21.767,POINT (174.29943 -41.610874) | |
quake.2013p614867,2013p614867,2013-08-16T12:01:39.795,175.2605,-38.3868,125.9375,2.5658,M,automatic,10,,WEL(GNS_Primary),2013-08-16T12:03:54.408,POINT (175.26046 -38.38675) | |
quake.2013p614863,2013p614863,2013-08-16T11:59:29.394,178.2215,-38.1627,6.2891,1.7523,M,automatic,12,,WEL(GNS_Primary),2013-08-16T17:59:05.123,POINT (178.2215 -38.162668) | |
quake.2013p614861,2013p614861,2013-08-16T11:59:09.924,174.148,-41.6898,5.0586,2.2796,M,automatic,18,,WEL(GNS_Primary),2013-08-16T12:02:10.606,POINT (174.14799 -41.689839) | |
quake.2013p614859,2013p614859,2013-08-16T11:57:18.631,177.0333,-39.3976,19.9414,1.8941,M,automatic,14,,WEL(GNS_Primary),2013-08-16T11:59:31.669,POINT (177.03334 -39.397595) | |
quake.2013p614856,2013p614856,2013-08-16T11:55:21.559,174.2761,-41.6331,6.1133,3.0131,M,automatic,36,,WEL(GNS_Primary),2013-08-16T11:58:32.025,POINT (174.27608 -41.633126) | |
quake.2013p614853,2013p614853,2013-08-16T11:53:55.538,174.3415,-41.5975,9.5117,2.5945,M,automatic,33,,WEL(GNS_Primary),2013-08-16T11:57:22.52,POINT (174.3415 -41.597514) | |
quake.2013p614848,2013p614848,2013-08-16T11:51:28.599,174.3067,-41.5875,11.4453,2.3238,M,automatic,22,,WEL(GNS_Primary),2013-08-16T11:53:29.59,POINT (174.30672 -41.587524) | |
quake.2013p614844,2013p614844,2013-08-16T11:49:21.403,174.285,-41.6822,5.0586,2.6575,M,automatic,26,,WEL(GNS_Primary),2013-08-16T11:51:46.511,POINT (174.28504 -41.682185) | |
quake.2013p614842,2013p614842,2013-08-16T11:47:49.706,174.223,-41.6009,10.7422,2.5247,M,automatic,21,,WEL(GNS_Primary),2013-08-16T11:49:47.944,POINT (174.22301 -41.600911) | |
quake.2013p614835,2013p614835,2013-08-16T11:44:19.222,174.2997,-41.6457,5.1172,2.3486,M,automatic,22,,WEL(GNS_Primary),2013-08-16T11:46:18.407,POINT (174.29969 -41.645706) | |
quake.2013p614828,2013p614828,2013-08-16T11:40:34.952,174.2239,-41.7402,16.6016,3.1161,M,automatic,51,,WEL(GNS_Primary),2013-08-16T11:59:49.886,POINT (174.22389 -41.740239) | |
quake.2013p614825,2013p614825,2013-08-16T11:39:05.21,174.2305,-41.6437,5.1172,2.4289,M,automatic,24,,WEL(GNS_Primary),2013-08-16T11:41:05.383,POINT (174.23054 -41.643674) | |
quake.2013p614821,2013p614821,2013-08-16T11:36:52.899,174.2725,-41.4752,7.1094,2.6814,M,automatic,21,,WEL(GNS_Primary),2013-08-16T11:40:00.617,POINT (174.27246 -41.47516) | |
quake.2013p614819,2013p614819,2013-08-16T11:35:38.6,174.2192,-41.6577,5.0586,3.0256,M,automatic,43,,WEL(GNS_Primary),2013-08-16T11:39:27.357,POINT (174.21919 -41.657729) | |
quake.2013p614816,2013p614816,2013-08-16T11:34:05.132,173.9813,-41.7398,6.5234,2.2977,M,automatic,11,,WEL(GNS_Primary),2013-08-16T11:35:36.296,POINT (173.98129 -41.739794) | |
quake.2013p614809,2013p614809,2013-08-16T11:30:38.045,174.8127,-41.376,13.6719,2.6931,M,automatic,33,,WEL(GNS_Primary),2013-08-16T11:37:21.153,POINT (174.81273 -41.375993) | |
quake.2013p614805,2013p614805,2013-08-16T11:28:31.135,174.0771,-41.6479,35.7031,1.8235,M,automatic,11,,WEL(GNS_Primary),2013-08-16T11:30:04.343,POINT (174.0771 -41.647924) | |
quake.2013p614798,2013p614798,2013-08-16T11:24:48.807,174.0167,-41.7256,5.0586,3.0106,M,automatic,45,,WEL(GNS_Primary),2013-08-16T11:28:40.36,POINT (174.01668 -41.725608) | |
quake.2013p614793,2013p614793,2013-08-16T11:21:59.698,174.0746,-41.7158,8.3984,2.7923,M,automatic,31,,WEL(GNS_Primary),2013-08-16T11:24:52.713,POINT (174.07456 -41.715836) | |
quake.2013p614786,2013p614786,2013-08-16T11:18:11.343,175.7452,-39.9222,15.3125,3.2646,M,automatic,13,,WEL(GNS_Primary),2013-08-16T11:21:07.961,POINT (175.74515 -39.922203) | |
quake.2013p614783,2013p614783,2013-08-16T11:17:32.144,174.1426,-41.7771,10.2734,4.1432,M,automatic,94,,WEL(GNS_Primary),2013-08-16T11:59:41.3,POINT (174.14262 -41.777061) | |
quake.2013p614778,2013p614778,2013-08-16T11:14:02.621,174.222,-41.6493,10.7422,2.4939,M,automatic,24,,WEL(GNS_Primary),2013-08-16T11:17:51.322,POINT (174.22199 -41.649261) | |
quake.2013p614774,2013p614774,2013-08-16T11:11:59.851,174.4194,-41.7564,31.0156,2.2605,M,automatic,15,,WEL(GNS_Primary),2013-08-16T11:15:07.444,POINT (174.41938 -41.756401) | |
quake.2013p614769,2013p614769,2013-08-16T11:09:14.775,174.0651,-41.7372,5.1172,2.9541,M,automatic,19,,WEL(GNS_Primary),2013-08-16T11:12:20.773,POINT (174.06514 -41.737249) | |
quake.2013p614766,2013p614766,2013-08-16T11:07:34.88,174.1004,-41.8109,14.4922,3.7953,M,automatic,86,,WEL(GNS_Primary),2013-08-16T11:11:45.933,POINT (174.10041 -41.810859) | |
quake.2013p614762,2013p614762,2013-08-16T11:05:12.293,175.0667,-40.2286,9.6875,3.3796,M,automatic,21,,WEL(GNS_Primary),2013-08-16T11:08:41.201,POINT (175.06671 -40.228618) | |
quake.2013p614761,2013p614761,2013-08-16T11:04:39.553,174.0857,-41.7854,12.1484,3.8204,M,automatic,76,,WEL(GNS_Primary),2013-08-16T11:59:20.43,POINT (174.08569 -41.785401) | |
quake.2013p614758,2013p614758,2013-08-16T11:03:33.199,174.1287,-41.5614,24.3359,3.0526,M,automatic,28,,WEL(GNS_Primary),2013-08-16T11:06:26.842,POINT (174.12868 -41.561433) | |
quake.2013p614755,2013p614755,2013-08-16T11:01:57.441,174.142,-41.6786,26.2109,3.2844,M,automatic,43,,WEL(GNS_Primary),2013-08-16T11:05:17.257,POINT (174.14196 -41.678608) | |
quake.2013p614752,2013p614752,2013-08-16T11:00:02.758,174.2682,-41.6079,8.1055,3.0089,M,automatic,41,,WEL(GNS_Primary),2013-08-16T11:03:00.03,POINT (174.26825 -41.607872) | |
quake.2013p614748,2013p614748,2013-08-16T10:58:12.373,174.7324,-41.4224,9.5703,2.7755,M,automatic,18,,WEL(GNS_Primary),2013-08-16T11:01:27.776,POINT (174.73244 -41.42241) | |
quake.2013p614745,2013p614745,2013-08-16T10:56:37.284,174.0484,-41.7712,15.7227,3.219,M,automatic,53,,WEL(GNS_Primary),2013-08-16T11:00:16.294,POINT (174.0484 -41.771169) | |
quake.2013p614737,2013p614737,2013-08-16T10:52:55.3,174.0588,-41.6359,9.1602,3.8286,M,automatic,67,,WEL(GNS_Primary),2013-08-16T10:56:36.875,POINT (174.05885 -41.635917) | |
quake.2013p614735,2013p614735,2013-08-16T10:51:06.751,174.0801,-41.628,26.3281,2.3648,M,automatic,13,,WEL(GNS_Primary),2013-08-16T10:53:01.682,POINT (174.08011 -41.627991) | |
quake.2013p614733,2013p614733,2013-08-16T10:50:10.981,178.2201,-38.1618,5.1172,1.8497,M,automatic,10,,WEL(GNS_Primary),2013-08-16T10:52:22.745,POINT (178.22011 -38.161793) | |
quake.2013p614732,2013p614732,2013-08-16T10:49:40.105,174.2752,-41.5816,13.5547,2.5743,M,automatic,27,,WEL(GNS_Primary),2013-08-16T10:51:58.254,POINT (174.27522 -41.581593) | |
quake.2013p614730,2013p614730,2013-08-16T10:48:35.643,174.0827,-41.5697,67.5781,2.6241,M,automatic,12,,WEL(GNS_Primary),2013-08-16T10:50:51.645,POINT (174.08274 -41.569674) | |
quake.2013p614729,2013p614729,2013-08-16T10:47:49.386,178.5209,-38.6011,39.4531,2.3317,M,automatic,15,,WEL(GNS_Primary),2013-08-16T10:49:59.423,POINT (178.52088 -38.60114) | |
quake.2013p614721,2013p614721,2013-08-16T10:43:41.74,174.0513,-41.7777,15.8984,3.1023,M,automatic,50,,WEL(GNS_Primary),2013-08-16T10:47:40.45,POINT (174.05128 -41.777719) | |
quake.2013p614718,2013p614718,2013-08-16T10:42:09.1,174.2926,-41.5788,11.4453,2.9227,M,automatic,44,,WEL(GNS_Primary),2013-08-16T10:44:15.571,POINT (174.2926 -41.578768) | |
quake.2013p614714,2013p614714,2013-08-16T10:40:04.553,174.239,-41.5864,7.4609,2.6196,M,automatic,26,,WEL(GNS_Primary),2013-08-16T10:42:11.642,POINT (174.23905 -41.586368) | |
quake.2013p614711,2013p614711,2013-08-16T10:38:22.311,174.2363,-41.6099,5.0586,3.0445,M,automatic,32,,WEL(GNS_Primary),2013-08-16T10:41:10.76,POINT (174.23633 -41.609853) | |
quake.2013p614707,2013p614707,2013-08-16T10:36:17.467,174.871,-39.5831,11.7969,3.1904,M,automatic,24,,WEL(GNS_Primary),2013-08-16T10:40:05.677,POINT (174.87097 -39.583123) | |
quake.2013p614706,2013p614706,2013-08-16T10:35:40.35,174.1699,-41.6108,5.4102,3.7256,M,automatic,71,,WEL(GNS_Primary),2013-08-16T10:39:21.284,POINT (174.16986 -41.610818) | |
quake.2013p614702,2013p614702,2013-08-16T10:33:35.806,174.2683,-41.5868,5.2344,2.0383,M,automatic,10,,WEL(GNS_Primary),2013-08-16T10:35:09.207,POINT (174.26828 -41.586811) | |
quake.2013p614687,2013p614687,2013-08-16T10:25:41.088,174.1029,-41.7225,7.4609,3.1286,M,automatic,57,,WEL(GNS_Primary),2013-08-16T10:29:28.518,POINT (174.10291 -41.722508) | |
quake.2013p614684,2013p614684,2013-08-16T10:23:52.274,174.0705,-41.7733,26.9141,2.8995,M,automatic,19,,WEL(GNS_Primary),2013-08-16T10:27:04.971,POINT (174.07051 -41.773277) | |
quake.2013p614682,2013p614682,2013-08-16T10:22:38.772,174.5639,-40.2802,9.6875,3.2021,M,automatic,12,,WEL(GNS_Primary),2013-08-16T10:25:24.027,POINT (174.56393 -40.280248) | |
quake.2013p614681,2013p614681,2013-08-16T10:22:11.432,174.1253,-41.6765,20.1172,3.2963,M,automatic,59,,WEL(GNS_Primary),2013-08-16T10:25:50.57,POINT (174.12529 -41.676451) | |
quake.2013p614671,2013p614671,2013-08-16T10:17:13.666,174.2699,-41.5708,5.0586,2.8755,M,automatic,24,,WEL(GNS_Primary),2013-08-16T10:20:04.342,POINT (174.26988 -41.570801) | |
quake.2013p614668,2013p614668,2013-08-16T10:15:37.856,174.1157,-41.6835,10.5664,2.8875,M,automatic,34,,WEL(GNS_Primary),2013-08-16T10:18:45.202,POINT (174.11574 -41.683469) | |
quake.2013p614666,2013p614666,2013-08-16T10:14:30.402,174.252,-41.4883,10.0391,2.6321,M,automatic,21,,WEL(GNS_Primary),2013-08-16T10:16:47.008,POINT (174.25204 -41.488322) | |
quake.2013p614664,2013p614664,2013-08-16T10:13:15.157,174.7456,-41.4495,27.3828,2.4806,M,automatic,19,,WEL(GNS_Primary),2013-08-16T10:15:13.23,POINT (174.74556 -41.449484) | |
quake.2013p614661,2013p614661,2013-08-16T10:11:44.332,174.0837,-41.7113,5.0586,2.7001,M,automatic,21,,WEL(GNS_Primary),2013-08-16T10:13:57.05,POINT (174.08374 -41.711309) | |
quake.2013p614654,2013p614654,2013-08-16T10:08:05.393,174.1222,-41.5942,15.5469,2.3073,M,automatic,17,,WEL(GNS_Primary),2013-08-16T10:10:11.312,POINT (174.12222 -41.594193) | |
quake.2013p614649,2013p614649,2013-08-16T10:05:33.868,174.2746,-41.6383,12.3828,3.3428,M,automatic,47,,WEL(GNS_Primary),2013-08-16T10:09:04.619,POINT (174.27455 -41.638294) | |
quake.2013p614638,2013p614638,2013-08-16T09:59:46.177,174.245,-41.6656,5.0586,2.9579,M,automatic,36,,WEL(GNS_Primary),2013-08-16T10:02:54.103,POINT (174.24504 -41.665579) | |
quake.2013p614635,2013p614635,2013-08-16T09:57:33.571,174.2837,-41.5868,5.1172,2.8034,M,automatic,30,,WEL(GNS_Primary),2013-08-16T10:00:02.363,POINT (174.28369 -41.586847) | |
quake.2013p614632,2013p614632,2013-08-16T09:56:18.632,174.2502,-41.662,6.3477,2.7483,M,automatic,29,,WEL(GNS_Primary),2013-08-16T09:58:39.573,POINT (174.2502 -41.661977) | |
quake.2013p614629,2013p614629,2013-08-16T09:54:48.948,174.2516,-41.6581,6.1719,2.7125,M,automatic,31,,WEL(GNS_Primary),2013-08-16T09:58:17.924,POINT (174.25155 -41.658055) | |
quake.2013p614616,2013p614616,2013-08-16T09:47:50.689,174.0464,-41.7332,5.0586,2.6523,M,automatic,24,,WEL(GNS_Primary),2013-08-16T09:51:15.014,POINT (174.04644 -41.733155) | |
quake.2013p614607,2013p614607,2013-08-16T09:42:36.88,174.095,-41.7646,18.0664,3.381,M,automatic,62,,WEL(GNS_Primary),2013-08-16T09:46:08.793,POINT (174.09501 -41.764612) | |
quake.2013p614603,2013p614603,2013-08-16T09:41:15.204,174.2246,-41.5801,9.3359,2.5355,M,automatic,31,,WEL(GNS_Primary),2013-08-16T09:44:00.847,POINT (174.22456 -41.580103) | |
quake.2013p614601,2013p614601,2013-08-16T09:39:34.692,173.1853,-41.8896,89.8438,2.9087,M,automatic,12,,WEL(GNS_Primary),2013-08-16T09:42:44.613,POINT (173.18527 -41.889593) | |
quake.2013p614593,2013p614593,2013-08-16T09:36:22.675,174.1818,-41.691,16.4844,2.9383,M,automatic,23,,WEL(GNS_Primary),2013-08-16T09:38:43.744,POINT (174.18179 -41.69104) | |
quake.2013p614588,2013p614588,2013-08-16T09:32:52.413,174.0885,-41.7463,18.4766,3.1556,M,automatic,50,,WEL(GNS_Primary),2013-08-16T09:36:33.198,POINT (174.08851 -41.746277) | |
quake.2013p614584,2013p614584,2013-08-16T09:30:52.515,174.1701,-41.707,23.1641,2.6861,M,automatic,22,,WEL(GNS_Primary),2013-08-16T09:33:05.598,POINT (174.17014 -41.706964) | |
quake.2013p614582,2013p614582,2013-08-16T09:29:35.055,174.0143,-41.7057,5.1172,2.7895,M,automatic,15,,WEL(GNS_Primary),2013-08-16T09:31:47.97,POINT (174.0143 -41.705725) | |
quake.2013p614576,2013p614576,2013-08-16T09:26:54.23,174.2945,-41.6024,5.0586,2.5154,M,automatic,15,,WEL(GNS_Primary),2013-08-16T09:30:05.423,POINT (174.29451 -41.602388) | |
quake.2013p614572,2013p614572,2013-08-16T09:24:04.338,174.3203,-41.5579,5.1172,2.7743,M,automatic,29,,WEL(GNS_Primary),2013-08-16T09:28:00.743,POINT (174.32034 -41.557897) | |
quake.2013p614566,2013p614566,2013-08-16T09:21:29.132,174.1355,-41.6957,5.0586,3.5929,M,automatic,56,,WEL(GNS_Primary),2013-08-16T09:25:32.55,POINT (174.13552 -41.695729) | |
quake.2013p614565,2013p614565,2013-08-16T09:20:26.781,174.0727,-41.7692,13.7891,3.3851,M,automatic,46,,WEL(GNS_Primary),2013-08-16T09:24:01.468,POINT (174.07268 -41.76917) | |
quake.2013p614561,2013p614561,2013-08-16T09:18:34.717,174.1807,-41.7033,5.0586,2.971,M,automatic,21,,WEL(GNS_Primary),2013-08-16T09:21:59.845,POINT (174.18073 -41.703312) | |
quake.2013p614559,2013p614559,2013-08-16T09:17:33.414,174.3028,-41.5198,5.1172,2.4416,M,automatic,14,,WEL(GNS_Primary),2013-08-16T09:19:48.883,POINT (174.30282 -41.519846) | |
quake.2013p614557,2013p614557,2013-08-16T09:16:11.734,172.763,-43.5731,5.0586,3.1409,M,reviewed,19,,WEL(GNS_Primary),2013-08-16T09:34:26.795,POINT (172.763 -43.573132) | |
quake.2013p614556,2013p614556,2013-08-16T09:15:32.682,174.3506,-41.6038,5.1172,2.2755,M,automatic,18,,WEL(GNS_Primary),2013-08-16T09:18:31.289,POINT (174.35059 -41.603828) | |
quake.2013p614552,2013p614552,2013-08-16T09:13:26.446,174.0248,-41.6468,29.0234,2.285,M,automatic,14,,WEL(GNS_Primary),2013-08-16T09:16:34.724,POINT (174.02479 -41.646803) | |
quake.2013p614549,2013p614549,2013-08-16T09:11:21.43,173.8207,-41.5895,12.5,3.8307,M,automatic,16,,WEL(GNS_Primary),2013-08-16T09:15:11.645,POINT (173.82068 -41.589495) | |
quake.2013p614548,2013p614548,2013-08-16T09:11:13.173,174.12,-41.7113,21.0547,3.3361,M,automatic,62,,WEL(GNS_Primary),2013-08-16T09:14:54.015,POINT (174.12005 -41.711332) | |
quake.2013p614544,2013p614544,2013-08-16T09:09:09.135,173.9846,-41.7282,5.1172,3.1062,M,automatic,22,,WEL(GNS_Primary),2013-08-16T09:11:29.357,POINT (173.9846 -41.728212) | |
quake.2013p614542,2013p614542,2013-08-16T09:08:06.339,174.2763,-41.6475,5.1172,2.958,M,automatic,36,,WEL(GNS_Primary),2013-08-16T09:10:35.921,POINT (174.27627 -41.64752) | |
quake.2013p614538,2013p614538,2013-08-16T09:05:42.795,172.0191,-42.8056,323.75,4.2913,M,automatic,14,,WEL(GNS_Primary),2013-08-16T09:09:17.495,POINT (172.0191 -42.805639) | |
quake.2013p614535,2013p614535,2013-08-16T09:04:22.154,173.9464,-41.8164,10.5078,3.1077,M,automatic,28,,WEL(GNS_Primary),2013-08-16T09:08:00.096,POINT (173.94637 -41.816354) | |
quake.2013p614534,2013p614534,2013-08-16T09:04:06.871,177.0565,-39.4048,20.5859,2.539,M,automatic,41,,WEL(GNS_Primary),2013-08-16T09:09:35.498,POINT (177.05647 -39.404754) | |
quake.2013p614529,2013p614529,2013-08-16T09:01:04.339,174.1058,-41.7134,6.7578,3.3747,M,automatic,41,,WEL(GNS_Primary),2013-08-16T09:04:30.808,POINT (174.10583 -41.713417) | |
quake.2013p614525,2013p614525,2013-08-16T08:59:17.289,174.0988,-41.7499,21.7578,3.65,M,automatic,72,,WEL(GNS_Primary),2013-08-16T09:05:22.376,POINT (174.09878 -41.749915) | |
quake.2013p614519,2013p614519,2013-08-16T08:56:06.012,174.1339,-41.7117,5.1172,2.7026,M,automatic,34,,WEL(GNS_Primary),2013-08-16T08:58:37.232,POINT (174.13389 -41.711739) | |
quake.2013p614512,2013p614512,2013-08-16T08:52:29.633,174.2646,-41.6641,13.3789,3.757,M,automatic,83,,WEL(GNS_Primary),2013-08-16T08:58:41.617,POINT (174.26456 -41.664067) | |
quake.2013p614510,2013p614510,2013-08-16T08:51:25.472,174.2974,-41.5464,5.1172,2.5173,M,automatic,10,,WEL(GNS_Primary),2013-08-16T08:53:58.162,POINT (174.29737 -41.546378) | |
quake.2013p614506,2013p614506,2013-08-16T08:49:43.258,174.4077,-41.8891,5.1172,3.4652,M,automatic,38,,WEL(GNS_Primary),2013-08-16T08:53:16.108,POINT (174.40773 -41.889094) | |
quake.2013p614503,2013p614503,2013-08-16T08:47:21.704,174.1967,-41.6118,16.6016,2.812,M,automatic,35,,WEL(GNS_Primary),2013-08-16T08:51:10.316,POINT (174.1967 -41.611816) | |
quake.2013p614496,2013p614496,2013-08-16T08:44:09.742,174.1463,-41.6704,9.5703,3.5884,M,automatic,55,,WEL(GNS_Primary),2013-08-16T08:50:40.667,POINT (174.14628 -41.670394) | |
quake.2013p614487,2013p614487,2013-08-16T08:38:54.758,174.1145,-41.7379,21.7578,5.2016,M,reviewed,39,,WEL(GNS_Primary),2013-08-16T08:49:25.321,POINT (174.11451 -41.737864) | |
quake.2013p614479,2013p614479,2013-08-16T08:35:35.316,174.2751,-41.6243,5.0586,3.6511,M,automatic,59,,WEL(GNS_Primary),2013-08-16T08:39:36.751,POINT (174.27507 -41.624338) | |
quake.2013p614468,2013p614468,2013-08-16T08:29:05.828,174.2662,-41.6474,16.6602,3.3646,M,automatic,59,,WEL(GNS_Primary),2013-08-16T08:32:46.039,POINT (174.26625 -41.647434) | |
quake.2013p614462,2013p614462,2013-08-16T08:25:25.921,174.0287,-41.6615,22.5781,2.8764,M,automatic,12,,WEL(GNS_Primary),2013-08-16T08:28:17.776,POINT (174.02873 -41.661518) | |
quake.2013p614459,2013p614459,2013-08-16T08:24:14.587,174.0065,-41.6655,30.4297,3.5442,M,automatic,50,,WEL(GNS_Primary),2013-08-16T08:34:19.863,POINT (174.00652 -41.665454) | |
quake.2013p614458,2013p614458,2013-08-16T08:23:38.489,172.5641,-43.5883,0.057,2.0389,M,automatic,10,,WEL(GNS_Primary),2013-08-16T08:24:58.197,POINT (172.56409 -43.588257) | |
quake.2013p614454,2013p614454,2013-08-16T08:21:23.977,174.0716,-41.6432,19.4141,2.6862,M,automatic,26,,WEL(GNS_Primary),2013-08-16T08:23:42.7,POINT (174.07165 -41.643175) | |
quake.2013p614447,2013p614447,2013-08-16T08:17:32.951,174.2844,-41.624,8.0469,3.2445,M,automatic,51,,WEL(GNS_Primary),2013-08-16T08:26:53.037,POINT (174.28438 -41.623986) | |
quake.2013p614443,2013p614443,2013-08-16T08:15:38.57,174.2598,-41.6754,15.4297,2.5491,M,reviewed,14,,WEL(GNS_Primary),2013-08-16T09:59:46.931,POINT (174.25979 -41.675396) | |
quake.2013p614440,2013p614440,2013-08-16T08:13:54.272,174.3009,-41.643,5.0586,3.1969,M,automatic,39,,WEL(GNS_Primary),2013-08-16T08:17:37.379,POINT (174.30086 -41.643029) | |
quake.2013p614437,2013p614437,2013-08-16T08:12:26.779,174.2389,-41.6081,10.9766,3.0534,M,automatic,41,,WEL(GNS_Primary),2013-08-16T08:15:59.502,POINT (174.23891 -41.608052) | |
quake.2013p614435,2013p614435,2013-08-16T08:11:02.741,174.1337,-41.6925,5.1172,2.5886,M,automatic,20,,WEL(GNS_Primary),2013-08-16T08:13:16.633,POINT (174.13368 -41.692547) | |
quake.2013p614428,2013p614428,2013-08-16T08:08:36.259,174.0373,-41.7473,26.6797,2.721,M,automatic,19,,WEL(GNS_Primary),2013-08-16T08:11:08.656,POINT (174.03734 -41.747278) | |
quake.2013p614424,2013p614424,2013-08-16T08:05:34.464,174.2832,-41.6844,5.3516,3.2131,M,automatic,51,,WEL(GNS_Primary),2013-08-16T08:09:22.296,POINT (174.28316 -41.684424) | |
quake.2013p614417,2013p614417,2013-08-16T08:01:31.801,174.1719,-41.721,5.0586,3.4693,M,automatic,30,,WEL(GNS_Primary),2013-08-16T08:04:42.899,POINT (174.1719 -41.720988) | |
quake.2013p614413,2013p614413,2013-08-16T07:59:36.641,174.2755,-41.6525,17.3047,3.8731,M,reviewed,16,,WEL(GNS_Primary),2013-08-16T10:07:36.848,POINT (174.27553 -41.652503) | |
quake.2013p614410,2013p614410,2013-08-16T07:57:41.075,173.691,-42.0229,64.0625,3.0333,M,automatic,12,,WEL(GNS_Primary),2013-08-16T07:59:21.274,POINT (173.69103 -42.022879) | |
quake.2013p614406,2013p614406,2013-08-16T07:55:34.07,174.18,-41.5375,27.2656,2.8267,M,automatic,18,,WEL(GNS_Primary),2013-08-16T07:58:29.335,POINT (174.18004 -41.537502) | |
quake.2013p614401,2013p614401,2013-08-16T07:53:27.023,174.2757,-41.8077,5.1172,3.9391,M,automatic,78,,WEL(GNS_Primary),2013-08-16T07:57:33.76,POINT (174.27574 -41.807656) | |
quake.2013p614398,2013p614398,2013-08-16T07:51:31.308,174.0922,-41.7526,14.8438,2.9705,M,automatic,54,,WEL(GNS_Primary),2013-08-16T07:55:06.613,POINT (174.09218 -41.752641) | |
quake.2013p614392,2013p614392,2013-08-16T07:48:17.151,174.2651,-41.6188,9.3359,2.5716,M,automatic,17,,WEL(GNS_Primary),2013-08-16T07:49:55.284,POINT (174.26508 -41.618831) | |
quake.2013p614386,2013p614386,2013-08-16T07:46:05.47,174.2728,-41.6399,16.1328,2.9192,M,automatic,45,,WEL(GNS_Primary),2013-08-16T07:49:53.132,POINT (174.27276 -41.63991) | |
quake.2013p614383,2013p614383,2013-08-16T07:43:27.749,174.1792,-41.5846,15.6641,2.965,M,automatic,27,,WEL(GNS_Primary),2013-08-16T07:46:25.523,POINT (174.17917 -41.584607) | |
quake.2013p614380,2013p614380,2013-08-16T07:42:10.053,174.3951,-41.7957,61.9531,2.8961,M,automatic,30,,WEL(GNS_Primary),2013-08-16T07:45:13.253,POINT (174.39508 -41.795724) | |
quake.2013p614375,2013p614375,2013-08-16T07:39:20.11,174.4952,-41.5534,18.8281,2.3738,M,automatic,10,,WEL(GNS_Primary),2013-08-16T07:41:52.089,POINT (174.49515 -41.553449) | |
quake.2013p614372,2013p614372,2013-08-16T07:37:57.214,175.6813,-39.7223,24.5703,2.8732,M,automatic,14,,WEL(GNS_Primary),2013-08-16T07:41:17.696,POINT (175.68129 -39.722291) | |
quake.2013p614371,2013p614371,2013-08-16T07:37:14.368,174.0625,-41.7138,5.1172,3.2185,M,automatic,44,,WEL(GNS_Primary),2013-08-16T07:40:51.975,POINT (174.06251 -41.713814) | |
quake.2013p614369,2013p614369,2013-08-16T07:35:53.105,174.2743,-41.6191,5.1172,2.9419,M,automatic,17,,WEL(GNS_Primary),2013-08-16T07:38:23.949,POINT (174.2743 -41.619102) | |
quake.2013p614365,2013p614365,2013-08-16T07:34:13,174.2707,-41.5706,9.5703,2.9944,M,automatic,41,,WEL(GNS_Primary),2013-08-16T07:38:04.749,POINT (174.27068 -41.570616) | |
quake.2013p614361,2013p614361,2013-08-16T07:31:32.276,173.9019,-41.0613,45.3125,2.9884,M,automatic,11,,WEL(GNS_Primary),2013-08-16T07:33:55.992,POINT (173.90186 -41.061287) | |
quake.2013p614358,2013p614358,2013-08-16T07:30:15.932,174.0549,-41.6927,13.3203,2.804,M,automatic,15,,WEL(GNS_Primary),2013-08-16T07:33:09.941,POINT (174.05488 -41.692735) | |
quake.2013p614356,2013p614356,2013-08-16T07:28:59.952,174.2098,-41.5655,6.0547,2.9685,M,automatic,19,,WEL(GNS_Primary),2013-08-16T07:32:07.912,POINT (174.20977 -41.565487) | |
quake.2013p614351,2013p614351,2013-08-16T07:26:49.024,173.8675,-41.8862,21.4062,4.2304,M,reviewed,38,,WEL(GNS_Primary),2013-08-16T07:35:47.094,POINT (173.86748 -41.886207) | |
quake.2013p614345,2013p614345,2013-08-16T07:23:15.211,174.2342,-41.8786,26.5625,4.6749,M,reviewed,41,,WEL(GNS_Primary),2013-08-16T07:31:50.84,POINT (174.23423 -41.878593) | |
quake.2013p614342,2013p614342,2013-08-16T07:21:50.033,174.0606,-41.7263,5.1172,2.8227,M,automatic,17,,WEL(GNS_Primary),2013-08-16T07:24:01.324,POINT (174.06062 -41.726272) | |
quake.2013p614339,2013p614339,2013-08-16T07:20:02.064,174.2518,-41.5208,9.8047,3.0255,M,automatic,27,,WEL(GNS_Primary),2013-08-16T07:23:13.424,POINT (174.25184 -41.520848) | |
quake.2013p614337,2013p614337,2013-08-16T07:18:39.983,174.5525,-41.3041,8.75,3.6403,M,automatic,16,,WEL(GNS_Primary),2013-08-16T07:22:14.812,POINT (174.55251 -41.304096) | |
quake.2013p614334,2013p614334,2013-08-16T07:18:20.718,174.0658,-41.784,9.3359,3.4969,M,automatic,57,,WEL(GNS_Primary),2013-08-16T07:24:56.775,POINT (174.06579 -41.783984) | |
quake.2013p614327,2013p614327,2013-08-16T07:13:54.743,174.098,-41.714,7.4609,3.9601,M,reviewed,26,,WEL(GNS_Primary),2013-08-16T09:17:23.174,POINT (174.09801 -41.714022) | |
quake.2013p614325,2013p614325,2013-08-16T07:12:35.363,174.2661,-41.7269,19.7656,3.1977,M,reviewed,11,,WEL(GNS_Primary),2013-08-16T09:08:45.975,POINT (174.26606 -41.726879) | |
quake.2013p614320,2013p614320,2013-08-16T07:10:10.889,174.2805,-41.7235,22.2266,3.6542,M,automatic,68,,WEL(GNS_Primary),2013-08-16T07:17:29.974,POINT (174.28046 -41.723548) | |
quake.2013p614313,2013p614313,2013-08-16T07:06:53.126,174.2635,-41.7648,18.2422,3.7687,M,automatic,73,,WEL(GNS_Primary),2013-08-16T07:12:43.481,POINT (174.26354 -41.764758) | |
quake.2013p614306,2013p614306,2013-08-16T07:02:49.182,174.2729,-41.6182,13.7891,3.606,M,automatic,57,,WEL(GNS_Primary),2013-08-16T07:07:02.185,POINT (174.27289 -41.618226) | |
quake.2013p614302,2013p614302,2013-08-16T07:00:20.283,174.3202,-41.6951,23.5156,3.2306,M,automatic,14,,WEL(GNS_Primary),2013-08-16T07:03:13.281,POINT (174.3202 -41.695104) | |
quake.2013p614294,2013p614294,2013-08-16T06:55:58.94,174.2889,-41.6771,19.6484,5.4909,M,reviewed,36,,WEL(GNS_Primary),2013-08-16T07:06:08.038,POINT (174.28888 -41.677085) | |
quake.2013p614289,2013p614289,2013-08-16T06:53:34.266,174.1436,-41.6987,18.4766,4.8752,M,reviewed,29,,WEL(GNS_Primary),2013-08-16T07:04:43.155,POINT (174.14358 -41.698676) | |
quake.2013p614284,2013p614284,2013-08-16T06:50:35.193,174.1154,-41.7268,5.0586,3.0369,M,automatic,23,,WEL(GNS_Primary),2013-08-16T06:53:47.412,POINT (174.1154 -41.726837) | |
quake.2013p614280,2013p614280,2013-08-16T06:48:53.291,173.9938,-41.7994,15.4297,3.5117,M,automatic,54,,WEL(GNS_Primary),2013-08-16T06:52:36.395,POINT (173.99384 -41.799393) | |
quake.2013p614278,2013p614278,2013-08-16T06:47:43.477,174.2287,-41.8065,5.293,3.4651,M,automatic,25,,WEL(GNS_Primary),2013-08-16T06:51:23.112,POINT (174.22872 -41.806487) | |
quake.2013p614268,2013p614268,2013-08-16T06:42:40.757,174.2899,-41.6913,20.1172,5.2131,M,reviewed,29,,WEL(GNS_Primary),2013-08-16T06:50:32.198,POINT (174.28987 -41.691294) | |
quake.2013p614265,2013p614265,2013-08-16T06:40:54.896,174.0217,-41.6776,23.6328,3.0423,M,reviewed,23,,WEL(GNS_Primary),2013-08-16T07:28:45.183,POINT (174.02166 -41.677578) | |
quake.2013p614261,2013p614261,2013-08-16T06:38:28.161,174.065,-41.6874,6.2305,3.2895,M,automatic,34,,WEL(GNS_Primary),2013-08-16T06:43:49.324,POINT (174.06496 -41.6874) | |
quake.2013p614256,2013p614256,2013-08-16T06:36:39.967,174.258,-41.6301,5.0586,3.7092,M,automatic,65,,WEL(GNS_Primary),2013-08-16T06:43:49.881,POINT (174.25802 -41.630092) | |
quake.2013p614252,2013p614252,2013-08-16T06:33:48.436,174.2774,-41.7652,21.7578,3.6818,M,automatic,63,,WEL(GNS_Primary),2013-08-16T06:39:49.037,POINT (174.27739 -41.765165) | |
quake.2013p614245,2013p614245,2013-08-16T06:30:36.227,174.3249,-39.7593,49.0625,3.4817,M,automatic,45,,WEL(GNS_Primary),2013-08-16T06:36:08.979,POINT (174.32492 -39.759258) | |
quake.2013p614241,2013p614241,2013-08-16T06:28:31.376,175.4688,-39.9078,5.0586,3.0444,M,automatic,36,,WEL(GNS_Primary),2013-08-16T06:32:36.085,POINT (175.46877 -39.907827) | |
quake.2013p614239,2013p614239,2013-08-16T06:27:09.623,174.0696,-41.7795,13.2031,3.6917,M,automatic,48,,WEL(GNS_Primary),2013-08-16T06:33:37.808,POINT (174.06957 -41.779506) | |
quake.2013p614234,2013p614234,2013-08-16T06:24:17.714,174.0525,-41.7594,12.1484,3.41,M,automatic,26,,WEL(GNS_Primary),2013-08-16T06:31:01.883,POINT (174.05251 -41.759402) | |
quake.2013p614233,2013p614233,2013-08-16T06:23:23.724,176.7109,-37.0714,315.3125,4.0933,M,automatic,82,,WEL(GNS_Primary),2013-08-16T06:30:12.627,POINT (176.7109 -37.071448) | |
quake.2013p614232,2013p614232,2013-08-16T06:23:11.937,174.27,-41.4709,10.1562,3.5798,M,automatic,37,,WEL(GNS_Primary),2013-08-16T06:26:46.316,POINT (174.27 -41.470918) | |
quake.2013p614230,2013p614230,2013-08-16T06:22:03.189,175.8294,-39.6263,15.7812,2.9333,M,automatic,11,,WEL(GNS_Primary),2013-08-16T06:24:56.325,POINT (175.82945 -39.626323) | |
quake.2013p614229,2013p614229,2013-08-16T06:21:20.594,174.2339,-41.7355,11.6797,3.6718,M,automatic,60,,WEL(GNS_Primary),2013-08-16T06:28:35.359,POINT (174.23387 -41.735527) | |
quake.2013p614226,2013p614226,2013-08-16T06:20:00.917,174.2504,-41.4683,13.0859,2.9183,M,automatic,26,,WEL(GNS_Primary),2013-08-16T06:22:25.874,POINT (174.25039 -41.468254) | |
quake.2013p614219,2013p614219,2013-08-16T06:16:35.794,174.0737,-41.7725,11.6797,3.6115,M,automatic,63,,WEL(GNS_Primary),2013-08-16T06:22:19.086,POINT (174.07371 -41.772537) | |
quake.2013p614214,2013p614214,2013-08-16T06:13:33.863,174.0634,-41.7587,5.0586,2.9481,M,automatic,28,,WEL(GNS_Primary),2013-08-16T06:15:44.193,POINT (174.06344 -41.75868) | |
quake.2013p614206,2013p614206,2013-08-16T06:09:16.72,176.1846,-39.0228,5.2344,2.8319,M,automatic,26,,WEL(GNS_Primary),2013-08-16T06:13:47.982,POINT (176.18457 -39.022813) | |
quake.2013p614204,2013p614204,2013-08-16T06:08:22.069,174.1359,-41.7498,16.0156,4.1489,M,automatic,101,,WEL(GNS_Primary),2013-08-16T06:15:32.353,POINT (174.13591 -41.749753) | |
quake.2013p614201,2013p614201,2013-08-16T06:06:40.4,174.1521,-41.6522,6.0547,2.812,M,automatic,20,,WEL(GNS_Primary),2013-08-16T06:08:58.537,POINT (174.15209 -41.652213) | |
quake.2013p614198,2013p614198,2013-08-16T06:04:59.986,174.2819,-41.6619,5.1172,3.0066,M,automatic,31,,WEL(GNS_Primary),2013-08-16T06:08:41.345,POINT (174.28187 -41.661864) | |
quake.2013p614195,2013p614195,2013-08-16T06:03:17.198,174.7352,-41.3916,9.5703,2.7365,M,automatic,28,,WEL(GNS_Primary),2013-08-16T06:06:42.868,POINT (174.73522 -41.391636) | |
quake.2013p614184,2013p614184,2013-08-16T05:57:52.448,174.3137,-41.687,5.1172,5.0747,M,reviewed,26,,WEL(GNS_Primary),2013-08-16T06:25:07.055,POINT (174.31367 -41.686988) | |
quake.2013p614183,2013p614183,2013-08-16T05:56:49.317,175.4156,-39.8656,32.1875,3.2137,M,automatic,14,,WEL(GNS_Primary),2013-08-16T05:59:32.936,POINT (175.41555 -39.865579) | |
quake.2013p614182,2013p614182,2013-08-16T05:56:10.606,174.0286,-41.6219,10.0391,5.0008,M,reviewed,23,,WEL(GNS_Primary),2013-08-16T06:27:02.745,POINT (174.02858 -41.621888) | |
quake.2013p614177,2013p614177,2013-08-16T05:53:51.72,174.2992,-41.6699,5.1172,3.2033,M,automatic,18,,WEL(GNS_Primary),2013-08-16T05:56:50.313,POINT (174.29921 -41.669881) | |
quake.2013p614173,2013p614173,2013-08-16T05:51:48.376,174.2045,-41.7874,9.7461,3.816,M,automatic,16,,WEL(GNS_Primary),2013-08-16T05:54:58.725,POINT (174.20449 -41.787425) | |
quake.2013p614170,2013p614170,2013-08-16T05:50:15.466,174.14,-41.6863,5.0586,4.1507,M,reviewed,21,,WEL(GNS_Primary),2013-08-16T10:42:36.086,POINT (174.14003 -41.686268) | |
quake.2013p614162,2013p614162,2013-08-16T05:46:46.589,174.2674,-41.6556,7.4609,3.5759,M,automatic,51,,WEL(GNS_Primary),2013-08-16T05:50:43.346,POINT (174.26736 -41.655599) | |
quake.2013p614158,2013p614158,2013-08-16T05:44:39.995,174.823,-41.2799,5.0293,2.3026,M,automatic,12,,WEL(GNS_Primary),2013-08-16T05:47:16.662,POINT (174.82302 -41.279874) | |
quake.2013p614156,2013p614156,2013-08-16T05:42:32.049,174.0025,-41.7325,37.1094,3.7006,M,automatic,13,,WEL(GNS_Primary),2013-08-16T05:45:07.405,POINT (174.0025 -41.732491) | |
quake.2013p614153,2013p614153,2013-08-16T05:41:17.553,174.8302,-41.56,5.2344,4.0657,M,automatic,46,,WEL(GNS_Primary),2013-08-16T05:52:40.912,POINT (174.83022 -41.559971) | |
quake.2013p614148,2013p614148,2013-08-16T05:38:05.237,174.3904,-41.7643,28.0859,3.9563,M,reviewed,11,,WEL(GNS_Primary),2013-08-16T11:18:23.801,POINT (174.3904 -41.764308) | |
quake.2013p614146,2013p614146,2013-08-16T05:37:02.581,174.2734,-41.5519,9.9219,3.6696,M,automatic,20,,WEL(GNS_Primary),2013-08-16T05:39:41.6,POINT (174.27344 -41.551929) | |
quake.2013p614140,2013p614140,2013-08-16T05:34:05.816,174.2801,-41.5384,12.3828,4.357,M,automatic,17,,WEL(GNS_Primary),2013-08-16T05:36:56.484,POINT (174.28006 -41.538361) | |
quake.2013p614135,2013p614135,2013-08-16T05:31:16.483,174.2623,-41.6688,14.2578,5.9759,M,reviewed,40,,WEL(GNS_Primary),2013-08-16T05:47:44.587,POINT (174.26231 -41.668797) | |
quake.2013p614128,2013p614128,2013-08-16T05:27:37.216,176.4391,-38.8981,14.8438,3.4706,M,automatic,23,,WEL(GNS_Primary),2013-08-16T05:30:42.966,POINT (176.43913 -38.898076) | |
quake.2013p614125,2013p614125,2013-08-16T05:26:39.651,174.0896,-41.7388,21.0547,4.8924,M,reviewed,66,,WEL(GNS_Primary),2013-08-16T10:23:44.025,POINT (174.08964 -41.738802) | |
quake.2013p614122,2013p614122,2013-08-16T05:24:17.409,174.1545,-41.698,5.0586,4.5731,M,automatic,40,,WEL(GNS_Primary),2013-08-16T05:27:28.338,POINT (174.1545 -41.697954) | |
quake.2013p614120,2013p614120,2013-08-16T05:23:37.781,175.2385,-39.8402,15.3125,2.9065,M,automatic,13,,WEL(GNS_Primary),2013-08-16T05:26:36.16,POINT (175.23854 -39.840227) | |
quake.2013p614119,2013p614119,2013-08-16T05:22:58.912,174.0942,-41.7907,10.5078,3.483,M,automatic,64,,WEL(GNS_Primary),2013-08-16T05:29:32.646,POINT (174.09417 -41.790655) | |
quake.2013p614112,2013p614112,2013-08-16T05:19:25.034,174.578,-41.5559,30.5469,2.4301,M,automatic,18,,WEL(GNS_Primary),2013-08-16T05:21:37.728,POINT (174.57802 -41.555887) | |
quake.2013p614106,2013p614106,2013-08-16T05:15:58.479,174.5655,-40.1835,8.75,3.6936,M,automatic,16,,WEL(GNS_Primary),2013-08-16T05:18:53.373,POINT (174.56549 -40.183547) | |
quake.2013p614105,2013p614105,2013-08-16T05:15:28.43,174.1832,-41.6606,6.2891,4.1417,M,automatic,87,,WEL(GNS_Primary),2013-08-16T05:21:53.307,POINT (174.18325 -41.660635) | |
quake.2013p614103,2013p614103,2013-08-16T05:14:51.4,173.8808,-40.8788,22.3438,4.1202,M,automatic,22,,WEL(GNS_Primary),2013-08-16T05:18:51.112,POINT (173.88081 -40.87879) | |
quake.2013p614100,2013p614100,2013-08-16T05:12:57.835,174.2508,-41.58,12.3828,2.765,M,automatic,28,,WEL(GNS_Primary),2013-08-16T05:18:07.471,POINT (174.25078 -41.58004) | |
quake.2013p614093,2013p614093,2013-08-16T05:08:57.931,174.2818,-41.6101,12.3828,3.1362,M,automatic,38,,WEL(GNS_Primary),2013-08-16T05:11:56.627,POINT (174.28179 -41.610147) | |
quake.2013p614089,2013p614089,2013-08-16T05:06:41.877,173.9702,-41.812,11.6797,3.3904,M,automatic,50,,WEL(GNS_Primary),2013-08-16T05:16:06.606,POINT (173.97024 -41.812049) | |
quake.2013p614086,2013p614086,2013-08-16T05:05:17.486,174.0237,-41.6338,33.5938,2.8533,M,automatic,12,,WEL(GNS_Primary),2013-08-16T05:07:49.164,POINT (174.02368 -41.63384) | |
quake.2013p614082,2013p614082,2013-08-16T05:03:02.82,175.415,-40.0106,5.4688,3.4297,M,automatic,25,,WEL(GNS_Primary),2013-08-16T05:06:29.03,POINT (175.415 -40.01063) | |
quake.2013p614077,2013p614077,2013-08-16T05:02:26.463,174.0095,-41.6155,5.1172,4.2528,M,automatic,99,,WEL(GNS_Primary),2013-08-16T05:14:03.63,POINT (174.00949 -41.615487) | |
quake.2013p614073,2013p614073,2013-08-16T04:58:08.562,174.1162,-41.7062,8.1641,3.6433,M,automatic,42,,WEL(GNS_Primary),2013-08-16T05:05:25.168,POINT (174.11618 -41.706214) | |
quake.2013p614069,2013p614069,2013-08-16T04:56:00.429,174.1824,-41.5941,8.457,3.8356,M,automatic,51,,WEL(GNS_Primary),2013-08-16T04:59:46.958,POINT (174.18238 -41.594086) | |
quake.2013p614062,2013p614062,2013-08-16T04:52:18.111,174.3059,-41.2267,41.5625,4.3241,M,automatic,18,,WEL(GNS_Primary),2013-08-16T04:56:20.922,POINT (174.30594 -41.226746) | |
quake.2013p614061,2013p614061,2013-08-16T04:52:02.404,174.1076,-41.6709,19.4141,4.1458,M,automatic,84,,WEL(GNS_Primary),2013-08-16T05:01:43.22,POINT (174.1076 -41.670926) | |
quake.2013p614058,2013p614058,2013-08-16T04:50:33.202,174.183,-41.6571,6.3477,3.6375,M,automatic,56,,WEL(GNS_Primary),2013-08-16T04:53:51.648,POINT (174.183 -41.657083) | |
quake.2013p614056,2013p614056,2013-08-16T04:49:03.29,174.0311,-41.768,11.2109,2.9185,M,automatic,22,,WEL(GNS_Primary),2013-08-16T04:51:12.135,POINT (174.03111 -41.767951) | |
quake.2013p614051,2013p614051,2013-08-16T04:46:56.647,173.9257,-41.7899,5.1172,3.5512,M,automatic,32,,WEL(GNS_Primary),2013-08-16T04:50:16.958,POINT (173.92568 -41.789886) | |
quake.2013p614042,2013p614042,2013-08-16T04:42:22.812,174.1753,-41.523,5.5273,3.3763,M,automatic,23,,WEL(GNS_Primary),2013-08-16T04:44:50.858,POINT (174.17527 -41.522973) | |
quake.2013p614040,2013p614040,2013-08-16T04:40:31.154,174.0308,-41.6069,24.5703,2.7604,M,automatic,18,,WEL(GNS_Primary),2013-08-16T04:42:44.165,POINT (174.03084 -41.606939) | |
quake.2013p614033,2013p614033,2013-08-16T04:37:17.123,174.2901,-41.5902,10.332,2.9187,M,automatic,24,,WEL(GNS_Primary),2013-08-16T04:42:11.408,POINT (174.29014 -41.590165) | |
quake.2013p614025,2013p614025,2013-08-16T04:32:54.521,174.2228,-41.6437,6.9336,3.4929,M,automatic,55,,WEL(GNS_Primary),2013-08-16T04:44:23.158,POINT (174.22282 -41.643656) | |
quake.2013p614022,2013p614022,2013-08-16T04:31:01.599,174.1272,-41.8696,34.2969,2.8259,M,automatic,22,,WEL(GNS_Primary),2013-08-16T04:34:53.633,POINT (174.12715 -41.869618) | |
quake.2013p614020,2013p614020,2013-08-16T04:30:02.382,174.1803,-41.6595,5.0586,2.9557,M,automatic,31,,WEL(GNS_Primary),2013-08-16T04:32:18.308,POINT (174.18033 -41.659507) | |
quake.2013p614015,2013p614015,2013-08-16T04:27:38.155,174.2871,-41.6161,5.1172,2.9445,M,automatic,31,,WEL(GNS_Primary),2013-08-16T04:30:31.696,POINT (174.28708 -41.616141) | |
quake.2013p614011,2013p614011,2013-08-16T04:25:00.613,174.4844,-41.4355,143.75,3.7825,M,automatic,17,,WEL(GNS_Primary),2013-08-16T04:28:03.599,POINT (174.48445 -41.435533) | |
quake.2013p614010,2013p614010,2013-08-16T04:24:46.426,174.2454,-41.6889,5.0586,3.8644,M,automatic,50,,WEL(GNS_Primary),2013-08-16T04:39:20.613,POINT (174.24543 -41.688946) | |
quake.2013p614007,2013p614007,2013-08-16T04:24:10.864,174.2,-41.5485,11.9141,3.5521,M,automatic,20,,WEL(GNS_Primary),2013-08-16T04:26:46.515,POINT (174.19997 -41.548516) | |
quake.2013p614005,2013p614005,2013-08-16T04:22:01.289,174.1212,-41.5704,9.3359,3.1686,M,automatic,27,,WEL(GNS_Primary),2013-08-16T04:34:41.989,POINT (174.12117 -41.570388) | |
quake.2013p613999,2013p613999,2013-08-16T04:19:37.506,173.9606,-41.6424,12.3828,3.2832,M,automatic,11,,WEL(GNS_Primary),2013-08-16T04:22:30.345,POINT (173.96064 -41.642415) | |
quake.2013p614000,2013p614000,2013-08-16T04:19:06.639,174.4058,-40.2021,217.8125,2.9861,M,automatic,11,,WEL(GNS_Primary),2013-08-16T04:22:20.874,POINT (174.40583 -40.202105) | |
quake.2013p613994,2013p613994,2013-08-16T04:16:30.351,174.1981,-41.6127,11.2109,2.8067,M,automatic,26,,WEL(GNS_Primary),2013-08-16T04:18:29.955,POINT (174.19812 -41.612691) | |
quake.2013p613988,2013p613988,2013-08-16T04:12:50.119,174.1685,-41.7591,45.5469,3.839,M,automatic,42,,WEL(GNS_Primary),2013-08-16T04:16:36.389,POINT (174.16852 -41.759052) | |
quake.2013p613986,2013p613986,2013-08-16T04:12:00.568,175.2125,-40.4064,5.9375,3.276,M,automatic,15,,WEL(GNS_Primary),2013-08-16T04:15:10.922,POINT (175.21253 -40.406423) | |
quake.2013p613985,2013p613985,2013-08-16T04:11:30.598,173.9862,-41.7988,12.7344,3.869,M,automatic,58,,WEL(GNS_Primary),2013-08-16T04:25:32.831,POINT (173.9862 -41.798752) | |
quake.2013p613979,2013p613979,2013-08-16T04:08:04.234,174.2251,-41.6594,5.1172,3.3162,M,automatic,11,,WEL(GNS_Primary),2013-08-16T04:10:24.242,POINT (174.22512 -41.659363) | |
quake.2013p613977,2013p613977,2013-08-16T04:06:58.683,174.1776,-41.6571,10.0391,3.3744,M,automatic,39,,WEL(GNS_Primary),2013-08-16T04:21:13.123,POINT (174.17759 -41.657133) | |
quake.2013p613972,2013p613972,2013-08-16T04:04:11.02,174.5893,-41.2184,18.125,4.1944,M,automatic,14,,WEL(GNS_Primary),2013-08-16T04:07:29.455,POINT (174.58928 -41.218444) | |
quake.2013p613971,2013p613971,2013-08-16T04:03:54.775,174.257,-41.6472,5.0586,4.3703,M,automatic,77,,WEL(GNS_Primary),2013-08-16T04:20:31.188,POINT (174.25703 -41.647163) | |
quake.2013p613968,2013p613968,2013-08-16T04:02:32.397,174.2297,-41.6703,16.8359,4.1161,M,automatic,44,,WEL(GNS_Primary),2013-08-16T04:16:54.454,POINT (174.22966 -41.67034) | |
quake.2013p613965,2013p613965,2013-08-16T04:00:40.495,173.986,-41.8,12.8516,3.6071,M,automatic,46,,WEL(GNS_Primary),2013-08-16T04:06:24.881,POINT (173.98601 -41.799997) | |
quake.2013p613962,2013p613962,2013-08-16T03:59:25.493,173.8632,-41.6637,26.9141,3.0245,M,automatic,11,,WEL(GNS_Primary),2013-08-16T04:01:24.043,POINT (173.86321 -41.663746) | |
quake.2013p613959,2013p613959,2013-08-16T03:58:05.033,174.3106,-41.6348,5.2344,3.4736,M,automatic,14,,WEL(GNS_Primary),2013-08-16T04:01:05.165,POINT (174.31056 -41.634765) | |
quake.2013p613956,2013p613956,2013-08-16T03:56:03.07,173.9865,-41.6448,11.6797,3.6665,M,automatic,14,,WEL(GNS_Primary),2013-08-16T03:59:14.025,POINT (173.98651 -41.644844) | |
quake.2013p613947,2013p613947,2013-08-16T03:51:35.749,174.1742,-41.6952,19.3555,5.5872,M,reviewed,54,,WEL(GNS_Primary),2013-08-16T04:25:03.593,POINT (174.17422 -41.695197) | |
quake.2013p613944,2013p613944,2013-08-16T03:49:34.089,174.0386,-41.729,5.1172,3.5846,M,reviewed,27,,WEL(GNS_Primary),2013-08-16T04:40:51.234,POINT (174.03858 -41.728962) | |
quake.2013p613940,2013p613940,2013-08-16T03:47:43.885,174.2731,-41.5231,12.3828,3.093,M,automatic,28,,WEL(GNS_Primary),2013-08-16T03:50:34.39,POINT (174.27307 -41.523141) | |
quake.2013p613938,2013p613938,2013-08-16T03:46:31.746,174.2592,-41.3772,21.4062,3.088,M,automatic,11,,WEL(GNS_Primary),2013-08-16T03:49:28.813,POINT (174.25924 -41.377177) | |
quake.2013p613931,2013p613931,2013-08-16T03:42:46.847,174.1602,-41.7008,5.5859,3.7122,M,automatic,57,,WEL(GNS_Primary),2013-08-16T03:57:32.184,POINT (174.16024 -41.700834) | |
quake.2013p613924,2013p613924,2013-08-16T03:39:03.501,174.1033,-41.7098,5.7617,3.8287,M,automatic,37,,WEL(GNS_Primary),2013-08-16T03:41:16.878,POINT (174.10328 -41.709797) | |
quake.2013p613920,2013p613920,2013-08-16T03:36:54.166,174.1125,-41.7203,5.1172,3.8075,M,automatic,29,,WEL(GNS_Primary),2013-08-16T03:51:44.897,POINT (174.11252 -41.720287) | |
quake.2013p613918,2013p613918,2013-08-16T03:35:43.398,173.9138,-41.7313,7.6367,3.7914,M,automatic,16,,WEL(GNS_Primary),2013-08-16T03:38:49.959,POINT (173.9138 -41.731348) | |
quake.2013p613915,2013p613915,2013-08-16T03:34:11.19,174.082,-41.743,5.0586,3.4376,M,automatic,38,,WEL(GNS_Primary),2013-08-16T03:44:38.103,POINT (174.08205 -41.742959) | |
quake.2013p613909,2013p613909,2013-08-16T03:30:45.282,174.146,-41.7234,16.4844,4.3132,M,automatic,72,,WEL(GNS_Primary),2013-08-16T03:48:23.167,POINT (174.14605 -41.723357) | |
quake.2013p613905,2013p613905,2013-08-16T03:29:01.348,174.1522,-41.847,39.9219,4.3836,M,automatic,15,,WEL(GNS_Primary),2013-08-16T03:34:18.395,POINT (174.15223 -41.846996) | |
quake.2013p613901,2013p613901,2013-08-16T03:26:50.889,174.3672,-41.6168,16.6016,4.7323,M,reviewed,39,,WEL(GNS_Primary),2013-08-16T07:51:22.98,POINT (174.3672 -41.616828) | |
quake.2013p613899,2013p613899,2013-08-16T03:25:47.034,174.0645,-41.711,18.8281,3.1672,M,reviewed,17,,WEL(GNS_Primary),2013-08-16T10:53:56.957,POINT (174.06448 -41.710952) | |
quake.2013p613891,2013p613891,2013-08-16T03:21:31.345,174.0577,-41.7762,17.3047,5.0098,M,reviewed,40,,WEL(GNS_Primary),2013-08-16T04:36:38.627,POINT (174.05769 -41.776238) | |
quake.2013p613879,2013p613879,2013-08-16T03:15:06.191,174.0807,-41.7469,5.1172,4.5658,M,automatic,64,,WEL(GNS_Primary),2013-08-16T03:24:35.535,POINT (174.08069 -41.746882) | |
quake.2013p613875,2013p613875,2013-08-16T03:12:55.589,174.3273,-41.6261,33.5938,4.2412,M,automatic,23,,WEL(GNS_Primary),2013-08-16T03:19:41.072,POINT (174.32727 -41.626081) | |
quake.2013p613867,2013p613867,2013-08-16T03:09:08.084,174.0495,-41.742,8.4567,5.5485,M,reviewed,15,,WEL(GNS_Primary),2013-08-16T03:18:13.049,POINT (174.04953 -41.742035) | |
quake.2013p613864,2013p613864,2013-08-16T03:06:58.889,175.3112,-39.4656,10.625,3.8067,M,automatic,23,,WEL(GNS_Primary),2013-08-16T03:11:04.368,POINT (175.31118 -39.465557) | |
quake.2013p613862,2013p613862,2013-08-16T03:06:13.62,174.1842,-41.7228,5.2968,4.5935,M,reviewed,20,,WEL(GNS_Primary),2013-08-16T03:30:58.345,POINT (174.18417 -41.722813) | |
quake.2013p613857,2013p613857,2013-08-16T03:03:14.433,173.9112,-41.643,35.2344,3.2214,M,automatic,10,,WEL(GNS_Primary),2013-08-16T03:05:53.34,POINT (173.91116 -41.643047) | |
quake.2013p613844,2013p613844,2013-08-16T02:56:27.347,174.2659,-41.5977,8.5063,5.0191,M,reviewed,30,,WEL(GNS_Primary),2013-08-16T03:13:53.59,POINT (174.26587 -41.597672) | |
quake.2013p613840,2013p613840,2013-08-16T02:53:56.218,174.0673,-41.7488,5.0586,4.4554,M,automatic,26,,WEL(GNS_Primary),2013-08-16T03:02:10.205,POINT (174.06726 -41.748782) | |
quake.2013p613836,2013p613836,2013-08-16T02:51:51.342,174.0813,-41.7275,5.0586,4.7287,M,reviewed,32,,WEL(GNS_Primary),2013-08-16T03:21:46.898,POINT (174.0813 -41.727504) | |
quake.2013p613832,2013p613832,2013-08-16T02:49:54.27,174.3151,-41.6042,5.0586,4.4872,M,automatic,26,,WEL(GNS_Primary),2013-08-16T03:02:05.808,POINT (174.31506 -41.604243) | |
quake.2013p613824,2013p613824,2013-08-16T02:45:27.142,174.1168,-41.7638,5.8203,5.3872,M,reviewed,36,,WEL(GNS_Primary),2013-08-16T03:06:48.006,POINT (174.11679 -41.76379) | |
quake.2013p613817,2013p613817,2013-08-16T02:41:47.513,174.3304,-41.5002,8.0469,4.2784,M,reviewed,25,,WEL(GNS_Primary),2013-08-16T04:29:39.328,POINT (174.33035 -41.500221) | |
quake.2013p613809,2013p613809,2013-08-16T02:37:27.876,174.127,-41.7061,8.9844,5.3944,M,reviewed,38,,WEL(GNS_Primary),2013-08-16T03:18:05.167,POINT (174.12701 -41.706115) | |
quake.2013p613797,2013p613797,2013-08-16T02:31:05.753,174.1522,-41.734,8.1641,6.6382,M,reviewed,15,,WEL(GNS_Primary),2013-08-16T04:19:28.546,POINT (174.15219 -41.733964) | |
quake.2013p613749,2013p613749,2013-08-16T02:05:47.124,174.3574,-41.6733,13.5547,2.5153,M,automatic,30,,WEL(GNS_Primary),2013-08-16T02:08:17.114,POINT (174.35738 -41.673258) | |
quake.2013p613699,2013p613699,2013-08-16T01:39:03.945,172.6157,-43.6622,24.8047,2.4868,M,automatic,14,,WEL(GNS_Primary),2013-08-16T01:41:40.661,POINT (172.61568 -43.662217) | |
quake.2013p613692,2013p613692,2013-08-16T01:35:29.536,175.4556,-39.8343,24.4531,2.0821,M,automatic,18,,WEL(GNS_Primary),2013-08-16T01:56:45.258,POINT (175.4556 -39.834272) | |
quake.2013p613689,2013p613689,2013-08-16T01:33:42.19,174.4068,-41.6943,6.6406,2.2886,M,automatic,27,,WEL(GNS_Primary),2013-08-16T01:35:56.062,POINT (174.40681 -41.69431) | |
quake.2013p613685,2013p613685,2013-08-16T01:31:27.612,172.175,-42.4373,5.1172,2.6995,M,automatic,20,,WEL(GNS_Primary),2013-08-16T01:34:07.37,POINT (172.17495 -42.437342) | |
quake.2013p613661,2013p613661,2013-08-16T01:18:40.991,174.3535,-41.6158,8.9258,2.7397,M,automatic,39,,WEL(GNS_Primary),2013-08-16T01:52:07.605,POINT (174.35347 -41.615799) | |
quake.2013p613641,2013p613641,2013-08-16T01:08:08.804,174.4596,-39.9101,129.6875,2.4107,M,automatic,10,,WEL(GNS_Primary),2013-08-16T01:10:18.309,POINT (174.45956 -39.910125) | |
quake.2013p613618,2013p613618,2013-08-16T00:55:55.422,175.5329,-38.5619,204.6875,2.9245,M,automatic,26,,WEL(GNS_Primary),2013-08-16T00:59:34.25,POINT (175.53289 -38.561885) | |
quake.2013p613589,2013p613589,2013-08-16T00:40:23.965,176.561,-39.888,26.2109,2.2656,M,automatic,20,,WEL(GNS_Primary),2013-08-16T01:38:30.675,POINT (176.56105 -39.888036) | |
quake.2013p613521,2013p613521,2013-08-16T00:04:04.646,175.2632,-38.6172,5.0586,2.5138,M,automatic,36,,WEL(GNS_Primary),2013-08-16T01:26:52.093,POINT (175.26322 -38.617174) | |
quake.2013p613344,2013p613344,2013-08-15T22:29:58.483,174.2391,-41.6898,5.1172,2.0742,M,automatic,14,,WEL(GNS_Primary),2013-08-15T22:33:08.525,POINT (174.23912 -41.689804) | |
quake.2013p613325,2013p613325,2013-08-15T22:19:34.658,174.2806,-40.482,117.5,2.4391,M,automatic,13,,WEL(GNS_Primary),2013-08-15T22:22:34.371,POINT (174.28064 -40.481952) | |
quake.2013p613279,2013p613279,2013-08-15T21:55:24.828,174.1245,-41.7175,5.0586,1.8248,M,automatic,10,,WEL(GNS_Primary),2013-08-15T21:57:43.883,POINT (174.12453 -41.717512) | |
quake.2013p613189,2013p613189,2013-08-15T21:07:36.968,176.3316,-39.6086,25.2734,1.7,M,automatic,14,,WEL(GNS_Primary),2013-08-16T00:26:08.584,POINT (176.33162 -39.6086) | |
quake.2013p613020,2013p613020,2013-08-15T19:37:24.825,177.052,-39.8503,18.4766,2.0143,M,automatic,16,,WEL(GNS_Primary),2013-08-15T23:56:01.896,POINT (177.05199 -39.850344) | |
quake.2013p612897,2013p612897,2013-08-15T18:31:50.77,174.1388,-41.6793,10.2734,2.0477,M,automatic,21,,WEL(GNS_Primary),2013-08-15T18:33:50.147,POINT (174.13876 -41.679349) | |
quake.2013p612879,2013p612879,2013-08-15T18:22:21.437,174.0972,-41.689,14.9609,2.6367,M,reviewed,17,,WEL(GNS_Primary),2013-08-15T20:06:20.322,POINT (174.09716 -41.688971) | |
quake.2013p612833,2013p612833,2013-08-15T17:57:53.017,176.7691,-38.0695,9.3359,1.7743,M,reviewed,16,,WEL(GNS_Primary),2013-08-16T05:17:09.135,POINT (176.76907 -38.069477) | |
quake.2013p612830,2013p612830,2013-08-15T17:56:05.845,178.2399,-38.0362,42.2656,1.5438,M,automatic,12,,WEL(GNS_Primary),2013-08-15T17:58:25.862,POINT (178.23992 -38.03624) | |
quake.2013p612798,2013p612798,2013-08-15T17:38:47.711,174.2858,-41.5827,11.6797,1.7409,M,automatic,13,,WEL(GNS_Primary),2013-08-15T17:41:15.356,POINT (174.28584 -41.58274) | |
quake.2013p612778,2013p612778,2013-08-15T17:28:39.948,177.09,-35.5402,278.75,3.0098,M,automatic,26,,WEL(GNS_Primary),2013-08-15T17:32:24.933,POINT (177.09005 -35.540196) | |
quake.2013p612695,2013p612695,2013-08-15T16:44:10.158,174.4311,-41.655,5.2344,1.7561,M,automatic,10,,WEL(GNS_Primary),2013-08-15T16:45:47.495,POINT (174.43107 -41.654988) | |
quake.2013p612632,2013p612632,2013-08-15T16:10:27.537,175.7045,-38.5692,155.5482,2.4331,M,reviewed,47,,WEL(GNS_Primary),2013-08-16T05:47:50.403,POINT (175.70448 -38.569176) | |
quake.2013p612612,2013p612612,2013-08-15T16:00:03.412,177.1312,-37.2579,240.3125,2.5129,M,automatic,28,,WEL(GNS_Primary),2013-08-15T16:03:32.068,POINT (177.13122 -37.257922) | |
quake.2013p612584,2013p612584,2013-08-15T15:45:02.086,176.6274,-38.1588,186.875,2.0227,M,automatic,10,,WEL(GNS_Primary),2013-08-15T15:48:10.297,POINT (176.62743 -38.158846) | |
quake.2013p612548,2013p612548,2013-08-15T15:25:42.316,174.3964,-41.5017,12.8516,1.761,M,automatic,14,,WEL(GNS_Primary),2013-08-15T15:27:34.525,POINT (174.39635 -41.501748) | |
quake.2013p612493,2013p612493,2013-08-15T14:56:34.801,173.9867,-42.2818,78.125,2.2738,M,automatic,12,,WEL(GNS_Primary),2013-08-15T14:58:31.321,POINT (173.98672 -42.281788) | |
quake.2013p612438,2013p612438,2013-08-15T14:27:00.114,178.2904,-36.5979,171.875,3.0111,M,automatic,17,,WEL(GNS_Primary),2013-08-15T14:29:50.784,POINT (178.29045 -36.59793) | |
quake.2013p612406,2013p612406,2013-08-15T14:10:24.814,173.6932,-40.4761,101.0938,2.5357,M,automatic,20,,WEL(GNS_Primary),2013-08-15T14:13:47.692,POINT (173.69321 -40.476058) | |
quake.2013p612403,2013p612403,2013-08-15T14:08:30.544,175.1557,-39.2392,16.0742,1.3129,M,automatic,13,,WEL(GNS_Primary),2013-08-15T14:10:00.266,POINT (175.15568 -39.239248) | |
quake.2013p612380,2013p612380,2013-08-15T13:56:28.782,172.5018,-41.2309,233.5156,3.2757,M,automatic,62,,WEL(GNS_Primary),2013-08-15T14:00:30.362,POINT (172.50183 -41.230947) | |
quake.2013p612324,2013p612324,2013-08-15T13:26:19.386,174.224,-41.5526,11.9141,2.1596,M,automatic,20,,WEL(GNS_Primary),2013-08-15T13:29:28.067,POINT (174.22403 -41.55256) | |
quake.2013p612286,2013p612286,2013-08-15T13:06:09.38,173.3547,-40.9825,73.6719,2.22,M,automatic,14,,WEL(GNS_Primary),2013-08-15T13:09:21.346,POINT (173.3547 -40.982471) | |
quake.2013p612268,2013p612268,2013-08-15T12:57:05.177,176.223,-39.6153,27.1484,2.1865,M,automatic,34,,WEL(GNS_Primary),2013-08-15T13:00:09.351,POINT (176.22305 -39.615315) | |
quake.2013p612243,2013p612243,2013-08-15T12:43:33.666,173.699,-40.7724,113.5156,2.7473,M,automatic,10,,WEL(GNS_Primary),2013-08-15T12:46:38.464,POINT (173.69902 -40.772427) | |
quake.2013p612168,2013p612168,2013-08-15T12:03:30.211,171.0958,-43.0578,5.0586,2.5356,M,automatic,12,,WEL(GNS_Primary),2013-08-15T12:05:55.009,POINT (171.09576 -43.057761) | |
quake.2013p612139,2013p612139,2013-08-15T11:47:41.012,174.1609,-41.7019,5.0586,2.2398,M,automatic,16,,WEL(GNS_Primary),2013-08-15T11:49:57.925,POINT (174.16086 -41.701895) | |
quake.2013p612124,2013p612124,2013-08-15T11:40:08.056,174.1312,-41.7448,5.0586,2.4185,M,automatic,24,,WEL(GNS_Primary),2013-08-15T11:42:19.277,POINT (174.13124 -41.744819) | |
quake.2013p612096,2013p612096,2013-08-15T11:24:48.029,174.2087,-41.6968,84.4531,2.1706,M,automatic,16,,WEL(GNS_Primary),2013-08-15T11:26:51.881,POINT (174.20873 -41.696836) | |
quake.2013p612026,2013p612026,2013-08-15T10:47:45.645,176.0319,-37.8508,145.2359,2.3842,M,reviewed,14,,WEL(GNS_Primary),2013-08-16T01:31:55.763,POINT (176.03186 -37.8508) | |
quake.2013p612022,2013p612022,2013-08-15T10:45:47.824,176.7857,-39.2857,21.7578,1.9153,M,automatic,22,,WEL(GNS_Primary),2013-08-15T10:47:40.444,POINT (176.78572 -39.285715) | |
quake.2013p611965,2013p611965,2013-08-15T10:15:09.106,174.3967,-41.6894,5.1172,2.2266,M,automatic,20,,WEL(GNS_Primary),2013-08-15T10:19:13.127,POINT (174.39671 -41.689426) | |
quake.2013p611958,2013p611958,2013-08-15T10:11:20.526,175.1585,-39.9003,23.5156,2.045,M,automatic,16,,WEL(GNS_Primary),2013-08-15T10:13:12.376,POINT (175.15852 -39.900349) | |
quake.2013p611954,2013p611954,2013-08-15T10:09:19.491,174.1205,-41.811,10.8594,2.0669,M,automatic,12,,WEL(GNS_Primary),2013-08-15T10:11:45.328,POINT (174.1205 -41.811031) | |
quake.2013p611919,2013p611919,2013-08-15T09:50:46.788,174.3928,-41.6952,13.0859,2.8093,M,reviewed,18,,WEL(GNS_Primary),2013-08-15T11:09:31.982,POINT (174.39279 -41.69515) | |
quake.2013p611885,2013p611885,2013-08-15T09:33:21.792,174.3882,-41.695,12.1484,2.5025,M,automatic,29,,WEL(GNS_Primary),2013-08-15T09:36:17.28,POINT (174.38817 -41.695014) | |
quake.2013p611850,2013p611850,2013-08-15T09:13:44.349,174.4275,-41.7112,9.8047,2.2033,M,automatic,26,,WEL(GNS_Primary),2013-08-15T09:17:23.874,POINT (174.42752 -41.711183) | |
quake.2013p611822,2013p611822,2013-08-15T08:58:59.889,174.3938,-41.6985,13.3203,2.1486,M,automatic,24,,WEL(GNS_Primary),2013-08-15T09:02:28.193,POINT (174.39384 -41.698517) | |
quake.2013p611795,2013p611795,2013-08-15T08:44:32.586,174.273,-41.5965,5.1172,2.0519,M,automatic,10,,WEL(GNS_Primary),2013-08-15T08:47:35.035,POINT (174.27301 -41.596542) | |
quake.2013p611792,2013p611792,2013-08-15T08:43:13.178,177.0231,-37.2945,140.9375,2.4436,M,automatic,16,,WEL(GNS_Primary),2013-08-15T08:46:31.324,POINT (177.02307 -37.294536) | |
quake.2013p611776,2013p611776,2013-08-15T08:34:45.129,174.331,-41.6848,5.0586,2.3229,M,automatic,23,,WEL(GNS_Primary),2013-08-15T08:36:51.161,POINT (174.33098 -41.684786) | |
quake.2013p611752,2013p611752,2013-08-15T08:21:40.513,174.1606,-41.714,5.0586,2.4391,M,automatic,30,,WEL(GNS_Primary),2013-08-15T08:23:48.677,POINT (174.16059 -41.713982) | |
quake.2013p611747,2013p611747,2013-08-15T08:18:58.854,174.3952,-41.6946,6.8164,3.0418,M,reviewed,19,,WEL(GNS_Primary),2013-08-15T11:04:34.995,POINT (174.39518 -41.694595) | |
quake.2013p611730,2013p611730,2013-08-15T08:09:53.882,176.305,-40.2583,56.3281,2.2216,M,automatic,30,,WEL(GNS_Primary),2013-08-15T08:12:20.213,POINT (176.30505 -40.258263) | |
quake.2013p611695,2013p611695,2013-08-15T07:51:31.205,174.1592,-41.7131,5.0586,2.1124,M,automatic,11,,WEL(GNS_Primary),2013-08-15T07:53:14.269,POINT (174.15918 -41.713107) | |
quake.2013p611668,2013p611668,2013-08-15T07:37:13.116,174.0838,-40.0114,113.0469,2.714,M,automatic,48,,WEL(GNS_Primary),2013-08-15T07:40:41.466,POINT (174.08375 -40.011407) | |
quake.2013p611653,2013p611653,2013-08-15T07:29:11.571,174.4469,-41.5249,10.2734,2.4095,M,automatic,31,,WEL(GNS_Primary),2013-08-15T07:39:40.203,POINT (174.44689 -41.524921) | |
quake.2013p611637,2013p611637,2013-08-15T07:20:14.883,174.3961,-41.6619,5.1172,2.009,M,automatic,10,,WEL(GNS_Primary),2013-08-15T07:22:07.571,POINT (174.3961 -41.661884) | |
quake.2013p611631,2013p611631,2013-08-15T07:17:23.65,174.1454,-41.7277,8.6914,2.8675,M,reviewed,17,,WEL(GNS_Primary),2013-08-15T07:28:13.426,POINT (174.1454 -41.727717) | |
quake.2013p611613,2013p611613,2013-08-15T07:07:46.472,174.1306,-41.7233,5.1172,2.3678,M,automatic,24,,WEL(GNS_Primary),2013-08-15T07:09:59.456,POINT (174.1306 -41.723321) | |
quake.2013p611600,2013p611600,2013-08-15T07:00:29.234,174.1519,-41.71,9.1602,4.3896,M,reviewed,16,earthquake,WEL(GNS_Primary),2013-08-15T07:18:41.409,POINT (174.15192 -41.709974) | |
quake.2013p611528,2013p611528,2013-08-15T06:22:18.293,175.2936,-39.6943,41.3281,1.8443,M,automatic,16,,WEL(GNS_Primary),2013-08-15T06:24:02.488,POINT (175.29355 -39.69431) | |
quake.2013p611486,2013p611486,2013-08-15T05:59:50.031,174.3967,-41.7003,10.7422,2.407,M,automatic,27,,WEL(GNS_Primary),2013-08-15T06:02:42.362,POINT (174.39667 -41.700268) | |
quake.2013p611454,2013p611454,2013-08-15T05:43:11.453,175.4138,-38.9434,112.3438,1.5883,M,automatic,22,,WEL(GNS_Primary),2013-08-15T05:46:22.074,POINT (175.41379 -38.943416) | |
quake.2013p611417,2013p611417,2013-08-15T05:23:27.058,174.2355,-41.4958,34.2969,1.7692,M,automatic,13,,WEL(GNS_Primary),2013-08-15T05:26:07.392,POINT (174.23554 -41.49576) | |
quake.2013p611410,2013p611410,2013-08-15T05:19:29.036,177.4603,-39.1082,24.043,2.0195,M,automatic,20,,WEL(GNS_Primary),2013-08-15T05:22:35.913,POINT (177.46033 -39.108174) | |
quake.2013p611213,2013p611213,2013-08-15T03:34:18.782,173.5389,-41.6546,93.125,2.1541,M,automatic,10,,WEL(GNS_Primary),2013-08-15T03:35:59.117,POINT (173.53891 -41.654633) | |
quake.2013p611209,2013p611209,2013-08-15T03:32:34.671,174.3877,-41.5507,5.1172,1.8205,M,automatic,13,,WEL(GNS_Primary),2013-08-15T03:34:36.684,POINT (174.38766 -41.550703) | |
quake.2013p611139,2013p611139,2013-08-15T02:55:35.42,174.1937,-41.5392,20.5859,2.1258,M,automatic,21,,WEL(GNS_Primary),2013-08-15T02:57:32.785,POINT (174.19366 -41.539154) | |
quake.2013p611121,2013p611121,2013-08-15T02:45:37.474,174.4228,-41.5317,5.1172,1.9288,M,automatic,19,,WEL(GNS_Primary),2013-08-15T02:47:39.12,POINT (174.42279 -41.531719) | |
quake.2013p611114,2013p611114,2013-08-15T02:41:52.496,174.3942,-41.5378,12.4414,3.0822,M,automatic,41,,WEL(GNS_Primary),2013-08-15T02:44:44.26,POINT (174.39418 -41.537758) | |
quake.2013p611073,2013p611073,2013-08-15T02:20:09.182,174.4,-41.5292,9.9805,2.9299,M,automatic,46,,WEL(GNS_Primary),2013-08-15T02:23:11.312,POINT (174.40005 -41.529173) | |
quake.2013p611001,2013p611001,2013-08-15T01:41:49.716,174.2546,-41.4974,9.9805,2.6931,M,automatic,42,,WEL(GNS_Primary),2013-08-15T01:45:44.98,POINT (174.25455 -41.497363) | |
quake.2013p610991,2013p610991,2013-08-15T01:36:03.65,174.2542,-41.5468,5.1172,2.2326,M,automatic,17,,WEL(GNS_Primary),2013-08-15T01:38:25.238,POINT (174.25417 -41.546774) | |
quake.2013p610902,2013p610902,2013-08-15T00:48:51.033,177.6422,-35.4579,224.375,3.3157,M,automatic,17,,WEL(GNS_Primary),2013-08-15T00:52:27.55,POINT (177.64225 -35.457874) | |
quake.2013p610820,2013p610820,2013-08-15T00:05:04.319,173.3727,-41.5371,52.5781,2.2666,M,automatic,17,,WEL(GNS_Primary),2013-08-15T00:07:20.058,POINT (173.37271 -41.537095) | |
quake.2013p610729,2013p610729,2013-08-14T23:16:56.24,175.7566,-40.5144,11.0938,1.8316,M,automatic,11,,WEL(GNS_Primary),2013-08-14T23:19:43.225,POINT (175.75657 -40.514398) | |
quake.2013p610728,2013p610728,2013-08-14T23:15:53.035,178.251,-37.9433,5.2344,2.697,M,automatic,13,,WEL(GNS_Primary),2013-08-14T23:18:58.609,POINT (178.25098 -37.943313) | |
quake.2013p610725,2013p610725,2013-08-14T23:14:33.724,175.7446,-39.0519,145.625,3.3919,M,automatic,22,,WEL(GNS_Primary),2013-08-14T23:18:29.042,POINT (175.74455 -39.051893) | |
quake.2013p610724,2013p610724,2013-08-14T23:13:57.081,178.3052,-36.6917,194.375,3.5946,M,automatic,33,,WEL(GNS_Primary),2013-08-14T23:17:37.436,POINT (178.30525 -36.691671) | |
quake.2013p610668,2013p610668,2013-08-14T22:44:04.509,174.2193,-41.6258,5.1172,2.161,M,automatic,18,,WEL(GNS_Primary),2013-08-14T22:50:11.273,POINT (174.2193 -41.625826) | |
quake.2013p610600,2013p610600,2013-08-14T22:07:53.74,177.9051,-35.7995,171.875,3.397,M,automatic,22,,WEL(GNS_Primary),2013-08-14T22:11:34.6,POINT (177.90511 -35.799473) | |
quake.2013p610555,2013p610555,2013-08-14T21:43:56.702,174.4377,-41.5138,12.3828,2.125,M,automatic,19,,WEL(GNS_Primary),2013-08-14T21:45:40.713,POINT (174.43772 -41.513809) | |
quake.2013p610511,2013p610511,2013-08-14T21:20:37.928,174.1271,-41.7259,10.332,2.8437,M,reviewed,15,,WEL(GNS_Primary),2013-08-14T23:12:04.539,POINT (174.12712 -41.72593) | |
quake.2013p610404,2013p610404,2013-08-14T20:23:41.959,173.5399,-41.784,76.0156,2.5128,M,automatic,22,,WEL(GNS_Primary),2013-08-14T20:26:11.577,POINT (173.5399 -41.783995) | |
quake.2013p610288,2013p610288,2013-08-14T19:21:38.838,174.2556,-41.5994,8.6328,2.1729,M,automatic,14,,WEL(GNS_Primary),2013-08-14T19:23:35.937,POINT (174.25563 -41.599368) | |
quake.2013p610252,2013p610252,2013-08-14T19:02:45.061,174.2629,-41.6229,5.5859,2.3463,M,automatic,19,,WEL(GNS_Primary),2013-08-14T19:04:43.222,POINT (174.26293 -41.622938) | |
quake.2013p610093,2013p610093,2013-08-14T17:37:44.072,174.3099,-41.5976,6.9922,1.8165,M,automatic,11,,WEL(GNS_Primary),2013-08-14T17:39:20.174,POINT (174.30986 -41.597626) | |
quake.2013p610084,2013p610084,2013-08-14T17:32:53.382,175.4584,-39.6234,151.25,2.1009,M,automatic,12,,WEL(GNS_Primary),2013-08-14T17:34:26.761,POINT (175.45845 -39.623429) | |
quake.2013p610055,2013p610055,2013-08-14T17:17:30.895,177.0762,-39.2725,181.25,2.4348,M,automatic,14,,WEL(GNS_Primary),2013-08-14T17:20:39.142,POINT (177.07618 -39.272467) | |
quake.2013p609931,2013p609931,2013-08-14T16:11:18.496,174.8461,-39.7663,105.4297,3.3311,M,automatic,126,,WEL(GNS_Primary),2013-08-14T17:27:05.367,POINT (174.84607 -39.766252) | |
quake.2013p609917,2013p609917,2013-08-14T16:03:45.292,175.5612,-40.2368,86.5625,2.0488,M,automatic,10,,WEL(GNS_Primary),2013-08-14T16:06:27.406,POINT (175.56117 -40.236786) | |
quake.2013p609915,2013p609915,2013-08-14T16:03:13.851,175.4953,-38.2039,220.625,3.0388,M,automatic,17,,WEL(GNS_Primary),2013-08-14T16:06:31.744,POINT (175.49529 -38.203895) | |
quake.2013p609891,2013p609891,2013-08-14T15:49:56.94,174.3661,-41.8036,8.3984,2.0386,M,automatic,12,,WEL(GNS_Primary),2013-08-14T15:52:06.131,POINT (174.36607 -41.803631) | |
quake.2013p609840,2013p609840,2013-08-14T15:22:54.342,175.958,-38.8261,10.6836,2.2043,M,reviewed,26,,WEL(GNS_Primary),2013-08-15T05:43:27.68,POINT (175.95795 -38.826054) | |
quake.2013p609807,2013p609807,2013-08-14T15:05:14.162,174.4482,-41.3988,13.2617,2.0768,M,automatic,19,,WEL(GNS_Primary),2013-08-14T15:08:06.256,POINT (174.44823 -41.398809) | |
quake.2013p609731,2013p609731,2013-08-14T14:24:46.85,178.613,-38.415,21.4062,2.2813,M,automatic,13,,WEL(GNS_Primary),2013-08-14T14:26:30.136,POINT (178.61295 -38.414961) | |
quake.2013p609581,2013p609581,2013-08-14T13:05:57.844,174.227,-41.6517,13.0273,3.0266,M,reviewed,21,,WEL(GNS_Primary),2013-08-14T20:08:05.201,POINT (174.22703 -41.651703) | |
quake.2013p609528,2013p609528,2013-08-14T12:36:36.504,176.0209,-36.5463,8.75,3.1453,M,automatic,13,,WEL(GNS_Primary),2013-08-14T12:39:07.851,POINT (176.02094 -36.546334) | |
quake.2013p609396,2013p609396,2013-08-14T11:26:42.385,174.218,-41.6658,7.2266,1.6879,M,automatic,10,,WEL(GNS_Primary),2013-08-14T11:28:21.945,POINT (174.21798 -41.665827) | |
quake.2013p609330,2013p609330,2013-08-14T10:51:17.46,173.7797,-42.3292,44.375,2.522,M,automatic,13,,WEL(GNS_Primary),2013-08-14T10:53:06.519,POINT (173.77974 -42.329161) | |
quake.2013p609328,2013p609328,2013-08-14T10:50:23.973,174.259,-41.7014,5.0586,2.0508,M,automatic,16,,WEL(GNS_Primary),2013-08-14T10:52:20.281,POINT (174.25902 -41.70144) | |
quake.2013p609285,2013p609285,2013-08-14T10:27:12.124,176.6046,-39.8752,18.9453,1.8873,M,automatic,16,,WEL(GNS_Primary),2013-08-14T10:28:35.631,POINT (176.60456 -39.875181) | |
quake.2013p609233,2013p609233,2013-08-14T09:59:30.259,176.8503,-39.6718,17.7734,1.7356,M,automatic,12,,WEL(GNS_Primary),2013-08-14T10:01:01.859,POINT (176.85031 -39.671789) | |
quake.2013p609224,2013p609224,2013-08-14T09:54:50.706,167.6792,-44.9618,67.5781,3.4702,M,reviewed,20,,WEL(GNS_Primary),2013-08-14T20:05:22.102,POINT (167.67924 -44.961808) | |
quake.2013p609210,2013p609210,2013-08-14T09:47:33.388,174.2939,-41.5911,9.7461,2.3755,M,automatic,24,,WEL(GNS_Primary),2013-08-14T09:50:58.494,POINT (174.29386 -41.591108) | |
quake.2013p609196,2013p609196,2013-08-14T09:39:46.091,176.1387,-37.872,200.4688,2.7534,M,automatic,17,,WEL(GNS_Primary),2013-08-14T09:43:16.991,POINT (176.13866 -37.872022) | |
quake.2013p609176,2013p609176,2013-08-14T09:29:15.618,173.291,-40.7528,33.125,2.3281,M,automatic,11,,WEL(GNS_Primary),2013-08-14T09:31:25.212,POINT (173.29099 -40.75276) | |
quake.2013p609167,2013p609167,2013-08-14T09:24:22.567,174.7495,-40.6436,9.4531,1.9032,M,automatic,14,,WEL(GNS_Primary),2013-08-14T09:27:38.433,POINT (174.74952 -40.643584) | |
quake.2013p609102,2013p609102,2013-08-14T08:50:02.091,174.2863,-41.6945,5.1172,2.4063,M,automatic,22,,WEL(GNS_Primary),2013-08-14T08:52:19.169,POINT (174.2863 -41.694526) | |
quake.2013p609072,2013p609072,2013-08-14T08:34:10.96,174.2535,-41.6967,5.0586,2.924,M,reviewed,16,,WEL(GNS_Primary),2013-08-14T09:46:57.094,POINT (174.25354 -41.696692) | |
quake.2013p609015,2013p609015,2013-08-14T08:03:55.297,177.9692,-36.7177,133.4375,3.6423,M,automatic,33,,WEL(GNS_Primary),2013-08-14T08:07:55.986,POINT (177.96917 -36.717737) | |
quake.2013p609013,2013p609013,2013-08-14T08:02:04.121,176.2217,-37.8613,238.9062,3.3723,M,automatic,69,,WEL(GNS_Primary),2013-08-14T08:12:24.995,POINT (176.22172 -37.861263) | |
quake.2013p608974,2013p608974,2013-08-14T07:41:33.912,176.1323,-39.1396,105.5469,2.4169,M,automatic,41,,WEL(GNS_Primary),2013-08-14T07:44:39.317,POINT (176.13231 -39.139572) | |
quake.2013p608968,2013p608968,2013-08-14T07:38:19.63,174.1659,-41.6887,12.9102,2.9962,M,reviewed,20,,WEL(GNS_Primary),2013-08-14T09:39:04.821,POINT (174.16592 -41.688697) | |
quake.2013p608889,2013p608889,2013-08-14T06:56:31.769,174.2572,-41.6826,5.0586,2.2023,M,automatic,17,,WEL(GNS_Primary),2013-08-14T06:58:26.639,POINT (174.25718 -41.682618) | |
quake.2013p608851,2013p608851,2013-08-14T06:35:56.565,171.964,-43.6687,15.8984,2.6472,M,automatic,13,,WEL(GNS_Primary),2013-08-14T06:37:55.629,POINT (171.96397 -43.668709) | |
quake.2013p608777,2013p608777,2013-08-14T05:56:23.253,174.1772,-41.6957,5.1758,2.9733,M,reviewed,17,,WEL(GNS_Primary),2013-08-14T09:35:30.161,POINT (174.17723 -41.695702) | |
quake.2013p608600,2013p608600,2013-08-14T04:22:35.303,174.3266,-41.5889,5.1172,1.8323,M,automatic,13,,WEL(GNS_Primary),2013-08-14T04:24:21.744,POINT (174.32656 -41.588942) | |
quake.2013p608596,2013p608596,2013-08-14T04:20:23.38,174.3365,-41.6685,11.2109,2.4863,M,automatic,21,,WEL(GNS_Primary),2013-08-14T04:22:44.971,POINT (174.33647 -41.668473) | |
quake.2013p608554,2013p608554,2013-08-14T03:57:56.005,174.3056,-41.5481,5.0586,2.127,M,automatic,15,,WEL(GNS_Primary),2013-08-14T03:59:53.661,POINT (174.3056 -41.548079) | |
quake.2013p608478,2013p608478,2013-08-14T03:17:35.023,174.3126,-39.1366,6.4062,2.5118,M,automatic,11,,WEL(GNS_Primary),2013-08-14T08:01:01.589,POINT (174.31263 -39.136622) | |
quake.2013p608312,2013p608312,2013-08-14T01:49:15.271,174.3797,-41.5417,5.2344,1.824,M,automatic,11,,WEL(GNS_Primary),2013-08-14T01:51:35.339,POINT (174.37973 -41.541712) | |
quake.2013p608288,2013p608288,2013-08-14T01:35:57.888,171.35,-42.3967,5.1172,3.0641,M,reviewed,11,,WEL(GNS_Primary),2013-08-14T09:32:07.003,POINT (171.34997 -42.396663) | |
quake.2013p608105,2013p608105,2013-08-13T23:58:29.937,174.2374,-41.6337,5.0586,2.0448,M,automatic,10,,WEL(GNS_Primary),2013-08-14T00:00:04.114,POINT (174.23743 -41.633658) | |
quake.2013p607999,2013p607999,2013-08-13T23:02:22.782,174.1976,-41.6471,5.0586,2.4246,M,automatic,21,,WEL(GNS_Primary),2013-08-13T23:05:33.777,POINT (174.19762 -41.647086) | |
quake.2013p607957,2013p607957,2013-08-13T22:39:50.217,174.2218,-41.6716,5.0586,2.3617,M,automatic,16,,WEL(GNS_Primary),2013-08-13T22:42:56.548,POINT (174.22176 -41.671568) | |
quake.2013p607932,2013p607932,2013-08-13T22:26:36.373,172.232,-41.4797,10.0391,2.9109,M,reviewed,15,,WEL(GNS_Primary),2013-08-14T09:26:28.676,POINT (172.23201 -41.479693) | |
quake.2013p607920,2013p607920,2013-08-13T22:19:47.307,174.3179,-41.5537,16.6016,2.9158,M,reviewed,23,,WEL(GNS_Primary),2013-08-13T22:35:41.798,POINT (174.31788 -41.553654) | |
quake.2013p607914,2013p607914,2013-08-13T22:17:15.243,174.1996,-41.6544,5.1172,2.7807,M,reviewed,19,,WEL(GNS_Primary),2013-08-13T22:29:30.985,POINT (174.19961 -41.654443) | |
quake.2013p607895,2013p607895,2013-08-13T22:06:40.304,172.6002,-43.6106,6.1133,2.6285,M,reviewed,11,,WEL(GNS_Primary),2013-08-13T22:26:12.753,POINT (172.60025 -43.610648) | |
quake.2013p607853,2013p607853,2013-08-13T21:44:27.747,177.5046,-39.005,19.3555,2.0035,M,automatic,12,,WEL(GNS_Primary),2013-08-13T21:46:31.349,POINT (177.5046 -39.004983) | |
quake.2013p607458,2013p607458,2013-08-13T18:14:04.11,174.4334,-41.501,15.0195,2.5275,M,reviewed,15,,WEL(GNS_Primary),2013-08-13T22:23:06.829,POINT (174.43342 -41.500963) | |
quake.2013p607372,2013p607372,2013-08-13T17:27:26.166,173.7891,-40.4297,463.6823,2.9628,M,automatic,12,,WEL(GNS_Primary),2013-08-13T18:32:20.067,POINT (173.78906 -40.429688) | |
quake.2013p607351,2013p607351,2013-08-13T17:16:54.062,174.2314,-41.6531,5.0586,2.0244,M,automatic,15,,WEL(GNS_Primary),2013-08-13T18:25:30.14,POINT (174.23145 -41.653085) | |
quake.2013p607345,2013p607345,2013-08-13T17:13:38.126,174.3267,-41.6142,5.0586,2.5712,M,automatic,37,,WEL(GNS_Primary),2013-08-13T18:28:02.476,POINT (174.32671 -41.614178) | |
quake.2013p607331,2013p607331,2013-08-13T17:06:08.401,174.8458,-39.3505,155.7031,3.05,M,automatic,82,,WEL(GNS_Primary),2013-08-13T18:04:06.303,POINT (174.84575 -39.350524) | |
quake.2013p607318,2013p607318,2013-08-13T16:59:15.614,176.2799,-37.9147,136.25,2.3637,M,automatic,11,,WEL(GNS_Primary),2013-08-13T19:25:30.329,POINT (176.27989 -37.914741) | |
quake.2013p607181,2013p607181,2013-08-13T15:45:54.432,175.9504,-38.228,206.5625,2.7493,M,automatic,51,,WEL(GNS_Primary),2013-08-13T18:54:20.368,POINT (175.95035 -38.22795) | |
quake.2013p607130,2013p607130,2013-08-13T15:18:57.668,174.4326,-41.5487,5.8203,1.9574,M,automatic,16,,WEL(GNS_Primary),2013-08-13T15:52:26.448,POINT (174.43265 -41.54869) | |
quake.2013p607055,2013p607055,2013-08-13T14:39:04.474,174.2118,-41.5722,12.6172,2.7404,M,automatic,38,,WEL(GNS_Primary),2013-08-13T15:36:32.315,POINT (174.21185 -41.572222) | |
quake.2013p606965,2013p606965,2013-08-13T13:51:14.829,174.7222,-40.785,40.2734,2.9627,M,reviewed,23,,WEL(GNS_Primary),2013-08-13T22:11:43.991,POINT (174.72222 -40.784961) | |
quake.2013p606944,2013p606944,2013-08-13T13:39:52.953,174.2116,-41.5639,13.3203,2.5226,M,automatic,30,,WEL(GNS_Primary),2013-08-13T13:57:27.795,POINT (174.21156 -41.563872) | |
quake.2013p606907,2013p606907,2013-08-13T13:20:12.554,173.1743,-40.6842,168.5938,2.6031,M,automatic,18,,WEL(GNS_Primary),2013-08-13T13:29:09.36,POINT (173.17427 -40.684186) | |
quake.2013p606850,2013p606850,2013-08-13T12:49:59.093,174.1764,-41.6237,5.1172,2.1809,M,automatic,15,,WEL(GNS_Primary),2013-08-13T12:59:03.186,POINT (174.17641 -41.623732) | |
quake.2013p606711,2013p606711,2013-08-13T11:35:49.889,177.3749,-38.4902,69.2188,2.2055,M,automatic,12,,WEL(GNS_Primary),2013-08-13T11:38:07.328,POINT (177.3749 -38.49016) | |
quake.2013p606685,2013p606685,2013-08-13T11:21:53.142,176.8452,-39.7058,42.3828,2.066,M,automatic,10,,WEL(GNS_Primary),2013-08-13T11:22:59.864,POINT (176.84517 -39.705795) | |
quake.2013p606569,2013p606569,2013-08-13T10:20:14.274,172.3674,-43.6344,5,2.1475,M,reviewed,14,,WEL(GNS_Primary),2013-08-13T10:35:18.406,POINT (172.36739 -43.634357) | |
quake.2013p606524,2013p606524,2013-08-13T09:56:04.092,175.7375,-40.797,24.3945,1.779,M,automatic,15,,WEL(GNS_Primary),2013-08-13T09:57:36.945,POINT (175.73748 -40.79704) | |
quake.2013p606370,2013p606370,2013-08-13T08:34:03.205,177.3504,-37.6772,63.8281,2.4199,M,automatic,23,,WEL(GNS_Primary),2013-08-13T08:36:27.442,POINT (177.35036 -37.677156) | |
quake.2013p606350,2013p606350,2013-08-13T08:23:33.442,175.2976,-40.0567,50.3516,2.2437,M,automatic,22,,WEL(GNS_Primary),2013-08-13T08:27:39.693,POINT (175.29758 -40.056704) | |
quake.2013p606346,2013p606346,2013-08-13T08:21:14.381,176.1362,-38.2454,125.4688,2.4124,M,automatic,11,,WEL(GNS_Primary),2013-08-13T08:23:31.325,POINT (176.13625 -38.245358) | |
quake.2013p606302,2013p606302,2013-08-13T07:58:12.735,174.3055,-41.7526,5.1172,2.3644,M,automatic,15,,WEL(GNS_Primary),2013-08-13T08:00:17.487,POINT (174.30553 -41.752644) | |
quake.2013p606242,2013p606242,2013-08-13T07:26:05.163,175.7144,-39.4907,15.8984,2.3745,M,automatic,48,,WEL(GNS_Primary),2013-08-13T07:31:07.932,POINT (175.71443 -39.490712) | |
quake.2013p606075,2013p606075,2013-08-13T05:57:07.718,174.4368,-41.6789,5.1172,2.1925,M,automatic,13,,WEL(GNS_Primary),2013-08-13T05:58:54.312,POINT (174.43685 -41.678928) | |
quake.2013p605967,2013p605967,2013-08-13T04:59:23.627,174.3545,-41.5981,8.8672,2.0055,M,automatic,17,,WEL(GNS_Primary),2013-08-13T05:01:10.761,POINT (174.35452 -41.598105) | |
quake.2013p605965,2013p605965,2013-08-13T04:58:12.958,173.5147,-41.4971,92.1875,2.0341,M,automatic,10,,WEL(GNS_Primary),2013-08-13T05:00:03.805,POINT (173.51469 -41.497051) | |
quake.2013p605962,2013p605962,2013-08-13T04:56:57.424,178.6949,-38.1311,33.5938,2.6571,M,automatic,18,,WEL(GNS_Primary),2013-08-13T04:59:16.301,POINT (178.69494 -38.13107) | |
quake.2013p605928,2013p605928,2013-08-13T04:38:41.359,174.3053,-41.7226,5.8203,2.2393,M,automatic,15,,WEL(GNS_Primary),2013-08-13T04:41:48.539,POINT (174.30533 -41.72261) | |
quake.2013p605893,2013p605893,2013-08-13T04:19:56.565,174.7815,-40.1058,24.9219,2.261,M,automatic,18,,WEL(GNS_Primary),2013-08-13T04:22:01.889,POINT (174.78152 -40.105806) | |
quake.2013p605885,2013p605885,2013-08-13T04:15:35.343,174.3183,-41.6029,5.1172,2.2773,M,automatic,13,,WEL(GNS_Primary),2013-08-13T04:17:34.57,POINT (174.31834 -41.60288) | |
quake.2013p605803,2013p605803,2013-08-13T03:32:17.721,174.2041,-41.6137,8.1641,2.1144,M,automatic,10,,WEL(GNS_Primary),2013-08-13T03:33:56.257,POINT (174.20414 -41.613702) | |
quake.2013p605797,2013p605797,2013-08-13T03:29:02.33,176.9049,-39.7363,42.2656,2.2004,M,automatic,19,,WEL(GNS_Primary),2013-08-13T04:30:29.957,POINT (176.90489 -39.736345) | |
quake.2013p605592,2013p605592,2013-08-13T01:39:31.885,174.3232,-41.6222,9.8047,2.5168,M,reviewed,13,,WEL(GNS_Primary),2013-08-13T10:31:25.898,POINT (174.32321 -41.622208) | |
quake.2013p605582,2013p605582,2013-08-13T01:34:22.628,174.2155,-41.5894,15.7812,2.4613,M,automatic,20,,WEL(GNS_Primary),2013-08-13T01:36:46.989,POINT (174.21546 -41.589428) | |
quake.2013p605475,2013p605475,2013-08-13T00:37:26.224,176.6395,-40.3089,15.3711,2.6108,M,reviewed,15,,WEL(GNS_Primary),2013-08-13T10:20:58.787,POINT (176.6395 -40.30891) | |
quake.2013p605343,2013p605343,2013-08-12T23:27:13.347,175.8597,-40.49,25.8594,1.8259,M,automatic,16,,WEL(GNS_Primary),2013-08-12T23:29:07.308,POINT (175.85969 -40.489971) | |
quake.2013p605325,2013p605325,2013-08-12T23:17:17.018,174.1649,-41.6901,7.4609,2.6333,M,automatic,37,,WEL(GNS_Primary),2013-08-12T23:22:03.092,POINT (174.16494 -41.690128) | |
quake.2013p605210,2013p605210,2013-08-12T22:16:10.201,174.3094,-41.7578,5.1172,2.6019,M,automatic,26,,WEL(GNS_Primary),2013-08-12T22:18:14.979,POINT (174.30941 -41.757763) | |
quake.2013p605203,2013p605203,2013-08-12T22:12:32.694,174.2208,-41.605,18.4766,2.573,M,automatic,27,,WEL(GNS_Primary),2013-08-12T22:14:31.217,POINT (174.22085 -41.605018) | |
quake.2013p605145,2013p605145,2013-08-12T21:41:44.023,174.1968,-41.5697,21.6406,2.1884,M,automatic,19,,WEL(GNS_Primary),2013-08-12T21:43:35.666,POINT (174.19681 -41.569694) | |
quake.2013p605087,2013p605087,2013-08-12T21:10:49.769,174.3484,-41.6296,11.9141,2.0912,M,automatic,21,,WEL(GNS_Primary),2013-08-12T21:13:51.404,POINT (174.34835 -41.62962) | |
quake.2013p605067,2013p605067,2013-08-12T21:00:01.39,177.559,-37.8103,47.8906,2.0218,M,automatic,10,,WEL(GNS_Primary),2013-08-12T21:01:29.278,POINT (177.55897 -37.810258) | |
quake.2013p605037,2013p605037,2013-08-12T20:44:12.893,174.2327,-41.5981,18.3008,3.2869,M,reviewed,23,,WEL(GNS_Primary),2013-08-13T10:17:44.232,POINT (174.23268 -41.598067) | |
quake.2013p605032,2013p605032,2013-08-12T20:41:29.7,174.2106,-41.6218,9.4531,2.0126,M,automatic,10,,WEL(GNS_Primary),2013-08-12T20:43:03.466,POINT (174.21064 -41.621818) | |
quake.2013p604869,2013p604869,2013-08-12T19:14:29.727,174.3252,-41.6615,10.0391,2.0858,M,automatic,18,,WEL(GNS_Primary),2013-08-12T19:16:44.691,POINT (174.32515 -41.661468) | |
quake.2013p604860,2013p604860,2013-08-12T19:09:40.216,174.2964,-41.7463,5.0586,2.4402,M,automatic,21,,WEL(GNS_Primary),2013-08-12T19:11:45.166,POINT (174.29641 -41.746329) | |
quake.2013p604848,2013p604848,2013-08-12T19:03:24.242,174.2875,-41.749,5.0586,2.3084,M,automatic,21,,WEL(GNS_Primary),2013-08-12T19:05:29.637,POINT (174.28752 -41.748988) | |
quake.2013p604779,2013p604779,2013-08-12T18:26:27.4,174.2621,-41.6388,5.1172,1.9435,M,automatic,10,,WEL(GNS_Primary),2013-08-12T18:28:14.296,POINT (174.26213 -41.638763) | |
quake.2013p604745,2013p604745,2013-08-12T18:08:11.09,174.2716,-41.5854,5.0586,2.4374,M,automatic,29,,WEL(GNS_Primary),2013-08-12T18:10:37.515,POINT (174.27157 -41.585448) | |
quake.2013p604718,2013p604718,2013-08-12T17:53:53.765,176.7885,-39.7582,36.2891,2.1382,M,automatic,17,,WEL(GNS_Primary),2013-08-12T17:55:48.764,POINT (176.78854 -39.758244) | |
quake.2013p604700,2013p604700,2013-08-12T17:44:38.766,176.5266,-39.9472,17.0117,2.2469,M,reviewed,15,,WEL(GNS_Primary),2013-08-12T20:20:10.963,POINT (176.52663 -39.947205) | |
quake.2013p604625,2013p604625,2013-08-12T17:04:16.246,175.9814,-37.8671,192.9688,2.6907,M,automatic,16,,WEL(GNS_Primary),2013-08-12T17:07:34.323,POINT (175.98145 -37.867145) | |
quake.2013p604618,2013p604618,2013-08-12T17:00:31.235,171.5522,-44.151,16.4602,2.9008,M,reviewed,15,,WEL(GNS_Primary),2013-08-12T20:15:57.846,POINT (171.55222 -44.150978) | |
quake.2013p604520,2013p604520,2013-08-12T16:08:37.481,177.1648,-39.7175,15.5469,2.4774,M,automatic,18,,WEL(GNS_Primary),2013-08-12T19:20:42.629,POINT (177.16478 -39.717535) | |
quake.2013p604504,2013p604504,2013-08-12T16:00:08.521,174.1833,-41.6654,11.7383,2.1776,M,reviewed,11,,WEL(GNS_Primary),2013-08-12T20:23:45.721,POINT (174.1833 -41.665434) | |
quake.2013p604496,2013p604496,2013-08-12T15:55:39.304,176.9242,-39.7803,49.2969,2.2992,M,automatic,30,,WEL(GNS_Primary),2013-08-12T15:59:26.541,POINT (176.92423 -39.780254) | |
quake.2013p604489,2013p604489,2013-08-12T15:51:46.656,178.2763,-38.1735,10.0391,2.2783,M,automatic,18,,WEL(GNS_Primary),2013-08-12T15:53:43.516,POINT (178.2763 -38.17352) | |
quake.2013p604469,2013p604469,2013-08-12T15:41:31.829,174.1915,-40.9443,47.5391,2.9059,M,automatic,43,,WEL(GNS_Primary),2013-08-12T19:07:32.1,POINT (174.19146 -40.944332) | |
quake.2013p604437,2013p604437,2013-08-12T15:24:18.625,175.4105,-39.2026,18.8281,1.477,M,automatic,13,,WEL(GNS_Primary),2013-08-12T18:56:33.346,POINT (175.41052 -39.202609) | |
quake.2013p604423,2013p604423,2013-08-12T15:17:02.143,174.1401,-41.7217,10.0977,2.2263,M,reviewed,14,,WEL(GNS_Primary),2013-08-12T20:26:39.963,POINT (174.14012 -41.721723) | |
quake.2013p604409,2013p604409,2013-08-12T15:09:13.324,178.2665,-38.1686,10.3906,2.2717,M,automatic,16,,WEL(GNS_Primary),2013-08-12T15:11:07.403,POINT (178.26646 -38.168636) | |
quake.2013p604400,2013p604400,2013-08-12T15:04:26.523,172.5322,-42.5821,7.6953,2.6487,M,automatic,10,,WEL(GNS_Primary),2013-08-12T15:06:29.332,POINT (172.53215 -42.582119) | |
quake.2013p604369,2013p604369,2013-08-12T14:48:09.639,174.3219,-41.673,10.7422,2.1054,M,automatic,18,,WEL(GNS_Primary),2013-08-12T14:50:06.386,POINT (174.3219 -41.67305) | |
quake.2013p604331,2013p604331,2013-08-12T14:28:00.239,175.3571,-39.1491,16.3086,1.9352,M,automatic,28,,WEL(GNS_Primary),2013-08-12T18:37:17.557,POINT (175.3571 -39.149081) | |
quake.2013p604313,2013p604313,2013-08-12T14:18:21.964,176.4786,-40.6097,15.1953,2.2408,M,automatic,14,,WEL(GNS_Primary),2013-08-12T14:20:02.207,POINT (176.47856 -40.609709) | |
quake.2013p604251,2013p604251,2013-08-12T13:45:01.581,176.4,-38.251,61.4844,2.5655,M,automatic,38,,WEL(GNS_Primary),2013-08-12T17:44:36.578,POINT (176.39996 -38.250994) | |
quake.2013p604227,2013p604227,2013-08-12T13:32:26.361,176.0463,-38.3109,197.1875,2.7824,M,automatic,14,,WEL(GNS_Primary),2013-08-12T13:35:39.266,POINT (176.0463 -38.310931) | |
quake.2013p604190,2013p604190,2013-08-12T13:12:52.154,177.717,-37.4378,86.0938,2.5843,M,automatic,26,,WEL(GNS_Primary),2013-08-12T13:15:19.315,POINT (177.71699 -37.437828) | |
quake.2013p604117,2013p604117,2013-08-12T12:33:55.668,177.5466,-39.3688,23.3984,2.3979,M,automatic,15,,WEL(GNS_Primary),2013-08-12T12:35:49.427,POINT (177.54656 -39.368813) | |
quake.2013p604105,2013p604105,2013-08-12T12:27:34.494,174.266,-41.5922,7.2266,2.3627,M,automatic,24,,WEL(GNS_Primary),2013-08-12T12:29:55.896,POINT (174.26595 -41.592164) | |
quake.2013p604085,2013p604085,2013-08-12T12:16:49.244,174.2269,-41.7095,8.8672,2.1848,M,automatic,12,,WEL(GNS_Primary),2013-08-12T12:19:52.947,POINT (174.22693 -41.709465) | |
quake.2013p604026,2013p604026,2013-08-12T11:45:07.866,174.1856,-41.6757,10.9766,2.013,M,reviewed,15,,WEL(GNS_Primary),2013-08-12T20:05:20.895,POINT (174.18562 -41.67572) | |
quake.2013p604002,2013p604002,2013-08-12T11:32:02.141,173.876,-39.472,268.4375,3.8233,M,automatic,19,,WEL(GNS_Primary),2013-08-12T11:35:49.998,POINT (173.87601 -39.472037) | |
quake.2013p604001,2013p604001,2013-08-12T11:31:40.71,177.7687,-36.7681,164.375,2.8136,M,automatic,10,,WEL(GNS_Primary),2013-08-12T11:33:52.502,POINT (177.76874 -36.768071) | |
quake.2013p603976,2013p603976,2013-08-12T11:18:27.872,174.1874,-40.9309,52.2266,3.6336,M,reviewed,31,,WEL(GNS_Primary),2013-08-12T20:01:59.985,POINT (174.18735 -40.930863) | |
quake.2013p603964,2013p603964,2013-08-12T11:13:16.295,175.6514,-39.3487,88.5547,2.8699,M,automatic,92,,WEL(GNS_Primary),2013-08-12T13:38:38.602,POINT (175.65138 -39.348747) | |
quake.2013p603944,2013p603944,2013-08-12T11:01:24.002,173.8861,-39.1754,11.8088,2.4717,M,automatic,12,,WEL(GNS_Primary),2013-08-12T11:03:31.668,POINT (173.88611 -39.175415) | |
quake.2013p603877,2013p603877,2013-08-12T10:25:43.715,174.2272,-41.6035,5.1172,2.3563,M,automatic,30,,WEL(GNS_Primary),2013-08-12T12:00:48.668,POINT (174.22724 -41.603538) | |
quake.2013p603857,2013p603857,2013-08-12T10:15:27.394,174.2152,-41.5702,8.9844,2.0104,M,automatic,10,,WEL(GNS_Primary),2013-08-12T10:17:03.299,POINT (174.21523 -41.570236) | |
quake.2013p603852,2013p603852,2013-08-12T10:12:40.907,174.2322,-41.6012,5.1172,2.3462,M,automatic,19,,WEL(GNS_Primary),2013-08-12T10:15:49.104,POINT (174.23222 -41.601182) | |
quake.2013p603829,2013p603829,2013-08-12T10:00:10.58,176.0753,-39.1316,62.7734,2.0488,M,automatic,18,,WEL(GNS_Primary),2013-08-12T11:28:35.447,POINT (176.07526 -39.131582) | |
quake.2013p603666,2013p603666,2013-08-12T08:33:47.823,178.1746,-37.6503,39.6875,2.2201,M,automatic,14,,WEL(GNS_Primary),2013-08-12T08:36:04.391,POINT (178.17461 -37.650302) | |
quake.2013p603658,2013p603658,2013-08-12T08:29:28.861,176.4923,-37.688,250.625,2.9984,M,automatic,20,,WEL(GNS_Primary),2013-08-12T11:10:16.337,POINT (176.49231 -37.687977) | |
quake.2013p603481,2013p603481,2013-08-12T06:54:59.347,174.3241,-41.7315,5.1172,2.3606,M,automatic,16,,WEL(GNS_Primary),2013-08-12T06:57:03.997,POINT (174.3241 -41.731502) | |
quake.2013p603474,2013p603474,2013-08-12T06:51:09.06,174.3149,-41.7312,5.1172,2.7467,M,automatic,38,,WEL(GNS_Primary),2013-08-12T06:58:51.578,POINT (174.31487 -41.731231) | |
quake.2013p603471,2013p603471,2013-08-12T06:49:22.463,175.4554,-39.2473,61.0156,1.6272,M,automatic,12,,WEL(GNS_Primary),2013-08-12T06:58:04.988,POINT (175.45545 -39.247331) | |
quake.2013p603436,2013p603436,2013-08-12T06:30:46.076,174.3416,-41.7389,6.1133,3.1035,M,reviewed,27,,WEL(GNS_Primary),2013-08-12T07:42:28.019,POINT (174.34156 -41.738896) | |
quake.2013p603386,2013p603386,2013-08-12T06:04:28.182,176.6541,-37.648,50.4688,2.4567,M,automatic,14,,WEL(GNS_Primary),2013-08-12T11:03:36.187,POINT (176.65407 -37.648006) | |
quake.2013p603291,2013p603291,2013-08-12T05:13:42.945,174.1189,-41.6419,5.0586,2.1806,M,automatic,13,,WEL(GNS_Primary),2013-08-12T05:15:40.802,POINT (174.11892 -41.641853) | |
quake.2013p603186,2013p603186,2013-08-12T04:16:50.593,-179.3742,-30.9574,350,5.9802,Mw(mB),reviewed,28,earthquake,WEL(GNS_Primary),2013-08-12T21:40:37.595,POINT (-179.37418 -30.957367) | |
quake.2013p603168,2013p603168,2013-08-12T04:08:17.019,175.1326,-39.313,26.9141,2.331,M,automatic,24,,WEL(GNS_Primary),2013-08-12T04:11:11.527,POINT (175.13259 -39.312965) | |
quake.2013p603111,2013p603111,2013-08-12T03:37:41.784,174.0577,-41.5923,15.0781,1.8782,M,automatic,11,,WEL(GNS_Primary),2013-08-12T03:39:22.16,POINT (174.05774 -41.592297) | |
quake.2013p602991,2013p602991,2013-08-12T02:33:43.776,174.1548,-41.5205,28.5547,1.8275,M,automatic,11,,WEL(GNS_Primary),2013-08-12T02:35:39.437,POINT (174.15485 -41.520494) | |
quake.2013p602884,2013p602884,2013-08-12T01:36:56.647,174.238,-41.6925,5.0586,2.1992,M,automatic,17,,WEL(GNS_Primary),2013-08-12T01:42:52.149,POINT (174.23795 -41.69248) | |
quake.2013p602863,2013p602863,2013-08-12T01:25:23.882,174.3048,-41.6217,5.1172,1.9101,M,automatic,10,,WEL(GNS_Primary),2013-08-12T01:27:19.689,POINT (174.30478 -41.621666) | |
quake.2013p602858,2013p602858,2013-08-12T01:22:55.084,174.3786,-41.613,5.1172,2.1809,M,automatic,19,,WEL(GNS_Primary),2013-08-12T01:24:56.752,POINT (174.37856 -41.612992) | |
quake.2013p602638,2013p602638,2013-08-11T23:25:47.739,174.0952,-41.6966,8.1055,2.5046,M,reviewed,26,,WEL(GNS_Primary),2013-08-12T10:28:40.441,POINT (174.09523 -41.696631) | |
quake.2013p602583,2013p602583,2013-08-11T22:56:22.303,176.3046,-40.1445,49.8828,2.0766,M,automatic,22,,WEL(GNS_Primary),2013-08-11T22:58:07.061,POINT (176.30458 -40.144491) | |
quake.2013p602539,2013p602539,2013-08-11T22:32:49.043,175.6509,-38.5138,206.0938,2.9487,M,automatic,56,,WEL(GNS_Primary),2013-08-11T22:41:59.292,POINT (175.65092 -38.513825) | |
quake.2013p602502,2013p602502,2013-08-11T22:12:33.022,174.2494,-41.0282,488.75,2.6962,M,automatic,11,,WEL(GNS_Primary),2013-08-11T22:14:56.293,POINT (174.24937 -41.028215) | |
quake.2013p602489,2013p602489,2013-08-11T22:06:16.055,174.77,-41.7258,80.4688,2.5118,M,automatic,12,,WEL(GNS_Primary),2013-08-11T22:08:17.898,POINT (174.77 -41.725821) | |
quake.2013p602480,2013p602480,2013-08-11T22:01:36.969,174.3106,-41.4567,5.1172,2.1748,M,automatic,19,,WEL(GNS_Primary),2013-08-11T22:03:48.716,POINT (174.31058 -41.456682) | |
quake.2013p602323,2013p602323,2013-08-11T20:37:54.062,174.2145,-41.5439,14.9609,2.1395,M,automatic,15,,WEL(GNS_Primary),2013-08-11T20:41:06.309,POINT (174.21452 -41.543939) | |
quake.2013p602310,2013p602310,2013-08-11T20:31:00.823,174.3279,-41.5429,5.0586,1.8336,M,automatic,12,,WEL(GNS_Primary),2013-08-11T20:33:16.652,POINT (174.32794 -41.542898) | |
quake.2013p602271,2013p602271,2013-08-11T20:10:16.985,174.3451,-39.4512,237.9688,2.981,M,automatic,53,,WEL(GNS_Primary),2013-08-11T20:14:06.662,POINT (174.34514 -39.451245) | |
quake.2013p602267,2013p602267,2013-08-11T20:08:09.866,174.2319,-41.588,15.0195,2.8286,M,reviewed,17,,WEL(GNS_Primary),2013-08-11T22:46:30.751,POINT (174.23186 -41.588034) | |
quake.2013p602050,2013p602050,2013-08-11T18:12:27.271,174.3448,-41.5642,13.9648,3.4186,M,reviewed,20,,WEL(GNS_Primary),2013-08-11T21:20:36.877,POINT (174.34484 -41.564248) | |
quake.2013p602021,2013p602021,2013-08-11T17:57:16.843,174.2356,-41.6305,8.3984,2.2213,M,automatic,22,,WEL(GNS_Primary),2013-08-11T17:59:16.181,POINT (174.23558 -41.630476) | |
quake.2013p602007,2013p602007,2013-08-11T17:49:46.125,171.9446,-43.5698,5.0586,2.4352,M,automatic,12,,WEL(GNS_Primary),2013-08-11T17:52:52.023,POINT (171.94458 -43.569832) | |
quake.2013p601992,2013p601992,2013-08-11T17:41:43.907,174.2675,-41.5918,5.2344,1.7284,M,automatic,12,,WEL(GNS_Primary),2013-08-11T17:43:16.489,POINT (174.26754 -41.591794) | |
quake.2013p601962,2013p601962,2013-08-11T17:25:49.979,178.7752,-37.8621,22.8125,2.5884,M,automatic,14,,WEL(GNS_Primary),2013-08-11T17:28:16.879,POINT (178.77523 -37.862128) | |
quake.2013p601928,2013p601928,2013-08-11T17:07:29.324,177.5283,-39.0363,75.3125,2.5406,M,automatic,14,,WEL(GNS_Primary),2013-08-11T17:09:36.627,POINT (177.52826 -39.036318) | |
quake.2013p601923,2013p601923,2013-08-11T17:04:56.903,177.838,-38.5329,28.0273,3.1819,M,reviewed,21,,WEL(GNS_Primary),2013-08-11T21:31:29.653,POINT (177.83803 -38.53292) | |
quake.2013p601903,2013p601903,2013-08-11T16:54:05.305,172.6454,-43.6389,26.2109,2.8352,M,reviewed,21,,WEL(GNS_Primary),2013-08-11T23:23:14.432,POINT (172.64537 -43.638855) | |
quake.2013p601893,2013p601893,2013-08-11T16:48:54.001,172.6646,-43.6202,24.3359,3.8542,M,reviewed,48,,WEL(GNS_Primary),2013-08-11T19:15:52.143,POINT (172.66465 -43.620204) | |
quake.2013p601886,2013p601886,2013-08-11T16:45:09.331,179.7866,-37.9434,98.75,3.3099,M,automatic,12,,WEL(GNS_Primary),2013-08-11T16:47:43.819,POINT (179.78658 -37.943388) | |
quake.2013p601863,2013p601863,2013-08-11T16:32:51.056,177.7959,-38.5327,25.6318,3.1413,M,reviewed,11,,WEL(GNS_Primary),2013-08-11T21:49:04.185,POINT (177.79587 -38.532715) | |
quake.2013p601786,2013p601786,2013-08-11T15:51:56.802,174.4484,-41.5089,9.2773,2.066,M,automatic,22,,WEL(GNS_Primary),2013-08-11T15:53:43.035,POINT (174.44844 -41.508911) | |
quake.2013p601782,2013p601782,2013-08-11T15:49:57.348,175.0569,-41.1453,26.7383,1.6815,M,automatic,17,,WEL(GNS_Primary),2013-08-11T15:52:04.638,POINT (175.05686 -41.145342) | |
quake.2013p601706,2013p601706,2013-08-11T15:09:27.819,174.3913,-41.5679,5.4688,1.8729,M,automatic,11,,WEL(GNS_Primary),2013-08-11T15:11:04.383,POINT (174.39132 -41.567909) | |
quake.2013p601689,2013p601689,2013-08-11T15:00:11.667,177.8167,-38.9368,19.5312,1.7598,M,automatic,10,,WEL(GNS_Primary),2013-08-11T15:01:36.294,POINT (177.81669 -38.93684) | |
quake.2013p601670,2013p601670,2013-08-11T14:50:24.021,178.0093,-36.2792,140.9375,3.4362,M,automatic,26,,WEL(GNS_Primary),2013-08-11T14:53:46.269,POINT (178.00929 -36.279225) | |
quake.2013p601646,2013p601646,2013-08-11T14:37:10.336,174.5509,-41.7236,43.6719,2.0294,M,automatic,15,,WEL(GNS_Primary),2013-08-11T14:39:32.098,POINT (174.55089 -41.723561) | |
quake.2013p601627,2013p601627,2013-08-11T14:27:10.683,174.2679,-41.6831,5.1172,2.5194,M,automatic,34,,WEL(GNS_Primary),2013-08-11T14:49:49.319,POINT (174.26791 -41.683142) | |
quake.2013p601570,2013p601570,2013-08-11T13:56:41.799,174.2508,-41.6426,5.1172,2.7337,M,automatic,39,,WEL(GNS_Primary),2013-08-11T14:46:20.492,POINT (174.25076 -41.6426) | |
quake.2013p601487,2013p601487,2013-08-11T13:12:38.428,174.2736,-41.5507,8.1641,1.8469,M,automatic,13,,WEL(GNS_Primary),2013-08-11T14:40:53.528,POINT (174.27362 -41.550683) | |
quake.2013p601481,2013p601481,2013-08-11T13:09:39.978,177.8153,-38.5391,29.2578,3.194,M,reviewed,18,,WEL(GNS_Primary),2013-08-11T22:34:09.611,POINT (177.81534 -38.539095) | |
quake.2013p601457,2013p601457,2013-08-11T12:56:30.103,177.1485,-39.6133,19.4141,2.6937,M,automatic,38,,WEL(GNS_Primary),2013-08-11T14:38:41.93,POINT (177.14851 -39.613323) | |
quake.2013p601420,2013p601420,2013-08-11T12:37:01.077,174.3425,-41.5696,7.7539,2.2375,M,automatic,29,,WEL(GNS_Primary),2013-08-11T14:36:25.727,POINT (174.34251 -41.569601) | |
quake.2013p601341,2013p601341,2013-08-11T11:54:59.206,174.4009,-41.5127,16.3672,1.8641,M,automatic,16,,WEL(GNS_Primary),2013-08-11T14:31:32.643,POINT (174.40091 -41.512725) | |
quake.2013p601333,2013p601333,2013-08-11T11:50:16.329,174.2914,-41.472,5.1172,2.0682,M,automatic,15,,WEL(GNS_Primary),2013-08-11T14:30:58.855,POINT (174.2914 -41.471965) | |
quake.2013p601286,2013p601286,2013-08-11T11:25:36.09,174.3973,-41.717,5.1172,1.8525,M,automatic,15,,WEL(GNS_Primary),2013-08-11T11:27:28.517,POINT (174.39732 -41.716969) | |
quake.2013p601280,2013p601280,2013-08-11T11:22:21.73,174.3758,-41.6527,8.457,2.6962,M,automatic,43,,WEL(GNS_Primary),2013-08-11T14:27:45.906,POINT (174.37583 -41.652739) | |
quake.2013p601268,2013p601268,2013-08-11T11:15:54.65,174.4876,-41.4565,12.7344,1.7172,M,automatic,10,,WEL(GNS_Primary),2013-08-11T11:17:23.24,POINT (174.48758 -41.456477) | |
quake.2013p601263,2013p601263,2013-08-11T11:13:34.532,174.336,-41.609,5.1758,2.2124,M,automatic,24,,WEL(GNS_Primary),2013-08-11T14:26:33.854,POINT (174.33595 -41.609028) | |
quake.2013p601253,2013p601253,2013-08-11T11:07:49.342,173.8512,-42.3513,188.75,2.1915,M,automatic,14,,WEL(GNS_Primary),2013-08-11T11:09:34.247,POINT (173.85118 -42.351261) | |
quake.2013p601240,2013p601240,2013-08-11T11:01:02.92,175.4723,-38.6684,201.4062,2.5375,M,automatic,19,,WEL(GNS_Primary),2013-08-11T11:03:57.271,POINT (175.47228 -38.668407) | |
quake.2013p601229,2013p601229,2013-08-11T10:54:53.645,174.2899,-41.6179,5.1172,2.2296,M,automatic,24,,WEL(GNS_Primary),2013-08-11T14:24:18.524,POINT (174.28991 -41.617892) | |
quake.2013p601192,2013p601192,2013-08-11T10:34:00.665,-176.7954,-30.2465,147.581,5.0306,M,reviewed,37,outside of network interest,WEL(GNS_Primary),2013-08-11T22:08:21.86,POINT (-176.79543 -30.246519) | |
quake.2013p601189,2013p601189,2013-08-11T10:33:43.538,174.1902,-41.6241,5.1172,2.3505,M,automatic,31,,WEL(GNS_Primary),2013-08-11T14:21:45.748,POINT (174.19024 -41.624138) | |
quake.2013p601182,2013p601182,2013-08-11T10:30:01.117,174.3604,-41.6208,13.3203,1.9407,M,automatic,17,,WEL(GNS_Primary),2013-08-11T14:21:20.347,POINT (174.36045 -41.6208) | |
quake.2013p601174,2013p601174,2013-08-11T10:25:47.745,175.1096,-39.2389,24.3359,2.0746,M,automatic,11,,WEL(GNS_Primary),2013-08-11T10:27:04.985,POINT (175.10956 -39.238886) | |
quake.2013p601099,2013p601099,2013-08-11T09:45:42.518,174.2006,-41.5652,9.5703,1.601,M,automatic,11,,WEL(GNS_Primary),2013-08-11T09:47:46.183,POINT (174.20056 -41.565216) | |
quake.2013p601068,2013p601068,2013-08-11T09:29:21.489,177.7996,-38.5344,14.4922,2.004,M,automatic,17,,WEL(GNS_Primary),2013-08-11T11:25:32.933,POINT (177.79956 -38.534445) | |
quake.2013p601046,2013p601046,2013-08-11T09:17:33.72,174.2076,-41.6628,12.4414,2.6696,M,automatic,45,,WEL(GNS_Primary),2013-08-11T09:23:25.586,POINT (174.20762 -41.662811) | |
quake.2013p601037,2013p601037,2013-08-11T09:12:37.668,177.1396,-39.6131,20.5859,2.5901,M,automatic,36,,WEL(GNS_Primary),2013-08-11T09:39:36.767,POINT (177.13956 -39.613052) | |
quake.2013p601028,2013p601028,2013-08-11T09:08:09.784,174.2445,-41.5183,11.1523,2.1874,M,automatic,21,,WEL(GNS_Primary),2013-08-11T09:10:33.003,POINT (174.24451 -41.518338) | |
quake.2013p600987,2013p600987,2013-08-11T08:46:09.991,176.4247,-37.3558,163.4375,2.7154,M,automatic,24,,WEL(GNS_Primary),2013-08-11T11:11:52.568,POINT (176.4247 -37.355842) | |
quake.2013p600967,2013p600967,2013-08-11T08:35:19.833,177.5586,-39.1834,19.4141,2.1835,M,automatic,13,,WEL(GNS_Primary),2013-08-11T08:36:50.84,POINT (177.55857 -39.183428) | |
quake.2013p600856,2013p600856,2013-08-11T07:36:33.713,176.3636,-40.0504,65.8203,3.0131,M,automatic,74,,WEL(GNS_Primary),2013-08-11T07:40:50.248,POINT (176.36364 -40.050426) | |
quake.2013p600827,2013p600827,2013-08-11T07:20:51.337,174.2466,-41.6652,8.9258,1.5005,M,automatic,14,,WEL(GNS_Primary),2013-08-11T07:22:15.018,POINT (174.24663 -41.665209) | |
quake.2013p600801,2013p600801,2013-08-11T07:07:00.083,174.3397,-41.6467,7.5195,1.8129,M,automatic,17,,WEL(GNS_Primary),2013-08-11T07:08:54.018,POINT (174.33968 -41.646672) | |
quake.2013p600786,2013p600786,2013-08-11T06:59:16.647,178.1918,-38.5009,23.3398,2.4385,M,automatic,20,,WEL(GNS_Primary),2013-08-11T09:47:27.872,POINT (178.19176 -38.500896) | |
quake.2013p600766,2013p600766,2013-08-11T06:48:18.472,175.0813,-40.2553,6.7578,1.9545,M,automatic,18,,WEL(GNS_Primary),2013-08-11T06:50:30.302,POINT (175.08128 -40.255322) | |
quake.2013p600735,2013p600735,2013-08-11T06:31:55.02,174.252,-41.7229,5.0586,1.7237,M,automatic,10,,WEL(GNS_Primary),2013-08-11T06:33:33.148,POINT (174.25197 -41.722921) | |
quake.2013p600710,2013p600710,2013-08-11T06:17:54.406,175.0254,-40.4917,7.5781,3.1499,M,automatic,17,,WEL(GNS_Primary),2013-08-11T06:21:03.519,POINT (175.02537 -40.491711) | |
quake.2013p600641,2013p600641,2013-08-11T05:41:43.567,174.1097,-41.7185,5.1172,1.6789,M,automatic,12,,WEL(GNS_Primary),2013-08-11T05:43:39.781,POINT (174.10969 -41.718536) | |
quake.2013p600632,2013p600632,2013-08-11T05:37:03.252,175.1652,-39.6671,69.4531,2.0666,M,automatic,17,,WEL(GNS_Primary),2013-08-11T05:40:15.325,POINT (175.16522 -39.667082) | |
quake.2013p600598,2013p600598,2013-08-11T05:18:47.35,174.2896,-41.5939,9.043,1.846,M,automatic,18,,WEL(GNS_Primary),2013-08-11T05:20:46.209,POINT (174.28959 -41.593902) | |
quake.2013p600592,2013p600592,2013-08-11T05:15:36.559,175.7869,-40.8289,10.918,1.6444,M,automatic,10,,WEL(GNS_Primary),2013-08-11T05:16:59.302,POINT (175.78686 -40.828934) | |
quake.2013p600565,2013p600565,2013-08-11T05:01:22.151,172.8152,-43.6973,6.8164,2.5212,M,automatic,15,,WEL(GNS_Primary),2013-08-11T05:04:47.838,POINT (172.81515 -43.697318) | |
quake.2013p600518,2013p600518,2013-08-11T04:35:59.532,174.2183,-41.5599,15.8984,1.6297,M,automatic,11,,WEL(GNS_Primary),2013-08-11T04:37:31.257,POINT (174.21831 -41.5599) | |
quake.2013p600421,2013p600421,2013-08-11T03:44:19.342,174.3157,-41.7046,5.8203,1.8852,M,automatic,21,,WEL(GNS_Primary),2013-08-11T03:46:15.817,POINT (174.31571 -41.704564) | |
quake.2013p600396,2013p600396,2013-08-11T03:31:26.63,174.1528,-41.6581,12.3828,1.4342,M,automatic,12,,WEL(GNS_Primary),2013-08-11T03:33:17.806,POINT (174.15275 -41.658071) | |
quake.2013p600372,2013p600372,2013-08-11T03:18:34.753,174.3955,-41.5501,5.1172,1.8055,M,automatic,19,,WEL(GNS_Primary),2013-08-11T03:20:26.904,POINT (174.39546 -41.550098) | |
quake.2013p600328,2013p600328,2013-08-11T02:54:46.515,173.9023,-41.7508,12.3828,2.3588,M,reviewed,17,,WEL(GNS_Primary),2013-08-11T20:27:55.097,POINT (173.90231 -41.750824) | |
quake.2013p600305,2013p600305,2013-08-11T02:42:48.958,177.302,-38.395,32.5391,2.442,M,automatic,29,,WEL(GNS_Primary),2013-08-11T04:51:02.815,POINT (177.30195 -38.395029) | |
quake.2013p600301,2013p600301,2013-08-11T02:40:33.884,174.1392,-41.5325,33.4766,1.7035,M,automatic,14,,WEL(GNS_Primary),2013-08-11T02:42:22.246,POINT (174.13918 -41.532546) | |
quake.2013p600249,2013p600249,2013-08-11T02:12:44.462,177.06,-36.9941,275.4688,3.6752,M,automatic,103,,WEL(GNS_Primary),2013-08-11T02:59:38.21,POINT (177.06005 -36.99407) | |
quake.2013p600177,2013p600177,2013-08-11T01:34:18.364,174.224,-41.6151,13.3203,1.8903,M,automatic,16,,WEL(GNS_Primary),2013-08-11T01:36:16.37,POINT (174.22398 -41.61512) | |
quake.2013p600145,2013p600145,2013-08-11T01:17:35.847,174.4358,-41.548,21.7578,3.3289,M,reviewed,27,,WEL(GNS_Primary),2013-08-11T20:26:34.569,POINT (174.43584 -41.54795) | |
quake.2013p600088,2013p600088,2013-08-11T00:47:02.207,174.3172,-41.5376,8.6914,2.1157,M,automatic,25,,WEL(GNS_Primary),2013-08-11T00:48:54.99,POINT (174.31716 -41.537576) | |
quake.2013p600065,2013p600065,2013-08-11T00:34:57.255,174.2775,-41.5871,6.6406,1.683,M,automatic,10,,WEL(GNS_Primary),2013-08-11T00:36:33.286,POINT (174.27749 -41.587082) | |
quake.2013p600053,2013p600053,2013-08-11T00:28:27.469,174.1728,-41.6787,5.1172,2.2286,M,automatic,23,,WEL(GNS_Primary),2013-08-11T00:30:43.1,POINT (174.17283 -41.678681) | |
quake.2013p600028,2013p600028,2013-08-11T00:14:56.658,174.2485,-41.5589,9.7461,1.4489,M,automatic,12,,WEL(GNS_Primary),2013-08-11T00:16:53.586,POINT (174.24851 -41.558911) | |
quake.2013p600019,2013p600019,2013-08-11T00:10:26.196,174.2891,-41.5922,9.8633,2.2472,M,automatic,28,,WEL(GNS_Primary),2013-08-11T00:12:26.701,POINT (174.28907 -41.592218) | |
quake.2013p600007,2013p600007,2013-08-11T00:04:01.04,172.7931,-43.6753,5.0293,3.4321,M,reviewed,22,,WEL(GNS_Primary),2013-08-11T10:27:10.448,POINT (172.79312 -43.675302) | |
quake.2013p599987,2013p599987,2013-08-10T23:53:11.831,175.3286,-39.238,11.9141,1.5291,M,automatic,20,,WEL(GNS_Primary),2013-08-10T23:55:12.295,POINT (175.32857 -39.238049) | |
quake.2013p599888,2013p599888,2013-08-10T23:00:29.533,174.1667,-41.632,5.0586,2.0254,M,automatic,16,,WEL(GNS_Primary),2013-08-10T23:02:28.314,POINT (174.16669 -41.631996) | |
quake.2013p599852,2013p599852,2013-08-10T22:41:34.01,174.115,-41.6728,18.4766,2.1062,M,reviewed,18,,WEL(GNS_Primary),2013-08-11T20:24:23.925,POINT (174.11503 -41.672812) | |
quake.2013p599844,2013p599844,2013-08-10T22:37:29.407,175.8038,-38.8768,9.7461,2.3439,M,reviewed,31,,WEL(GNS_Primary),2013-08-11T20:20:19.477,POINT (175.80375 -38.876767) | |
quake.2013p599807,2013p599807,2013-08-10T22:17:29.418,174.2306,-41.5811,13.7891,3.2491,M,reviewed,27,,WEL(GNS_Primary),2013-08-11T20:16:17.506,POINT (174.23058 -41.581114) | |
quake.2013p599763,2013p599763,2013-08-10T21:54:08.235,174.3712,-41.4209,8.1641,1.9985,M,automatic,20,,WEL(GNS_Primary),2013-08-10T21:56:04.235,POINT (174.3712 -41.420934) | |
quake.2013p599739,2013p599739,2013-08-10T21:40:57.201,174.268,-41.5989,5.1172,1.812,M,automatic,16,,WEL(GNS_Primary),2013-08-10T21:42:55.02,POINT (174.26803 -41.598898) | |
quake.2013p599708,2013p599708,2013-08-10T21:24:30.532,174.5364,-41.5342,10.0391,1.7126,M,automatic,18,,WEL(GNS_Primary),2013-08-10T21:26:21.04,POINT (174.53644 -41.53423) | |
quake.2013p599702,2013p599702,2013-08-10T21:21:28.68,177.8906,-38.3709,15.0195,1.9828,M,automatic,10,,WEL(GNS_Primary),2013-08-10T21:24:35.918,POINT (177.8906 -38.370875) | |
quake.2013p599681,2013p599681,2013-08-10T21:10:17.811,174.2797,-41.7237,5.0586,2.0357,M,automatic,16,,WEL(GNS_Primary),2013-08-10T21:12:21.254,POINT (174.27966 -41.723733) | |
quake.2013p599581,2013p599581,2013-08-10T20:16:47.115,174.863,-40.1274,25.1562,2.5004,M,automatic,50,,WEL(GNS_Primary),2013-08-10T20:20:30.838,POINT (174.86301 -40.127437) | |
quake.2013p599556,2013p599556,2013-08-10T20:03:28.844,174.3177,-41.5338,8.3398,2.0269,M,automatic,23,,WEL(GNS_Primary),2013-08-10T20:05:25.013,POINT (174.31771 -41.533839) | |
quake.2013p599551,2013p599551,2013-08-10T20:00:59.771,176.7807,-39.9421,18.9453,1.9511,M,automatic,12,,WEL(GNS_Primary),2013-08-10T20:03:55.754,POINT (176.78067 -39.942149) | |
quake.2013p599530,2013p599530,2013-08-10T19:49:43.209,174.3769,-41.5821,10.0391,1.571,M,automatic,11,,WEL(GNS_Primary),2013-08-10T19:51:02.35,POINT (174.37691 -41.582082) | |
quake.2013p599459,2013p599459,2013-08-10T19:12:12.709,174.4233,-41.5809,10.0391,1.738,M,automatic,16,,WEL(GNS_Primary),2013-08-10T19:14:05.437,POINT (174.42333 -41.580945) | |
quake.2013p599446,2013p599446,2013-08-10T19:05:28.655,175.8686,-38.9409,10.332,1.4773,M,reviewed,15,,WEL(GNS_Primary),2013-08-14T06:00:09.317,POINT (175.86861 -38.940853) | |
quake.2013p599435,2013p599435,2013-08-10T18:59:24.535,176.6502,-40.1299,46.1328,1.728,M,automatic,13,,WEL(GNS_Primary),2013-08-10T19:01:14.057,POINT (176.6502 -40.129871) | |
quake.2013p599388,2013p599388,2013-08-10T18:34:21.922,177.2282,-39.3231,20.9961,2.4324,M,automatic,27,,WEL(GNS_Primary),2013-08-10T18:37:09.871,POINT (177.22821 -39.323117) | |
quake.2013p599369,2013p599369,2013-08-10T18:24:12.294,174.1542,-41.6896,5.0586,1.9835,M,automatic,16,,WEL(GNS_Primary),2013-08-10T18:26:30.711,POINT (174.1542 -41.689604) | |
quake.2013p599347,2013p599347,2013-08-10T18:12:18.492,174.2748,-41.7303,5.0586,1.9093,M,automatic,15,,WEL(GNS_Primary),2013-08-10T18:14:31.552,POINT (174.27483 -41.730265) | |
quake.2013p599303,2013p599303,2013-08-10T17:48:49.849,174.2334,-41.6141,5.2344,1.8195,M,automatic,15,,WEL(GNS_Primary),2013-08-10T17:50:46.241,POINT (174.23338 -41.614145) | |
quake.2013p599263,2013p599263,2013-08-10T17:27:46.014,174.2204,-41.717,5.0586,2.4594,M,automatic,28,,WEL(GNS_Primary),2013-08-10T17:30:02.444,POINT (174.2204 -41.716989) | |
quake.2013p599243,2013p599243,2013-08-10T17:16:53.301,174.2262,-41.7457,8.5156,3.25,M,reviewed,38,,WEL(GNS_Primary),2013-08-11T20:12:05.623,POINT (174.22617 -41.745728) | |
quake.2013p599236,2013p599236,2013-08-10T17:13:11.042,174.4266,-41.5164,11.7969,1.6337,M,automatic,18,,WEL(GNS_Primary),2013-08-10T17:14:58.176,POINT (174.42656 -41.516399) | |
quake.2013p599231,2013p599231,2013-08-10T17:10:36.807,174.1934,-41.6342,15.1953,2.5702,M,reviewed,24,,WEL(GNS_Primary),2013-08-11T20:10:26.354,POINT (174.19336 -41.63424) | |
quake.2013p599183,2013p599183,2013-08-10T16:44:56.327,175.0331,-39.1138,5.0586,2.1852,M,reviewed,30,,WEL(GNS_Primary),2013-08-10T21:03:42.707,POINT (175.03312 -39.11377) | |
quake.2013p599173,2013p599173,2013-08-10T16:39:26.738,176.5497,-38.0131,262.8125,2.7667,M,automatic,19,,WEL(GNS_Primary),2013-08-10T16:43:21.845,POINT (176.5497 -38.013107) | |
quake.2013p599128,2013p599128,2013-08-10T16:15:41.417,174.3395,-41.6112,5.0586,1.7065,M,automatic,17,,WEL(GNS_Primary),2013-08-10T16:17:32.472,POINT (174.33948 -41.611217) | |
quake.2013p599108,2013p599108,2013-08-10T16:04:53.621,174.2344,-41.6488,5.1172,1.9393,M,automatic,15,,WEL(GNS_Primary),2013-08-10T16:06:54.625,POINT (174.23441 -41.648792) | |
quake.2013p599081,2013p599081,2013-08-10T15:50:42.385,177.7737,-38.6534,13.7305,1.9171,M,automatic,11,,WEL(GNS_Primary),2013-08-10T15:52:06.374,POINT (177.77366 -38.65338) | |
quake.2013p599073,2013p599073,2013-08-10T15:46:30.081,167.0765,-45.6104,64.5312,3.1508,M,automatic,24,,WEL(GNS_Primary),2013-08-10T15:52:39.636,POINT (167.07646 -45.610418) | |
quake.2013p599066,2013p599066,2013-08-10T15:42:50.056,174.2735,-41.5621,10.0977,1.6066,M,automatic,14,,WEL(GNS_Primary),2013-08-10T15:45:12.889,POINT (174.27347 -41.562148) | |
quake.2013p599054,2013p599054,2013-08-10T15:36:34.267,174.1924,-41.62,5.1172,2.0923,M,automatic,21,,WEL(GNS_Primary),2013-08-10T15:40:24.313,POINT (174.19239 -41.620031) | |
quake.2013p599052,2013p599052,2013-08-10T15:35:02.5,174.3236,-41.4627,5.0586,1.7929,M,automatic,16,,WEL(GNS_Primary),2013-08-10T15:37:36.792,POINT (174.32355 -41.462694) | |
quake.2013p599039,2013p599039,2013-08-10T15:28:29.723,173.6321,-41.7291,88.9062,1.8208,M,automatic,10,,WEL(GNS_Primary),2013-08-10T15:30:26.297,POINT (173.63211 -41.729128) | |
quake.2013p599035,2013p599035,2013-08-10T15:26:04.889,174.2753,-41.7584,9.3359,1.5462,M,automatic,10,,WEL(GNS_Primary),2013-08-10T15:27:41.22,POINT (174.2753 -41.75843) | |
quake.2013p599022,2013p599022,2013-08-10T15:19:18.999,175.1888,-39.8533,32.0703,1.9235,M,automatic,14,,WEL(GNS_Primary),2013-08-10T15:21:08.621,POINT (175.18876 -39.853316) | |
quake.2013p599007,2013p599007,2013-08-10T15:11:20.849,175.7549,-38.9914,146.7969,2.7379,M,automatic,91,,WEL(GNS_Primary),2013-08-10T15:14:58.116,POINT (175.75493 -38.991355) | |
quake.2013p598958,2013p598958,2013-08-10T14:44:59.443,176.0861,-40.0404,27.8516,1.5883,M,automatic,11,,WEL(GNS_Primary),2013-08-10T14:46:30.59,POINT (176.08608 -40.040411) | |
quake.2013p598909,2013p598909,2013-08-10T14:19:11.584,173.9542,-40.7967,64.7656,2.4441,M,automatic,19,,WEL(GNS_Primary),2013-08-10T14:21:49.221,POINT (173.95425 -40.796714) | |
quake.2013p598830,2013p598830,2013-08-10T13:36:52.807,177.0675,-39.5284,23.1641,1.9504,M,automatic,10,,WEL(GNS_Primary),2013-08-10T13:38:11.341,POINT (177.06752 -39.528393) | |
quake.2013p598821,2013p598821,2013-08-10T13:32:15.548,175.0225,-39.138,10.0977,2.1652,M,reviewed,22,,WEL(GNS_Primary),2013-08-10T21:04:40.04,POINT (175.02246 -39.138045) | |
quake.2013p598789,2013p598789,2013-08-10T13:15:15.626,176.4855,-38.802,46.4844,2.0042,M,automatic,17,,WEL(GNS_Primary),2013-08-10T13:21:59.825,POINT (176.48546 -38.801989) | |
quake.2013p598755,2013p598755,2013-08-10T12:56:57.219,174.3245,-41.5924,5.0586,2.3692,M,automatic,29,,WEL(GNS_Primary),2013-08-10T12:58:57.253,POINT (174.32451 -41.592427) | |
quake.2013p598713,2013p598713,2013-08-10T12:34:47.119,176.9038,-37.8622,8.9258,2.5684,M,reviewed,18,,WEL(GNS_Primary),2013-08-10T20:58:44.737,POINT (176.90384 -37.862211) | |
quake.2013p598712,2013p598712,2013-08-10T12:33:53.179,174.2156,-41.7337,5.2344,1.9984,M,automatic,10,,WEL(GNS_Primary),2013-08-10T12:35:54.802,POINT (174.21559 -41.733739) | |
quake.2013p598708,2013p598708,2013-08-10T12:32:08.474,175.7126,-39.4996,17.832,1.7628,M,reviewed,19,,WEL(GNS_Primary),2013-08-10T21:06:53.648,POINT (175.71258 -39.499618) | |
quake.2013p598683,2013p598683,2013-08-10T12:18:48.015,174.3233,-41.6005,5.1172,2.2924,M,automatic,19,,WEL(GNS_Primary),2013-08-10T12:21:50.902,POINT (174.32332 -41.600524) | |
quake.2013p598681,2013p598681,2013-08-10T12:17:31.332,167.4257,-45.1849,119.8438,3.5793,M,automatic,32,,WEL(GNS_Primary),2013-08-10T12:21:32.606,POINT (167.42567 -45.184872) | |
quake.2013p598649,2013p598649,2013-08-10T12:00:12.513,174.3812,-41.6479,6.3477,2.3002,M,automatic,25,,WEL(GNS_Primary),2013-08-10T12:02:38.822,POINT (174.38117 -41.647891) | |
quake.2013p598635,2013p598635,2013-08-10T11:52:53.554,175.7188,-39.4915,18.418,1.8813,M,automatic,28,,WEL(GNS_Primary),2013-08-10T11:55:33.815,POINT (175.71882 -39.491471) | |
quake.2013p598581,2013p598581,2013-08-10T11:24:14.06,174.2874,-41.6871,8.3984,2.0553,M,automatic,20,,WEL(GNS_Primary),2013-08-10T11:29:44.563,POINT (174.28741 -41.687051) | |
quake.2013p598546,2013p598546,2013-08-10T11:05:49.316,174.1921,-41.6532,5.0586,2.1407,M,automatic,21,,WEL(GNS_Primary),2013-08-10T11:07:59.415,POINT (174.19208 -41.653179) | |
quake.2013p598536,2013p598536,2013-08-10T10:59:58.18,173.4547,-41.4102,101.0938,2.14,M,automatic,13,,WEL(GNS_Primary),2013-08-10T11:01:57.399,POINT (173.4547 -41.410171) | |
quake.2013p598469,2013p598469,2013-08-10T10:24:35.505,174.2686,-41.7046,5.0586,2.1536,M,automatic,20,,WEL(GNS_Primary),2013-08-10T10:26:55.019,POINT (174.26858 -41.70464) | |
quake.2013p598422,2013p598422,2013-08-10T09:59:37.069,174.3038,-41.5449,9.1016,1.9566,M,automatic,15,,WEL(GNS_Primary),2013-08-10T10:01:32.05,POINT (174.30376 -41.544897) | |
quake.2013p598368,2013p598368,2013-08-10T09:30:32.205,167.2084,-45.517,76.7188,2.7032,M,automatic,11,,WEL(GNS_Primary),2013-08-10T09:32:40.656,POINT (167.20836 -45.516968) | |
quake.2013p598341,2013p598341,2013-08-10T09:16:12.036,174.2588,-41.5938,19.4727,3.191,M,reviewed,23,,WEL(GNS_Primary),2013-08-11T20:07:13.418,POINT (174.25876 -41.593829) | |
quake.2013p598337,2013p598337,2013-08-10T09:13:56.927,175.4448,-38.0279,5.0586,2.3213,M,automatic,27,,WEL(GNS_Primary),2013-08-10T09:20:15.094,POINT (175.44482 -38.027874) | |
quake.2013p598327,2013p598327,2013-08-10T09:09:04.127,174.3286,-41.4597,6.7578,1.9344,M,automatic,18,,WEL(GNS_Primary),2013-08-10T09:10:56.375,POINT (174.3286 -41.459715) | |
quake.2013p598314,2013p598314,2013-08-10T09:02:06.552,174.1285,-41.624,19.1797,1.7948,M,automatic,11,,WEL(GNS_Primary),2013-08-10T09:04:06.512,POINT (174.12854 -41.623993) | |
quake.2013p598306,2013p598306,2013-08-10T08:57:47.969,176.4329,-40.5569,14.082,2.0865,M,automatic,23,,WEL(GNS_Primary),2013-08-10T08:59:30.468,POINT (176.43291 -40.556889) | |
quake.2013p598206,2013p598206,2013-08-10T08:04:26.231,174.1996,-41.6544,10.0391,1.8257,M,automatic,15,,WEL(GNS_Primary),2013-08-10T08:06:19.604,POINT (174.19961 -41.654443) | |
quake.2013p598138,2013p598138,2013-08-10T07:27:56.592,174.3182,-41.5885,8.3398,2.3797,M,automatic,31,,WEL(GNS_Primary),2013-08-10T07:30:12.418,POINT (174.31815 -41.588486) | |
quake.2013p598083,2013p598083,2013-08-10T06:58:46.137,174.0225,-42.8217,21.4062,2.6785,M,automatic,11,,WEL(GNS_Primary),2013-08-10T07:01:22.361,POINT (174.02253 -42.821733) | |
quake.2013p598072,2013p598072,2013-08-10T06:52:59.281,174.2282,-41.6286,7.4609,3.0133,M,reviewed,26,,WEL(GNS_Primary),2013-08-11T20:05:03.212,POINT (174.22815 -41.628589) | |
quake.2013p598054,2013p598054,2013-08-10T06:43:15.097,176.6114,-40.4666,38.2812,2.3121,M,automatic,14,,WEL(GNS_Primary),2013-08-10T06:46:40.165,POINT (176.61144 -40.4666) | |
quake.2013p597987,2013p597987,2013-08-10T06:07:42.225,173.4559,-41.3643,62.8906,1.7251,M,automatic,10,,WEL(GNS_Primary),2013-08-10T06:09:09.03,POINT (173.4559 -41.364312) | |
quake.2013p597983,2013p597983,2013-08-10T06:05:39.486,175.4164,-39.3437,107.6562,1.4562,M,automatic,10,,WEL(GNS_Primary),2013-08-10T06:08:33.549,POINT (175.41637 -39.343689) | |
quake.2013p597839,2013p597839,2013-08-10T04:49:01.677,174.2404,-41.6606,5.1172,2.5372,M,automatic,27,,WEL(GNS_Primary),2013-08-10T04:51:25.178,POINT (174.24036 -41.660645) | |
quake.2013p597836,2013p597836,2013-08-10T04:47:18.239,174.3146,-41.5448,24.9219,2.4838,M,automatic,29,,WEL(GNS_Primary),2013-08-10T04:49:15.724,POINT (174.31456 -41.544798) | |
quake.2013p597819,2013p597819,2013-08-10T04:38:27.482,174.321,-41.5794,8.3398,2.459,M,automatic,41,,WEL(GNS_Primary),2013-08-10T04:40:27.956,POINT (174.32103 -41.579395) | |
quake.2013p597813,2013p597813,2013-08-10T04:35:07.593,174.3193,-41.7639,6.0547,1.9979,M,automatic,18,,WEL(GNS_Primary),2013-08-10T04:37:13.542,POINT (174.31933 -41.763892) | |
quake.2013p597806,2013p597806,2013-08-10T04:31:17.126,174.3588,-41.6477,7.6367,2.0714,M,automatic,20,,WEL(GNS_Primary),2013-08-10T04:33:20.02,POINT (174.35882 -41.647652) | |
quake.2013p597794,2013p597794,2013-08-10T04:24:48.028,174.4051,-41.7164,5.1172,1.9957,M,automatic,18,,WEL(GNS_Primary),2013-08-10T04:26:54.075,POINT (174.40513 -41.716364) | |
quake.2013p597792,2013p597792,2013-08-10T04:23:35.948,174.3209,-41.5854,21.2891,1.4259,M,automatic,10,,WEL(GNS_Primary),2013-08-10T04:25:09.813,POINT (174.32091 -41.585439) | |
quake.2013p597778,2013p597778,2013-08-10T04:16:14.827,175.5886,-38.6836,184.0625,2.0217,M,automatic,11,,WEL(GNS_Primary),2013-08-10T04:19:30.271,POINT (175.58856 -38.683647) | |
quake.2013p597760,2013p597760,2013-08-10T04:06:57.271,174.4668,-40.7498,86.4453,2.3313,M,automatic,31,,WEL(GNS_Primary),2013-08-10T04:10:31.341,POINT (174.46678 -40.749832) | |
quake.2013p597695,2013p597695,2013-08-10T03:32:17.391,174.443,-41.5354,11.3867,2.8951,M,automatic,59,,WEL(GNS_Primary),2013-08-10T03:35:34.813,POINT (174.44305 -41.535443) | |
quake.2013p597677,2013p597677,2013-08-10T03:22:47.699,176.5161,-40.1013,46.0156,1.6793,M,automatic,10,,WEL(GNS_Primary),2013-08-10T03:24:11.36,POINT (176.51614 -40.101262) | |
quake.2013p597649,2013p597649,2013-08-10T03:07:52.372,174.2501,-41.6885,8.6328,1.9051,M,automatic,16,,WEL(GNS_Primary),2013-08-10T03:09:52.819,POINT (174.25013 -41.688459) | |
quake.2013p597647,2013p597647,2013-08-10T03:06:28.031,174.2057,-41.5929,6.5234,1.5804,M,automatic,13,,WEL(GNS_Primary),2013-08-10T03:08:25.296,POINT (174.20569 -41.592894) | |
quake.2013p597597,2013p597597,2013-08-10T02:40:00.943,174.3444,-41.5728,11.2109,1.6145,M,automatic,14,,WEL(GNS_Primary),2013-08-10T02:42:30.524,POINT (174.34435 -41.572783) | |
quake.2013p597589,2013p597589,2013-08-10T02:35:59.8,178.5206,-37.5545,30.3125,2.3851,M,automatic,14,,WEL(GNS_Primary),2013-08-10T07:32:29.726,POINT (178.52062 -37.554472) | |
quake.2013p597496,2013p597496,2013-08-10T01:46:21.596,174.4381,-41.5005,22.4609,1.7633,M,automatic,22,,WEL(GNS_Primary),2013-08-10T01:50:08.431,POINT (174.43811 -41.500475) | |
quake.2013p597490,2013p597490,2013-08-10T01:42:47.897,174.3099,-41.6078,8.8086,1.8538,M,automatic,17,,WEL(GNS_Primary),2013-08-10T01:44:50.024,POINT (174.3099 -41.607845) | |
quake.2013p597396,2013p597396,2013-08-10T00:52:54.133,176.6971,-37.7343,51.875,1.9703,M,automatic,11,,WEL(GNS_Primary),2013-08-10T00:54:19.937,POINT (176.69714 -37.734344) | |
quake.2013p597383,2013p597383,2013-08-10T00:45:53.03,174.1245,-42.2983,37.1094,1.9724,M,automatic,12,,WEL(GNS_Primary),2013-08-10T00:47:56.15,POINT (174.12452 -42.29831) | |
quake.2013p597357,2013p597357,2013-08-10T00:32:15.903,174.3419,-41.6107,11.7969,1.6264,M,automatic,10,,WEL(GNS_Primary),2013-08-10T00:33:49.711,POINT (174.34188 -41.610662) | |
quake.2013p597338,2013p597338,2013-08-10T00:21:54.989,176.8801,-37.8523,5.0586,2.2362,M,automatic,17,,WEL(GNS_Primary),2013-08-10T03:42:41.324,POINT (176.88006 -37.852307) | |
quake.2013p597336,2013p597336,2013-08-10T00:21:07.707,174.3788,-41.5588,11.6797,2.1486,M,automatic,33,,WEL(GNS_Primary),2013-08-10T00:24:57.838,POINT (174.37878 -41.558782) | |
quake.2013p597298,2013p597298,2013-08-10T00:00:38.041,176.9166,-37.8657,7.4609,2.531,M,reviewed,17,,WEL(GNS_Primary),2013-08-10T00:23:12.584,POINT (176.91662 -37.865732) | |
quake.2013p597278,2013p597278,2013-08-09T23:49:43.44,177.8799,-37.3096,58.9062,2.4889,M,automatic,22,,WEL(GNS_Primary),2013-08-09T23:52:13.362,POINT (177.87994 -37.309641) | |
quake.2013p597231,2013p597231,2013-08-09T23:25:08.758,171.2556,-43.5366,7.2266,3.8171,M,reviewed,24,,WEL(GNS_Primary),2013-08-11T20:01:06.523,POINT (171.25565 -43.536602) | |
quake.2013p597170,2013p597170,2013-08-09T22:52:14.895,174.3385,-41.5705,9.9219,1.9561,M,automatic,14,,WEL(GNS_Primary),2013-08-09T22:55:21.136,POINT (174.33852 -41.570526) | |
quake.2013p597140,2013p597140,2013-08-09T22:36:30.715,174.3751,-41.6788,6.2891,1.6065,M,automatic,12,,WEL(GNS_Primary),2013-08-09T22:38:26.359,POINT (174.3751 -41.678783) | |
quake.2013p597084,2013p597084,2013-08-09T22:06:37.955,174.3177,-41.5862,6.7578,1.8429,M,automatic,16,,WEL(GNS_Primary),2013-08-09T22:08:49.462,POINT (174.31772 -41.58618) | |
quake.2013p597074,2013p597074,2013-08-09T22:01:02.351,174.3623,-41.5873,7.4023,2.8011,M,automatic,46,,WEL(GNS_Primary),2013-08-09T22:58:43.519,POINT (174.36227 -41.587281) | |
quake.2013p597064,2013p597064,2013-08-09T21:55:52.806,175.3541,-40.6228,30.4297,1.3712,M,automatic,11,,WEL(GNS_Primary),2013-08-09T21:58:51.918,POINT (175.35413 -40.622847) | |
quake.2013p597046,2013p597046,2013-08-09T21:46:33.079,174.3247,-41.4546,6.5234,2.1243,M,automatic,22,,WEL(GNS_Primary),2013-08-09T21:48:28.871,POINT (174.32474 -41.454597) | |
quake.2013p597039,2013p597039,2013-08-09T21:42:39.178,174.3785,-41.5396,8.8672,1.8423,M,automatic,19,,WEL(GNS_Primary),2013-08-09T21:44:36.644,POINT (174.3785 -41.53959) | |
quake.2013p597023,2013p597023,2013-08-09T21:33:57.087,174.3244,-41.6039,7.6953,2.5376,M,automatic,34,,WEL(GNS_Primary),2013-08-09T21:36:07.787,POINT (174.32436 -41.603891) | |
quake.2013p597018,2013p597018,2013-08-09T21:31:32.931,173.567,-41.653,66.1719,2.1021,M,automatic,13,,WEL(GNS_Primary),2013-08-09T21:33:41.676,POINT (173.56696 -41.652954) | |
quake.2013p597012,2013p597012,2013-08-09T21:28:14.628,173.8936,-40.5346,76.4844,2.5135,M,automatic,14,,WEL(GNS_Primary),2013-08-09T21:31:29.6,POINT (173.89358 -40.534612) | |
quake.2013p597000,2013p597000,2013-08-09T21:21:47.544,174.9471,-41.3712,26.2109,1.644,M,automatic,14,,WEL(GNS_Primary),2013-08-09T21:23:47.578,POINT (174.94711 -41.371201) | |
quake.2013p596983,2013p596983,2013-08-09T21:13:00.877,175.1044,-40.9231,33.2422,1.778,M,automatic,18,,WEL(GNS_Primary),2013-08-09T21:15:42.073,POINT (175.10435 -40.923076) | |
quake.2013p596971,2013p596971,2013-08-09T21:06:11.037,174.9448,-41.3772,25.8008,1.987,M,automatic,21,,WEL(GNS_Primary),2013-08-09T21:07:55.284,POINT (174.94475 -41.377177) | |
quake.2013p596942,2013p596942,2013-08-09T20:51:09.848,177.8817,-39.1329,33.3594,2.9196,M,automatic,42,,WEL(GNS_Primary),2013-08-09T20:54:33.763,POINT (177.88166 -39.132879) | |
quake.2013p596903,2013p596903,2013-08-09T20:29:51.014,175.5338,-38.5544,206.3281,2.68,M,automatic,61,,WEL(GNS_Primary),2013-08-09T20:34:20.919,POINT (175.53382 -38.55441) | |
quake.2013p596824,2013p596824,2013-08-09T19:48:16.259,174.386,-41.6251,18.0664,3.1736,M,reviewed,31,,WEL(GNS_Primary),2013-08-11T19:57:09.285,POINT (174.38605 -41.625097) | |
quake.2013p596821,2013p596821,2013-08-09T19:46:17.045,174.4061,-41.5302,5.0586,1.6867,M,automatic,15,,WEL(GNS_Primary),2013-08-09T19:48:18.053,POINT (174.40607 -41.530184) | |
quake.2013p596816,2013p596816,2013-08-09T19:43:58.457,176.9291,-39.9041,9.5703,1.8147,M,automatic,16,,WEL(GNS_Primary),2013-08-09T19:46:12.012,POINT (176.92911 -39.904128) | |
quake.2013p596790,2013p596790,2013-08-09T19:29:44.894,174.364,-41.5435,5.0586,1.8696,M,automatic,20,,WEL(GNS_Primary),2013-08-09T19:31:39.884,POINT (174.36405 -41.543544) | |
quake.2013p596769,2013p596769,2013-08-09T19:18:36.072,175.2878,-40.2015,17.5391,1.908,M,automatic,21,,WEL(GNS_Primary),2013-08-09T19:20:54.507,POINT (175.28778 -40.201485) | |
quake.2013p596760,2013p596760,2013-08-09T19:13:57.347,176.2992,-40.0731,12.2656,2.3489,M,automatic,22,,WEL(GNS_Primary),2013-08-09T19:16:31.689,POINT (176.29925 -40.073075) | |
quake.2013p596758,2013p596758,2013-08-09T19:13:01.199,178.0559,-37.4167,6.875,2.8165,M,automatic,14,,WEL(GNS_Primary),2013-08-09T19:15:20.84,POINT (178.05588 -37.416744) | |
quake.2013p596754,2013p596754,2013-08-09T19:10:36.743,177.2419,-36.5115,108.125,3.2272,M,automatic,28,,WEL(GNS_Primary),2013-08-09T19:14:15.044,POINT (177.24186 -36.511542) | |
quake.2013p596737,2013p596737,2013-08-09T19:01:37.627,177.4766,-39.1699,15.0195,2.6342,M,reviewed,21,,WEL(GNS_Primary),2013-08-11T19:55:31.354,POINT (177.47658 -39.169895) | |
quake.2013p596724,2013p596724,2013-08-09T18:54:57.832,174.2846,-36.3146,9.6875,1.9698,M,automatic,10,,WEL(GNS_Primary),2013-08-09T19:48:40.352,POINT (174.28456 -36.314632) | |
quake.2013p596709,2013p596709,2013-08-09T18:47:03.598,174.2582,-41.6234,5.0586,1.6037,M,automatic,12,,WEL(GNS_Primary),2013-08-09T18:48:40.224,POINT (174.25823 -41.623426) | |
quake.2013p596687,2013p596687,2013-08-09T18:34:57.476,174.2203,-41.6292,8.3984,1.9886,M,automatic,24,,WEL(GNS_Primary),2013-08-09T18:38:33.184,POINT (174.22034 -41.629194) | |
quake.2013p596649,2013p596649,2013-08-09T18:14:45.298,174.3496,-41.5896,9.5703,1.6274,M,automatic,20,,WEL(GNS_Primary),2013-08-09T18:16:40.931,POINT (174.34959 -41.589619) | |
quake.2013p596615,2013p596615,2013-08-09T17:56:50.903,176.5783,-40.4648,9.4531,1.5618,M,automatic,10,,WEL(GNS_Primary),2013-08-09T17:58:06.221,POINT (176.57829 -40.464776) | |
quake.2013p596606,2013p596606,2013-08-09T17:52:03.931,174.1851,-41.6482,16.8359,1.926,M,automatic,15,,WEL(GNS_Primary),2013-08-09T17:55:11.005,POINT (174.18511 -41.648178) | |
quake.2013p596596,2013p596596,2013-08-09T17:47:00.74,174.3488,-41.6163,6.2891,1.8507,M,automatic,25,,WEL(GNS_Primary),2013-08-09T17:50:31.65,POINT (174.34877 -41.616286) | |
quake.2013p596585,2013p596585,2013-08-09T17:40:26.745,178.9951,-38.1936,36.4062,2.5771,M,automatic,14,,WEL(GNS_Primary),2013-08-09T17:43:08.852,POINT (178.99509 -38.193616) | |
quake.2013p596575,2013p596575,2013-08-09T17:35:29.345,174.3539,-40.3949,12.7344,2.5183,M,automatic,45,,WEL(GNS_Primary),2013-08-09T17:39:40.525,POINT (174.35389 -40.394893) | |
quake.2013p596547,2013p596547,2013-08-09T17:20:32.162,175.6658,-40.8949,24.3945,1.6044,M,automatic,16,,WEL(GNS_Primary),2013-08-09T17:23:29.22,POINT (175.66578 -40.89494) | |
quake.2013p596503,2013p596503,2013-08-09T16:57:01.69,173.9055,-41.7501,11.2109,1.7386,M,automatic,10,,WEL(GNS_Primary),2013-08-09T16:58:57.509,POINT (173.90551 -41.750084) | |
quake.2013p596497,2013p596497,2013-08-09T16:54:00.855,173.8318,-41.7371,8.1641,2.6419,M,automatic,26,,WEL(GNS_Primary),2013-08-09T16:57:15.041,POINT (173.83178 -41.737075) | |
quake.2013p596498,2013p596498,2013-08-09T16:53:58.88,167.2078,-45.3203,7.1094,3.0805,M,automatic,14,,WEL(GNS_Primary),2013-08-09T16:57:16.643,POINT (167.2078 -45.320262) | |
quake.2013p596493,2013p596493,2013-08-09T16:51:30.855,176.0334,-37.7237,197.1875,2.2798,M,automatic,17,,WEL(GNS_Primary),2013-08-09T16:54:24.579,POINT (176.03339 -37.723719) | |
quake.2013p596483,2013p596483,2013-08-09T16:46:08.174,174.1077,-41.6962,5.0586,1.8016,M,automatic,15,,WEL(GNS_Primary),2013-08-09T16:48:18.195,POINT (174.10766 -41.696162) | |
quake.2013p596417,2013p596417,2013-08-09T16:11:44.171,177.1037,-37.1871,108.125,2.4325,M,automatic,12,,WEL(GNS_Primary),2013-08-09T16:14:57.439,POINT (177.10374 -37.187075) | |
quake.2013p596399,2013p596399,2013-08-09T16:01:35.319,174.1137,-41.6611,9.3359,2.2625,M,reviewed,22,,WEL(GNS_Primary),2013-08-11T19:52:42.022,POINT (174.11371 -41.661095) | |
quake.2013p596361,2013p596361,2013-08-09T15:41:19.407,174.2006,-41.6272,5.0586,2.2314,M,automatic,33,,WEL(GNS_Primary),2013-08-09T15:43:49.294,POINT (174.20059 -41.627153) | |
quake.2013p596328,2013p596328,2013-08-09T15:23:34.175,174.2727,-41.6508,6.5234,1.9194,M,automatic,16,,WEL(GNS_Primary),2013-08-09T15:26:03.026,POINT (174.2727 -41.650752) | |
quake.2013p596314,2013p596314,2013-08-09T15:16:27.496,174.2191,-41.6481,5.0586,1.7627,M,automatic,13,,WEL(GNS_Primary),2013-08-09T15:19:22.708,POINT (174.21907 -41.648133) | |
quake.2013p596307,2013p596307,2013-08-09T15:12:54.042,175.9306,-38.5666,146.3281,3.0434,M,automatic,124,,WEL(GNS_Primary),2013-08-09T16:15:38.589,POINT (175.93057 -38.566602) | |
quake.2013p596292,2013p596292,2013-08-09T15:04:02.524,173.935,-43.1012,8.75,2.4342,M,automatic,13,,WEL(GNS_Primary),2013-08-09T15:06:04.595,POINT (173.93498 -43.101183) | |
quake.2013p596288,2013p596288,2013-08-09T15:02:39.195,174.1652,-41.8428,11.4453,1.5502,M,automatic,10,,WEL(GNS_Primary),2013-08-09T15:04:53.415,POINT (174.16525 -41.842789) | |
quake.2013p596281,2013p596281,2013-08-09T14:58:31.986,174.3613,-40.4064,36.2891,3.4344,M,automatic,102,,WEL(GNS_Primary),2013-08-09T15:42:46.69,POINT (174.36131 -40.406376) | |
quake.2013p596262,2013p596262,2013-08-09T14:48:36.62,177.08,-39.5229,27.6172,1.4837,M,automatic,10,,WEL(GNS_Primary),2013-08-09T14:49:53.335,POINT (177.08005 -39.52294) | |
quake.2013p596211,2013p596211,2013-08-09T14:21:12.473,172.3725,-43.5933,7.0508,2.8573,M,automatic,30,,WEL(GNS_Primary),2013-08-09T14:24:50.802,POINT (172.37246 -43.593304) | |
quake.2013p596185,2013p596185,2013-08-09T14:07:33.864,173.9966,-41.6695,5.0586,1.8058,M,automatic,19,,WEL(GNS_Primary),2013-08-09T14:09:49.194,POINT (173.99664 -41.669543) | |
quake.2013p596173,2013p596173,2013-08-09T14:01:05.859,174.0816,-41.4954,39.2188,1.5483,M,automatic,12,,WEL(GNS_Primary),2013-08-09T14:04:14.127,POINT (174.08161 -41.495397) | |
quake.2013p596098,2013p596098,2013-08-09T13:21:03.208,174.3823,-41.5556,5.1172,2.0266,M,automatic,26,,WEL(GNS_Primary),2013-08-09T13:23:46.374,POINT (174.38233 -41.555551) | |
quake.2013p596081,2013p596081,2013-08-09T13:12:36.302,174.1059,-41.6617,9.8047,1.6093,M,automatic,11,,WEL(GNS_Primary),2013-08-09T13:15:16.456,POINT (174.1059 -41.6617) | |
quake.2013p596041,2013p596041,2013-08-09T12:51:07.995,173.8916,-41.6848,9.043,1.6421,M,automatic,11,,WEL(GNS_Primary),2013-08-09T12:52:45.912,POINT (173.89161 -41.684811) | |
quake.2013p595993,2013p595993,2013-08-09T12:25:27.597,178.0302,-37.5084,71.7969,2.0728,M,automatic,18,,WEL(GNS_Primary),2013-08-09T12:28:04.071,POINT (178.03016 -37.50839) | |
quake.2013p595987,2013p595987,2013-08-09T12:22:03.63,174.4443,-41.564,7.4609,1.5943,M,automatic,12,,WEL(GNS_Primary),2013-08-09T12:23:49.357,POINT (174.44429 -41.564046) | |
quake.2013p595932,2013p595932,2013-08-09T11:53:44.418,175.9416,-38.524,9.8047,1.7522,M,reviewed,17,,WEL(GNS_Primary),2013-08-10T00:20:12.719,POINT (175.94155 -38.524011) | |
quake.2013p595927,2013p595927,2013-08-09T11:49:59.081,174.2536,-41.5818,8.1641,1.8649,M,automatic,18,,WEL(GNS_Primary),2013-08-09T11:52:07.925,POINT (174.2536 -41.581791) | |
quake.2013p595919,2013p595919,2013-08-09T11:45:49.01,174.2074,-41.7158,5.0586,1.6967,M,automatic,11,,WEL(GNS_Primary),2013-08-09T11:47:51.599,POINT (174.20745 -41.715775) | |
quake.2013p595912,2013p595912,2013-08-09T11:42:00.753,174.3897,-41.6634,8.6328,2.1554,M,automatic,28,,WEL(GNS_Primary),2013-08-09T11:45:06.466,POINT (174.38971 -41.663364) | |
quake.2013p595896,2013p595896,2013-08-09T11:33:31.035,174.2685,-41.6896,5.0586,2.6915,M,automatic,47,,WEL(GNS_Primary),2013-08-09T11:37:10.948,POINT (174.26849 -41.689623) | |
quake.2013p595864,2013p595864,2013-08-09T11:16:45.518,174.2385,-41.6105,12.8516,1.9057,M,automatic,17,,WEL(GNS_Primary),2013-08-09T11:18:44.621,POINT (174.23854 -41.610543) | |
quake.2013p595841,2013p595841,2013-08-09T11:04:29.784,167.2511,-45.3767,5.2344,3.0094,M,automatic,15,,WEL(GNS_Primary),2013-08-09T11:07:55.633,POINT (167.25106 -45.376701) | |
quake.2013p595826,2013p595826,2013-08-09T10:56:15.513,175.2013,-39.323,20.7031,1.7073,M,automatic,16,,WEL(GNS_Primary),2013-08-09T10:58:33.038,POINT (175.20134 -39.322977) | |
quake.2013p595823,2013p595823,2013-08-09T10:54:46.025,174.6952,-39.5553,139.5312,2.526,M,automatic,14,,WEL(GNS_Primary),2013-08-09T10:58:04.722,POINT (174.69524 -39.555281) | |
quake.2013p595813,2013p595813,2013-08-09T10:49:30.648,175.2517,-39.2909,25.6836,3.3787,M,reviewed,57,,WEL(GNS_Primary),2013-08-10T00:06:58.673,POINT (175.25172 -39.290949) | |
quake.2013p595781,2013p595781,2013-08-09T10:32:28.593,172.5933,-41.2695,185.9375,2.088,M,automatic,10,,WEL(GNS_Primary),2013-08-09T10:35:42.299,POINT (172.59331 -41.269549) | |
quake.2013p595730,2013p595730,2013-08-09T10:05:04.987,175.2402,-39.2991,26.7969,2.0361,M,reviewed,28,,WEL(GNS_Primary),2013-08-09T23:54:59.401,POINT (175.24022 -39.299145) | |
quake.2013p595716,2013p595716,2013-08-09T09:57:49.812,176.8915,-39.9186,17.2461,1.5462,M,automatic,10,,WEL(GNS_Primary),2013-08-09T09:59:05.276,POINT (176.89149 -39.918616) | |
quake.2013p595704,2013p595704,2013-08-09T09:51:38.221,177.3782,-37.9254,165.3125,2.5328,M,automatic,35,,WEL(GNS_Primary),2013-08-09T09:55:07.346,POINT (177.37819 -37.925445) | |
quake.2013p595697,2013p595697,2013-08-09T09:47:39.017,176.3025,-40.2153,44.0234,1.6035,M,automatic,17,,WEL(GNS_Primary),2013-08-09T09:52:11.39,POINT (176.30246 -40.215265) | |
quake.2013p595693,2013p595693,2013-08-09T09:45:21.783,167.5093,-45.214,111.4062,2.7497,M,automatic,10,,WEL(GNS_Primary),2013-08-09T09:48:39.381,POINT (167.50932 -45.213977) | |
quake.2013p595611,2013p595611,2013-08-09T09:01:51.156,174.3432,-41.57,7.7539,2.5494,M,automatic,42,,WEL(GNS_Primary),2013-08-09T09:05:53.084,POINT (174.34322 -41.570039) | |
quake.2013p595509,2013p595509,2013-08-09T08:07:24.381,177.0872,-37.1232,320.9375,3.1003,M,automatic,62,,WEL(GNS_Primary),2013-08-09T09:44:04.276,POINT (177.08717 -37.123234) | |
quake.2013p595423,2013p595423,2013-08-09T07:21:35.464,176.5926,-40.4723,13.5547,1.7601,M,automatic,11,,WEL(GNS_Primary),2013-08-09T07:23:07.593,POINT (176.59262 -40.472287) | |
quake.2013p595396,2013p595396,2013-08-09T07:07:10.682,174.2407,-41.669,6.2891,1.9182,M,automatic,17,,WEL(GNS_Primary),2013-08-09T07:09:18.725,POINT (174.24067 -41.668996) | |
quake.2013p595377,2013p595377,2013-08-09T06:57:06.017,174.2999,-41.6023,11.2109,1.8337,M,automatic,21,,WEL(GNS_Primary),2013-08-09T06:59:02.383,POINT (174.29991 -41.602338) | |
quake.2013p595364,2013p595364,2013-08-09T06:50:02.363,174.3759,-41.5577,10.6836,2.3233,M,automatic,40,,WEL(GNS_Primary),2013-08-09T06:52:18.685,POINT (174.37586 -41.557654) | |
quake.2013p595354,2013p595354,2013-08-09T06:45:03.247,178.2358,-37.6838,29.8438,2.3516,M,automatic,22,,WEL(GNS_Primary),2013-08-09T06:47:38.306,POINT (178.23576 -37.683848) | |
quake.2013p595311,2013p595311,2013-08-09T06:22:08.32,174.3459,-41.552,6.7578,1.7799,M,automatic,18,,WEL(GNS_Primary),2013-08-09T06:24:09.25,POINT (174.34587 -41.551975) | |
quake.2013p595301,2013p595301,2013-08-09T06:16:40.595,173.9414,-42.1311,15.0781,2.0829,M,automatic,11,,WEL(GNS_Primary),2013-08-09T06:18:58.296,POINT (173.9414 -42.131139) | |
quake.2013p595291,2013p595291,2013-08-09T06:11:29.307,174.3156,-41.5794,8.6328,1.8136,M,automatic,18,,WEL(GNS_Primary),2013-08-09T06:13:21.099,POINT (174.31562 -41.579445) | |
quake.2013p595144,2013p595144,2013-08-09T04:52:50.805,174.2348,-41.6355,5.1172,1.8711,M,automatic,14,,WEL(GNS_Primary),2013-08-09T04:54:51.937,POINT (174.23484 -41.635459) | |
quake.2013p595128,2013p595128,2013-08-09T04:44:20.806,174.2134,-41.6031,5.1172,1.8301,M,automatic,16,,WEL(GNS_Primary),2013-08-09T04:46:20.907,POINT (174.21342 -41.603132) | |
quake.2013p595075,2013p595075,2013-08-09T04:16:12.841,174.3614,-41.5724,15.1953,1.759,M,automatic,17,,WEL(GNS_Primary),2013-08-09T04:17:56.762,POINT (174.36136 -41.572449) | |
quake.2013p595067,2013p595067,2013-08-09T04:12:13.143,174.6494,-41.2707,32.3047,1.7292,M,automatic,15,,WEL(GNS_Primary),2013-08-09T04:13:53.95,POINT (174.64936 -41.270677) | |
quake.2013p595058,2013p595058,2013-08-09T04:06:44.441,178.1305,-37.0376,72.0312,2.4737,M,automatic,17,,WEL(GNS_Primary),2013-08-09T04:09:34.709,POINT (178.13051 -37.037633) | |
quake.2013p595055,2013p595055,2013-08-09T04:05:27.677,174.2331,-41.6262,5.1172,1.9813,M,automatic,18,,WEL(GNS_Primary),2013-08-09T04:07:26.66,POINT (174.23313 -41.626233) | |
quake.2013p594965,2013p594965,2013-08-09T03:17:47.224,174.2398,-41.6331,7.6953,2.7333,M,reviewed,29,,WEL(GNS_Primary),2013-08-11T19:51:11.208,POINT (174.23982 -41.633103) | |
quake.2013p594929,2013p594929,2013-08-09T02:58:29.629,175.4623,-38.2796,185.9375,2.169,M,automatic,13,,WEL(GNS_Primary),2013-08-09T03:01:00.366,POINT (175.4623 -38.27958) | |
quake.2013p594880,2013p594880,2013-08-09T02:32:31.853,176.1825,-40.2335,14.3164,1.7461,M,automatic,21,,WEL(GNS_Primary),2013-08-09T02:35:44.568,POINT (176.18251 -40.233544) | |
quake.2013p594865,2013p594865,2013-08-09T02:24:18.058,177.476,-39.0843,15.4297,1.7308,M,automatic,13,,WEL(GNS_Primary),2013-08-09T02:25:59.447,POINT (177.47605 -39.084288) | |
quake.2013p594837,2013p594837,2013-08-09T02:09:29.784,176.2096,-40.2344,12.9102,1.8616,M,automatic,25,,WEL(GNS_Primary),2013-08-09T02:11:10.961,POINT (176.20961 -40.234357) | |
quake.2013p594823,2013p594823,2013-08-09T02:01:54.991,174.2807,-41.6176,5.1172,2.0145,M,automatic,13,,WEL(GNS_Prim |
Also, you might want to update the link in your online book for D3 v3 to this latest block. Currently, it points to an older version that did not include the pie chart or row-chart. This should be the correct updated link: https://bl.ocks.org/d3noob/raw/6584483/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi there. Thanks a lot for your book. It's been a great resource to pick up d3 / dc.js. I just wanted to point out that
reduceCount()
actually does not accept any arguments so these calls:.reduceCount(function(d) { return d.mag; })
should really be:.reduceCount()
. The former ends up being quite confusing since counting shouldn't really needd.mag
values (althoughreduceSum
most certainly does).Cheers
PS - I spent a week putting together a pretty neat and relatively elaborate multi-line chart plot with interactive panning, rectangle zooming, scroll-zooming and interactive legends. I'll probably work on polishing it up and posting online in the next couple of weeks and I'll definitely ping you to point you towards it. It uses d3 v4, and I'd be more than happy if you wanted to incorporate some/all of it into your current book on d3 v4.