Full Code of AleshaOleg/holy-grail-markup for AI

master e1d2246cd484 cached
188 files
6.4 MB
1.7M tokens
6176 symbols
1 requests
Download .txt
Showing preview only (6,781K chars total). Download the full file or copy to clipboard to get everything.
Repository: AleshaOleg/holy-grail-markup
Branch: master
Commit: e1d2246cd484
Files: 188
Total size: 6.4 MB

Directory structure:
gitextract_sx0tpi0h/

├── .csscomb.json
├── .gitignore
├── Gruntfile.js
├── README.md
├── STATISTICS.md
├── atomic/
│   ├── .npmrc
│   ├── Gulpfile.js
│   ├── README.md
│   ├── config.js
│   ├── index.html
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── bem-bootstrap-4/
│   ├── .npmrc
│   ├── Gulpfile.js
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── style.css
│   └── style.scss
├── bem-css/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── bem-flexboxgrid/
│   ├── .npmrc
│   ├── Gulpfile.js
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── style.css
│   └── style.scss
├── bem-platform/
│   ├── .bem/
│   │   └── templates/
│   │       └── bemjson.js
│   ├── .bemrc
│   ├── .enb/
│   │   └── make.js
│   ├── .gitignore
│   ├── .npmrc
│   ├── README.md
│   ├── README.ru.md
│   ├── blocks/
│   │   ├── button/
│   │   │   └── button.css
│   │   ├── content/
│   │   │   └── content.css
│   │   ├── footer/
│   │   │   └── footer.css
│   │   ├── form/
│   │   │   └── form.bemhtml.js
│   │   ├── header/
│   │   │   ├── header.css
│   │   │   └── header.deps.js
│   │   ├── heading/
│   │   │   ├── heading.bemhtml.js
│   │   │   └── heading.post.css
│   │   ├── main/
│   │   │   ├── main.bemhtml.js
│   │   │   ├── main.css
│   │   │   └── main.deps.js
│   │   ├── nav/
│   │   │   ├── nav.bemhtml.js
│   │   │   └── nav.css
│   │   ├── news/
│   │   │   └── news.css
│   │   ├── page/
│   │   │   ├── page.bemhtml.js
│   │   │   └── page.css
│   │   ├── search/
│   │   │   └── search.css
│   │   ├── sidebar/
│   │   │   └── sidebar.css
│   │   ├── text/
│   │   │   └── text.css
│   │   └── title/
│   │       └── title.css
│   ├── gulpfile.js
│   ├── package.json
│   ├── pages/
│   │   └── index/
│   │       ├── index.bemdecl.js
│   │       ├── index.bemhtml.bemdecl.js
│   │       ├── index.bemhtml.deps.js
│   │       ├── index.bemhtml.js
│   │       ├── index.bemjson.js
│   │       ├── index.browser.bemhtml.js
│   │       ├── index.browser.js
│   │       ├── index.css
│   │       ├── index.deps.js
│   │       ├── index.html
│   │       └── index.js
│   └── specificity-graph/
│       ├── example.js
│       ├── index.html
│       ├── specificity-graph-standalone.js
│       └── specificity.json
├── bem-sass/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── style.css
│   └── style.scss
├── css-modules/
│   ├── .npmrc
│   ├── README.md
│   ├── app/
│   │   ├── index.js
│   │   └── styles.css
│   ├── build/
│   │   ├── bundle.js
│   │   └── style.css
│   ├── content/
│   │   ├── index.js
│   │   └── styles.css
│   ├── footer/
│   │   ├── index.js
│   │   └── styles.css
│   ├── header/
│   │   ├── index.js
│   │   └── styles.css
│   ├── index.html
│   ├── index.js
│   ├── main/
│   │   ├── index.js
│   │   └── styles.css
│   ├── nav/
│   │   ├── index.js
│   │   └── styles.css
│   ├── news/
│   │   ├── index.js
│   │   └── styles.css
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── webpack.config.js
├── index.js
├── oocss/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── organic/
│   ├── .npmrc
│   ├── Gruntfile.js
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── scss/
│   │   ├── app.scss
│   │   ├── atoms/
│   │   │   ├── _atoms.scss
│   │   │   ├── _box-model.scss
│   │   │   ├── _break-point.scss
│   │   │   ├── _clearfix.scss
│   │   │   ├── _colors.scss
│   │   │   ├── _cursor.scss
│   │   │   ├── _display.scss
│   │   │   ├── _effects.scss
│   │   │   ├── _floats.scss
│   │   │   ├── _keyframes.scss
│   │   │   ├── _position.scss
│   │   │   ├── _sizes.scss
│   │   │   ├── _text.scss
│   │   │   ├── _transition.scss
│   │   │   ├── _vendors.scss
│   │   │   └── _widths.scss
│   │   ├── common.scss
│   │   ├── main.scss
│   │   ├── molecules/
│   │   │   ├── _body.scss
│   │   │   ├── _button.scss
│   │   │   ├── _content.scss
│   │   │   ├── _footer.scss
│   │   │   ├── _header.scss
│   │   │   ├── _html.scss
│   │   │   ├── _label.scss
│   │   │   ├── _main.scss
│   │   │   ├── _nav.scss
│   │   │   ├── _news.scss
│   │   │   └── _wrapper.scss
│   │   └── organelles/
│   │       └── _organelles.scss
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── package.json
├── raw/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── smacss/
│   ├── basic.css
│   ├── build.css
│   ├── index.html
│   ├── layouts.css
│   ├── modules.css
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── states.css
│   └── themes.css
└── statistics.xlsx

================================================
FILE CONTENTS
================================================

================================================
FILE: .csscomb.json
================================================
{
  "remove-empty-rulesets": true,
  "always-semicolon": true,
  "color-case": "upper",
  "block-indent": "  ",
  "color-shorthand": true,
  "element-case": "lower",
  "eof-newline": true,
  "leading-zero": true,
  "quotes": "single",
  "sort-order-fallback": "abc",
  "space-before-colon": "",
  "space-after-colon": " ",
  "space-before-combinator": " ",
  "space-after-combinator": " ",
  "space-between-declarations": "\n",
  "space-before-opening-brace": " ",
  "space-after-opening-brace": "\n",
  "space-after-selector-delimiter": " ",
  "space-before-selector-delimiter": "",
  "space-before-closing-brace": "\n",
  "strip-spaces": true,
  "tab-size": true,
  "vendor-prefix-align": true,
  "exclude": [
      ".git/**",
      "**/node_modules/**",
      "**/*.scss"
  ],
  "sort-order": [
    [
      "position",
      "z-index",
      "top",
      "right",
      "bottom",
      "left"
    ],
    [
      "display",
      "visibility",
      "float",
      "clear",
      "overflow",
      "overflow-x",
      "overflow-y",
      "-ms-overflow-x",
      "-ms-overflow-y",
      "-webkit-overflow-scrolling",
      "clip",
      "zoom",
      "flex-direction",
      "flex-order",
      "flex-pack",
      "flex-align",
      "flex"
    ],
    [
      "-webkit-box-sizing",
      "-moz-box-sizing",
      "box-sizing",
      "width",
      "min-width",
      "max-width",
      "height",
      "min-height",
      "max-height",
      "margin",
      "margin-top",
      "margin-right",
      "margin-bottom",
      "margin-left",
      "padding",
      "padding-top",
      "padding-right",
      "padding-bottom",
      "padding-left"
    ],
    [
      "table-layout",
      "empty-cells",
      "caption-side",
      "border-spacing",
      "border-collapse",
      "list-style",
      "list-style-position",
      "list-style-type",
      "list-style-image"
    ],
    [
      "content",
      "quotes",
      "counter-reset",
      "counter-increment",
      "resize",
      "cursor",
      "-webkit-user-select",
      "-moz-user-select",
      "-ms-user-select",
      "user-select",
      "nav-index",
      "nav-up",
      "nav-right",
      "nav-down",
      "nav-left",
      "-webkit-transition",
      "-moz-transition",
      "-ms-transition",
      "-o-transition",
      "transition",
      "-webkit-transition-delay",
      "-moz-transition-delay",
      "-ms-transition-delay",
      "-o-transition-delay",
      "transition-delay",
      "-webkit-transition-timing-function",
      "-moz-transition-timing-function",
      "-ms-transition-timing-function",
      "-o-transition-timing-function",
      "transition-timing-function",
      "-webkit-transition-duration",
      "-moz-transition-duration",
      "-ms-transition-duration",
      "-o-transition-duration",
      "transition-duration",
      "-webkit-transition-property",
      "-moz-transition-property",
      "-ms-transition-property",
      "-o-transition-property",
      "transition-property",
      "-webkit-transform",
      "-moz-transform",
      "-ms-transform",
      "-o-transform",
      "transform",
      "-webkit-transform-origin",
      "-moz-transform-origin",
      "-ms-transform-origin",
      "-o-transform-origin",
      "transform-origin",
      "-webkit-animation",
      "-moz-animation",
      "-ms-animation",
      "-o-animation",
      "animation",
      "-webkit-animation-name",
      "-moz-animation-name",
      "-ms-animation-name",
      "-o-animation-name",
      "animation-name",
      "-webkit-animation-duration",
      "-moz-animation-duration",
      "-ms-animation-duration",
      "-o-animation-duration",
      "animation-duration",
      "-webkit-animation-play-state",
      "-moz-animation-play-state",
      "-ms-animation-play-state",
      "-o-animation-play-state",
      "animation-play-state",
      "-webkit-animation-timing-function",
      "-moz-animation-timing-function",
      "-ms-animation-timing-function",
      "-o-animation-timing-function",
      "animation-timing-function",
      "-webkit-animation-delay",
      "-moz-animation-delay",
      "-ms-animation-delay",
      "-o-animation-delay",
      "animation-delay",
      "-webkit-animation-iteration-count",
      "-moz-animation-iteration-count",
      "-ms-animation-iteration-count",
      "-o-animation-iteration-count",
      "animation-iteration-count",
      "-webkit-animation-direction",
      "-moz-animation-direction",
      "-ms-animation-direction",
      "-o-animation-direction",
      "animation-direction",
      "text-align",
      "-webkit-text-align-last",
      "-moz-text-align-last",
      "-ms-text-align-last",
      "text-align-last",
      "vertical-align",
      "white-space",
      "text-decoration",
      "text-emphasis",
      "text-emphasis-color",
      "text-emphasis-style",
      "text-emphasis-position",
      "text-indent",
      "-ms-text-justify",
      "text-justify",
      "text-transform",
      "letter-spacing",
      "word-spacing",
      "-ms-writing-mode",
      "text-outline",
      "text-transform",
      "text-wrap",
      "text-overflow",
      "-ms-text-overflow",
      "text-overflow-ellipsis",
      "text-overflow-mode",
      "-ms-word-wrap",
      "word-wrap",
      "word-break",
      "-ms-word-break",
      "-moz-tab-size",
      "-o-tab-size",
      "tab-size",
      "-webkit-hyphens",
      "-moz-hyphens",
      "hyphens",
      "pointer-events"
    ],
    [
      "opacity",
      "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
      "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
      "-ms-interpolation-mode",
      "color",
      "border",
      "border-collapse",
      "border-width",
      "border-style",
      "border-color",
      "border-top",
      "border-top-width",
      "border-top-style",
      "border-top-color",
      "border-right",
      "border-right-width",
      "border-right-style",
      "border-right-color",
      "border-bottom",
      "border-bottom-width",
      "border-bottom-style",
      "border-bottom-color",
      "border-left",
      "border-left-width",
      "border-left-style",
      "border-left-color",
      "-webkit-border-radius",
      "-moz-border-radius",
      "border-radius",
      "-webkit-border-top-left-radius",
      "-moz-border-radius-topleft",
      "border-top-left-radius",
      "-webkit-border-top-right-radius",
      "-moz-border-radius-topright",
      "border-top-right-radius",
      "-webkit-border-bottom-right-radius",
      "-moz-border-radius-bottomright",
      "border-bottom-right-radius",
      "-webkit-border-bottom-left-radius",
      "-moz-border-radius-bottomleft",
      "border-bottom-left-radius",
      "-webkit-border-image",
      "-moz-border-image",
      "-o-border-image",
      "border-image",
      "-webkit-border-image-source",
      "-moz-border-image-source",
      "-o-border-image-source",
      "border-image-source",
      "-webkit-border-image-slice",
      "-moz-border-image-slice",
      "-o-border-image-slice",
      "border-image-slice",
      "-webkit-border-image-width",
      "-moz-border-image-width",
      "-o-border-image-width",
      "border-image-width",
      "-webkit-border-image-outset",
      "-moz-border-image-outset",
      "-o-border-image-outset",
      "border-image-outset",
      "-webkit-border-image-repeat",
      "-moz-border-image-repeat",
      "-o-border-image-repeat",
      "border-image-repeat",
      "outline",
      "outline-width",
      "outline-style",
      "outline-color",
      "outline-offset",
      "background",
      "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
      "background-color",
      "background-image",
      "background-repeat",
      "background-attachment",
      "background-position",
      "background-position-x",
      "-ms-background-position-x",
      "background-position-y",
      "-ms-background-position-y",
      "-webkit-background-clip",
      "-moz-background-clip",
      "background-clip",
      "background-origin",
      "-webkit-background-size",
      "-moz-background-size",
      "-o-background-size",
      "background-size",
      "box-decoration-break",
      "-webkit-box-shadow",
      "-moz-box-shadow",
      "box-shadow",
      "filter:progid:DXImageTransform.Microsoft.gradient",
      "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
      "text-shadow"
    ],
    [
      "font",
      "font-family",
      "font-size",
      "font-weight",
      "font-style",
      "font-variant",
      "font-size-adjust",
      "font-stretch",
      "font-effect",
      "font-emphasize",
      "font-emphasize-position",
      "font-emphasize-style",
      "font-smooth",
      "line-height"
    ]
  ]
}


================================================
FILE: .gitignore
================================================
node_modules/
.idea
~$statistics.xlsx

================================================
FILE: Gruntfile.js
================================================
module.exports = function(grunt) {
  grunt.initConfig({
    csscount: {
      dev: {
        src: [
          'atomic/style.css',
          'bem-bootstrap-4/style.css',
          'bem-css/style.css',
          'bem-flexboxgrid/style.css',
          'bem-platform/pages/index/index.css',
          'bem-sass/style.css',
          'css-modules/build/style.css',
          'oocss/style.css',
          'organic/style.css',
          'raw/style.css',
          'smacss/basic.css',
          'smacss/layouts.css',
          'smacss/modules.css',
          'smacss/states.css',
          'smacss/themes.css'
        ]
      }
    }
  });
   
  grunt.loadNpmTasks('grunt-css-count');
   
  grunt.registerTask('default', ['csscount']);
};


================================================
FILE: README.md
================================================
## CSS-methodologies "101" examples: SMACSS, Atomic, BEM and so on.

### Helping you select an CSS methodologie
We wrote simple html page like "[Holy Grail Layout](https://en.wikipedia.org/wiki/Holy_Grail_(web_design))"
in different CSS methodologies as an example of all popular css methodologies markup,
in order to help people compare, learn and start using them.

The same page, the same design implemented in using most of the popular CSS methodologies of today.

That's like an ~~"Hello world"~~ [TodoMVC](https://github.com/tastejs/todomvc) for CSS.

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/preview.png?raw=true" width="960">

## How to use
Just download/clone repository and see examples of markup in each folder.
Keep in mind: `raw` is just example of default old ugly 2000-style css markup *without* any methodologie (just to compare),
but with trying to structuring code some way we did it before methodoligies coming.

[Demo](https://aleshaoleg.github.io/holy-grail-markup/raw) is here.

Specificity graphs for each implementetion, you can find by URL address, `https://aleshaoleg.github.io/holy-grail-markup/implementetion/specificity-graph`. For example, `raw` example here: http://aleshaoleg.github.io/holy-grail-markup/raw/specificity-graph.

## Authors
Created by [Oleh Aloshkin](https://github.com/AleshaOleg) and [Ihor Zenich](https://github.com/IhorZenich).
Collaborator: [Dmytro Cisar](https://github.com/idmytro).

## Contributors
* [Boris Serdiuk](https://github.com/just-boris) and [Artem Sapegin](https://github.com/sapegin) for CSS-Modules example.
* [Vladimir Grinenko](https://github.com/tadatuta) for Yandex-way BEM-realization example.

Anyone and everyone is welcome to contribute, just send Pull Request or [create](https://github.com/AleshaOleg/holy-grail-markup/issues/new)/[answer](https://github.com/AleshaOleg/holy-grail-markup/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) to issue!

## Thanks
* [Ivan Sagalaev](https://github.com/isagalaev) for his [MegaCorporation html markup example](http://softwaremaniacs.org/blog/2006/01/17/css-layout-example/).

## License
The code is available under the [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license. This applies to all documents in this repository.

## Documentation
- [OOCSS](https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/)
- [SMACSS](https://smacss.com)
- [Atomic CSS](http://acss.io)
- [Organic CSS](http://krasimir.github.io/organic-css/), based on [Atomic Design](http://atomicdesign.bradfrost.com/chapter-2/) concept
- [BEM ](https://en.bem.info/methodology/quick-start/)
  * [BEM Bootstrap-4](https://en.bem.info/methodology/quick-start/)
  * [BEM CSS](https://en.bem.info/methodology/css/) (Nicolas Gallagher's [variation](http://nicolasgallagher.com/about-html-semantics-front-end-architecture/), [populated](https://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/) by Harry Roberts)
  * [BEM Platform](https://en.bem.info/platform/)
  * BEM CSS with [grid](https://github.com/vivid-web/flexbox-grid-sass)
- [CSS Modules](https://github.com/css-modules/css-modules)
- css-in-js (React), and ITCSS will be added soon!

## Statistics
You can see statistics for each of example [here](https://github.com/AleshaOleg/holy-grail-markup/blob/master/STATISTICS.md).

Excel document, to view statistics located [here](https://docs.google.com/spreadsheets/d/1LVnJ_GEs51lLxZjBj2SsfLMbTGPqawqzh7POCpaM898/edit?usp=sharing) (Google Sheets).


================================================
FILE: STATISTICS.md
================================================
## Statistics

This statistics file, can have some old data, from previous commits. We tried to frequently update it.

Here a statistics for each of implementation/example. Also available as `.xlsx` file in the root of project - `statistics.xlsx` Declarations, selectors, rules, selectors per rule and declarations per rule for CSS files got with a help of [grunt-css-count](https://www.npmjs.com/package/grunt-css-count) module. You can also see this statics by run Gruntfile.js:

`npm i`

`npm i grunt -g`

`grunt`

<br />

### Number of lines

|Implementation|HTML|CSS|Total
------------ | ------------- | ------------- | -------------
|OOCSS|116|233|349
|SMACSS|125|220|345
|Atomic|114|231|345
|Organic|122|255|377
|BEM Bootstrap 4|127|6232|6359
|BEM CSS|131|245|376
|BEM Platform|105|260|365
|BEM Flexboxgrid|133|1074|1207
|CSS Modules|144|220|364
|Raw|96|242|338

#### File size

|Implementation|HTML|CSS|Total|
------------ | ------------- | ------------- | -------------
|OOCSS|5.17 KB|2.22 KB|7.39 KB
|SMACSS|6.09 KB|2.25 KB|8.34 KB
|Atomic|6.24 KB|2.82 KB|9.06 KB
|Organic|5.28 KB|3.59 KB|8.87 KB
|BEM Bootstrap 4|6.26 KB|148 KB|154.26 KB
|BEM CSS|5.9 KB|2.55 KB|8.45 KB
|BEM Platform|5.02 KB|2.77 KB|7.79 KB
|BEM Flexboxgrid|6.07 KB|42.8 KB|48.87 KB
|CSS Modules|4.41 KB|2.35 KB|6.76 KB
|Raw|4.31 KB|2.53 KB|6.84 KB

### CSS statistics

|Implementation|Selectors|Declarations|Rules|S/R|D/R
------------ | ------------- | ------------- | ------------- | ------------- | -------------
|OOCSS|38|92|35|1.1|2.6
|SMACSS|31|92|31|1.0|2.54
|Atomic|78|82|74|1.1|1.1
|Organic|80|94|55|1.5|1.7
|BEM Bootstrap 4|2610|3266|1856|1.4|1.8
|BEM CSS|38|96|38|1.0|2.5
|BEM Platform|40|103|40|1.0|2.6
|BEM Flexboxgrid|282|394|249|1.1|1.6
|CSS Modules|30|95|30|1.0|3.2
|Raw|49|86|44|1.1|2.0


## Graphics statistics

### HTML (Number of lines)

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/HTML (Number of lines).png?raw=true">

### CSS (Number of lines)

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/CSS (Number of lines).png?raw=true">

### Total (Number of lines)

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/Total (Number of lines).png?raw=true">

### HTML (File sizes)

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/HTML (File sizes).png?raw=true">

### CSS (File sizes)

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/CSS (File sizes).png?raw=true">

### Total (File sizes)

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/Total (File sizes).png?raw=true">

### Selectors

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/Selectors.png?raw=true">

### Declarations

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/Declarations.png?raw=true">

### Rules

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/Rules.png?raw=true">

### S/R

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/SR.png?raw=true">

### D/R

<img src="https://github.com/AleshaOleg/holy-grail-markup/blob/master/pictures/DR.png?raw=true">


================================================
FILE: atomic/.npmrc
================================================
package-lock=false


================================================
FILE: atomic/Gulpfile.js
================================================
var gulp = require('gulp');
var acss = require('gulp-atomizer');
var browserSync = require('browser-sync').create();

gulp.task('acss', function () {
    return gulp.src('*.html')
        .pipe(acss({
            outfile: 'style.css',
            acssConfig: Object.assign({}, require('./config'))
        }))
        .pipe(gulp.dest('.'));
});

gulp.task('default', ['acss'], function () {
    browserSync.init({
        server: {
            baseDir: "./"
        }
    });

    gulp.watch("*.html", ['acss']);
    gulp.watch("*.html").on('change', browserSync.reload);
});


================================================
FILE: atomic/README.md
================================================
# Atomic

## Usage
This example is already built, but if you want build it by yourself, here is a guide:

`npm i`

`npm start`


================================================
FILE: atomic/config.js
================================================
module.exports = {
    "custom": {
        "Ff(Tahoma)": "Tahoma, sans-serif"
    }
};

================================================
FILE: atomic/index.html
================================================
<!DOCTYPE html>
<html class="H(100%) Bgc(#eee)">
<head>
    <title>Holy Grail Markup</title>
    <link rel="stylesheet" href="style.css">
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-86724647-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'UA-86724647-1');
    </script>
</head>
<body class="Pos(r) Mih(100%) My(0) Mx(a) Bgc(#fff) W(700px) Ff(Tahoma) Fz(13px)">
    <div class="Bgc(#45f) C(#fff)">
        <h1 class="My(0) Py(20px) Px(60px) Fz(180%) Lts(1px)">CompanyName</h1>
    </div>
    <div class="Ov(h) Mih(100%) Pb(42px)">
        <div class="Fl(start) W(55%) Mstart(20%)">
            <h2 class="Mt(20px) Mb(10px) Fz(130%) Px(15px) C(#293499)">About Company</h2>
            <div class="Px(15px)">
                <img class="Fl(start) P(5px) Bdw(1px) Bds(s) Bdc(#45f) Mend(15px) Mb(15px)" src="imgpsh_fullsize.jpg" alt="Image">
                <p>Lorem ipsum dolor sit amet,
                consectetur adipiscing elit. Sed erat diam, posuere rhoncus
                justo tempus, ornare vehicula lorem. Donec egestas et nisl
                non dapibus. Morbi congue, purus ac lobortis feugiat, nunc
                nulla facilisis lacus, ac laoreet urna dui a lorem. Quisque
                ligula nisi, tristique in ligula vitae, dapibus tempus lectus.</p>
                <p>Cras eget ipsum mattis, pharetra
                nulla vitae, laoreet dui.</p>
                <p>Duis in erat a lectus consequat
                auctor quis vel ligula. Quisque rhoncus sapien sit amet augue
                mollis convallis. Curabitur pharetra nunc a massa dictum, eu
                iaculis dolor egestas. Suspendisse potenti. Nam id lorem risus.
                Suspendisse potenti.</p>
            </div>
        </div>
        <div class="Fl(start) W(20%) Mstart(-75%)">
            <ul class="Mt(51px) Pstart(0) List(n) Fz(80%)">
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/oocss" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">OOCSS</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/smacss" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">SMACSS</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/atomic" class="D(b) Px(5px) Py(2px) Bgc(#293499) C(#fff) Td(n) C(#fff):h Bgc(#d00):h">Atomic</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/organic" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">Organic</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/bem-css/" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">BEM CSS</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/bem-sass/" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">BEM SASS</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/bem-flexboxgrid/" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">BEM Flexbox Grid</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/bem-bootstrap-4/"
                       class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">BEM Bootstrap 4</a>
                </li>
                <li class="My(7px)">
                  <a href="http://aleshaoleg.github.io/holy-grail-markup/bem-platform/pages/index" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">BEM
                    Platform</a>
                </li>
                <li class="My(7px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/css-modules/" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">CSS-modules</a>
                </li>
                <li class="My(24px)">
                    <a href="https://aleshaoleg.github.io/holy-grail-markup/raw" class="D(b) Px(5px) Py(2px) Bgc(#dde6ff) C(#000) Td(n) C(#fff):h Bgc(#d00):h">Raw</a>
                </li>
            </ul>
            <form class="Pos(a) T(0) End(0) Fz(80%) M(20px)">
                <label class="D(ib) C(#fff)">Type to search:
                    <input class="D(b) W(10em) Fz(9px)" type="text">
                </label>
                <button class="D(ib) Fz(9px)" type="submit">Search</button>
            </form>
        </div>
        <div class="W(25%) Fl(end) C(#293499)">
            <h2 class="Mt(0) Mb(20px) P(10px) Bgc(#dde6ff) Tt(u) Fw(b) Fz(13px)">News</h2>
            <div class="Mx(5px) My(20px) Fz(80%)">
                <h3 class="Fl(start) Fz(100%) Fw(b) My(0) Mend(5px)">01.01.16</h3>
                <p class="D(i)">Vestibulum semper convallis mauris vitae lobortis.
                Pellentesque lobortis sem a cursus varius. Phasellus
                dignissim diam eget lectus cursus finibus.</p>
            </div>
            <div class="Mx(5px) My(20px) Fz(80%)">
                <h3 class="Fl(start) Fz(100%) Fw(b) My(0) Mend(5px)">03.01.16</h3>
                <p class="D(i)">Nam placerat tellus vitae rhoncus
                ornare. Suspendisse scelerisque lorem id turpis efficitur
                facilisis. Vivamus enim magna, hendrerit id rutrum at, euismod
                ac orci.</p>
                <a href="#" class="C(#d00) Pend(13px)">Read more...</a>
            </div>
            <div class="Mx(5px) My(20px) Fz(80%)">
                <h3 class="Fl(start) Fz(100%) Fw(b) My(0) Mend(5px)">08.01.16</h3>
                <p class="D(i)">Maecenas sed orci turpis. Donec pretium lorem in purus porta
                hendrerit. Praesent at placerat lacus, ac ultrices ligula. Cras
                at consequat velit. Vivamus dapibus metus at nisl imperdiet
                imperdiet.</p>
                <a href="#" class="C(#d00) Pend(13px)">Read more...</a>
            </div>
        </div>
    </div>
    <div class="Pos(a) B(0) W(100%) H(42px) Bgc(#45f) C(#fff) Fz(70%)">
        <p class="M(5px)">© 2016 CompanyName, Inc. All Rights Reserved.</p>
        <p class="M(5px)">Site support: <a class="C(#fff)" href="mailto:design@megacorp.kk">design@megacorp.kk</a></p>
    </div>
</body>
</html>


================================================
FILE: atomic/package.json
================================================
{
  "devDependencies": {
    "browser-sync": "2.18.13",
    "gulp": "^3.9.1",
    "gulp-atomizer": "^3.0.7"
  },
  "scripts": {
    "start": "./node_modules/gulp/bin/gulp.js"
  }
}

================================================
FILE: atomic/specificity-graph/example.js
================================================
'use strict'

// if using standalone js, specifityGraph will be a global.
// If going to be bundled via f.e. Browserify, just require
var specificityGraph = specificityGraph || require('./lib/core');

function defaultExample() {
  var css = "body { font-size: 100%; }"+
            ".group { margin-bottom: 2em; }"+
            "#nav { display: block; }";

  // initialize the specificity graph
  specificityGraph.create(css, {
    svgSelector: '.js-graph'
  });
}

// we inject a global embeddedJsonData var when running cli command,
// if that's the case, display that data, otherwise default
if(typeof embeddedJsonData === 'undefined'){
  defaultExample();
} else {
  specificityGraph.draw(embeddedJsonData,{
    svgSelector: '.js-graph'
  });
}


// bind some events for stepping the graph focus
document.addEventListener('keydown', function(evt){
  if (evt.target.tagName == 'TEXTAREA'){
    return;
  }

  if(evt.keyCode === 39 || evt.keyCode === 32){
    specificityGraph.nextFocus();
  } else if(evt.keyCode === 37){
    specificityGraph.prevFocus();
  }
});

var prev = document.querySelector('.js-prev'),
    next = document.querySelector('.js-next');

prev.addEventListener('click', function(evt){
  specificityGraph.prevFocus();
});
next.addEventListener('click', function(evt){
  specificityGraph.nextFocus();
});


================================================
FILE: atomic/specificity-graph/index.html
================================================
<!;DOCTYPE; html>
<html>
  <head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0' >

    <title>Specificity Graph - Example</title>

    <style>
      * {
        padding: 0; margin: 0;
        box-sizing: border-box;
      }
      body {
        font-size: 100%;
        font-family: 'Helvetica', sans-serif;
        padding-top: 2em;
        padding-bottom: 1em;
      }
      small {
        font-size: 0.8em;
      }
      .abs-top-right {
        position: absolute;
        top: 0;
        right: 0;
      }
      .center-wrapper {
        text-align: center;
      }
      .main-header {
        padding: 0 0.5em;
      }
        .main-title {
          font-family: 'Gill sans', sans-serif;
          margin-bottom: 4px;
        }
        .main-info {
          color: #606060;
        }
        .main-header-link {
          text-decoration: none;
          color: #999;
        }

      .svg-container {
        margin-bottom: 1em;
      }
      @media(min-width: 1000px){
        .svg-container {
          width: 1000px;
          margin-left: auto;
          margin-right: auto;
          margin-bottom: 2em;
        }
      }
      .padding-height {
        width: 100%;
        height: 0;
        padding-top: 40%;
        position: relative;
      }

      .vis {
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        display: block;
        font-family: sans-serif;
        font-size: 1.6em;
      }
      @media(min-width: 500px){
        .vis {
          font-size: 1.3em;
        }
      }
      @media(min-width: 700px){
        .vis {
          font-size: 0.9em;
        }
      }
        .vis path {
          fill: none;
          stroke: steelblue;
          stroke-width: 4px;
        }

        .vis .axis {
          opacity: 0.6;
        }
          .vis .axis .tick {
            display: none;
          }
          .vis .axis--show-ticks .tick {
            display: block;
          }

        .vis .domain-label {
          font-size: 0.9em;
          fill: steelblue;
        }


        .vis .overlay {
          fill: none;
          pointer-events: all;
        }
        .vis .focus {
          position: relative;
        }
          .vis .focus-text-background {
            fill: #333;
          }
            .vis .focus-text {
              font-size: 0.9em;
              fill: #eee;
            }

          .vis .focus circle {
            fill: none;
            stroke-width: 2.5px;
            stroke: #0c0;
          }

        @media(min-width: 600px){
          .mobile-focus-controls {
            display: none;
          }
        }

        button {
          display: inline-block;
          width: 50%;
          text-align: center;
          background: #e0e0e0;
          border: 0;
          border-right: 1px solid white;
          padding: 1em 0;
          margin-bottom: 1em;
        }
    </style>
  </head>
  <body>
    <header class='main-header center-wrapper'>
      <h1 class='main-title'>CSS Specificity Graph</h1>
      <p class="main-info">Spikes are bad, and the general trend should be towards higher specificity later in the stylesheet. <small><a class='main-header-link' href='http://csswizardry.com/2014/10/the-specificity-graph/'/>More info</a></small></p>
    </header>

    <div class='svg-container'>
      <div class='padding-height'>
        <svg class='vis js-graph' viewBox='0 0 1000 400'>
        </svg>
      </div>
    </div>

    <div class='mobile-focus-controls'>
      <button type="button" class="js-prev">Previous</button><button type="button" class="js-next">Next</button>
    </div>

    <script src='specificity-graph-standalone.js'></script>
    <script>var embeddedJsonData = [{"selectorIndex":0,"line":1,"specificity":10,"selectors":".Bdc\\(\\#45f\\)"},{"selectorIndex":1,"line":5,"specificity":10,"selectors":".Bds\\(s\\)"},{"selectorIndex":2,"line":9,"specificity":10,"selectors":".Bdw\\(1px\\)"},{"selectorIndex":3,"line":13,"specificity":10,"selectors":".Bgc\\(\\#293499\\)"},{"selectorIndex":4,"line":17,"specificity":10,"selectors":".Bgc\\(\\#45f\\)"},{"selectorIndex":5,"line":21,"specificity":20,"selectors":".Bgc\\(\\#d00\\)\\:h:hover"},{"selectorIndex":6,"line":25,"specificity":10,"selectors":".Bgc\\(\\#dde6ff\\)"},{"selectorIndex":7,"line":29,"specificity":10,"selectors":".Bgc\\(\\#eee\\)"},{"selectorIndex":8,"line":33,"specificity":10,"selectors":".Bgc\\(\\#fff\\)"},{"selectorIndex":9,"line":37,"specificity":10,"selectors":".C\\(\\#000\\)"},{"selectorIndex":10,"line":41,"specificity":10,"selectors":".C\\(\\#293499\\)"},{"selectorIndex":11,"line":45,"specificity":10,"selectors":".C\\(\\#d00\\)"},{"selectorIndex":12,"line":49,"specificity":10,"selectors":".C\\(\\#fff\\)"},{"selectorIndex":13,"line":53,"specificity":20,"selectors":".C\\(\\#fff\\)\\:h:hover"},{"selectorIndex":14,"line":57,"specificity":10,"selectors":".D\\(b\\)"},{"selectorIndex":15,"line":61,"specificity":10,"selectors":".D\\(i\\)"},{"selectorIndex":16,"line":65,"specificity":10,"selectors":".D\\(ib\\)"},{"selectorIndex":17,"line":69,"specificity":10,"selectors":".Fl\\(end\\)"},{"selectorIndex":18,"line":73,"specificity":10,"selectors":".Fl\\(start\\)"},{"selectorIndex":19,"line":77,"specificity":10,"selectors":".Ff\\(Tahoma\\)"},{"selectorIndex":20,"line":81,"specificity":10,"selectors":".Fw\\(b\\)"},{"selectorIndex":21,"line":85,"specificity":10,"selectors":".Fz\\(100\\%\\)"},{"selectorIndex":22,"line":89,"specificity":10,"selectors":".Fz\\(130\\%\\)"},{"selectorIndex":23,"line":93,"specificity":10,"selectors":".Fz\\(13px\\)"},{"selectorIndex":24,"line":97,"specificity":10,"selectors":".Fz\\(180\\%\\)"},{"selectorIndex":25,"line":101,"specificity":10,"selectors":".Fz\\(70\\%\\)"},{"selectorIndex":26,"line":105,"specificity":10,"selectors":".Fz\\(80\\%\\)"},{"selectorIndex":27,"line":109,"specificity":10,"selectors":".Fz\\(9px\\)"},{"selectorIndex":28,"line":113,"specificity":10,"selectors":".H\\(100\\%\\)"},{"selectorIndex":29,"line":117,"specificity":10,"selectors":".H\\(42px\\)"},{"selectorIndex":30,"line":121,"specificity":10,"selectors":".Lts\\(1px\\)"},{"selectorIndex":31,"line":125,"specificity":10,"selectors":".List\\(n\\)"},{"selectorIndex":32,"line":129,"specificity":10,"selectors":".M\\(20px\\)"},{"selectorIndex":33,"line":133,"specificity":10,"selectors":".M\\(5px\\)"},{"selectorIndex":34,"line":137,"specificity":10,"selectors":".Mx\\(5px\\)"},{"selectorIndex":35,"line":141,"specificity":10,"selectors":".Mx\\(5px\\)"},{"selectorIndex":36,"line":141,"specificity":10,"selectors":".Mend\\(5px\\)"},{"selectorIndex":37,"line":145,"specificity":10,"selectors":".Mx\\(a\\)"},{"selectorIndex":38,"line":150,"specificity":10,"selectors":".My\\(0\\)"},{"selectorIndex":39,"line":150,"specificity":10,"selectors":".Mt\\(0\\)"},{"selectorIndex":40,"line":154,"specificity":10,"selectors":".My\\(0\\)"},{"selectorIndex":41,"line":158,"specificity":10,"selectors":".My\\(20px\\)"},{"selectorIndex":42,"line":158,"specificity":10,"selectors":".Mt\\(20px\\)"},{"selectorIndex":43,"line":162,"specificity":10,"selectors":".My\\(20px\\)"},{"selectorIndex":44,"line":162,"specificity":10,"selectors":".Mb\\(20px\\)"},{"selectorIndex":45,"line":166,"specificity":10,"selectors":".My\\(24px\\)"},{"selectorIndex":46,"line":171,"specificity":10,"selectors":".My\\(7px\\)"},{"selectorIndex":47,"line":176,"specificity":10,"selectors":".Mt\\(51px\\)"},{"selectorIndex":48,"line":180,"specificity":10,"selectors":".Mend\\(15px\\)"},{"selectorIndex":49,"line":184,"specificity":10,"selectors":".Mb\\(10px\\)"},{"selectorIndex":50,"line":188,"specificity":10,"selectors":".Mb\\(15px\\)"},{"selectorIndex":51,"line":192,"specificity":10,"selectors":".Mstart\\(-75\\%\\)"},{"selectorIndex":52,"line":196,"specificity":10,"selectors":".Mstart\\(20\\%\\)"},{"selectorIndex":53,"line":200,"specificity":10,"selectors":".Mih\\(100\\%\\)"},{"selectorIndex":54,"line":204,"specificity":10,"selectors":".T\\(0\\)"},{"selectorIndex":55,"line":208,"specificity":10,"selectors":".End\\(0\\)"},{"selectorIndex":56,"line":212,"specificity":10,"selectors":".B\\(0\\)"},{"selectorIndex":57,"line":216,"specificity":10,"selectors":".Ov\\(h\\)"},{"selectorIndex":58,"line":220,"specificity":10,"selectors":".P\\(10px\\)"},{"selectorIndex":59,"line":224,"specificity":10,"selectors":".P\\(5px\\)"},{"selectorIndex":60,"line":228,"specificity":10,"selectors":".Px\\(15px\\)"},{"selectorIndex":61,"line":233,"specificity":10,"selectors":".Px\\(5px\\)"},{"selectorIndex":62,"line":238,"specificity":10,"selectors":".Px\\(60px\\)"},{"selectorIndex":63,"line":243,"specificity":10,"selectors":".Py\\(20px\\)"},{"selectorIndex":64,"line":248,"specificity":10,"selectors":".Py\\(2px\\)"},{"selectorIndex":65,"line":253,"specificity":10,"selectors":".Pend\\(13px\\)"},{"selectorIndex":66,"line":257,"specificity":10,"selectors":".Pb\\(42px\\)"},{"selectorIndex":67,"line":261,"specificity":10,"selectors":".Pstart\\(0\\)"},{"selectorIndex":68,"line":265,"specificity":10,"selectors":".Pos\\(a\\)"},{"selectorIndex":69,"line":269,"specificity":10,"selectors":".Pos\\(r\\)"},{"selectorIndex":70,"line":273,"specificity":10,"selectors":".Td\\(n\\)"},{"selectorIndex":71,"line":277,"specificity":10,"selectors":".Tt\\(u\\)"},{"selectorIndex":72,"line":281,"specificity":10,"selectors":".W\\(100\\%\\)"},{"selectorIndex":73,"line":285,"specificity":10,"selectors":".W\\(10em\\)"},{"selectorIndex":74,"line":289,"specificity":10,"selectors":".W\\(20\\%\\)"},{"selectorIndex":75,"line":293,"specificity":10,"selectors":".W\\(25\\%\\)"},{"selectorIndex":76,"line":297,"specificity":10,"selectors":".W\\(55\\%\\)"},{"selectorIndex":77,"line":301,"specificity":10,"selectors":".W\\(700px\\)"}];</script>
    <script src='example.js'></script>
  </body>
</html>


================================================
FILE: atomic/specificity-graph/specificity-graph-standalone.js
================================================
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.specificityGraph=e()}}(function(){var _defi_,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
'use strict';

var generateCssData = _dereq_('./generateCssData');
var lineChart = _dereq_('./lineChart');

var _create = function(css, opts){
  var data = generateCssData(css);
  lineChart.create(data,opts);
}

var _update = function(css, opts){
  var data = generateCssData(css);
  lineChart.update(data);
}

module.exports = {
  create: _create,
  update: _update,
  draw: lineChart.create,
  nextFocus: lineChart.nextFocus,
  prevFocus: lineChart.prevFocus
};

},{"./generateCssData":2,"./lineChart":3}],2:[function(_dereq_,module,exports){
'use strict';

var cssParse = _dereq_('css-parse');
var unminify = _dereq_('cssbeautify');
var specificity = _dereq_('specificity');

var generateCssData = function(origCss) {

  var testCSS = unminify(origCss);
  var astObj = cssParse(testCSS, {silent: true});

  var results = [],
      selectorIndex = 0;

  var specSum = function(selector){
    var specs = specificity.calculate(selector)[0].specificity.split(',');
    var sum = (parseInt(specs[0])*1000) + (parseInt(specs[1])*100) + (parseInt(specs[2])*10) + (parseInt(specs[3]));
    return sum;
  }

  astObj.stylesheet.rules.map(function(rule){
    var selectors = rule.selectors;
    if(typeof selectors === "undefined") {
      return;
    }
    var line = rule.position.start.line;

    selectors.forEach(function(selector){
      if(selector.length === 0) return;
      results.push({
        selectorIndex: selectorIndex,
        line: line,
        specificity: specSum(selector),
        selectors: selector
      });
      selectorIndex++;
    });

  });

  return results;

}

module.exports = generateCssData;

},{"css-parse":7,"cssbeautify":30,"specificity":32}],3:[function(_dereq_,module,exports){
'use strict';

var d3 = _dereq_('d3');

if (typeof window === "undefined") {
  console.log('d3 requires a browser to run. EXITING');
  throw new Error;
}

var _state = {
  data: {},

  vis: undefined,
  focus : undefined,

  width: 1000,
  height: 400,
  padding: {
    top:    40,
    right:  60,
    bottom: 40,
    left:   60
  },

  min_val: 0, //same for x/y
  max_val_y: 100,

  d3_x : undefined,
  d3_y : undefined,

  data_attribute_name_x : 'selectorIndex',
  data_attribute_name_y : 'specificity',

  active_index : 0
};


var lineFunc = d3.svg.line()
  .x(function(d,idx) {
    return _state.d3_x(d[_state.data_attribute_name_x]);
  })
  .y(function(d) {
    return _state.d3_y(d[_state.data_attribute_name_y]);
  })
  .interpolate('linear');

var _updateFocus = function(index){
  var index = Math.min(Math.max(0, index), _state.data.length-1);
  _state.active_index = index;

  _state.focus.style('display', null);
  var d = _state.data[_state.active_index];
  _state.focus.attr('transform', 'translate(' + _state.d3_x(d[_state.data_attribute_name_x]) + ',' + _state.d3_y(d[_state.data_attribute_name_y]) + ')');
  var t = _state.focus.select('.js-focus-text');
  t.text(d.selectors + ': ' + d.specificity);

  var w = t[0][0].getBBox().width + 20;

  _state.focus.select('.js-focus-text-background')
    .attr('width', w)
    .attr('x', -w/2);

}

var _create =  function(data, opts){
  _state.data = data;
  var opts = opts || {};

  _state.width = opts.width || _state.width,
  _state.height = opts.height || _state.height,
  _state.data_attribute_name_x = opts.xProp || _state.data_attribute_name_x;
  _state.data_attribute_name_y = opts.yProp || _state.data_attribute_name_y;

  var svgSelector = opts.svgSelector || '.js-graph';


  _state.vis = d3.select(svgSelector);

  _update(_state.data);

  // below elements don't change based on data

  var xAxis = d3.svg.axis()
    .scale(_state.d3_x)
    .tickSize(0);
  var yAxis = d3.svg.axis()
    .scale(_state.d3_y)
    .tickSize(0)
    .orient('left');

  _state.vis.append('svg:g')
    .attr('class', 'axis' + (opts.showTicks ? '--show-ticks' : ''))
    .attr('transform', 'translate(0,' + (_state.height - _state.padding.bottom) + ')')
    .call(xAxis)
    // Move the ticks out from the axis line
    .selectAll("text")
      .attr("transform", 'translate(0,' + (opts.showTicks ? 4 : 0) + ')');

  _state.vis.append('svg:g')
    .attr('class', 'axis' + (opts.showTicks ? '--show-ticks' : ''))
    .attr('transform', 'translate(' + (_state.padding.left) + ',0)')
    .call(yAxis)
    // Move the ticks out from the axis line
    .selectAll("text")
      .attr("transform", 'translate(' + (opts.showTicks ? -4 : 0) + ', 0)');

  // x domain label
  _state.vis.append('svg:text')
    .attr('class', 'domain-label')
    .attr('text-anchor', 'middle')
    .attr('x', (_state.width/2))
    .attr('y', _state.height)
    .attr('transform', 'translate(0,' + (-_state.padding.bottom+(opts.showTicks ? 34 : 24)) + ')')
    .text('Location in stylesheet');

  // y domain label
  _state.vis.append('svg:text')
    .attr('class', 'domain-label')
    .attr('text-anchor', 'middle')
    .attr('transform', 'translate('+(_state.padding.left-(opts.showTicks ? 34 : 16)) + ','+(_state.height/2)+')rotate(-90)')
    .text('Specificity');

  // handle on mouseover focus circle and info text
  _state.focus = _state.vis.append('svg:g')
    .attr('class', 'focus')
    .style('display', 'none');

  _state.focus.append('svg:circle')
    .attr('r', 4.5);

  _state.focus.append('svg:rect')
    .attr('class', 'focus-text-background js-focus-text-background')
    .attr('width',300)
    .attr('height',20)
    .attr('y', '-30')
    .attr('ry', '14')
    .attr('rx', '4');

  _state.focus.append('svg:text')
    .attr('class', 'focus-text js-focus-text')
    .attr('text-anchor', 'middle')
    .attr('dy', '0.35em')
    .attr('y', '-20');

  _state.vis.append('svg:rect')
    .attr('class', 'overlay')
    .attr('width', _state.width)
    .attr('height', _state.height)
    .on('mouseout', function() { _state.focus.style('display', 'none'); })
    .on('mousemove', mousemove);

  var bisectX = d3.bisector(function(d) {
    return d[_state.data_attribute_name_x];
  }).right;

  function mousemove() {
    var x0 = _state.d3_x.invert(d3.mouse(this)[0]),
        i = bisectX(_state.data, x0),
        d0 = _state.data[i - 1],
        d1 = _state.data[i],
        newIndex;

    //check which value we're closer to (if within bounds)
    if(typeof d0 === 'undefined'){
      if(typeof d1 === 'undefined'){
        return;
      }
      newIndex = i;
    } else if(typeof d1 ==='undefined'){
      newIndex = i -1;
    } else {
      if(x0 - d0[_state.data_attribute_name_x] > d1[_state.data_attribute_name_x] - x0){
        newIndex = i;
      } else {
        newIndex = i -1;
      }
    }
    _updateFocus(newIndex);
  }
}

var _update = function(data){
  _state.data = data;

  _state.max_val_y = Math.max(100, d3.max(_state.data, function(d) {
    return d[_state.data_attribute_name_y];
  }));

  _state.d3_x = d3.scale.linear()
    .range([_state.padding.left, _state.width - _state.padding.right])
    .domain([_state.min_val, d3.max(_state.data, function(d,idx) {
    return d[_state.data_attribute_name_x];
  })]);

  _state.d3_y = d3.scale.linear()
    .range([_state.height - _state.padding.top, _state.padding.bottom])
    .domain([_state.min_val, _state.max_val_y]);


  //TODO: transition path, instead of remove hack
  if(document.querySelectorAll('.line-path').length === 0) {
    _state.vis.append('svg:path')
      .attr('d', lineFunc(_state.data))
      .attr('class', 'line-path');
  } else {
    _state.vis.insert('svg:path', '.line-path')
      .attr('d', lineFunc(_state.data))
      .attr('class', 'line-path');

    document.querySelector('.line-path:last-of-type').remove();
  }
}

var _nextFocus = function(){
  _updateFocus(_state.active_index + 1);
}

var _prevFocus = function(){
  _updateFocus(_state.active_index - 1);
}

module.exports = {
  create: _create,
  update: _update,
  nextFocus: _nextFocus,
  prevFocus: _prevFocus
};

},{"d3":31}],4:[function(_dereq_,module,exports){

},{}],5:[function(_dereq_,module,exports){
(function (process){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

// resolves . and .. elements in a path array with directory names there
// must be no slashes, empty elements, or device names (c:\) in the array
// (so also no leading and trailing slashes - it does not distinguish
// relative and absolute paths)
function normalizeArray(parts, allowAboveRoot) {
  // if the path tries to go above the root, `up` ends up > 0
  var up = 0;
  for (var i = parts.length - 1; i >= 0; i--) {
    var last = parts[i];
    if (last === '.') {
      parts.splice(i, 1);
    } else if (last === '..') {
      parts.splice(i, 1);
      up++;
    } else if (up) {
      parts.splice(i, 1);
      up--;
    }
  }

  // if the path is allowed to go above the root, restore leading ..s
  if (allowAboveRoot) {
    for (; up--; up) {
      parts.unshift('..');
    }
  }

  return parts;
}

// Split a filename into [root, dir, basename, ext], unix version
// 'root' is just a slash, or nothing.
var splitPathRe =
    /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
var splitPath = function(filename) {
  return splitPathRe.exec(filename).slice(1);
};

// path.resolve([from ...], to)
// posix version
exports.resolve = function() {
  var resolvedPath = '',
      resolvedAbsolute = false;

  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
    var path = (i >= 0) ? arguments[i] : process.cwd();

    // Skip empty and invalid entries
    if (typeof path !== 'string') {
      throw new TypeError('Arguments to path.resolve must be strings');
    } else if (!path) {
      continue;
    }

    resolvedPath = path + '/' + resolvedPath;
    resolvedAbsolute = path.charAt(0) === '/';
  }

  // At this point the path should be resolved to a full absolute path, but
  // handle relative paths to be safe (might happen when process.cwd() fails)

  // Normalize the path
  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
    return !!p;
  }), !resolvedAbsolute).join('/');

  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
};

// path.normalize(path)
// posix version
exports.normalize = function(path) {
  var isAbsolute = exports.isAbsolute(path),
      trailingSlash = substr(path, -1) === '/';

  // Normalize the path
  path = normalizeArray(filter(path.split('/'), function(p) {
    return !!p;
  }), !isAbsolute).join('/');

  if (!path && !isAbsolute) {
    path = '.';
  }
  if (path && trailingSlash) {
    path += '/';
  }

  return (isAbsolute ? '/' : '') + path;
};

// posix version
exports.isAbsolute = function(path) {
  return path.charAt(0) === '/';
};

// posix version
exports.join = function() {
  var paths = Array.prototype.slice.call(arguments, 0);
  return exports.normalize(filter(paths, function(p, index) {
    if (typeof p !== 'string') {
      throw new TypeError('Arguments to path.join must be strings');
    }
    return p;
  }).join('/'));
};


// path.relative(from, to)
// posix version
exports.relative = function(from, to) {
  from = exports.resolve(from).substr(1);
  to = exports.resolve(to).substr(1);

  function trim(arr) {
    var start = 0;
    for (; start < arr.length; start++) {
      if (arr[start] !== '') break;
    }

    var end = arr.length - 1;
    for (; end >= 0; end--) {
      if (arr[end] !== '') break;
    }

    if (start > end) return [];
    return arr.slice(start, end - start + 1);
  }

  var fromParts = trim(from.split('/'));
  var toParts = trim(to.split('/'));

  var length = Math.min(fromParts.length, toParts.length);
  var samePartsLength = length;
  for (var i = 0; i < length; i++) {
    if (fromParts[i] !== toParts[i]) {
      samePartsLength = i;
      break;
    }
  }

  var outputParts = [];
  for (var i = samePartsLength; i < fromParts.length; i++) {
    outputParts.push('..');
  }

  outputParts = outputParts.concat(toParts.slice(samePartsLength));

  return outputParts.join('/');
};

exports.sep = '/';
exports.delimiter = ':';

exports.dirname = function(path) {
  var result = splitPath(path),
      root = result[0],
      dir = result[1];

  if (!root && !dir) {
    // No dirname whatsoever
    return '.';
  }

  if (dir) {
    // It has a dirname, strip trailing slash
    dir = dir.substr(0, dir.length - 1);
  }

  return root + dir;
};


exports.basename = function(path, ext) {
  var f = splitPath(path)[2];
  // TODO: make this comparison case-insensitive on windows?
  if (ext && f.substr(-1 * ext.length) === ext) {
    f = f.substr(0, f.length - ext.length);
  }
  return f;
};


exports.extname = function(path) {
  return splitPath(path)[3];
};

function filter (xs, f) {
    if (xs.filter) return xs.filter(f);
    var res = [];
    for (var i = 0; i < xs.length; i++) {
        if (f(xs[i], i, xs)) res.push(xs[i]);
    }
    return res;
}

// String.prototype.substr - negative index don't work in IE8
var substr = 'ab'.substr(-1) === 'b'
    ? function (str, start, len) { return str.substr(start, len) }
    : function (str, start, len) {
        if (start < 0) start = str.length + start;
        return str.substr(start, len);
    }
;

}).call(this,_dereq_('_process'))
},{"_process":6}],6:[function(_dereq_,module,exports){
// shim for using process in browser

var process = module.exports = {};

process.nextTick = (function () {
    var canSetImmediate = typeof window !== 'undefined'
    && window.setImmediate;
    var canMutationObserver = typeof window !== 'undefined'
    && window.MutationObserver;
    var canPost = typeof window !== 'undefined'
    && window.postMessage && window.addEventListener
    ;

    if (canSetImmediate) {
        return function (f) { return window.setImmediate(f) };
    }

    var queue = [];

    if (canMutationObserver) {
        var hiddenDiv = document.createElement("div");
        var observer = new MutationObserver(function () {
            var queueList = queue.slice();
            queue.length = 0;
            queueList.forEach(function (fn) {
                fn();
            });
        });

        observer.observe(hiddenDiv, { attributes: true });

        return function nextTick(fn) {
            if (!queue.length) {
                hiddenDiv.setAttribute('yes', 'no');
            }
            queue.push(fn);
        };
    }

    if (canPost) {
        window.addEventListener('message', function (ev) {
            var source = ev.source;
            if ((source === window || source === null) && ev.data === 'process-tick') {
                ev.stopPropagation();
                if (queue.length > 0) {
                    var fn = queue.shift();
                    fn();
                }
            }
        }, true);

        return function nextTick(fn) {
            queue.push(fn);
            window.postMessage('process-tick', '*');
        };
    }

    return function nextTick(fn) {
        setTimeout(fn, 0);
    };
})();

process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];

function noop() {}

process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;

process.binding = function (name) {
    throw new Error('process.binding is not supported');
};

// TODO(shtylman)
process.cwd = function () { return '/' };
process.chdir = function (dir) {
    throw new Error('process.chdir is not supported');
};

},{}],7:[function(_dereq_,module,exports){
module.exports = _dereq_('css').parse;

},{"css":8}],8:[function(_dereq_,module,exports){
exports.parse = _dereq_('./lib/parse');
exports.stringify = _dereq_('./lib/stringify');

},{"./lib/parse":9,"./lib/stringify":13}],9:[function(_dereq_,module,exports){
// http://www.w3.org/TR/CSS21/grammar.html
// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
var commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g

module.exports = function(css, options){
  options = options || {};

  /**
   * Positional.
   */

  var lineno = 1;
  var column = 1;

  /**
   * Update lineno and column based on `str`.
   */

  function updatePosition(str) {
    var lines = str.match(/\n/g);
    if (lines) lineno += lines.length;
    var i = str.lastIndexOf('\n');
    column = ~i ? str.length - i : column + str.length;
  }

  /**
   * Mark position and patch `node.position`.
   */

  function position() {
    var start = { line: lineno, column: column };
    return function(node){
      node.position = new Position(start);
      whitespace();
      return node;
    };
  }

  /**
   * Store position information for a node
   */

  function Position(start) {
    this.start = start;
    this.end = { line: lineno, column: column };
    this.source = options.source;
  }

  /**
   * Non-enumerable source string
   */

  Position.prototype.content = css;

  /**
   * Error `msg`.
   */

  function error(msg) {
    if (options.silent === true) {
      return false;
    }

    var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);
    err.reason = msg;
    err.filename = options.source;
    err.line = lineno;
    err.column = column;
    err.source = css;
    throw err;
  }

  /**
   * Parse stylesheet.
   */

  function stylesheet() {
    return {
      type: 'stylesheet',
      stylesheet: {
        rules: rules()
      }
    };
  }

  /**
   * Opening brace.
   */

  function open() {
    return match(/^{\s*/);
  }

  /**
   * Closing brace.
   */

  function close() {
    return match(/^}/);
  }

  /**
   * Parse ruleset.
   */

  function rules() {
    var node;
    var rules = [];
    whitespace();
    comments(rules);
    while (css.length && css.charAt(0) != '}' && (node = atrule() || rule())) {
      if (node !== false) {
        rules.push(node);
        comments(rules);
      }
    }
    return rules;
  }

  /**
   * Match `re` and return captures.
   */

  function match(re) {
    var m = re.exec(css);
    if (!m) return;
    var str = m[0];
    updatePosition(str);
    css = css.slice(str.length);
    return m;
  }

  /**
   * Parse whitespace.
   */

  function whitespace() {
    match(/^\s*/);
  }

  /**
   * Parse comments;
   */

  function comments(rules) {
    var c;
    rules = rules || [];
    while (c = comment()) {
      if (c !== false) {
        rules.push(c);
      }
    }
    return rules;
  }

  /**
   * Parse comment.
   */

  function comment() {
    var pos = position();
    if ('/' != css.charAt(0) || '*' != css.charAt(1)) return;

    var i = 2;
    while ("" != css.charAt(i) && ('*' != css.charAt(i) || '/' != css.charAt(i + 1))) ++i;
    i += 2;

    if ("" === css.charAt(i-1)) {
      return error('End of comment missing');
    }

    var str = css.slice(2, i - 2);
    column += 2;
    updatePosition(str);
    css = css.slice(i);
    column += 2;

    return pos({
      type: 'comment',
      comment: str
    });
  }

  /**
   * Parse selector.
   */

  function selector() {
    var m = match(/^([^{]+)/);
    if (!m) return;
    /* @fix Remove all comments from selectors
     * http://ostermiller.org/findcomment.html */
    return trim(m[0])
      .replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, '')
      .replace(/(?:"[^"]*"|'[^']*')/g, function(m) {
        return m.replace(/,/g, '\u200C');
      })
      .split(/\s*(?![^(]*\)),\s*/)
      .map(function(s) {
        return s.replace(/\u200C/g, ',');
      });
  }

  /**
   * Parse declaration.
   */

  function declaration() {
    var pos = position();

    // prop
    var prop = match(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
    if (!prop) return;
    prop = trim(prop[0]);

    // :
    if (!match(/^:\s*/)) return error("property missing ':'");

    // val
    var val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/);

    var ret = pos({
      type: 'declaration',
      property: prop.replace(commentre, ''),
      value: val ? trim(val[0]).replace(commentre, '') : ''
    });

    // ;
    match(/^[;\s]*/);

    return ret;
  }

  /**
   * Parse declarations.
   */

  function declarations() {
    var decls = [];

    if (!open()) return error("missing '{'");
    comments(decls);

    // declarations
    var decl;
    while (decl = declaration()) {
      if (decl !== false) {
        decls.push(decl);
        comments(decls);
      }
    }

    if (!close()) return error("missing '}'");
    return decls;
  }

  /**
   * Parse keyframe.
   */

  function keyframe() {
    var m;
    var vals = [];
    var pos = position();

    while (m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/)) {
      vals.push(m[1]);
      match(/^,\s*/);
    }

    if (!vals.length) return;

    return pos({
      type: 'keyframe',
      values: vals,
      declarations: declarations()
    });
  }

  /**
   * Parse keyframes.
   */

  function atkeyframes() {
    var pos = position();
    var m = match(/^@([-\w]+)?keyframes */);

    if (!m) return;
    var vendor = m[1];

    // identifier
    var m = match(/^([-\w]+)\s*/);
    if (!m) return error("@keyframes missing name");
    var name = m[1];

    if (!open()) return error("@keyframes missing '{'");

    var frame;
    var frames = comments();
    while (frame = keyframe()) {
      frames.push(frame);
      frames = frames.concat(comments());
    }

    if (!close()) return error("@keyframes missing '}'");

    return pos({
      type: 'keyframes',
      name: name,
      vendor: vendor,
      keyframes: frames
    });
  }

  /**
   * Parse supports.
   */

  function atsupports() {
    var pos = position();
    var m = match(/^@supports *([^{]+)/);

    if (!m) return;
    var supports = trim(m[1]);

    if (!open()) return error("@supports missing '{'");

    var style = comments().concat(rules());

    if (!close()) return error("@supports missing '}'");

    return pos({
      type: 'supports',
      supports: supports,
      rules: style
    });
  }

  /**
   * Parse host.
   */

  function athost() {
    var pos = position();
    var m = match(/^@host */);

    if (!m) return;

    if (!open()) return error("@host missing '{'");

    var style = comments().concat(rules());

    if (!close()) return error("@host missing '}'");

    return pos({
      type: 'host',
      rules: style
    });
  }

  /**
   * Parse media.
   */

  function atmedia() {
    var pos = position();
    var m = match(/^@media *([^{]+)/);

    if (!m) return;
    var media = trim(m[1]);

    if (!open()) return error("@media missing '{'");

    var style = comments().concat(rules());

    if (!close()) return error("@media missing '}'");

    return pos({
      type: 'media',
      media: media,
      rules: style
    });
  }


  /**
   * Parse custom-media.
   */

  function atcustommedia() {
    var pos = position();
    var m = match(/^@custom-media (--[^\s]+) *([^{;]+);/);
    if (!m) return;

    return pos({
      type: 'custom-media',
      name: trim(m[1]),
      media: trim(m[2])
    });
  }

  /**
   * Parse paged media.
   */

  function atpage() {
    var pos = position();
    var m = match(/^@page */);
    if (!m) return;

    var sel = selector() || [];

    if (!open()) return error("@page missing '{'");
    var decls = comments();

    // declarations
    var decl;
    while (decl = declaration()) {
      decls.push(decl);
      decls = decls.concat(comments());
    }

    if (!close()) return error("@page missing '}'");

    return pos({
      type: 'page',
      selectors: sel,
      declarations: decls
    });
  }

  /**
   * Parse document.
   */

  function atdocument() {
    var pos = position();
    var m = match(/^@([-\w]+)?document *([^{]+)/);
    if (!m) return;

    var vendor = trim(m[1]);
    var doc = trim(m[2]);

    if (!open()) return error("@document missing '{'");

    var style = comments().concat(rules());

    if (!close()) return error("@document missing '}'");

    return pos({
      type: 'document',
      document: doc,
      vendor: vendor,
      rules: style
    });
  }

  /**
   * Parse font-face.
   */

  function atfontface() {
    var pos = position();
    var m = match(/^@font-face */);
    if (!m) return;

    if (!open()) return error("@font-face missing '{'");
    var decls = comments();

    // declarations
    var decl;
    while (decl = declaration()) {
      decls.push(decl);
      decls = decls.concat(comments());
    }

    if (!close()) return error("@font-face missing '}'");

    return pos({
      type: 'font-face',
      declarations: decls
    });
  }

  /**
   * Parse import
   */

  var atimport = _compileAtrule('import');

  /**
   * Parse charset
   */

  var atcharset = _compileAtrule('charset');

  /**
   * Parse namespace
   */

  var atnamespace = _compileAtrule('namespace');

  /**
   * Parse non-block at-rules
   */


  function _compileAtrule(name) {
    var re = new RegExp('^@' + name + ' *([^;\\n]+);');
    return function() {
      var pos = position();
      var m = match(re);
      if (!m) return;
      var ret = { type: name };
      ret[name] = m[1].trim();
      return pos(ret);
    }
  }

  /**
   * Parse at rule.
   */

  function atrule() {
    if (css[0] != '@') return;

    return atkeyframes()
      || atmedia()
      || atcustommedia()
      || atsupports()
      || atimport()
      || atcharset()
      || atnamespace()
      || atdocument()
      || atpage()
      || athost()
      || atfontface();
  }

  /**
   * Parse rule.
   */

  function rule() {
    var pos = position();
    var sel = selector();

    if (!sel) return error('selector missing');
    comments();

    return pos({
      type: 'rule',
      selectors: sel,
      declarations: declarations()
    });
  }

  return addParent(stylesheet());
};

/**
 * Trim `str`.
 */

function trim(str) {
  return str ? str.replace(/^\s+|\s+$/g, '') : '';
}

/**
 * Adds non-enumerable parent node reference to each node.
 */

function addParent(obj, parent) {
  var isNode = obj && typeof obj.type === 'string';
  var childParent = isNode ? obj : parent;

  for (var k in obj) {
    var value = obj[k];
    if (Array.isArray(value)) {
      value.forEach(function(v) { addParent(v, childParent); });
    } else if (value && typeof value === 'object') {
      addParent(value, childParent);
    }
  }

  if (isNode) {
    Object.defineProperty(obj, 'parent', {
      configurable: true,
      writable: true,
      enumerable: false,
      value: parent || null
    });
  }

  return obj;
}

},{}],10:[function(_dereq_,module,exports){

/**
 * Expose `Compiler`.
 */

module.exports = Compiler;

/**
 * Initialize a compiler.
 *
 * @param {Type} name
 * @return {Type}
 * @api public
 */

function Compiler(opts) {
  this.options = opts || {};
}

/**
 * Emit `str`
 */

Compiler.prototype.emit = function(str) {
  return str;
};

/**
 * Visit `node`.
 */

Compiler.prototype.visit = function(node){
  return this[node.type](node);
};

/**
 * Map visit over array of `nodes`, optionally using a `delim`
 */

Compiler.prototype.mapVisit = function(nodes, delim){
  var buf = '';
  delim = delim || '';

  for (var i = 0, length = nodes.length; i < length; i++) {
    buf += this.visit(nodes[i]);
    if (delim && i < length - 1) buf += this.emit(delim);
  }

  return buf;
};

},{}],11:[function(_dereq_,module,exports){

/**
 * Module dependencies.
 */

var Base = _dereq_('./compiler');
var inherits = _dereq_('inherits');

/**
 * Expose compiler.
 */

module.exports = Compiler;

/**
 * Initialize a new `Compiler`.
 */

function Compiler(options) {
  Base.call(this, options);
}

/**
 * Inherit from `Base.prototype`.
 */

inherits(Compiler, Base);

/**
 * Compile `node`.
 */

Compiler.prototype.compile = function(node){
  return node.stylesheet
    .rules.map(this.visit, this)
    .join('');
};

/**
 * Visit comment node.
 */

Compiler.prototype.comment = function(node){
  return this.emit('', node.position);
};

/**
 * Visit import node.
 */

Compiler.prototype.import = function(node){
  return this.emit('@import ' + node.import + ';', node.position);
};

/**
 * Visit media node.
 */

Compiler.prototype.media = function(node){
  return this.emit('@media ' + node.media, node.position)
    + this.emit('{')
    + this.mapVisit(node.rules)
    + this.emit('}');
};

/**
 * Visit document node.
 */

Compiler.prototype.document = function(node){
  var doc = '@' + (node.vendor || '') + 'document ' + node.document;

  return this.emit(doc, node.position)
    + this.emit('{')
    + this.mapVisit(node.rules)
    + this.emit('}');
};

/**
 * Visit charset node.
 */

Compiler.prototype.charset = function(node){
  return this.emit('@charset ' + node.charset + ';', node.position);
};

/**
 * Visit namespace node.
 */

Compiler.prototype.namespace = function(node){
  return this.emit('@namespace ' + node.namespace + ';', node.position);
};

/**
 * Visit supports node.
 */

Compiler.prototype.supports = function(node){
  return this.emit('@supports ' + node.supports, node.position)
    + this.emit('{')
    + this.mapVisit(node.rules)
    + this.emit('}');
};

/**
 * Visit keyframes node.
 */

Compiler.prototype.keyframes = function(node){
  return this.emit('@'
    + (node.vendor || '')
    + 'keyframes '
    + node.name, node.position)
    + this.emit('{')
    + this.mapVisit(node.keyframes)
    + this.emit('}');
};

/**
 * Visit keyframe node.
 */

Compiler.prototype.keyframe = function(node){
  var decls = node.declarations;

  return this.emit(node.values.join(','), node.position)
    + this.emit('{')
    + this.mapVisit(decls)
    + this.emit('}');
};

/**
 * Visit page node.
 */

Compiler.prototype.page = function(node){
  var sel = node.selectors.length
    ? node.selectors.join(', ')
    : '';

  return this.emit('@page ' + sel, node.position)
    + this.emit('{')
    + this.mapVisit(node.declarations)
    + this.emit('}');
};

/**
 * Visit font-face node.
 */

Compiler.prototype['font-face'] = function(node){
  return this.emit('@font-face', node.position)
    + this.emit('{')
    + this.mapVisit(node.declarations)
    + this.emit('}');
};

/**
 * Visit host node.
 */

Compiler.prototype.host = function(node){
  return this.emit('@host', node.position)
    + this.emit('{')
    + this.mapVisit(node.rules)
    + this.emit('}');
};

/**
 * Visit custom-media node.
 */

Compiler.prototype['custom-media'] = function(node){
  return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
};

/**
 * Visit rule node.
 */

Compiler.prototype.rule = function(node){
  var decls = node.declarations;
  if (!decls.length) return '';

  return this.emit(node.selectors.join(','), node.position)
    + this.emit('{')
    + this.mapVisit(decls)
    + this.emit('}');
};

/**
 * Visit declaration node.
 */

Compiler.prototype.declaration = function(node){
  return this.emit(node.property + ':' + node.value, node.position) + this.emit(';');
};


},{"./compiler":10,"inherits":15}],12:[function(_dereq_,module,exports){

/**
 * Module dependencies.
 */

var Base = _dereq_('./compiler');
var inherits = _dereq_('inherits');

/**
 * Expose compiler.
 */

module.exports = Compiler;

/**
 * Initialize a new `Compiler`.
 */

function Compiler(options) {
  options = options || {};
  Base.call(this, options);
  this.indentation = options.indent;
}

/**
 * Inherit from `Base.prototype`.
 */

inherits(Compiler, Base);

/**
 * Compile `node`.
 */

Compiler.prototype.compile = function(node){
  return this.stylesheet(node);
};

/**
 * Visit stylesheet node.
 */

Compiler.prototype.stylesheet = function(node){
  return this.mapVisit(node.stylesheet.rules, '\n\n');
};

/**
 * Visit comment node.
 */

Compiler.prototype.comment = function(node){
  return this.emit(this.indent() + '/*' + node.comment + '*/', node.position);
};

/**
 * Visit import node.
 */

Compiler.prototype.import = function(node){
  return this.emit('@import ' + node.import + ';', node.position);
};

/**
 * Visit media node.
 */

Compiler.prototype.media = function(node){
  return this.emit('@media ' + node.media, node.position)
    + this.emit(
        ' {\n'
        + this.indent(1))
    + this.mapVisit(node.rules, '\n\n')
    + this.emit(
        this.indent(-1)
        + '\n}');
};

/**
 * Visit document node.
 */

Compiler.prototype.document = function(node){
  var doc = '@' + (node.vendor || '') + 'document ' + node.document;

  return this.emit(doc, node.position)
    + this.emit(
        ' '
      + ' {\n'
      + this.indent(1))
    + this.mapVisit(node.rules, '\n\n')
    + this.emit(
        this.indent(-1)
        + '\n}');
};

/**
 * Visit charset node.
 */

Compiler.prototype.charset = function(node){
  return this.emit('@charset ' + node.charset + ';', node.position);
};

/**
 * Visit namespace node.
 */

Compiler.prototype.namespace = function(node){
  return this.emit('@namespace ' + node.namespace + ';', node.position);
};

/**
 * Visit supports node.
 */

Compiler.prototype.supports = function(node){
  return this.emit('@supports ' + node.supports, node.position)
    + this.emit(
      ' {\n'
      + this.indent(1))
    + this.mapVisit(node.rules, '\n\n')
    + this.emit(
        this.indent(-1)
        + '\n}');
};

/**
 * Visit keyframes node.
 */

Compiler.prototype.keyframes = function(node){
  return this.emit('@' + (node.vendor || '') + 'keyframes ' + node.name, node.position)
    + this.emit(
      ' {\n'
      + this.indent(1))
    + this.mapVisit(node.keyframes, '\n')
    + this.emit(
        this.indent(-1)
        + '}');
};

/**
 * Visit keyframe node.
 */

Compiler.prototype.keyframe = function(node){
  var decls = node.declarations;

  return this.emit(this.indent())
    + this.emit(node.values.join(', '), node.position)
    + this.emit(
      ' {\n'
      + this.indent(1))
    + this.mapVisit(decls, '\n')
    + this.emit(
      this.indent(-1)
      + '\n'
      + this.indent() + '}\n');
};

/**
 * Visit page node.
 */

Compiler.prototype.page = function(node){
  var sel = node.selectors.length
    ? node.selectors.join(', ') + ' '
    : '';

  return this.emit('@page ' + sel, node.position)
    + this.emit('{\n')
    + this.emit(this.indent(1))
    + this.mapVisit(node.declarations, '\n')
    + this.emit(this.indent(-1))
    + this.emit('\n}');
};

/**
 * Visit font-face node.
 */

Compiler.prototype['font-face'] = function(node){
  return this.emit('@font-face ', node.position)
    + this.emit('{\n')
    + this.emit(this.indent(1))
    + this.mapVisit(node.declarations, '\n')
    + this.emit(this.indent(-1))
    + this.emit('\n}');
};

/**
 * Visit host node.
 */

Compiler.prototype.host = function(node){
  return this.emit('@host', node.position)
    + this.emit(
        ' {\n'
        + this.indent(1))
    + this.mapVisit(node.rules, '\n\n')
    + this.emit(
        this.indent(-1)
        + '\n}');
};

/**
 * Visit custom-media node.
 */

Compiler.prototype['custom-media'] = function(node){
  return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
};

/**
 * Visit rule node.
 */

Compiler.prototype.rule = function(node){
  var indent = this.indent();
  var decls = node.declarations;
  if (!decls.length) return '';

  return this.emit(node.selectors.map(function(s){ return indent + s }).join(',\n'), node.position)
    + this.emit(' {\n')
    + this.emit(this.indent(1))
    + this.mapVisit(decls, '\n')
    + this.emit(this.indent(-1))
    + this.emit('\n' + this.indent() + '}');
};

/**
 * Visit declaration node.
 */

Compiler.prototype.declaration = function(node){
  return this.emit(this.indent())
    + this.emit(node.property + ': ' + node.value, node.position)
    + this.emit(';');
};

/**
 * Increase, decrease or return current indentation.
 */

Compiler.prototype.indent = function(level) {
  this.level = this.level || 1;

  if (null != level) {
    this.level += level;
    return '';
  }

  return Array(this.level).join(this.indentation || '  ');
};

},{"./compiler":10,"inherits":15}],13:[function(_dereq_,module,exports){

/**
 * Module dependencies.
 */

var Compressed = _dereq_('./compress');
var Identity = _dereq_('./identity');

/**
 * Stringfy the given AST `node`.
 *
 * Options:
 *
 *  - `compress` space-optimized output
 *  - `sourcemap` return an object with `.code` and `.map`
 *
 * @param {Object} node
 * @param {Object} [options]
 * @return {String}
 * @api public
 */

module.exports = function(node, options){
  options = options || {};

  var compiler = options.compress
    ? new Compressed(options)
    : new Identity(options);

  // source maps
  if (options.sourcemap) {
    var sourcemaps = _dereq_('./source-map-support');
    sourcemaps(compiler);

    var code = compiler.compile(node);
    compiler.applySourceMaps();

    var map = options.sourcemap === 'generator'
      ? compiler.map
      : compiler.map.toJSON();

    return { code: code, map: map };
  }

  var code = compiler.compile(node);
  return code;
};

},{"./compress":11,"./identity":12,"./source-map-support":14}],14:[function(_dereq_,module,exports){

/**
 * Module dependencies.
 */

var SourceMap = _dereq_('source-map').SourceMapGenerator;
var SourceMapConsumer = _dereq_('source-map').SourceMapConsumer;
var sourceMapResolve = _dereq_('source-map-resolve');
var urix = _dereq_('urix');
var fs = _dereq_('fs');
var path = _dereq_('path');

/**
 * Expose `mixin()`.
 */

module.exports = mixin;

/**
 * Mixin source map support into `compiler`.
 *
 * @param {Compiler} compiler
 * @api public
 */

function mixin(compiler) {
  compiler._comment = compiler.comment;
  compiler.map = new SourceMap();
  compiler.position = { line: 1, column: 1 };
  compiler.files = {};
  for (var k in exports) compiler[k] = exports[k];
}

/**
 * Update position.
 *
 * @param {String} str
 * @api private
 */

exports.updatePosition = function(str) {
  var lines = str.match(/\n/g);
  if (lines) this.position.line += lines.length;
  var i = str.lastIndexOf('\n');
  this.position.column = ~i ? str.length - i : this.position.column + str.length;
};

/**
 * Emit `str`.
 *
 * @param {String} str
 * @param {Object} [pos]
 * @return {String}
 * @api private
 */

exports.emit = function(str, pos) {
  if (pos) {
    var sourceFile = urix(pos.source || 'source.css');

    this.map.addMapping({
      source: sourceFile,
      generated: {
        line: this.position.line,
        column: Math.max(this.position.column - 1, 0)
      },
      original: {
        line: pos.start.line,
        column: pos.start.column - 1
      }
    });

    this.addFile(sourceFile, pos);
  }

  this.updatePosition(str);

  return str;
};

/**
 * Adds a file to the source map output if it has not already been added
 * @param {String} file
 * @param {Object} pos
 */

exports.addFile = function(file, pos) {
  if (typeof pos.content !== 'string') return;
  if (Object.prototype.hasOwnProperty.call(this.files, file)) return;

  this.files[file] = pos.content;
};

/**
 * Applies any original source maps to the output and embeds the source file
 * contents in the source map.
 */

exports.applySourceMaps = function() {
  Object.keys(this.files).forEach(function(file) {
    var content = this.files[file];
    this.map.setSourceContent(file, content);

    if (this.options.inputSourcemaps !== false) {
      var originalMap = sourceMapResolve.resolveSync(
        content, file, fs.readFileSync);
      if (originalMap) {
        var map = new SourceMapConsumer(originalMap.map);
        var relativeTo = originalMap.sourcesRelativeTo;
        this.map.applySourceMap(map, file, urix(path.dirname(relativeTo)));
      }
    }
  }, this);
};

/**
 * Process comments, drops sourceMap comments.
 * @param {Object} node
 */

exports.comment = function(node) {
  if (/^# sourceMappingURL=/.test(node.comment))
    return this.emit('', node.position);
  else
    return this._comment(node);
};

},{"fs":4,"path":5,"source-map":19,"source-map-resolve":18,"urix":29}],15:[function(_dereq_,module,exports){
if (typeof Object.create === 'function') {
  // implementation from standard node.js 'util' module
  module.exports = function inherits(ctor, superCtor) {
    ctor.super_ = superCtor
    ctor.prototype = Object.create(superCtor.prototype, {
      constructor: {
        value: ctor,
        enumerable: false,
        writable: true,
        configurable: true
      }
    });
  };
} else {
  // old school shim for old browsers
  module.exports = function inherits(ctor, superCtor) {
    ctor.super_ = superCtor
    var TempCtor = function () {}
    TempCtor.prototype = superCtor.prototype
    ctor.prototype = new TempCtor()
    ctor.prototype.constructor = ctor
  }
}

},{}],16:[function(_dereq_,module,exports){
// Copyright 2014 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)

void (function(root, factory) {
  if (typeof _defi_ === "function" && _defi_.amd) {
    _defi_(factory)
  } else if (typeof exports === "object") {
    module.exports = factory()
  } else {
    root.resolveUrl = factory()
  }
}(this, function() {

  function resolveUrl(/* ...urls */) {
    var numUrls = arguments.length

    if (numUrls === 0) {
      throw new Error("resolveUrl requires at least one argument; got none.")
    }

    var base = document.createElement("base")
    base.href = arguments[0]

    if (numUrls === 1) {
      return base.href
    }

    var head = document.getElementsByTagName("head")[0]
    head.insertBefore(base, head.firstChild)

    var a = document.createElement("a")
    var resolved

    for (var index = 1; index < numUrls; index++) {
      a.href = arguments[index]
      resolved = a.href
      base.href = resolved
    }

    head.removeChild(base)

    return resolved
  }

  return resolveUrl

}));

},{}],17:[function(_dereq_,module,exports){
// Copyright 2014 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)

void (function(root, factory) {
  if (typeof _defi_ === "function" && _defi_.amd) {
    _defi_(factory)
  } else if (typeof exports === "object") {
    module.exports = factory()
  } else {
    root.sourceMappingURL = factory()
  }
}(this, function() {

  var innerRegex = /[#@] sourceMappingURL=([^\s'"]*)/

  var regex = RegExp(
    "(?:" +
      "/\\*" +
      "(?:\\s*\r?\n(?://)?)?" +
      "(?:" + innerRegex.source + ")" +
      "\\s*" +
      "\\*/" +
      "|" +
      "//(?:" + innerRegex.source + ")" +
    ")" +
    "\\s*$"
  )

  return {

    regex: regex,
    _innerRegex: innerRegex,

    getFrom: function(code) {
      var match = code.match(regex)
      return (match ? match[1] || match[2] || "" : null)
    },

    existsIn: function(code) {
      return regex.test(code)
    },

    removeFrom: function(code) {
      return code.replace(regex, "")
    },

    insertBefore: function(code, string) {
      var match = code.match(regex)
      if (match) {
        return code.slice(0, match.index) + string + code.slice(match.index)
      } else {
        return code + string
      }
    }
  }

}));

},{}],18:[function(_dereq_,module,exports){
// Copyright 2014 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)

// Note: source-map-resolve.js is generated from source-map-resolve-node.js and
// source-map-resolve-template.js. Only edit the two latter files, _not_
// source-map-resolve.js!

void (function(root, factory) {
  if (typeof _defi_ === "function" && _defi_.amd) {
    _defi_(["source-map-url", "resolve-url"], factory)
  } else if (typeof exports === "object") {
    var sourceMappingURL = _dereq_("source-map-url")
    var resolveUrl = _dereq_("resolve-url")
    module.exports = factory(sourceMappingURL, resolveUrl)
  } else {
    root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl)
  }
}(this, function(sourceMappingURL, resolveUrl) {

  function callbackAsync(callback, error, result) {
    setImmediate(function() { callback(error, result) })
  }

  function parseMapToJSON(string) {
    return JSON.parse(string.replace(/^\)\]\}'/, ""))
  }



  function resolveSourceMap(code, codeUrl, read, callback) {
    var mapData
    try {
      mapData = resolveSourceMapHelper(code, codeUrl)
    } catch (error) {
      return callbackAsync(callback, error)
    }
    if (!mapData || mapData.map) {
      return callbackAsync(callback, null, mapData)
    }
    read(mapData.url, function(error, result) {
      if (error) {
        return callback(error)
      }
      try {
        mapData.map = parseMapToJSON(String(result))
      } catch (error) {
        return callback(error)
      }
      callback(null, mapData)
    })
  }

  function resolveSourceMapSync(code, codeUrl, read) {
    var mapData = resolveSourceMapHelper(code, codeUrl)
    if (!mapData || mapData.map) {
      return mapData
    }
    mapData.map = parseMapToJSON(String(read(mapData.url)))
    return mapData
  }

  var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/
  var jsonMimeTypeRegex = /^(?:application|text)\/json$/

  function resolveSourceMapHelper(code, codeUrl) {
    var url = sourceMappingURL.getFrom(code)
    if (!url) {
      return null
    }

    var dataUri = url.match(dataUriRegex)
    if (dataUri) {
      var mimeType = dataUri[1]
      var lastParameter = dataUri[2]
      var encoded = dataUri[3]
      if (!jsonMimeTypeRegex.test(mimeType)) {
        throw new Error("Unuseful data uri mime type: " + (mimeType || "text/plain"))
      }
      return {
        sourceMappingURL: url,
        url: null,
        sourcesRelativeTo: codeUrl,
        map: parseMapToJSON(lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded))
      }
    }

    var mapUrl = resolveUrl(codeUrl, url)
    return {
      sourceMappingURL: url,
      url: mapUrl,
      sourcesRelativeTo: mapUrl,
      map: null
    }
  }



  function resolveSources(map, mapUrl, read, options, callback) {
    if (typeof options === "function") {
      callback = options
      options = {}
    }
    var pending = map.sources.length
    var errored = false
    var result = {
      sourcesResolved: [],
      sourcesContent:  []
    }

    var done = function(error) {
      if (errored) {
        return
      }
      if (error) {
        errored = true
        return callback(error)
      }
      pending--
      if (pending === 0) {
        callback(null, result)
      }
    }

    resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
      result.sourcesResolved[index] = fullUrl
      if (typeof sourceContent === "string") {
        result.sourcesContent[index] = sourceContent
        callbackAsync(done, null)
      } else {
        read(fullUrl, function(error, source) {
          result.sourcesContent[index] = String(source)
          done(error)
        })
      }
    })
  }

  function resolveSourcesSync(map, mapUrl, read, options) {
    var result = {
      sourcesResolved: [],
      sourcesContent:  []
    }
    resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
      result.sourcesResolved[index] = fullUrl
      if (read !== null) {
        if (typeof sourceContent === "string") {
          result.sourcesContent[index] = sourceContent
        } else {
          result.sourcesContent[index] = String(read(fullUrl))
        }
      }
    })
    return result
  }

  var endingSlash = /\/?$/

  function resolveSourcesHelper(map, mapUrl, options, fn) {
    options = options || {}
    var fullUrl
    var sourceContent
    for (var index = 0, len = map.sources.length; index < len; index++) {
      if (map.sourceRoot && !options.ignoreSourceRoot) {
        // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes
        // `/scripts/subdir/<source>`, not `/scripts/<source>`. Pointing to a file as source root
        // does not make sense.
        fullUrl = resolveUrl(mapUrl, map.sourceRoot.replace(endingSlash, "/"), map.sources[index])
      } else {
        fullUrl = resolveUrl(mapUrl, map.sources[index])
      }
      sourceContent = (map.sourcesContent || [])[index]
      fn(fullUrl, sourceContent, index)
    }
  }



  function resolve(code, codeUrl, read, options, callback) {
    if (typeof options === "function") {
      callback = options
      options = {}
    }
    resolveSourceMap(code, codeUrl, read, function(error, mapData) {
      if (error) {
        return callback(error)
      }
      if (!mapData) {
        return callback(null, null)
      }
      resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) {
        if (error) {
          return callback(error)
        }
        mapData.sourcesResolved = result.sourcesResolved
        mapData.sourcesContent  = result.sourcesContent
        callback(null, mapData)
      })
    })
  }

  function resolveSync(code, codeUrl, read, options) {
    var mapData = resolveSourceMapSync(code, codeUrl, read)
    if (!mapData) {
      return null
    }
    var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options)
    mapData.sourcesResolved = result.sourcesResolved
    mapData.sourcesContent  = result.sourcesContent
    return mapData
  }



  return {
    resolveSourceMap:     resolveSourceMap,
    resolveSourceMapSync: resolveSourceMapSync,
    resolveSources:       resolveSources,
    resolveSourcesSync:   resolveSourcesSync,
    resolve:              resolve,
    resolveSync:          resolveSync
  }

}));

},{"resolve-url":16,"source-map-url":17}],19:[function(_dereq_,module,exports){
/*
 * Copyright 2009-2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE.txt or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
exports.SourceMapGenerator = _dereq_('./source-map/source-map-generator').SourceMapGenerator;
exports.SourceMapConsumer = _dereq_('./source-map/source-map-consumer').SourceMapConsumer;
exports.SourceNode = _dereq_('./source-map/source-node').SourceNode;

},{"./source-map/source-map-consumer":24,"./source-map/source-map-generator":25,"./source-map/source-node":26}],20:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  var util = _dereq_('./util');

  /**
   * A data structure which is a combination of an array and a set. Adding a new
   * member is O(1), testing for membership is O(1), and finding the index of an
   * element is O(1). Removing elements from the set is not supported. Only
   * strings are supported for membership.
   */
  function ArraySet() {
    this._array = [];
    this._set = {};
  }

  /**
   * Static method for creating ArraySet instances from an existing array.
   */
  ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
    var set = new ArraySet();
    for (var i = 0, len = aArray.length; i < len; i++) {
      set.add(aArray[i], aAllowDuplicates);
    }
    return set;
  };

  /**
   * Add the given string to this set.
   *
   * @param String aStr
   */
  ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
    var isDuplicate = this.has(aStr);
    var idx = this._array.length;
    if (!isDuplicate || aAllowDuplicates) {
      this._array.push(aStr);
    }
    if (!isDuplicate) {
      this._set[util.toSetString(aStr)] = idx;
    }
  };

  /**
   * Is the given string a member of this set?
   *
   * @param String aStr
   */
  ArraySet.prototype.has = function ArraySet_has(aStr) {
    return Object.prototype.hasOwnProperty.call(this._set,
                                                util.toSetString(aStr));
  };

  /**
   * What is the index of the given string in the array?
   *
   * @param String aStr
   */
  ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
    if (this.has(aStr)) {
      return this._set[util.toSetString(aStr)];
    }
    throw new Error('"' + aStr + '" is not in the set.');
  };

  /**
   * What is the element at the given index?
   *
   * @param Number aIdx
   */
  ArraySet.prototype.at = function ArraySet_at(aIdx) {
    if (aIdx >= 0 && aIdx < this._array.length) {
      return this._array[aIdx];
    }
    throw new Error('No element indexed by ' + aIdx);
  };

  /**
   * Returns the array representation of this set (which has the proper indices
   * indicated by indexOf). Note that this is a copy of the internal array used
   * for storing the members so that no one can mess with internal state.
   */
  ArraySet.prototype.toArray = function ArraySet_toArray() {
    return this._array.slice();
  };

  exports.ArraySet = ArraySet;

});

},{"./util":27,"amdefine":28}],21:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 *
 * Based on the Base 64 VLQ implementation in Closure Compiler:
 * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
 *
 * Copyright 2011 The Closure Compiler Authors. All rights reserved.
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above
 *    copyright notice, this list of conditions and the following
 *    disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 *  * Neither the name of Google Inc. nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  var base64 = _dereq_('./base64');

  // A single base 64 digit can contain 6 bits of data. For the base 64 variable
  // length quantities we use in the source map spec, the first bit is the sign,
  // the next four bits are the actual value, and the 6th bit is the
  // continuation bit. The continuation bit tells us whether there are more
  // digits in this value following this digit.
  //
  //   Continuation
  //   |    Sign
  //   |    |
  //   V    V
  //   101011

  var VLQ_BASE_SHIFT = 5;

  // binary: 100000
  var VLQ_BASE = 1 << VLQ_BASE_SHIFT;

  // binary: 011111
  var VLQ_BASE_MASK = VLQ_BASE - 1;

  // binary: 100000
  var VLQ_CONTINUATION_BIT = VLQ_BASE;

  /**
   * Converts from a two-complement value to a value where the sign bit is
   * is placed in the least significant bit.  For example, as decimals:
   *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
   *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
   */
  function toVLQSigned(aValue) {
    return aValue < 0
      ? ((-aValue) << 1) + 1
      : (aValue << 1) + 0;
  }

  /**
   * Converts to a two-complement value from a value where the sign bit is
   * is placed in the least significant bit.  For example, as decimals:
   *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1
   *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2
   */
  function fromVLQSigned(aValue) {
    var isNegative = (aValue & 1) === 1;
    var shifted = aValue >> 1;
    return isNegative
      ? -shifted
      : shifted;
  }

  /**
   * Returns the base 64 VLQ encoded value.
   */
  exports.encode = function base64VLQ_encode(aValue) {
    var encoded = "";
    var digit;

    var vlq = toVLQSigned(aValue);

    do {
      digit = vlq & VLQ_BASE_MASK;
      vlq >>>= VLQ_BASE_SHIFT;
      if (vlq > 0) {
        // There are still more digits in this value, so we must make sure the
        // continuation bit is marked.
        digit |= VLQ_CONTINUATION_BIT;
      }
      encoded += base64.encode(digit);
    } while (vlq > 0);

    return encoded;
  };

  /**
   * Decodes the next base 64 VLQ value from the given string and returns the
   * value and the rest of the string via the out parameter.
   */
  exports.decode = function base64VLQ_decode(aStr, aOutParam) {
    var i = 0;
    var strLen = aStr.length;
    var result = 0;
    var shift = 0;
    var continuation, digit;

    do {
      if (i >= strLen) {
        throw new Error("Expected more digits in base 64 VLQ value.");
      }
      digit = base64.decode(aStr.charAt(i++));
      continuation = !!(digit & VLQ_CONTINUATION_BIT);
      digit &= VLQ_BASE_MASK;
      result = result + (digit << shift);
      shift += VLQ_BASE_SHIFT;
    } while (continuation);

    aOutParam.value = fromVLQSigned(result);
    aOutParam.rest = aStr.slice(i);
  };

});

},{"./base64":22,"amdefine":28}],22:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  var charToIntMap = {};
  var intToCharMap = {};

  'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    .split('')
    .forEach(function (ch, index) {
      charToIntMap[ch] = index;
      intToCharMap[index] = ch;
    });

  /**
   * Encode an integer in the range of 0 to 63 to a single base 64 digit.
   */
  exports.encode = function base64_encode(aNumber) {
    if (aNumber in intToCharMap) {
      return intToCharMap[aNumber];
    }
    throw new TypeError("Must be between 0 and 63: " + aNumber);
  };

  /**
   * Decode a single base 64 digit to an integer.
   */
  exports.decode = function base64_decode(aChar) {
    if (aChar in charToIntMap) {
      return charToIntMap[aChar];
    }
    throw new TypeError("Not a valid base 64 digit: " + aChar);
  };

});

},{"amdefine":28}],23:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  /**
   * Recursive implementation of binary search.
   *
   * @param aLow Indices here and lower do not contain the needle.
   * @param aHigh Indices here and higher do not contain the needle.
   * @param aNeedle The element being searched for.
   * @param aHaystack The non-empty array being searched.
   * @param aCompare Function which takes two elements and returns -1, 0, or 1.
   */
  function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
    // This function terminates when one of the following is true:
    //
    //   1. We find the exact element we are looking for.
    //
    //   2. We did not find the exact element, but we can return the next
    //      closest element that is less than that element.
    //
    //   3. We did not find the exact element, and there is no next-closest
    //      element which is less than the one we are searching for, so we
    //      return null.
    var mid = Math.floor((aHigh - aLow) / 2) + aLow;
    var cmp = aCompare(aNeedle, aHaystack[mid], true);
    if (cmp === 0) {
      // Found the element we are looking for.
      return aHaystack[mid];
    }
    else if (cmp > 0) {
      // aHaystack[mid] is greater than our needle.
      if (aHigh - mid > 1) {
        // The element is in the upper half.
        return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);
      }
      // We did not find an exact match, return the next closest one
      // (termination case 2).
      return aHaystack[mid];
    }
    else {
      // aHaystack[mid] is less than our needle.
      if (mid - aLow > 1) {
        // The element is in the lower half.
        return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);
      }
      // The exact needle element was not found in this haystack. Determine if
      // we are in termination case (2) or (3) and return the appropriate thing.
      return aLow < 0
        ? null
        : aHaystack[aLow];
    }
  }

  /**
   * This is an implementation of binary search which will always try and return
   * the next lowest value checked if there is no exact hit. This is because
   * mappings between original and generated line/col pairs are single points,
   * and there is an implicit region between each of them, so a miss just means
   * that you aren't on the very start of a region.
   *
   * @param aNeedle The element you are looking for.
   * @param aHaystack The array that is being searched.
   * @param aCompare A function which takes the needle and an element in the
   *     array and returns -1, 0, or 1 depending on whether the needle is less
   *     than, equal to, or greater than the element, respectively.
   */
  exports.search = function search(aNeedle, aHaystack, aCompare) {
    return aHaystack.length > 0
      ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)
      : null;
  };

});

},{"amdefine":28}],24:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  var util = _dereq_('./util');
  var binarySearch = _dereq_('./binary-search');
  var ArraySet = _dereq_('./array-set').ArraySet;
  var base64VLQ = _dereq_('./base64-vlq');

  /**
   * A SourceMapConsumer instance represents a parsed source map which we can
   * query for information about the original file positions by giving it a file
   * position in the generated source.
   *
   * The only parameter is the raw source map (either as a JSON string, or
   * already parsed to an object). According to the spec, source maps have the
   * following attributes:
   *
   *   - version: Which version of the source map spec this map is following.
   *   - sources: An array of URLs to the original source files.
   *   - names: An array of identifiers which can be referrenced by individual mappings.
   *   - sourceRoot: Optional. The URL root from which all sources are relative.
   *   - sourcesContent: Optional. An array of contents of the original source files.
   *   - mappings: A string of base64 VLQs which contain the actual mappings.
   *   - file: Optional. The generated file this source map is associated with.
   *
   * Here is an example source map, taken from the source map spec[0]:
   *
   *     {
   *       version : 3,
   *       file: "out.js",
   *       sourceRoot : "",
   *       sources: ["foo.js", "bar.js"],
   *       names: ["src", "maps", "are", "fun"],
   *       mappings: "AA,AB;;ABCDE;"
   *     }
   *
   * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
   */
  function SourceMapConsumer(aSourceMap) {
    var sourceMap = aSourceMap;
    if (typeof aSourceMap === 'string') {
      sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
    }

    var version = util.getArg(sourceMap, 'version');
    var sources = util.getArg(sourceMap, 'sources');
    // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
    // requires the array) to play nice here.
    var names = util.getArg(sourceMap, 'names', []);
    var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
    var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
    var mappings = util.getArg(sourceMap, 'mappings');
    var file = util.getArg(sourceMap, 'file', null);

    // Once again, Sass deviates from the spec and supplies the version as a
    // string rather than a number, so we use loose equality checking here.
    if (version != this._version) {
      throw new Error('Unsupported version: ' + version);
    }

    // Pass `true` below to allow duplicate names and sources. While source maps
    // are intended to be compressed and deduplicated, the TypeScript compiler
    // sometimes generates source maps with duplicates in them. See Github issue
    // #72 and bugzil.la/889492.
    this._names = ArraySet.fromArray(names, true);
    this._sources = ArraySet.fromArray(sources, true);

    this.sourceRoot = sourceRoot;
    this.sourcesContent = sourcesContent;
    this._mappings = mappings;
    this.file = file;
  }

  /**
   * Create a SourceMapConsumer from a SourceMapGenerator.
   *
   * @param SourceMapGenerator aSourceMap
   *        The source map that will be consumed.
   * @returns SourceMapConsumer
   */
  SourceMapConsumer.fromSourceMap =
    function SourceMapConsumer_fromSourceMap(aSourceMap) {
      var smc = Object.create(SourceMapConsumer.prototype);

      smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
      smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
      smc.sourceRoot = aSourceMap._sourceRoot;
      smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
                                                              smc.sourceRoot);
      smc.file = aSourceMap._file;

      smc.__generatedMappings = aSourceMap._mappings.slice()
        .sort(util.compareByGeneratedPositions);
      smc.__originalMappings = aSourceMap._mappings.slice()
        .sort(util.compareByOriginalPositions);

      return smc;
    };

  /**
   * The version of the source mapping spec that we are consuming.
   */
  SourceMapConsumer.prototype._version = 3;

  /**
   * The list of original sources.
   */
  Object.defineProperty(SourceMapConsumer.prototype, 'sources', {
    get: function () {
      return this._sources.toArray().map(function (s) {
        return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
      }, this);
    }
  });

  // `__generatedMappings` and `__originalMappings` are arrays that hold the
  // parsed mapping coordinates from the source map's "mappings" attribute. They
  // are lazily instantiated, accessed via the `_generatedMappings` and
  // `_originalMappings` getters respectively, and we only parse the mappings
  // and create these arrays once queried for a source location. We jump through
  // these hoops because there can be many thousands of mappings, and parsing
  // them is expensive, so we only want to do it if we must.
  //
  // Each object in the arrays is of the form:
  //
  //     {
  //       generatedLine: The line number in the generated code,
  //       generatedColumn: The column number in the generated code,
  //       source: The path to the original source file that generated this
  //               chunk of code,
  //       originalLine: The line number in the original source that
  //                     corresponds to this chunk of generated code,
  //       originalColumn: The column number in the original source that
  //                       corresponds to this chunk of generated code,
  //       name: The name of the original symbol which generated this chunk of
  //             code.
  //     }
  //
  // All properties except for `generatedLine` and `generatedColumn` can be
  // `null`.
  //
  // `_generatedMappings` is ordered by the generated positions.
  //
  // `_originalMappings` is ordered by the original positions.

  SourceMapConsumer.prototype.__generatedMappings = null;
  Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
    get: function () {
      if (!this.__generatedMappings) {
        this.__generatedMappings = [];
        this.__originalMappings = [];
        this._parseMappings(this._mappings, this.sourceRoot);
      }

      return this.__generatedMappings;
    }
  });

  SourceMapConsumer.prototype.__originalMappings = null;
  Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
    get: function () {
      if (!this.__originalMappings) {
        this.__generatedMappings = [];
        this.__originalMappings = [];
        this._parseMappings(this._mappings, this.sourceRoot);
      }

      return this.__originalMappings;
    }
  });

  SourceMapConsumer.prototype._nextCharIsMappingSeparator =
    function SourceMapConsumer_nextCharIsMappingSeparator(aStr) {
      var c = aStr.charAt(0);
      return c === ";" || c === ",";
    };

  /**
   * Parse the mappings in a string in to a data structure which we can easily
   * query (the ordered arrays in the `this.__generatedMappings` and
   * `this.__originalMappings` properties).
   */
  SourceMapConsumer.prototype._parseMappings =
    function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
      var generatedLine = 1;
      var previousGeneratedColumn = 0;
      var previousOriginalLine = 0;
      var previousOriginalColumn = 0;
      var previousSource = 0;
      var previousName = 0;
      var str = aStr;
      var temp = {};
      var mapping;

      while (str.length > 0) {
        if (str.charAt(0) === ';') {
          generatedLine++;
          str = str.slice(1);
          previousGeneratedColumn = 0;
        }
        else if (str.charAt(0) === ',') {
          str = str.slice(1);
        }
        else {
          mapping = {};
          mapping.generatedLine = generatedLine;

          // Generated column.
          base64VLQ.decode(str, temp);
          mapping.generatedColumn = previousGeneratedColumn + temp.value;
          previousGeneratedColumn = mapping.generatedColumn;
          str = temp.rest;

          if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) {
            // Original source.
            base64VLQ.decode(str, temp);
            mapping.source = this._sources.at(previousSource + temp.value);
            previousSource += temp.value;
            str = temp.rest;
            if (str.length === 0 || this._nextCharIsMappingSeparator(str)) {
              throw new Error('Found a source, but no line and column');
            }

            // Original line.
            base64VLQ.decode(str, temp);
            mapping.originalLine = previousOriginalLine + temp.value;
            previousOriginalLine = mapping.originalLine;
            // Lines are stored 0-based
            mapping.originalLine += 1;
            str = temp.rest;
            if (str.length === 0 || this._nextCharIsMappingSeparator(str)) {
              throw new Error('Found a source and line, but no column');
            }

            // Original column.
            base64VLQ.decode(str, temp);
            mapping.originalColumn = previousOriginalColumn + temp.value;
            previousOriginalColumn = mapping.originalColumn;
            str = temp.rest;

            if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) {
              // Original name.
              base64VLQ.decode(str, temp);
              mapping.name = this._names.at(previousName + temp.value);
              previousName += temp.value;
              str = temp.rest;
            }
          }

          this.__generatedMappings.push(mapping);
          if (typeof mapping.originalLine === 'number') {
            this.__originalMappings.push(mapping);
          }
        }
      }

      this.__generatedMappings.sort(util.compareByGeneratedPositions);
      this.__originalMappings.sort(util.compareByOriginalPositions);
    };

  /**
   * Find the mapping that best matches the hypothetical "needle" mapping that
   * we are searching for in the given "haystack" of mappings.
   */
  SourceMapConsumer.prototype._findMapping =
    function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
                                           aColumnName, aComparator) {
      // To return the position we are searching for, we must first find the
      // mapping for the given position and then return the opposite position it
      // points to. Because the mappings are sorted, we can use binary search to
      // find the best mapping.

      if (aNeedle[aLineName] <= 0) {
        throw new TypeError('Line must be greater than or equal to 1, got '
                            + aNeedle[aLineName]);
      }
      if (aNeedle[aColumnName] < 0) {
        throw new TypeError('Column must be greater than or equal to 0, got '
                            + aNeedle[aColumnName]);
      }

      return binarySearch.search(aNeedle, aMappings, aComparator);
    };

  /**
   * Returns the original source, line, and column information for the generated
   * source's line and column positions provided. The only argument is an object
   * with the following properties:
   *
   *   - line: The line number in the generated source.
   *   - column: The column number in the generated source.
   *
   * and an object is returned with the following properties:
   *
   *   - source: The original source file, or null.
   *   - line: The line number in the original source, or null.
   *   - column: The column number in the original source, or null.
   *   - name: The original identifier, or null.
   */
  SourceMapConsumer.prototype.originalPositionFor =
    function SourceMapConsumer_originalPositionFor(aArgs) {
      var needle = {
        generatedLine: util.getArg(aArgs, 'line'),
        generatedColumn: util.getArg(aArgs, 'column')
      };

      var mapping = this._findMapping(needle,
                                      this._generatedMappings,
                                      "generatedLine",
                                      "generatedColumn",
                                      util.compareByGeneratedPositions);

      if (mapping && mapping.generatedLine === needle.generatedLine) {
        var source = util.getArg(mapping, 'source', null);
        if (source != null && this.sourceRoot != null) {
          source = util.join(this.sourceRoot, source);
        }
        return {
          source: source,
          line: util.getArg(mapping, 'originalLine', null),
          column: util.getArg(mapping, 'originalColumn', null),
          name: util.getArg(mapping, 'name', null)
        };
      }

      return {
        source: null,
        line: null,
        column: null,
        name: null
      };
    };

  /**
   * Returns the original source content. The only argument is the url of the
   * original source file. Returns null if no original source content is
   * availible.
   */
  SourceMapConsumer.prototype.sourceContentFor =
    function SourceMapConsumer_sourceContentFor(aSource) {
      if (!this.sourcesContent) {
        return null;
      }

      if (this.sourceRoot != null) {
        aSource = util.relative(this.sourceRoot, aSource);
      }

      if (this._sources.has(aSource)) {
        return this.sourcesContent[this._sources.indexOf(aSource)];
      }

      var url;
      if (this.sourceRoot != null
          && (url = util.urlParse(this.sourceRoot))) {
        // XXX: file:// URIs and absolute paths lead to unexpected behavior for
        // many users. We can help them out when they expect file:// URIs to
        // behave like it would if they were running a local HTTP server. See
        // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
        var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
        if (url.scheme == "file"
            && this._sources.has(fileUriAbsPath)) {
          return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
        }

        if ((!url.path || url.path == "/")
            && this._sources.has("/" + aSource)) {
          return this.sourcesContent[this._sources.indexOf("/" + aSource)];
        }
      }

      throw new Error('"' + aSource + '" is not in the SourceMap.');
    };

  /**
   * Returns the generated line and column information for the original source,
   * line, and column positions provided. The only argument is an object with
   * the following properties:
   *
   *   - source: The filename of the original source.
   *   - line: The line number in the original source.
   *   - column: The column number in the original source.
   *
   * and an object is returned with the following properties:
   *
   *   - line: The line number in the generated source, or null.
   *   - column: The column number in the generated source, or null.
   */
  SourceMapConsumer.prototype.generatedPositionFor =
    function SourceMapConsumer_generatedPositionFor(aArgs) {
      var needle = {
        source: util.getArg(aArgs, 'source'),
        originalLine: util.getArg(aArgs, 'line'),
        originalColumn: util.getArg(aArgs, 'column')
      };

      if (this.sourceRoot != null) {
        needle.source = util.relative(this.sourceRoot, needle.source);
      }

      var mapping = this._findMapping(needle,
                                      this._originalMappings,
                                      "originalLine",
                                      "originalColumn",
                                      util.compareByOriginalPositions);

      if (mapping) {
        return {
          line: util.getArg(mapping, 'generatedLine', null),
          column: util.getArg(mapping, 'generatedColumn', null)
        };
      }

      return {
        line: null,
        column: null
      };
    };

  SourceMapConsumer.GENERATED_ORDER = 1;
  SourceMapConsumer.ORIGINAL_ORDER = 2;

  /**
   * Iterate over each mapping between an original source/line/column and a
   * generated line/column in this source map.
   *
   * @param Function aCallback
   *        The function that is called with each mapping.
   * @param Object aContext
   *        Optional. If specified, this object will be the value of `this` every
   *        time that `aCallback` is called.
   * @param aOrder
   *        Either `SourceMapConsumer.GENERATED_ORDER` or
   *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
   *        iterate over the mappings sorted by the generated file's line/column
   *        order or the original's source/line/column order, respectively. Defaults to
   *        `SourceMapConsumer.GENERATED_ORDER`.
   */
  SourceMapConsumer.prototype.eachMapping =
    function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
      var context = aContext || null;
      var order = aOrder || SourceMapConsumer.GENERATED_ORDER;

      var mappings;
      switch (order) {
      case SourceMapConsumer.GENERATED_ORDER:
        mappings = this._generatedMappings;
        break;
      case SourceMapConsumer.ORIGINAL_ORDER:
        mappings = this._originalMappings;
        break;
      default:
        throw new Error("Unknown order of iteration.");
      }

      var sourceRoot = this.sourceRoot;
      mappings.map(function (mapping) {
        var source = mapping.source;
        if (source != null && sourceRoot != null) {
          source = util.join(sourceRoot, source);
        }
        return {
          source: source,
          generatedLine: mapping.generatedLine,
          generatedColumn: mapping.generatedColumn,
          originalLine: mapping.originalLine,
          originalColumn: mapping.originalColumn,
          name: mapping.name
        };
      }).forEach(aCallback, context);
    };

  exports.SourceMapConsumer = SourceMapConsumer;

});

},{"./array-set":20,"./base64-vlq":21,"./binary-search":23,"./util":27,"amdefine":28}],25:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  var base64VLQ = _dereq_('./base64-vlq');
  var util = _dereq_('./util');
  var ArraySet = _dereq_('./array-set').ArraySet;

  /**
   * An instance of the SourceMapGenerator represents a source map which is
   * being built incrementally. You may pass an object with the following
   * properties:
   *
   *   - file: The filename of the generated source.
   *   - sourceRoot: A root for all relative URLs in this source map.
   */
  function SourceMapGenerator(aArgs) {
    if (!aArgs) {
      aArgs = {};
    }
    this._file = util.getArg(aArgs, 'file', null);
    this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
    this._sources = new ArraySet();
    this._names = new ArraySet();
    this._mappings = [];
    this._sourcesContents = null;
  }

  SourceMapGenerator.prototype._version = 3;

  /**
   * Creates a new SourceMapGenerator based on a SourceMapConsumer
   *
   * @param aSourceMapConsumer The SourceMap.
   */
  SourceMapGenerator.fromSourceMap =
    function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
      var sourceRoot = aSourceMapConsumer.sourceRoot;
      var generator = new SourceMapGenerator({
        file: aSourceMapConsumer.file,
        sourceRoot: sourceRoot
      });
      aSourceMapConsumer.eachMapping(function (mapping) {
        var newMapping = {
          generated: {
            line: mapping.generatedLine,
            column: mapping.generatedColumn
          }
        };

        if (mapping.source != null) {
          newMapping.source = mapping.source;
          if (sourceRoot != null) {
            newMapping.source = util.relative(sourceRoot, newMapping.source);
          }

          newMapping.original = {
            line: mapping.originalLine,
            column: mapping.originalColumn
          };

          if (mapping.name != null) {
            newMapping.name = mapping.name;
          }
        }

        generator.addMapping(newMapping);
      });
      aSourceMapConsumer.sources.forEach(function (sourceFile) {
        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
        if (content != null) {
          generator.setSourceContent(sourceFile, content);
        }
      });
      return generator;
    };

  /**
   * Add a single mapping from original source line and column to the generated
   * source's line and column for this source map being created. The mapping
   * object should have the following properties:
   *
   *   - generated: An object with the generated line and column positions.
   *   - original: An object with the original line and column positions.
   *   - source: The original source file (relative to the sourceRoot).
   *   - name: An optional original token name for this mapping.
   */
  SourceMapGenerator.prototype.addMapping =
    function SourceMapGenerator_addMapping(aArgs) {
      var generated = util.getArg(aArgs, 'generated');
      var original = util.getArg(aArgs, 'original', null);
      var source = util.getArg(aArgs, 'source', null);
      var name = util.getArg(aArgs, 'name', null);

      this._validateMapping(generated, original, source, name);

      if (source != null && !this._sources.has(source)) {
        this._sources.add(source);
      }

      if (name != null && !this._names.has(name)) {
        this._names.add(name);
      }

      this._mappings.push({
        generatedLine: generated.line,
        generatedColumn: generated.column,
        originalLine: original != null && original.line,
        originalColumn: original != null && original.column,
        source: source,
        name: name
      });
    };

  /**
   * Set the source content for a source file.
   */
  SourceMapGenerator.prototype.setSourceContent =
    function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
      var source = aSourceFile;
      if (this._sourceRoot != null) {
        source = util.relative(this._sourceRoot, source);
      }

      if (aSourceContent != null) {
        // Add the source content to the _sourcesContents map.
        // Create a new _sourcesContents map if the property is null.
        if (!this._sourcesContents) {
          this._sourcesContents = {};
        }
        this._sourcesContents[util.toSetString(source)] = aSourceContent;
      } else if (this._sourcesContents) {
        // Remove the source file from the _sourcesContents map.
        // If the _sourcesContents map is empty, set the property to null.
        delete this._sourcesContents[util.toSetString(source)];
        if (Object.keys(this._sourcesContents).length === 0) {
          this._sourcesContents = null;
        }
      }
    };

  /**
   * Applies the mappings of a sub-source-map for a specific source file to the
   * source map being generated. Each mapping to the supplied source file is
   * rewritten using the supplied source map. Note: The resolution for the
   * resulting mappings is the minimium of this map and the supplied map.
   *
   * @param aSourceMapConsumer The source map to be applied.
   * @param aSourceFile Optional. The filename of the source file.
   *        If omitted, SourceMapConsumer's file property will be used.
   * @param aSourceMapPath Optional. The dirname of the path to the source map
   *        to be applied. If relative, it is relative to the SourceMapConsumer.
   *        This parameter is needed when the two source maps aren't in the same
   *        directory, and the source map to be applied contains relative source
   *        paths. If so, those relative source paths need to be rewritten
   *        relative to the SourceMapGenerator.
   */
  SourceMapGenerator.prototype.applySourceMap =
    function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
      var sourceFile = aSourceFile;
      // If aSourceFile is omitted, we will use the file property of the SourceMap
      if (aSourceFile == null) {
        if (aSourceMapConsumer.file == null) {
          throw new Error(
            'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
            'or the source map\'s "file" property. Both were omitted.'
          );
        }
        sourceFile = aSourceMapConsumer.file;
      }
      var sourceRoot = this._sourceRoot;
      // Make "sourceFile" relative if an absolute Url is passed.
      if (sourceRoot != null) {
        sourceFile = util.relative(sourceRoot, sourceFile);
      }
      // Applying the SourceMap can add and remove items from the sources and
      // the names array.
      var newSources = new ArraySet();
      var newNames = new ArraySet();

      // Find mappings for the "sourceFile"
      this._mappings.forEach(function (mapping) {
        if (mapping.source === sourceFile && mapping.originalLine != null) {
          // Check if it can be mapped by the source map, then update the mapping.
          var original = aSourceMapConsumer.originalPositionFor({
            line: mapping.originalLine,
            column: mapping.originalColumn
          });
          if (original.source != null) {
            // Copy mapping
            mapping.source = original.source;
            if (aSourceMapPath != null) {
              mapping.source = util.join(aSourceMapPath, mapping.source)
            }
            if (sourceRoot != null) {
              mapping.source = util.relative(sourceRoot, mapping.source);
            }
            mapping.originalLine = original.line;
            mapping.originalColumn = original.column;
            if (original.name != null) {
              mapping.name = original.name;
            }
          }
        }

        var source = mapping.source;
        if (source != null && !newSources.has(source)) {
          newSources.add(source);
        }

        var name = mapping.name;
        if (name != null && !newNames.has(name)) {
          newNames.add(name);
        }

      }, this);
      this._sources = newSources;
      this._names = newNames;

      // Copy sourcesContents of applied map.
      aSourceMapConsumer.sources.forEach(function (sourceFile) {
        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
        if (content != null) {
          if (aSourceMapPath != null) {
            sourceFile = util.join(aSourceMapPath, sourceFile);
          }
          if (sourceRoot != null) {
            sourceFile = util.relative(sourceRoot, sourceFile);
          }
          this.setSourceContent(sourceFile, content);
        }
      }, this);
    };

  /**
   * A mapping can have one of the three levels of data:
   *
   *   1. Just the generated position.
   *   2. The Generated position, original position, and original source.
   *   3. Generated and original position, original source, as well as a name
   *      token.
   *
   * To maintain consistency, we validate that any new mapping being added falls
   * in to one of these categories.
   */
  SourceMapGenerator.prototype._validateMapping =
    function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
                                                aName) {
      if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
          && aGenerated.line > 0 && aGenerated.column >= 0
          && !aOriginal && !aSource && !aName) {
        // Case 1.
        return;
      }
      else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
               && aOriginal && 'line' in aOriginal && 'column' in aOriginal
               && aGenerated.line > 0 && aGenerated.column >= 0
               && aOriginal.line > 0 && aOriginal.column >= 0
               && aSource) {
        // Cases 2 and 3.
        return;
      }
      else {
        throw new Error('Invalid mapping: ' + JSON.stringify({
          generated: aGenerated,
          source: aSource,
          original: aOriginal,
          name: aName
        }));
      }
    };

  /**
   * Serialize the accumulated mappings in to the stream of base 64 VLQs
   * specified by the source map format.
   */
  SourceMapGenerator.prototype._serializeMappings =
    function SourceMapGenerator_serializeMappings() {
      var previousGeneratedColumn = 0;
      var previousGeneratedLine = 1;
      var previousOriginalColumn = 0;
      var previousOriginalLine = 0;
      var previousName = 0;
      var previousSource = 0;
      var result = '';
      var mapping;

      // The mappings must be guaranteed to be in sorted order before we start
      // serializing them or else the generated line numbers (which are defined
      // via the ';' separators) will be all messed up. Note: it might be more
      // performant to maintain the sorting as we insert them, rather than as we
      // serialize them, but the big O is the same either way.
      this._mappings.sort(util.compareByGeneratedPositions);

      for (var i = 0, len = this._mappings.length; i < len; i++) {
        mapping = this._mappings[i];

        if (mapping.generatedLine !== previousGeneratedLine) {
          previousGeneratedColumn = 0;
          while (mapping.generatedLine !== previousGeneratedLine) {
            result += ';';
            previousGeneratedLine++;
          }
        }
        else {
          if (i > 0) {
            if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {
              continue;
            }
            result += ',';
          }
        }

        result += base64VLQ.encode(mapping.generatedColumn
                                   - previousGeneratedColumn);
        previousGeneratedColumn = mapping.generatedColumn;

        if (mapping.source != null) {
          result += base64VLQ.encode(this._sources.indexOf(mapping.source)
                                     - previousSource);
          previousSource = this._sources.indexOf(mapping.source);

          // lines are stored 0-based in SourceMap spec version 3
          result += base64VLQ.encode(mapping.originalLine - 1
                                     - previousOriginalLine);
          previousOriginalLine = mapping.originalLine - 1;

          result += base64VLQ.encode(mapping.originalColumn
                                     - previousOriginalColumn);
          previousOriginalColumn = mapping.originalColumn;

          if (mapping.name != null) {
            result += base64VLQ.encode(this._names.indexOf(mapping.name)
                                       - previousName);
            previousName = this._names.indexOf(mapping.name);
          }
        }
      }

      return result;
    };

  SourceMapGenerator.prototype._generateSourcesContent =
    function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
      return aSources.map(function (source) {
        if (!this._sourcesContents) {
          return null;
        }
        if (aSourceRoot != null) {
          source = util.relative(aSourceRoot, source);
        }
        var key = util.toSetString(source);
        return Object.prototype.hasOwnProperty.call(this._sourcesContents,
                                                    key)
          ? this._sourcesContents[key]
          : null;
      }, this);
    };

  /**
   * Externalize the source map.
   */
  SourceMapGenerator.prototype.toJSON =
    function SourceMapGenerator_toJSON() {
      var map = {
        version: this._version,
        sources: this._sources.toArray(),
        names: this._names.toArray(),
        mappings: this._serializeMappings()
      };
      if (this._file != null) {
        map.file = this._file;
      }
      if (this._sourceRoot != null) {
        map.sourceRoot = this._sourceRoot;
      }
      if (this._sourcesContents) {
        map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
      }

      return map;
    };

  /**
   * Render the source map being generated to a string.
   */
  SourceMapGenerator.prototype.toString =
    function SourceMapGenerator_toString() {
      return JSON.stringify(this);
    };

  exports.SourceMapGenerator = SourceMapGenerator;

});

},{"./array-set":20,"./base64-vlq":21,"./util":27,"amdefine":28}],26:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  var SourceMapGenerator = _dereq_('./source-map-generator').SourceMapGenerator;
  var util = _dereq_('./util');

  // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
  // operating systems these days (capturing the result).
  var REGEX_NEWLINE = /(\r?\n)/;

  // Matches a Windows-style newline, or any character.
  var REGEX_CHARACTER = /\r\n|[\s\S]/g;

  /**
   * SourceNodes provide a way to abstract over interpolating/concatenating
   * snippets of generated JavaScript source code while maintaining the line and
   * column information associated with the original source code.
   *
   * @param aLine The original line number.
   * @param aColumn The original column number.
   * @param aSource The original source's filename.
   * @param aChunks Optional. An array of strings which are snippets of
   *        generated JS, or other SourceNodes.
   * @param aName The original identifier.
   */
  function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
    this.children = [];
    this.sourceContents = {};
    this.line = aLine == null ? null : aLine;
    this.column = aColumn == null ? null : aColumn;
    this.source = aSource == null ? null : aSource;
    this.name = aName == null ? null : aName;
    if (aChunks != null) this.add(aChunks);
  }

  /**
   * Creates a SourceNode from generated code and a SourceMapConsumer.
   *
   * @param aGeneratedCode The generated code
   * @param aSourceMapConsumer The SourceMap for the generated code
   * @param aRelativePath Optional. The path that relative sources in the
   *        SourceMapConsumer should be relative to.
   */
  SourceNode.fromStringWithSourceMap =
    function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
      // The SourceNode we want to fill with the generated code
      // and the SourceMap
      var node = new SourceNode();

      // All even indices of this array are one line of the generated code,
      // while all odd indices are the newlines between two adjacent lines
      // (since `REGEX_NEWLINE` captures its match).
      // Processed fragments are removed from this array, by calling `shiftNextLine`.
      var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
      var shiftNextLine = function() {
        var lineContents = remainingLines.shift();
        // The last line of a file might not have a newline.
        var newLine = remainingLines.shift() || "";
        return lineContents + newLine;
      };

      // We need to remember the position of "remainingLines"
      var lastGeneratedLine = 1, lastGeneratedColumn = 0;

      // The generate SourceNodes we need a code range.
      // To extract it current and last mapping is used.
      // Here we store the last mapping.
      var lastMapping = null;

      aSourceMapConsumer.eachMapping(function (mapping) {
        if (lastMapping !== null) {
          // We add the code from "lastMapping" to "mapping":
          // First check if there is a new line in between.
          if (lastGeneratedLine < mapping.generatedLine) {
            var code = "";
            // Associate first line with "lastMapping"
            addMappingWithCode(lastMapping, shiftNextLine());
            lastGeneratedLine++;
            lastGeneratedColumn = 0;
            // The remaining code is added without mapping
          } else {
            // There is no new line in between.
            // Associate the code between "lastGeneratedColumn" and
            // "mapping.generatedColumn" with "lastMapping"
            var nextLine = remainingLines[0];
            var code = nextLine.substr(0, mapping.generatedColumn -
                                          lastGeneratedColumn);
            remainingLines[0] = nextLine.substr(mapping.generatedColumn -
                                                lastGeneratedColumn);
            lastGeneratedColumn = mapping.generatedColumn;
            addMappingWithCode(lastMapping, code);
            // No more remaining code, continue
            lastMapping = mapping;
            return;
          }
        }
        // We add the generated code until the first mapping
        // to the SourceNode without any mapping.
        // Each line is added as separate string.
        while (lastGeneratedLine < mapping.generatedLine) {
          node.add(shiftNextLine());
          lastGeneratedLine++;
        }
        if (lastGeneratedColumn < mapping.generatedColumn) {
          var nextLine = remainingLines[0];
          node.add(nextLine.substr(0, mapping.generatedColumn));
          remainingLines[0] = nextLine.substr(mapping.generatedColumn);
          lastGeneratedColumn = mapping.generatedColumn;
        }
        lastMapping = mapping;
      }, this);
      // We have processed all mappings.
      if (remainingLines.length > 0) {
        if (lastMapping) {
          // Associate the remaining code in the current line with "lastMapping"
          addMappingWithCode(lastMapping, shiftNextLine());
        }
        // and add the remaining lines without any mapping
        node.add(remainingLines.join(""));
      }

      // Copy sourcesContent into SourceNode
      aSourceMapConsumer.sources.forEach(function (sourceFile) {
        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
        if (content != null) {
          if (aRelativePath != null) {
            sourceFile = util.join(aRelativePath, sourceFile);
          }
          node.setSourceContent(sourceFile, content);
        }
      });

      return node;

      function addMappingWithCode(mapping, code) {
        if (mapping === null || mapping.source === undefined) {
          node.add(code);
        } else {
          var source = aRelativePath
            ? util.join(aRelativePath, mapping.source)
            : mapping.source;
          node.add(new SourceNode(mapping.originalLine,
                                  mapping.originalColumn,
                                  source,
                                  code,
                                  mapping.name));
        }
      }
    };

  /**
   * Add a chunk of generated JS to this source node.
   *
   * @param aChunk A string snippet of generated JS code, another instance of
   *        SourceNode, or an array where each member is one of those things.
   */
  SourceNode.prototype.add = function SourceNode_add(aChunk) {
    if (Array.isArray(aChunk)) {
      aChunk.forEach(function (chunk) {
        this.add(chunk);
      }, this);
    }
    else if (aChunk instanceof SourceNode || typeof aChunk === "string") {
      if (aChunk) {
        this.children.push(aChunk);
      }
    }
    else {
      throw new TypeError(
        "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
      );
    }
    return this;
  };

  /**
   * Add a chunk of generated JS to the beginning of this source node.
   *
   * @param aChunk A string snippet of generated JS code, another instance of
   *        SourceNode, or an array where each member is one of those things.
   */
  SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
    if (Array.isArray(aChunk)) {
      for (var i = aChunk.length-1; i >= 0; i--) {
        this.prepend(aChunk[i]);
      }
    }
    else if (aChunk instanceof SourceNode || typeof aChunk === "string") {
      this.children.unshift(aChunk);
    }
    else {
      throw new TypeError(
        "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
      );
    }
    return this;
  };

  /**
   * Walk over the tree of JS snippets in this node and its children. The
   * walking function is called once for each snippet of JS and is passed that
   * snippet and the its original associated source's line/column location.
   *
   * @param aFn The traversal function.
   */
  SourceNode.prototype.walk = function SourceNode_walk(aFn) {
    var chunk;
    for (var i = 0, len = this.children.length; i < len; i++) {
      chunk = this.children[i];
      if (chunk instanceof SourceNode) {
        chunk.walk(aFn);
      }
      else {
        if (chunk !== '') {
          aFn(chunk, { source: this.source,
                       line: this.line,
                       column: this.column,
                       name: this.name });
        }
      }
    }
  };

  /**
   * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
   * each of `this.children`.
   *
   * @param aSep The separator.
   */
  SourceNode.prototype.join = function SourceNode_join(aSep) {
    var newChildren;
    var i;
    var len = this.children.length;
    if (len > 0) {
      newChildren = [];
      for (i = 0; i < len-1; i++) {
        newChildren.push(this.children[i]);
        newChildren.push(aSep);
      }
      newChildren.push(this.children[i]);
      this.children = newChildren;
    }
    return this;
  };

  /**
   * Call String.prototype.replace on the very right-most source snippet. Useful
   * for trimming whitespace from the end of a source node, etc.
   *
   * @param aPattern The pattern to replace.
   * @param aReplacement The thing to replace the pattern with.
   */
  SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
    var lastChild = this.children[this.children.length - 1];
    if (lastChild instanceof SourceNode) {
      lastChild.replaceRight(aPattern, aReplacement);
    }
    else if (typeof lastChild === 'string') {
      this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
    }
    else {
      this.children.push(''.replace(aPattern, aReplacement));
    }
    return this;
  };

  /**
   * Set the source content for a source file. This will be added to the SourceMapGenerator
   * in the sourcesContent field.
   *
   * @param aSourceFile The filename of the source file
   * @param aSourceContent The content of the source file
   */
  SourceNode.prototype.setSourceContent =
    function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
      this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
    };

  /**
   * Walk over the tree of SourceNodes. The walking function is called for each
   * source file content and is passed the filename and source content.
   *
   * @param aFn The traversal function.
   */
  SourceNode.prototype.walkSourceContents =
    function SourceNode_walkSourceContents(aFn) {
      for (var i = 0, len = this.children.length; i < len; i++) {
        if (this.children[i] instanceof SourceNode) {
          this.children[i].walkSourceContents(aFn);
        }
      }

      var sources = Object.keys(this.sourceContents);
      for (var i = 0, len = sources.length; i < len; i++) {
        aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
      }
    };

  /**
   * Return the string representation of this source node. Walks over the tree
   * and concatenates all the various snippets together to one string.
   */
  SourceNode.prototype.toString = function SourceNode_toString() {
    var str = "";
    this.walk(function (chunk) {
      str += chunk;
    });
    return str;
  };

  /**
   * Returns the string representation of this source node along with a source
   * map.
   */
  SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
    var generated = {
      code: "",
      line: 1,
      column: 0
    };
    var map = new SourceMapGenerator(aArgs);
    var sourceMappingActive = false;
    var lastOriginalSource = null;
    var lastOriginalLine = null;
    var lastOriginalColumn = null;
    var lastOriginalName = null;
    this.walk(function (chunk, original) {
      generated.code += chunk;
      if (original.source !== null
          && original.line !== null
          && original.column !== null) {
        if(lastOriginalSource !== original.source
           || lastOriginalLine !== original.line
           || lastOriginalColumn !== original.column
           || lastOriginalName !== original.name) {
          map.addMapping({
            source: original.source,
            original: {
              line: original.line,
              column: original.column
            },
            generated: {
              line: generated.line,
              column: generated.column
            },
            name: original.name
          });
        }
        lastOriginalSource = original.source;
        lastOriginalLine = original.line;
        lastOriginalColumn = original.column;
        lastOriginalName = original.name;
        sourceMappingActive = true;
      } else if (sourceMappingActive) {
        map.addMapping({
          generated: {
            line: generated.line,
            column: generated.column
          }
        });
        lastOriginalSource = null;
        sourceMappingActive = false;
      }
      chunk.match(REGEX_CHARACTER).forEach(function (ch, idx, array) {
        if (REGEX_NEWLINE.test(ch)) {
          generated.line++;
          generated.column = 0;
          // Mappings end at eol
          if (idx + 1 === array.length) {
            lastOriginalSource = null;
            sourceMappingActive = false;
          } else if (sourceMappingActive) {
            map.addMapping({
              source: original.source,
              original: {
                line: original.line,
                column: original.column
              },
              generated: {
                line: generated.line,
                column: generated.column
              },
              name: original.name
            });
          }
        } else {
          generated.column += ch.length;
        }
      });
    });
    this.walkSourceContents(function (sourceFile, sourceContent) {
      map.setSourceContent(sourceFile, sourceContent);
    });

    return { code: generated.code, map: map };
  };

  exports.SourceNode = SourceNode;

});

},{"./source-map-generator":25,"./util":27,"amdefine":28}],27:[function(_dereq_,module,exports){
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
if (typeof _defi_ !== 'function') {
    var _defi_ = _dereq_('amdefine')(module, _dereq_);
}
_defi_(function (_dereq_, exports, module) {

  /**
   * This is a helper function for getting values from parameter/options
   * objects.
   *
   * @param args The object we are extracting values from
   * @param name The name of the property we are getting.
   * @param defaultValue An optional value to return if the property is missing
   * from the object. If this is not specified and the property is missing, an
   * error will be thrown.
   */
  function getArg(aArgs, aName, aDefaultValue) {
    if (aName in aArgs) {
      return aArgs[aName];
    } else if (arguments.length === 3) {
      return aDefaultValue;
    } else {
      throw new Error('"' + aName + '" is a required argument.');
    }
  }
  exports.getArg = getArg;

  var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
  var dataUrlRegexp = /^data:.+\,.+$/;

  function urlParse(aUrl) {
    var match = aUrl.match(urlRegexp);
    if (!match) {
      return null;
    }
    return {
      scheme: match[1],
      auth: match[2],
      host: match[3],
      port: match[4],
      path: match[5]
    };
  }
  exports.urlParse = urlParse;

  function urlGenerate(aParsedUrl) {
    var url = '';
    if (aParsedUrl.scheme) {
      url += aParsedUrl.scheme + ':';
    }
    url += '//';
    if (aParsedUrl.auth) {
      url += aParsedUrl.auth + '@';
    }
    if (aParsedUrl.host) {
      url += aParsedUrl.host;
    }
    if (aParsedUrl.port) {
      url += ":" + aParsedUrl.port
    }
    if (aParsedUrl.path) {
      url += aParsedUrl.path;
    }
    return url;
  }
  exports.urlGenerate = urlGenerate;

  /**
   * Normalizes a path, or the path portion of a URL:
   *
   * - Replaces consequtive slashes with one slash.
   * - Removes unnecessary '.' parts.
   * - Removes unnecessary '<dir>/..' parts.
   *
   * Based on code in the Node.js 'path' core module.
   *
   * @param aPath The path or url to normalize.
   */
  function normalize(aPath) {
    var path = aPath;
    var url = urlParse(aPath);
    if (url) {
      if (!url.path) {
        return aPath;
      }
      path = url.path;
    }
    var isAbsolute = (path.charAt(0) === '/');

    var parts = path.split(/\/+/);
    for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
      part = parts[i];
      if (part === '.') {
        parts.splice(i, 1);
      } else if (part === '..') {
        up++;
      } else if (up > 0) {
        if (part === '') {
          // The first part is blank if the path is absolute. Trying to go
          // above the root is a no-op. Therefore we can remove all '..' parts
          // directly after the root.
          parts.splice(i + 1, up);
          up = 0;
        } else {
          parts.splice(i, 2);
          up--;
        }
      }
    }
    path = parts.join('/');

    if (path === '') {
      path = isAbsolute ? '/' : '.';
    }

    if (url) {
      url.path = path;
      return urlGenerate(url);
    }
    return path;
  }
  exports.normalize = normalize;

  /**
   * Joins two paths/URLs.
   *
   * @param aRoot The root path or URL.
   * @param aPath The path or URL to be joined with the root.
   *
   * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
   *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended
   *   first.
   * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
   *   is updated with the result and aRoot is returned. Otherwise the result
   *   is returned.
   *   - If aPath is absolute, the result is aPath.
   *   - Otherwise the two paths are joined with a slash.
   * - Joining for example 'http://' and 'www.example.com' is also supported.
   */
  function join(aRoot, aPath) {
    if (aRoot === "") {
      aRoot = ".";
    }
    if (aPath === "") {
      aPath = ".";
    }
    var aPathUrl = urlParse(aPath);
    var aRootUrl = urlParse(aRoot);
    if (aRootUrl) {
      aRoot = aRootUrl.path || '/';
    }

    // `join(foo, '//www.example.org')`
    if (aPathUrl && !aPathUrl.scheme) {
      if (aRootUrl) {
        aPathUrl.scheme = aRootUrl.scheme;
      }
      return urlGenerate(aPathUrl);
    }

    if (aPathUrl || aPath.match(dataUrlRegexp)) {
      return aPath;
    }

    // `join('http://', 'www.example.com')`
    if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
      aRootUrl.host = aPath;
      return urlGenerate(aRootUrl);
    }

    var joined = aPath.charAt(0) === '/'
      ? aPath
      : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);

    if (aRootUrl) {
      aRootUrl.path = joined;
      return urlGenerate(aRootUrl);
    }
    return joined;
  }
  exports.join = join;

  /**
   * Make a path relative to a URL or another path.
   *
   * @param aRoot The root path or URL.
   * @param aPath The path or URL to be made relative to aRoot.
   */
  function relative(aRoot, aPath) {
    if (aRoot === "") {
      aRoot = ".";
    }

    aRoot = aRoot.replace(/\/$/, '');

    // XXX: It is possible to remove this block, and the tests still pass!
    var url = urlParse(aRoot);
    if (aPath.charAt(0) == "/" && url && url.path == "/") {
      return aPath.slice(1);
    }

    return aPath.indexOf(aRoot + '/') === 0
      ? aPath.substr(aRoot.length + 1)
      : aPath;
  }
  exports.relative = relative;

  /**
   * Because behavior goes wacky when you set `__proto__` on objects, we
   * have to prefix all the strings in our set with an arbitrary character.
   *
   * See https://github.com/mozilla/source-map/pull/31 and
   * https://github.com/mozilla/source-map/issues/30
   *
   * @param String aStr
   */
  function toSetString(aStr) {
    return '$' + aStr;
  }
  exports.toSetString = toSetString;

  function fromSetString(aStr) {
    return aStr.substr(1);
  }
  exports.fromSetString = fromSetString;

  function strcmp(aStr1, aStr2) {
    var s1 = aStr1 || "";
    var s2 = aStr2 || "";
    return (s1 > s2) - (s1 < s2);
  }

  /**
   * Comparator between two mappings where the original positions are compared.
   *
   * Optionally pass in `true` as `onlyCompareGenerated` to consider two
   * mappings with the same original source/line/column, but different generated
   * line and column the same. Useful when searching for a mapping with a
   * stubbed out mapping.
   */
  function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
    var cmp;

    cmp = strcmp(mappingA.source, mappingB.source);
    if (cmp) {
      return cmp;
    }

    cmp = mappingA.originalLine - mappingB.originalLine;
    if (cmp) {
      return cmp;
    }

    cmp = mappingA.originalColumn - mappingB.originalColumn;
    if (cmp || onlyCompareOriginal) {
      return cmp;
    }

    cmp = strcmp(mappingA.name, mappingB.name);
    if (cmp) {
      return cmp;
    }

    cmp = mappingA.generatedLine - mappingB.generatedLine;
    if (cmp) {
      return cmp;
    }

    return mappingA.generatedColumn - mappingB.generatedColumn;
  };
  exports.compareByOriginalPositions = compareByOriginalPositions;

  /**
   * Comparator between two mappings where the generated positions are
   * compared.
   *
   * Optionally pass in `true` as `onlyCompareGenerated` to consider two
   * mappings with the same generated line and column, but different
   * source/name/original line and column the same. Useful when searching for a
   * mapping with a stubbed out mapping.
   */
  function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {
    var cmp;

    cmp = mappingA.generatedLine - mappingB.generatedLine;
    if (cmp) {
      return cmp;
    }

    cmp = mappingA.generatedColumn - mappingB.generatedColumn;
    if (cmp || onlyCompareGenerated) {
      return cmp;
    }

    cmp = strcmp(mappingA.source, mappingB.source);
    if (cmp) {
      return cmp;
    }

    cmp = mappingA.originalLine - mappingB.originalLine;
    if (cmp) {
      return cmp;
    }

    cmp = mappingA.originalColumn - mappingB.originalColumn;
    if (cmp) {
      return cmp;
    }

    return strcmp(mappingA.name, mappingB.name);
  };
  exports.compareByGeneratedPositions = compareByGeneratedPositions;

});

},{"amdefine":28}],28:[function(_dereq_,module,exports){
(function (process,__filename){
/** vim: et:ts=4:sw=4:sts=4
 * @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
 * Available via the MIT or new BSD license.
 * see: http://github.com/jrburke/amdefine for details
 */

/*jslint node: true */
/*global module, process */
'use strict';

/**
 * Creates a define for node.
 * @param {Object} module the "module" object that is defined by Node for the
 * current module.
 * @param {Function} [requireFn]. Node's require function for the current module.
 * It only needs to be passed in Node versions before 0.5, when module.require
 * did not exist.
 * @returns {Function} a define function that is usable for the current node
 * module.
 */
function amdefine(module, requireFn) {
    'use strict';
    var defineCache = {},
        loaderCache = {},
        alreadyCalled = false,
        path = _dereq_('path'),
        makeRequire, stringRequire;

    /**
     * Trims the . and .. from an array of path segments.
     * It will keep a leading path segment if a .. will become
     * the first path segment, to help with module name lookups,
     * which act like paths, but can be remapped. But the end result,
     * all paths that use this function should look normalized.
     * NOTE: this method MODIFIES the input array.
     * @param {Array} ary the array of path segments.
     */
    function trimDots(ary) {
        var i, part;
        for (i = 0; ary[i]; i+= 1) {
            part = ary[i];
            if (part === '.') {
                ary.splice(i, 1);
                i -= 1;
            } else if (part === '..') {
                if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
                    //End of the line. Keep at least one non-dot
                    //path segment at the front so it can be mapped
                    //correctly to disk. Otherwise, there is likely
                    //no path mapping for a path starting with '..'.
                    //This can still fail, but catches the most reasonable
                    //uses of ..
                    break;
                } else if (i > 0) {
                    ary.splice(i - 1, 2);
                    i -= 2;
                }
            }
        }
    }

    function normalize(name, baseName) {
        var baseParts;

        //Adjust any relative paths.
        if (name && name.charAt(0) === '.') {
            //If have a base name, try to normalize against it,
            //otherwise, assume it is a top-level require that will
            //be relative to baseUrl in the end.
            if (baseName) {
                baseParts = baseName.split('/');
                baseParts = baseParts.slice(0, baseParts.length - 1);
                baseParts = baseParts.concat(name.split('/'));
                trimDots(baseParts);
                name = baseParts.join('/');
            }
        }

        return name;
    }

    /**
     * Create the normalize() function passed to a loader plugin's
     * normalize method.
     */
    function makeNormalize(relName) {
        return function (name) {
            return normalize(name, relName);
        };
    }

    function makeLoad(id) {
        function load(value) {
            loaderCache[id] = value;
        }

        load.fromText = function (id, text) {
            //This one is difficult because the text can/probably uses
            //define, and any relative paths and requires should be relative
            //to that id was it would be found on disk. But this would require
            //bootstrapping a module/require fairly deeply from node core.
            //Not sure how best to go about that yet.
            throw new Error('amdefine does not implement load.fromText');
        };

        return load;
    }

    makeRequire = function (systemRequire, exports, module, relId) {
        function amdRequire(deps, callback) {
            if (typeof deps === 'string') {
                //Synchronous, single module require('')
                return stringRequire(systemRequire, exports, module, deps, relId);
            } else {
                //Array of dependencies with a callback.

                //Convert the dependencies to modules.
                deps = deps.map(function (depName) {
                    return stringRequire(systemRequire, exports, module, depName, relId);
                });

                //Wait for next tick to call back the require call.
                process.nextTick(function () {
                    callback.apply(null, deps);
                });
            }
        }

        amdRequire.toUrl = function (filePath) {
            if (filePath.indexOf('.') === 0) {
                return normalize(filePath, path.dirname(module.filename));
            } else {
                return filePath;
            }
        };

        return amdRequire;
    };

    //Favor explicit value, passed in if the module wants to support Node 0.4.
    requireFn = requireFn || function req() {
        return module.require.apply(module, arguments);
    };

    function runFactory(id, deps, factory) {
        var r, e, m, result;

        if (id) {
            e = loaderCache[id] = {};
            m = {
                id: id,
                uri: __filename,
                exports: e
            };
            r = makeRequire(requireFn, e, m, id);
        } else {
            //Only support one define call per file
            if (alreadyCalled) {
                throw new Error('amdefine with no module ID cannot be called more than once per file.');
            }
            alreadyCalled = true;

            //Use the real variables from node
            //Use module.exports for exports, since
            //the exports in here is amdefine exports.
            e = module.exports;
            m = module;
            r = makeRequire(requireFn, e, m, module.id);
        }

        //If there are dependencies, they are strings, so need
        //to convert them to dependency values.
        if (deps) {
            deps = deps.map(function (depName) {
                return r(depName);
            });
        }

        //Call the factory with the right dependencies.
        if (typeof factory === 'function') {
            result = factory.apply(m.exports, deps);
        } else {
            result = factory;
        }

        if (result !== undefined) {
            m.exports = result;
            if (id) {
                loaderCache[id] = m.exports;
            }
        }
    }

    stringRequire = function (systemRequire, exports, module, id, relId) {
        //Split the ID by a ! so that
        var index = id.indexOf('!'),
            originalId = id,
            prefix, plugin;

        if (index === -1) {
            id = normalize(id, relId);

            //Straight module lookup. If it is one of the special dependencies,
            //deal with it, otherwise, delegate to node.
            if (id === 'require') {
                return makeRequire(systemRequire, exports, module, relId);
            } else if (id === 'exports') {
                return exports;
            } else if (id === 'module') {
                return module;
            } else if (loaderCache.hasOwnProperty(id)) {
                return loaderCache[id];
            } else if (defineCache[id]) {
                runFactory.apply(null, defineCache[id]);
                return loaderCache[id];
            } else {
                if(systemRequire) {
                    return systemRequire(originalId);
                } else {
                    throw new Error('No module with ID: ' + id);
                }
            }
        } else {
            //There is a plugin in play.
            prefix = id.substring(0, index);
            id = id.substring(index + 1, id.length);

            plugin = stringRequire(systemRequire, exports, module, prefix, relId);

            if (plugin.normalize) {
                id = plugin.normalize(id, makeNormalize(relId));
            } else {
                //Normalize the ID normally.
                id = normalize(id, relId);
            }

            if (loaderCache[id]) {
                return loaderCache[id];
            } else {
                plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});

                return loaderCache[id];
            }
        }
    };

    //Create a define function specific to the module asking for amdefine.
    function define(id, deps, factory) {
        if (Array.isArray(id)) {
            factory = deps;
            deps = id;
            id = undefined;
        } else if (typeof id !== 'string') {
            factory = id;
            id = deps = undefined;
        }

        if (deps && !Array.isArray(deps)) {
            factory = deps;
            deps = undefined;
        }

        if (!deps) {
            deps = ['require', 'exports', 'module'];
        }

        //Set up properties for this module. If an ID, then use
        //internal cache. If no ID, then use the external variables
        //for this node module.
        if (id) {
            //Put the module in deep freeze until there is a
            //require call for it.
            defineCache[id] = [id, deps, factory];
        } else {
            runFactory(id, deps, factory);
        }
    }

    //define.require, which has access to all the values in the
    //cache. Useful for AMD modules that all have IDs in the file,
    //but need to finally export a value to node based on one of those
    //IDs.
    define.require = function (id) {
        if (loaderCache[id]) {
            return loaderCache[id];
        }

        if (defineCache[id]) {
            runFactory.apply(null, defineCache[id]);
            return loaderCache[id];
        }
    };

    define.amd = {};

    return define;
}

module.exports = amdefine;

}).call(this,_dereq_('_process'),"/node_modules/css-parse/node_modules/css/node_modules/source-map/node_modules/amdefine/amdefine.js")
},{"_process":6,"path":5}],29:[function(_dereq_,module,exports){
// Copyright 2014 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)

var path = _dereq_("path")

"use strict"

function urix(aPath) {
  if (path.sep === "\\") {
    return aPath
      .replace(/\\/g, "/")
      .replace(/^[a-z]:\/?/i, "/")
  }
  return aPath
}

module.exports = urix

},{"path":5}],30:[function(_dereq_,module,exports){
/*
 Copyright (C) 2013 Sencha Inc.
 Copyright (C) 2012 Sencha Inc.
 Copyright (C) 2011 Sencha Inc.

 Author: Ariya Hidayat.

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:

 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
*/

/*jslint continue: true, indent: 4 */
/*global exports:true, module:true, window:true */

(function () {

    'use strict';

    function cssbeautify(style, opt) {

        var options, index = 0, length = style.length, blocks, formatted = '',
            ch, ch2, str, state, State, depth, quote, comment,
            openbracesuffix = true,
            autosemicolon = false,
            trimRight;

        options = arguments.length > 1 ? opt : {};
        if (typeof options.indent === 'undefined') {
            options.indent = '    ';
        }
        if (typeof options.openbrace === 'string') {
            openbracesuffix = (options.openbrace === 'end-of-line');
        }
        if (typeof options.autosemicolon === 'boolean') {
            autosemicolon = options.autosemicolon;
        }

        function isWhitespace(c) {
            return (c === ' ') || (c === '\n') || (c === '\t') || (c === '\r') || (c === '\f');
        }

        function isQuote(c) {
            return (c === '\'') || (c === '"');
        }

        // FIXME: handle Unicode characters
        function isName(c) {
            return (ch >= 'a' && ch <= 'z') ||
                (ch >= 'A' && ch <= 'Z') ||
                (ch >= '0' && ch <= '9') ||
                '-_*.:#[]'.indexOf(c) >= 0;
        }

        function appendIndent() {
            var i;
            for (i = depth; i > 0; i -= 1) {
                formatted += options.indent;
            }
        }

        function openBlock() {
            formatted = trimRight(formatted);
            if (openbracesuffix) {
                formatted += ' {';
            } else {
                formatted += '\n';
                appendIndent();
                formatted += '{';
            }
            if (ch2 !== '\n') {
                formatted += '\n';
            }
            depth += 1;
        }

        function closeBlock() {
            var last;
            depth -= 1;
            formatted = trimRight(formatted);

            if (formatted.length > 0 && autosemicolon) {
                last = formatted.charAt(formatted.length - 1);
                if (last !== ';' && last !== '{') {
                    formatted += ';';
                }
            }

            formatted += '\n';
            appendIndent();
            formatted += '}';
            blocks.push(formatted);
            formatted = '';
        }

        if (String.prototype.trimRight) {
            trimRight = function (s) {
                return s.trimRight();
            };
        } else {
            // old Internet Explorer
            trimRight = function (s) {
                return s.replace(/\s+$/, '');
            };
        }

        State = {
            Start: 0,
            AtRule: 1,
            Block: 2,
            Selector: 3,
            Ruleset: 4,
            Property: 5,
            Separator: 6,
            Expression: 7,
            URL: 8
        };

        depth = 0;
        state = State.Start;
        comment = false;
        blocks = [];

        // We want to deal with LF (\n) only
        style = style.replace(/\r\n/g, '\n');

        while (index < length) {
            ch = style.charAt(index);
            ch2 = style.charAt(index + 1);
            index += 1;

            // Inside a string literal?
            if (isQuote(quote)) {
                formatted += ch;
                if (ch === quote) {
                    quote = null;
                }
                if (ch === '\\' && ch2 === quote) {
                    // Don't treat escaped character as the closing quote
                    formatted += ch2;
                    index += 1;
                }
                continue;
            }

            // Starting a string literal?
            if (isQuote(ch)) {
                formatted += ch;
                quote = ch;
                continue;
            }

            // Comment
            if (comment) {
                formatted += ch;
                if (ch === '*' && ch2 === '/') {
                    comment = false;
                    formatted += ch2;
                    index += 1;
                }
                continue;
            }
            if (ch === '/' && ch2 === '*') {
                comment = true;
                formatted += ch;
                formatted += ch2;
                index += 1;
                continue;
            }

            if (state === State.Start) {

                if (blocks.length === 0) {
                    if (isWhitespace(ch) && formatted.length === 0) {
                        continue;
                    }
                }

                // Copy white spaces and control characters
                if (ch <= ' ' || ch.charCodeAt(0) >= 128) {
                    state = State.Start;
                    formatted += ch;
                    continue;
                }

                // Selector or at-rule
                if (isName(ch) || (ch === '@')) {

                    // Clear trailing whitespaces and linefeeds.
                    str = trimRight(formatted);

                    if (str.length === 0) {
                        // If we have empty string after removing all the trailing
                        // spaces, that means we are right after a block.
                        // Ensure a blank line as the separator.
                        if (blocks.length > 0) {
                            formatted = '\n\n';
                        }
                    } else {
                        // After finishing a ruleset or directive statement,
                        // there should be one blank line.
                        if (str.charAt(str.length - 1) === '}' ||
                                str.charAt(str.length - 1) === ';') {

                            formatted = str + '\n\n';
                        } else {
                            // After block comment, keep all the linefeeds but
                            // start from the first column (remove whitespaces prefix).
                            while (true) {
                                ch2 = formatted.charAt(formatted.length - 1);
                                if (ch2 !== ' ' && ch2.charCodeAt(0) !== 9) {
                                    break;
                                }
                                formatted = formatted.substr(0, formatted.length - 1);
                            }
                        }
                    }
                    formatted += ch;
                    state = (ch === '@') ? State.AtRule : State.Selector;
                    continue;
                }
            }

            if (state === State.AtRule) {

                // ';' terminates a statement.
                if (ch === ';') {
                    formatted += ch;
                    state = State.Start;
                    continue;
                }

                // '{' starts a block
                if (ch === '{') {
                    str = trimRight(formatted);
                    openBlock();
                    state = (str === '@font-face') ? State.Ruleset : State.Block;
                    continue;
                }

                formatted += ch;
                continue;
            }

            if (state === State.Block) {

                // Selector
                if (isName(ch)) {

                    // Clear trailing whitespaces and linefeeds.
                    str = trimRight(formatted);

                    if (str.length === 0) {
                        // If we have empty string after removing all the trailing
                        // spaces, that means we are right after a block.
                        // Ensure a blank line as the separator.
                        if (blocks.length > 0) {
                            formatted = '\n\n';
                        }
                    } else {
                        // Insert blank line if necessary.
                        if (str.charAt(str.length - 1) === '}') {
                            formatted = str + '\n\n';
                        } else {
                            // After block comment, keep all the linefeeds but
                            // start from the first column (remove whitespaces prefix).
                            while (true) {
                                ch2 = formatted.charAt(formatted.length - 1);
                                if (ch2 !== ' ' && ch2.charCodeAt(0) !== 9) {
                                    break;
                                }
                                formatted = formatted.substr(0, formatted.length - 1);
                            }
                        }
                    }

                    appendIndent();
                    formatted += ch;
                    state = State.Selector;
                    continue;
                }

                // '}' resets the state.
                if (ch === '}') {
                    closeBlock();
                    state = State.Start;
                    continue;
                }

                formatted += ch;
                continue;
            }

            if (state === State.Selector) {

                // '{' starts the ruleset.
                if (ch === '{') {
                    openBlock();
                    state = State.Ruleset;
                    continue;
                }

                // '}' resets the state.
                if (ch === '}') {
                    closeBlock();
                    state = State.Start;
                    continue;
                }

                formatted += ch;
                continue;
            }

            if (state === State.Ruleset) {

                // '}' finishes the ruleset.
                if (ch === '}') {
                    closeBlock();
                    state = State.Start;
                    if (depth > 0) {
                        state = State.Block;
                    }
                    continue;
                }

                // Make sure there is no blank line or trailing spaces inbetween
                if (ch === '\n') {
                    formatted = trimRight(formatted);
                    formatted += '\n';
                    continue;
                }

                // property name
                if (!isWhitespace(ch)) {
                    formatted = trimRight(formatted);
                    formatted += '\n';
                    appendIndent();
                    formatted += ch;
                    state = State.Property;
                    continue;
                }
                formatted += ch;
                continue;
            }

            if (state === State.Property) {

                // ':' concludes the property.
                if (ch === ':') {
                    formatted = trimRight(formatted);
                    formatted += ': ';
                    state = State.Expression;
                    if (isWhitespace(ch2)) {
                        state = State.Separator;
                    }
                    continue;
                }

                // '}' finishes the ruleset.
                if (ch === '}') {
                    closeBlock();
                    state = State.Start;
                    if (depth > 0) {
                        state = State.Block;
                    }
                    continue;
                }

                formatted += ch;
                continue;
            }

            if (state === State.Separator) {

                // Non-whitespace starts the expression.
                if (!isWhitespace(ch)) {
                    formatted += ch;
                    state = State.Expression;
                    continue;
                }

                // Anticipate string literal.
                if (isQuote(ch2)) {
                    state = State.Expression;
                }

                continue;
            }

            if (state === State.Expression) {

                // '}' finishes the ruleset.
                if (ch === '}') {
                    closeBlock();
                    state = State.Start;
                    if (depth > 0) {
                        state = State.Block;
                    }
                    continue;
                }

                // ';' completes the declaration.
                if (ch === ';') {
                    formatted = trimRight(formatted);
                    formatted += ';\n';
                    state = State.Ruleset;
                    continue;
                }

                formatted += ch;

                if (ch === '(') {
                    if (formatted.charAt(formatted.length - 2) === 'l' &&
                            formatted.charAt(formatted.length - 3) === 'r' &&
                            formatted.charAt(formatted.length - 4) === 'u') {

                        // URL starts with '(' and closes with ')'.
                        state = State.URL;
                        continue;
                    }
                }

                continue;
            }

            if (state === State.URL) {


                // ')' finishes the URL (only if it is not escaped).
                if (ch === ')' && formatted.charAt(formatted.length - 1 !== '\\')) {
                    formatted += ch;
                    state = State.Expression;
                    continue;
                }
            }

            // The default action is to copy the character (to prevent
            // infinite loop).
            formatted += ch;
        }

        formatted = blocks.join('') + formatted;

        return formatted;
    }

    if (typeof exports !== 'undefined') {
        // Node.js module.
        module.exports = exports = cssbeautify;
    } else if (typeof window === 'object') {
        // Browser loading.
        window.cssbeautify = cssbeautify;
    }

}());

},{}],31:[function(_dereq_,module,exports){
!function() {
  var d3 = {
    version: "3.5.2"
  };
  if (!Date.now) Date.now = function() {
    return +new Date();
  };
  var d3_arraySlice = [].slice, d3_array = function(list) {
    return d3_arraySlice.call(list);
  };
  var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window;
  try {
    d3_array(d3_documentElement.childNodes)[0].nodeType;
  } catch (e) {
    d3_array = function(list) {
      var i = list.length, array = new Array(i);
      while (i--) array[i] = list[i];
      return array;
    };
  }
  try {
    d3_document.createElement("div").style.setProperty("opacity", 0, "");
  } catch (error) {
    var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
    d3_element_prototype.setAttribute = function(name, value) {
      d3_element_setAttribute.call(this, name, value + "");
    };
    d3_element_prototype.setAttributeNS = function(space, local, value) {
      d3_element_setAttributeNS.call(this, space, local, value + "");
    };
    d3_style_prototype.setProperty = function(name, value, priority) {
      d3_style_setProperty.call(this, name, value + "", priority);
    };
  }
  d3.ascending = d3_ascending;
  function d3_ascending(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) if ((b = array[i]) != null && b >= b) {
        a = b;
        break;
      }
      while (++i < n) if ((b = array[i]) != null && a > b) a = b;
    } else {
      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
        a = b;
        break;
      }
      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) if ((b = array[i]) != null && b >= b) {
        a = b;
        break;
      }
      while (++i < n) if ((b = array[i]) != null && b > a) a = b;
    } else {
      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
        a = b;
        break;
      }
      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) if ((b = array[i]) != null && b >= b) {
        a = c = b;
        break;
      }
      while (++i < n) if ((b = array[i]) != null) {
        if (a > b) a = b;
        if (c < b) c = b;
      }
    } else {
      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
        a = c = b;
        break;
      }
      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 ];
  };
  function d3_number(x) {
    return x === null ? NaN : +x;
  }
  function d3_numeric(x) {
    return !isNaN(x);
  }
  d3.sum = function(array, f) {
    var s = 0, n = array.length, a, i = -1;
    if (arguments.length === 1) {
      while (++i < n) if (d3_numeric(a = +array[i])) s += a;
    } else {
      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
    }
    return s;
  };
  d3.mean = function(array, f) {
    var s = 0, n = array.length, a, i = -1, j = n;
    if (arguments.length === 1) {
      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
    } else {
      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
    }
    if (j) return s / j;
  };
  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) {
    var numbers = [], n = array.length, a, i = -1;
    if (arguments.length === 1) {
      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
    } else {
      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
    }
    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
  };
  d3.variance = function(array, f) {
    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;
    if (arguments.length === 1) {
      while (++i < n) {
        if (d3_numeric(a = d3_number(array[i]))) {
          d = a - m;
          m += d / ++j;
          s += d * (a - m);
        }
      }
    } else {
      while (++i < n) {
        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {
          d = a - m;
          m += d / ++j;
          s += d * (a - m);
        }
      }
    }
    if (j > 1) return s / (j - 1);
  };
  d3.deviation = function() {
    var v = d3.variance.apply(this, arguments);
    return v ? Math.sqrt(v) : v;
  };
  function d3_bisector(compare) {
    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 (compare(a[mid], x) < 0) 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 (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;
        }
        return lo;
      }
    };
  }
  var d3_bisect = d3_bisector(d3_ascending);
  d3.bisectLeft = d3_bisect.left;
  d3.bisect = d3.bisectRight = d3_bisect.right;
  d3.bisector = function(f) {
    return d3_bisector(f.length === 1 ? function(d, x) {
      return d3_ascending(f(d), x);
    } : f);
  };
  d3.shuffle = function(array, i0, i1) {
    if ((m = arguments.length) < 3) {
      i1 = array.length;
      if (m < 2) i0 = 0;
    }
    var m = i1 - i0, t, i;
    while (m) {
      i = Math.random() * m-- | 0;
      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
    }
    return array;
  };
  d3.permute = function(array, indexes) {
    var i = indexes.length, permutes = new Array(i);
    while (i--) permutes[i] = array[indexes[i]];
    return permutes;
  };
  d3.pairs = function(array) {
    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];
    return pairs;
  };
  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) {
    var n = arrays.length, m, i = -1, j = 0, merged, array;
    while (++i < n) j += arrays[i].length;
    merged = new Array(j);
    while (--n >= 0) {
      array = arrays[n];
      m = array.length;
      while (--m >= 0) {
        merged[--j] = array[m];
      }
    }
    return merged;
  };
  var abs = Math.abs;
  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(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) {
    for (var key in properties) {
      Object.defineProperty(ctor.prototype, key, {
        value: properties[key],
        enumerable: false
      });
    }
  }
  d3.map = function(object, f) {
    var map = new d3_Map();
    if (object instanceof d3_Map) {
      object.forEach(function(key, value) {
        map.set(key, value);
      });
    } else if (Array.isArray(object)) {
      var i = -1, n = object.length, o;
      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);
    } else {
      for (var key in object) map.set(key, object[key]);
    }
    return map;
  };
  function d3_Map() {
    this._ = Object.create(null);
  }
  var d3_map_proto = "__proto__", d3_map_zero = "\x00";
  d3_class(d3_Map, {
    has: d3_map_has,
    get: function(key) {
      return this._[d3_map_escape(key)];
    },
    set: function(key, value) {
      return this._[d3_map_escape(key)] = value;
    },
    remove: d3_map_remove,
    keys: d3_map_keys,
    values: function() {
      var values = [];
      for (var key in this._) values.push(this._[key]);
      return values;
    },
    entries: function() {
      var entries = [];
      for (var key in this._) entries.push({
        key: d3_map_unescape(key),
        value: this._[key]
      });
      return entries;
    },
    size: d3_map_size,
    empty: d3_map_empty,
    forEach: function(f) {
      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
    }
  });
  function d3_map_escape(key) {
    return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
  }
  function d3_map_unescape(key) {
    return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
  }
  function d3_map_has(key) {
    return d3_map_escape(key) in this._;
  }
  function d3_map_remove(key) {
    return (key = d3_map_escape(key)) in this._ && delete this._[key];
  }
  function d3_map_keys() {
    var keys = [];
    for (var key in this._) keys.push(d3_map_unescape(key));
    return keys;
  }
  function d3_map_size() {
    var size = 0;
    for (var key in this._) ++size;
    return size;
  }
  function d3_map_empty() {
    for (var key in this._) return false;
    return true;
  }
  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, n = array.length; i < n; ++i) set.add(array[i]);
    return set;
  };
  function d3_Set() {
    this._ = Object.create(null);
  }
  d3_class(d3_Set, {
    has: d3_map_has,
    add: function(key) {
      this._[d3_map_escape(key += "")] = true;
      return key;
    },
    remove: d3_map_remove,
    values: d3_map_keys,
    size: d3_map_size,
    empty: d3_map_empty,
    forEach: function(f) {
      for (var key in this._) f.call(this, d3_map_unescape(key));
    }
  });
  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.slice(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" ];
  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.slice(i + 1);
      type = type.slice(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.matches || 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 = Sizzle;
    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
Download .txt
gitextract_sx0tpi0h/

├── .csscomb.json
├── .gitignore
├── Gruntfile.js
├── README.md
├── STATISTICS.md
├── atomic/
│   ├── .npmrc
│   ├── Gulpfile.js
│   ├── README.md
│   ├── config.js
│   ├── index.html
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── bem-bootstrap-4/
│   ├── .npmrc
│   ├── Gulpfile.js
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── style.css
│   └── style.scss
├── bem-css/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── bem-flexboxgrid/
│   ├── .npmrc
│   ├── Gulpfile.js
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── style.css
│   └── style.scss
├── bem-platform/
│   ├── .bem/
│   │   └── templates/
│   │       └── bemjson.js
│   ├── .bemrc
│   ├── .enb/
│   │   └── make.js
│   ├── .gitignore
│   ├── .npmrc
│   ├── README.md
│   ├── README.ru.md
│   ├── blocks/
│   │   ├── button/
│   │   │   └── button.css
│   │   ├── content/
│   │   │   └── content.css
│   │   ├── footer/
│   │   │   └── footer.css
│   │   ├── form/
│   │   │   └── form.bemhtml.js
│   │   ├── header/
│   │   │   ├── header.css
│   │   │   └── header.deps.js
│   │   ├── heading/
│   │   │   ├── heading.bemhtml.js
│   │   │   └── heading.post.css
│   │   ├── main/
│   │   │   ├── main.bemhtml.js
│   │   │   ├── main.css
│   │   │   └── main.deps.js
│   │   ├── nav/
│   │   │   ├── nav.bemhtml.js
│   │   │   └── nav.css
│   │   ├── news/
│   │   │   └── news.css
│   │   ├── page/
│   │   │   ├── page.bemhtml.js
│   │   │   └── page.css
│   │   ├── search/
│   │   │   └── search.css
│   │   ├── sidebar/
│   │   │   └── sidebar.css
│   │   ├── text/
│   │   │   └── text.css
│   │   └── title/
│   │       └── title.css
│   ├── gulpfile.js
│   ├── package.json
│   ├── pages/
│   │   └── index/
│   │       ├── index.bemdecl.js
│   │       ├── index.bemhtml.bemdecl.js
│   │       ├── index.bemhtml.deps.js
│   │       ├── index.bemhtml.js
│   │       ├── index.bemjson.js
│   │       ├── index.browser.bemhtml.js
│   │       ├── index.browser.js
│   │       ├── index.css
│   │       ├── index.deps.js
│   │       ├── index.html
│   │       └── index.js
│   └── specificity-graph/
│       ├── example.js
│       ├── index.html
│       ├── specificity-graph-standalone.js
│       └── specificity.json
├── bem-sass/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── style.css
│   └── style.scss
├── css-modules/
│   ├── .npmrc
│   ├── README.md
│   ├── app/
│   │   ├── index.js
│   │   └── styles.css
│   ├── build/
│   │   ├── bundle.js
│   │   └── style.css
│   ├── content/
│   │   ├── index.js
│   │   └── styles.css
│   ├── footer/
│   │   ├── index.js
│   │   └── styles.css
│   ├── header/
│   │   ├── index.js
│   │   └── styles.css
│   ├── index.html
│   ├── index.js
│   ├── main/
│   │   ├── index.js
│   │   └── styles.css
│   ├── nav/
│   │   ├── index.js
│   │   └── styles.css
│   ├── news/
│   │   ├── index.js
│   │   └── styles.css
│   ├── package.json
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── webpack.config.js
├── index.js
├── oocss/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── organic/
│   ├── .npmrc
│   ├── Gruntfile.js
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── scss/
│   │   ├── app.scss
│   │   ├── atoms/
│   │   │   ├── _atoms.scss
│   │   │   ├── _box-model.scss
│   │   │   ├── _break-point.scss
│   │   │   ├── _clearfix.scss
│   │   │   ├── _colors.scss
│   │   │   ├── _cursor.scss
│   │   │   ├── _display.scss
│   │   │   ├── _effects.scss
│   │   │   ├── _floats.scss
│   │   │   ├── _keyframes.scss
│   │   │   ├── _position.scss
│   │   │   ├── _sizes.scss
│   │   │   ├── _text.scss
│   │   │   ├── _transition.scss
│   │   │   ├── _vendors.scss
│   │   │   └── _widths.scss
│   │   ├── common.scss
│   │   ├── main.scss
│   │   ├── molecules/
│   │   │   ├── _body.scss
│   │   │   ├── _button.scss
│   │   │   ├── _content.scss
│   │   │   ├── _footer.scss
│   │   │   ├── _header.scss
│   │   │   ├── _html.scss
│   │   │   ├── _label.scss
│   │   │   ├── _main.scss
│   │   │   ├── _nav.scss
│   │   │   ├── _news.scss
│   │   │   └── _wrapper.scss
│   │   └── organelles/
│   │       └── _organelles.scss
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── package.json
├── raw/
│   ├── index.html
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   └── style.css
├── smacss/
│   ├── basic.css
│   ├── build.css
│   ├── index.html
│   ├── layouts.css
│   ├── modules.css
│   ├── specificity-graph/
│   │   ├── example.js
│   │   ├── index.html
│   │   ├── specificity-graph-standalone.js
│   │   └── specificity.json
│   ├── states.css
│   └── themes.css
└── statistics.xlsx
Download .txt
Showing preview only (488K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6176 symbols across 35 files)

FILE: atomic/specificity-graph/example.js
  function defaultExample (line 7) | function defaultExample() {

FILE: atomic/specificity-graph/specificity-graph-standalone.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function mousemove (line 228) | function mousemove() {
  function normalizeArray (line 330) | function normalizeArray(parts, allowAboveRoot) {
  function trim (line 439) | function trim(arr) {
  function filter (line 512) | function filter (xs, f) {
  function noop (line 599) | function noop() {}
  function updatePosition (line 645) | function updatePosition(str) {
  function position (line 656) | function position() {
  function Position (line 669) | function Position(start) {
  function error (line 685) | function error(msg) {
  function stylesheet (line 703) | function stylesheet() {
  function open (line 716) | function open() {
  function close (line 724) | function close() {
  function rules (line 732) | function rules() {
  function match (line 750) | function match(re) {
  function whitespace (line 763) | function whitespace() {
  function comments (line 771) | function comments(rules) {
  function comment (line 786) | function comment() {
  function selector (line 814) | function selector() {
  function declaration (line 834) | function declaration() {
  function declarations (line 864) | function declarations() {
  function keyframe (line 887) | function keyframe() {
  function atkeyframes (line 910) | function atkeyframes() {
  function atsupports (line 945) | function atsupports() {
  function athost (line 969) | function athost() {
  function atmedia (line 991) | function atmedia() {
  function atcustommedia (line 1016) | function atcustommedia() {
  function atpage (line 1032) | function atpage() {
  function atdocument (line 1062) | function atdocument() {
  function atfontface (line 1088) | function atfontface() {
  function _compileAtrule (line 1134) | function _compileAtrule(name) {
  function atrule (line 1150) | function atrule() {
  function rule (line 1170) | function rule() {
  function trim (line 1191) | function trim(str) {
  function addParent (line 1199) | function addParent(obj, parent) {
  function Compiler (line 1240) | function Compiler(opts) {
  function Compiler (line 1295) | function Compiler(options) {
  function Compiler (line 1496) | function Compiler(options) {
  function mixin (line 1808) | function mixin(compiler) {
  function resolveUrl (line 1949) | function resolveUrl(/* ...urls */) {
  function callbackAsync (line 2063) | function callbackAsync(callback, error, result) {
  function parseMapToJSON (line 2067) | function parseMapToJSON(string) {
  function resolveSourceMap (line 2073) | function resolveSourceMap(code, codeUrl, read, callback) {
  function resolveSourceMapSync (line 2096) | function resolveSourceMapSync(code, codeUrl, read) {
  function resolveSourceMapHelper (line 2108) | function resolveSourceMapHelper(code, codeUrl) {
  function resolveSources (line 2141) | function resolveSources(map, mapUrl, read, options, callback) {
  function resolveSourcesSync (line 2181) | function resolveSourcesSync(map, mapUrl, read, options) {
  function resolveSourcesHelper (line 2201) | function resolveSourcesHelper(map, mapUrl, options, fn) {
  function resolve (line 2221) | function resolve(code, codeUrl, read, options, callback) {
  function resolveSync (line 2244) | function resolveSync(code, codeUrl, read, options) {
  function ArraySet (line 2298) | function ArraySet() {
  function toVLQSigned (line 2450) | function toVLQSigned(aValue) {
  function fromVLQSigned (line 2462) | function fromVLQSigned(aValue) {
  function recursiveSearch (line 2586) | function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
  function SourceMapConsumer (line 2695) | function SourceMapConsumer(aSourceMap) {
  function SourceMapGenerator (line 3157) | function SourceMapGenerator(aArgs) {
  function SourceNode (line 3570) | function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  function addMappingWithCode (line 3679) | function addMappingWithCode(mapping, code) {
  function getArg (line 3968) | function getArg(aArgs, aName, aDefaultValue) {
  function urlParse (line 3982) | function urlParse(aUrl) {
  function urlGenerate (line 3997) | function urlGenerate(aParsedUrl) {
  function normalize (line 4030) | function normalize(aPath) {
  function join (line 4091) | function join(aRoot, aPath) {
  function relative (line 4140) | function relative(aRoot, aPath) {
  function toSetString (line 4168) | function toSetString(aStr) {
  function fromSetString (line 4173) | function fromSetString(aStr) {
  function strcmp (line 4178) | function strcmp(aStr1, aStr2) {
  function compareByOriginalPositions (line 4192) | function compareByOriginalPositions(mappingA, mappingB, onlyCompareOrigi...
  function compareByGeneratedPositions (line 4233) | function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGene...
  function amdefine (line 4289) | function amdefine(module, requireFn) {
  function urix (line 4578) | function urix(aPath) {
  function cssbeautify (line 4623) | function cssbeautify(style, opt) {
  function d3_ascending (line 5096) | function d3_ascending(a, b) {
  function d3_number (line 5159) | function d3_number(x) {
  function d3_numeric (line 5162) | function d3_numeric(x) {
  function d3_bisector (line 5221) | function d3_bisector(compare) {
  function d3_zipLength (line 5282) | function d3_zipLength(d) {
  function d3_range_integerScale (line 5334) | function d3_range_integerScale(x) {
  function d3_class (line 5339) | function d3_class(ctor, properties) {
  function d3_Map (line 5361) | function d3_Map() {
  function d3_map_escape (line 5394) | function d3_map_escape(key) {
  function d3_map_unescape (line 5397) | function d3_map_unescape(key) {
  function d3_map_has (line 5400) | function d3_map_has(key) {
  function d3_map_remove (line 5403) | function d3_map_remove(key) {
  function d3_map_keys (line 5406) | function d3_map_keys() {
  function d3_map_size (line 5411) | function d3_map_size() {
  function d3_map_empty (line 5416) | function d3_map_empty() {
  function map (line 5422) | function map(mapType, array, depth) {
  function entries (line 5446) | function entries(map, depth) {
  function d3_Set (line 5488) | function d3_Set() {
  function d3_rebind (line 5511) | function d3_rebind(target, source, method) {
  function d3_vendorSymbol (line 5517) | function d3_vendorSymbol(object, name) {
  function d3_noop (line 5526) | function d3_noop() {}
  function d3_dispatch (line 5532) | function d3_dispatch() {}
  function d3_dispatch_event (line 5547) | function d3_dispatch_event(dispatch) {
  function d3_eventPreventDefault (line 5570) | function d3_eventPreventDefault() {
  function d3_eventSource (line 5573) | function d3_eventSource() {
  function d3_eventDispatch (line 5578) | function d3_eventDispatch(target) {
  function d3_selection (line 5604) | function d3_selection(groups) {
  function d3_selection_selector (line 5643) | function d3_selection_selector(selector) {
  function d3_selection_selectorAll (line 5661) | function d3_selection_selectorAll(selector) {
  function d3_selection_attr (line 5699) | function d3_selection_attr(name, value) {
  function d3_collapse (line 5723) | function d3_collapse(s) {
  function d3_selection_classedRe (line 5743) | function d3_selection_classedRe(name) {
  function d3_selection_classes (line 5746) | function d3_selection_classes(name) {
  function d3_selection_classed (line 5749) | function d3_selection_classed(name, value) {
  function d3_selection_classedName (line 5762) | function d3_selection_classedName(name) {
  function d3_selection_style (line 5788) | function d3_selection_style(name, value, priority) {
  function d3_selection_property (line 5809) | function d3_selection_property(name, value) {
  function d3_selection_creator (line 5848) | function d3_selection_creator(name) {
  function d3_selectionRemove (line 5865) | function d3_selectionRemove() {
  function bind (line 5880) | function bind(group, groupData) {
  function d3_selection_dataNode (line 5948) | function d3_selection_dataNode(data) {
  function d3_selection_filter (line 5970) | function d3_selection_filter(selector) {
  function d3_selection_sortComparator (line 5991) | function d3_selection_sortComparator(comparator) {
  function d3_selection_each (line 6002) | function d3_selection_each(groups, callback) {
  function d3_selection_enter (line 6034) | function d3_selection_enter(selection) {
  function d3_selection_enterInsertBefore (line 6067) | function d3_selection_enterInsertBefore(enter) {
  function d3_selection_on (line 6101) | function d3_selection_on(type, listener, capture) {
  function d3_selection_onListener (line 6138) | function d3_selection_onListener(listener, argumentz) {
  function d3_selection_onFilter (line 6150) | function d3_selection_onFilter(listener, argumentz) {
  function d3_event_dragSuppress (line 6160) | function d3_event_dragSuppress() {
  function d3_mousePoint (line 6185) | function d3_mousePoint(container, e) {
  function drag (line 6221) | function drag() {
  function dragstart (line 6224) | function dragstart(id, position, subject, move, end) {
  function d3_behavior_dragTouchId (line 6268) | function d3_behavior_dragTouchId() {
  function d3_behavior_dragTouchSubject (line 6271) | function d3_behavior_dragTouchSubject() {
  function d3_behavior_dragMouseSubject (line 6274) | function d3_behavior_dragMouseSubject() {
  function d3_sgn (line 6286) | function d3_sgn(x) {
  function d3_cross2d (line 6289) | function d3_cross2d(a, b, c) {
  function d3_acos (line 6292) | function d3_acos(x) {
  function d3_asin (line 6295) | function d3_asin(x) {
  function d3_sinh (line 6298) | function d3_sinh(x) {
  function d3_cosh (line 6301) | function d3_cosh(x) {
  function d3_tanh (line 6304) | function d3_tanh(x) {
  function d3_haversin (line 6307) | function d3_haversin(x) {
  function interpolate (line 6314) | function interpolate(t) {
  function zoom (line 6331) | function zoom(g) {
  function location (line 6431) | function location(p) {
  function point (line 6434) | function point(l) {
  function scaleTo (line 6437) | function scaleTo(s) {
  function translateTo (line 6440) | function translateTo(p, l) {
  function zoomTo (line 6445) | function zoomTo(that, p, l, k) {
  function rescale (line 6457) | function rescale() {
  function zoomstarted (line 6465) | function zoomstarted(dispatch) {
  function zoomed (line 6470) | function zoomed(dispatch) {
  function zoomended (line 6478) | function zoomended(dispatch) {
  function mousedowned (line 6484) | function mousedowned() {
  function touchstarted (line 6499) | function touchstarted() {
  function mousewheeled (line 6569) | function mousewheeled() {
  function dblclicked (line 6582) | function dblclicked() {
  function d3_color (line 6597) | function d3_color() {}
  function d3_hsl (line 6602) | function d3_hsl(h, s, l) {
  function d3_hsl_rgb (line 6617) | function d3_hsl_rgb(h, s, l) {
  function d3_hcl (line 6637) | function d3_hcl(h, c, l) {
  function d3_hcl_lab (line 6650) | function d3_hcl_lab(h, c, l) {
  function d3_lab (line 6656) | function d3_lab(l, a, b) {
  function d3_lab_rgb (line 6671) | function d3_lab_rgb(l, a, b) {
  function d3_lab_hcl (line 6678) | function d3_lab_hcl(l, a, b) {
  function d3_lab_xyz (line 6681) | function d3_lab_xyz(x) {
  function d3_xyz_lab (line 6684) | function d3_xyz_lab(x) {
  function d3_xyz_rgb (line 6687) | function d3_xyz_rgb(r) {
  function d3_rgb (line 6691) | function d3_rgb(r, g, b) {
  function d3_rgbNumber (line 6694) | function d3_rgbNumber(value) {
  function d3_rgbString (line 6697) | function d3_rgbString(value) {
  function d3_rgb_hex (line 6720) | function d3_rgb_hex(v) {
  function d3_rgb_parse (line 6723) | function d3_rgb_parse(format, rgb, hsl) {
  function d3_rgb_hsl (line 6757) | function d3_rgb_hsl(r, g, b) {
  function d3_rgb_lab (line 6769) | function d3_rgb_lab(r, g, b) {
  function d3_rgb_xyz (line 6776) | function d3_rgb_xyz(r) {
  function d3_rgb_parseNumber (line 6779) | function d3_rgb_parseNumber(c) {
  function d3_functor (line 6935) | function d3_functor(v) {
  function d3_identity (line 6941) | function d3_identity(d) {
  function d3_xhrType (line 6945) | function d3_xhrType(response) {
  function d3_xhr (line 6952) | function d3_xhr(url, mimeType, response, callback) {
  function d3_xhr_fixCallback (line 7027) | function d3_xhr_fixCallback(callback) {
  function d3_xhrHasResponse (line 7032) | function d3_xhrHasResponse(request) {
  function dsv (line 7038) | function dsv(url, row, callback) {
  function response (line 7046) | function response(request) {
  function typedResponse (line 7049) | function typedResponse(f) {
  function token (line 7068) | function token() {
  function formatRow (line 7130) | function formatRow(row) {
  function formatValue (line 7133) | function formatValue(text) {
  function d3_timer_step (line 7161) | function d3_timer_step() {
  function d3_timer_mark (line 7178) | function d3_timer_mark() {
  function d3_timer_sweep (line 7187) | function d3_timer_sweep() {
  function d3_format_precision (line 7200) | function d3_format_precision(x, p) {
  function d3_formatPrefix (line 7217) | function d3_formatPrefix(d, i) {
  function d3_locale_numberFormat (line 7228) | function d3_locale_numberFormat(locale) {
  function d3_format_typeDefault (line 7349) | function d3_format_typeDefault(x) {
  function d3_date_utc (line 7353) | function d3_date_utc() {
  function d3_time_interval (line 7419) | function d3_time_interval(local, step, number) {
  function d3_time_interval_utc (line 7467) | function d3_time_interval_utc(method) {
  function d3_locale_timeFormat (line 7527) | function d3_locale_timeFormat(locale) {
  function d3_time_formatPad (line 7747) | function d3_time_formatPad(value, fill, width) {
  function d3_time_formatRe (line 7751) | function d3_time_formatRe(names) {
  function d3_time_formatLookup (line 7754) | function d3_time_formatLookup(names) {
  function d3_time_parseWeekdayNumber (line 7759) | function d3_time_parseWeekdayNumber(date, string, i) {
  function d3_time_parseWeekNumberSunday (line 7764) | function d3_time_parseWeekNumberSunday(date, string, i) {
  function d3_time_parseWeekNumberMonday (line 7769) | function d3_time_parseWeekNumberMonday(date, string, i) {
  function d3_time_parseFullYear (line 7774) | function d3_time_parseFullYear(date, string, i) {
  function d3_time_parseYear (line 7779) | function d3_time_parseYear(date, string, i) {
  function d3_time_parseZone (line 7784) | function d3_time_parseZone(date, string, i) {
  function d3_time_expandYear (line 7788) | function d3_time_expandYear(d) {
  function d3_time_parseMonthNumber (line 7791) | function d3_time_parseMonthNumber(date, string, i) {
  function d3_time_parseDay (line 7796) | function d3_time_parseDay(date, string, i) {
  function d3_time_parseDayOfYear (line 7801) | function d3_time_parseDayOfYear(date, string, i) {
  function d3_time_parseHour24 (line 7806) | function d3_time_parseHour24(date, string, i) {
  function d3_time_parseMinutes (line 7811) | function d3_time_parseMinutes(date, string, i) {
  function d3_time_parseSeconds (line 7816) | function d3_time_parseSeconds(date, string, i) {
  function d3_time_parseMilliseconds (line 7821) | function d3_time_parseMilliseconds(date, string, i) {
  function d3_time_zone (line 7826) | function d3_time_zone(d) {
  function d3_time_parseLiteralPercent (line 7830) | function d3_time_parseLiteralPercent(date, string, i) {
  function d3_time_formatMulti (line 7835) | function d3_time_formatMulti(formats) {
  function d3_adder (line 7866) | function d3_adder() {}
  function d3_adderSum (line 7883) | function d3_adderSum(a, b, o) {
  function d3_geo_streamGeometry (line 7894) | function d3_geo_streamGeometry(geometry, listener) {
  function d3_geo_streamLine (line 7939) | function d3_geo_streamLine(coordinates, listener, closed) {
  function d3_geo_streamPolygon (line 7945) | function d3_geo_streamPolygon(coordinates, listener) {
  function d3_geo_areaRingStart (line 7974) | function d3_geo_areaRingStart() {
  function d3_geo_cartesian (line 7992) | function d3_geo_cartesian(spherical) {
  function d3_geo_cartesianDot (line 7996) | function d3_geo_cartesianDot(a, b) {
  function d3_geo_cartesianCross (line 7999) | function d3_geo_cartesianCross(a, b) {
  function d3_geo_cartesianAdd (line 8002) | function d3_geo_cartesianAdd(a, b) {
  function d3_geo_cartesianScale (line 8007) | function d3_geo_cartesianScale(vector, k) {
  function d3_geo_cartesianNormalize (line 8010) | function d3_geo_cartesianNormalize(d) {
  function d3_geo_spherical (line 8016) | function d3_geo_spherical(cartesian) {
  function d3_geo_sphericalEqual (line 8019) | function d3_geo_sphericalEqual(a, b) {
  function point (line 8044) | function point(λ, φ) {
  function linePoint (line 8049) | function linePoint(λ, φ) {
  function lineStart (line 8089) | function lineStart() {
  function lineEnd (line 8092) | function lineEnd() {
  function ringPoint (line 8097) | function ringPoint(λ, φ) {
  function ringStart (line 8105) | function ringStart() {
  function ringEnd (line 8108) | function ringEnd() {
  function angle (line 8115) | function angle(λ0, λ1) {
  function compareRanges (line 8118) | function compareRanges(a, b) {
  function withinRange (line 8121) | function withinRange(x, range) {
  function d3_geo_centroidPoint (line 8175) | function d3_geo_centroidPoint(λ, φ) {
  function d3_geo_centroidPointXYZ (line 8180) | function d3_geo_centroidPointXYZ(x, y, z) {
  function d3_geo_centroidLineStart (line 8186) | function d3_geo_centroidLineStart() {
  function d3_geo_centroidLineEnd (line 8207) | function d3_geo_centroidLineEnd() {
  function d3_geo_centroidRingStart (line 8210) | function d3_geo_centroidRingStart() {
  function d3_geo_compose (line 8240) | function d3_geo_compose(a, b) {
  function d3_true (line 8249) | function d3_true() {
  function d3_geo_clipPolygon (line 8252) | function d3_geo_clipPolygon(segments, compare, clipStartInside, interpol...
  function d3_geo_clipPolygonLinkCircular (line 8311) | function d3_geo_clipPolygonLinkCircular(array) {
  function d3_geo_clipPolygonIntersection (line 8322) | function d3_geo_clipPolygonIntersection(point, points, other, entry) {
  function d3_geo_clip (line 8330) | function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
  function d3_geo_clipSegmentLength1 (line 8422) | function d3_geo_clipSegmentLength1(segment) {
  function d3_geo_clipBufferListener (line 8425) | function d3_geo_clipBufferListener() {
  function d3_geo_clipSort (line 8446) | function d3_geo_clipSort(a, b) {
  function d3_geo_clipAntimeridianLine (line 8450) | function d3_geo_clipAntimeridianLine(listener) {
  function d3_geo_clipAntimeridianIntersect (line 8489) | function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
  function d3_geo_clipAntimeridianInterpolate (line 8493) | function d3_geo_clipAntimeridianInterpolate(from, to, direction, listene...
  function d3_geo_pointInPolygon (line 8516) | function d3_geo_pointInPolygon(point, polygon) {
  function d3_geo_clipCircle (line 8545) | function d3_geo_clipCircle(radius) {
  function d3_geom_clipLine (line 8641) | function d3_geom_clipLine(x0, y0, x1, y1) {
  function d3_geo_clipExtent (line 8713) | function d3_geo_clipExtent(x0, y0, x1, y1) {
  function d3_geo_conic (line 8847) | function d3_geo_conic(projectAt) {
  function d3_geo_conicEqualArea (line 8855) | function d3_geo_conicEqualArea(φ0, φ1) {
  function albersUsa (line 8882) | function albersUsa(coordinates) {
  function d3_geo_pathAreaRingStart (line 8964) | function d3_geo_pathAreaRingStart() {
  function d3_geo_pathBoundsPoint (line 8986) | function d3_geo_pathBoundsPoint(x, y) {
  function d3_geo_pathBuffer (line 8992) | function d3_geo_pathBuffer() {
  function d3_geo_pathBufferCircle (line 9037) | function d3_geo_pathBufferCircle(radius) {
  function d3_geo_pathCentroidPoint (line 9053) | function d3_geo_pathCentroidPoint(x, y) {
  function d3_geo_pathCentroidLineStart (line 9058) | function d3_geo_pathCentroidLineStart() {
  function d3_geo_pathCentroidLineEnd (line 9072) | function d3_geo_pathCentroidLineEnd() {
  function d3_geo_pathCentroidRingStart (line 9075) | function d3_geo_pathCentroidRingStart() {
  function d3_geo_pathContext (line 9096) | function d3_geo_pathContext(context) {
  function d3_geo_resample (line 9136) | function d3_geo_resample(project) {
  function path (line 9216) | function path(object) {
  function reset (line 9255) | function reset() {
  function d3_geo_pathProjectStream (line 9261) | function d3_geo_pathProjectStream(project) {
  function d3_geo_transform (line 9278) | function d3_geo_transform(stream) {
  function d3_geo_transformPoint (line 9301) | function d3_geo_transformPoint(stream, point) {
  function d3_geo_projection (line 9323) | function d3_geo_projection(project) {
  function d3_geo_projectionMutator (line 9328) | function d3_geo_projectionMutator(projectAt) {
  function d3_geo_projectionRadians (line 9400) | function d3_geo_projectionRadians(stream) {
  function d3_geo_equirectangular (line 9405) | function d3_geo_equirectangular(λ, φ) {
  function forward (line 9413) | function forward(coordinates) {
  function d3_geo_identityRotation (line 9423) | function d3_geo_identityRotation(λ, φ) {
  function d3_geo_rotation (line 9427) | function d3_geo_rotation(δλ, δφ, δγ) {
  function d3_geo_forwardRotationλ (line 9430) | function d3_geo_forwardRotationλ(δλ) {
  function d3_geo_rotationλ (line 9435) | function d3_geo_rotationλ(δλ) {
  function d3_geo_rotationφγ (line 9440) | function d3_geo_rotationφγ(δφ, δγ) {
  function circle (line 9454) | function circle() {
  function d3_geo_circleInterpolate (line 9484) | function d3_geo_circleInterpolate(radius, precision) {
  function d3_geo_circleAngle (line 9501) | function d3_geo_circleAngle(cr, point) {
  function graticule (line 9514) | function graticule() {
  function lines (line 9520) | function lines() {
  function d3_geo_graticuleX (line 9586) | function d3_geo_graticuleX(y0, y1, dy) {
  function d3_geo_graticuleY (line 9594) | function d3_geo_graticuleY(x0, x1, dx) {
  function d3_source (line 9602) | function d3_source(d) {
  function d3_target (line 9605) | function d3_target(d) {
  function greatArc (line 9610) | function greatArc() {
  function d3_geo_interpolate (line 9637) | function d3_geo_interpolate(x0, y0, x1, y1) {
  function d3_geo_lengthLineStart (line 9662) | function d3_geo_lengthLineStart() {
  function d3_geo_azimuthal (line 9677) | function d3_geo_azimuthal(scale, angle) {
  function d3_geo_conicConformal (line 9703) | function d3_geo_conicConformal(φ0, φ1) {
  function d3_geo_conicEquidistant (line 9726) | function d3_geo_conicEquidistant(φ0, φ1) {
  function d3_geo_mercator (line 9748) | function d3_geo_mercator(λ, φ) {
  function d3_geo_mercatorProjection (line 9754) | function d3_geo_mercatorProjection(project) {
  function d3_geo_transverseMercator (line 9795) | function d3_geo_transverseMercator(λ, φ) {
  function d3_geom_pointX (line 9813) | function d3_geom_pointX(d) {
  function d3_geom_pointY (line 9816) | function d3_geom_pointY(d) {
  function hull (line 9822) | function hull(data) {
  function d3_geom_hullUpper (line 9844) | function d3_geom_hullUpper(points) {
  function d3_geom_hullOrder (line 9852) | function d3_geom_hullOrder(a, b) {
  function d3_geom_polygonInside (line 9906) | function d3_geom_polygonInside(p, a, b) {
  function d3_geom_polygonIntersect (line 9909) | function d3_geom_polygonIntersect(c, d, a, b) {
  function d3_geom_polygonClosed (line 9913) | function d3_geom_polygonClosed(coordinates) {
  function d3_geom_voronoiBeach (line 9918) | function d3_geom_voronoiBeach() {
  function d3_geom_voronoiCreateBeach (line 9922) | function d3_geom_voronoiCreateBeach(site) {
  function d3_geom_voronoiDetachBeach (line 9927) | function d3_geom_voronoiDetachBeach(beach) {
  function d3_geom_voronoiRemoveBeach (line 9933) | function d3_geom_voronoiRemoveBeach(beach) {
  function d3_geom_voronoiAddBeach (line 9969) | function d3_geom_voronoiAddBeach(site) {
  function d3_geom_voronoiLeftBreakPoint (line 10023) | function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
  function d3_geom_voronoiRightBreakPoint (line 10035) | function d3_geom_voronoiRightBreakPoint(arc, directrix) {
  function d3_geom_voronoiCell (line 10041) | function d3_geom_voronoiCell(site) {
  function d3_geom_voronoiCloseCells (line 10054) | function d3_geom_voronoiCloseCells(extent) {
  function d3_geom_voronoiHalfEdgeOrder (line 10084) | function d3_geom_voronoiHalfEdgeOrder(a, b) {
  function d3_geom_voronoiCircle (line 10087) | function d3_geom_voronoiCircle() {
  function d3_geom_voronoiAttachCircle (line 10091) | function d3_geom_voronoiAttachCircle(arc) {
  function d3_geom_voronoiDetachCircle (line 10124) | function d3_geom_voronoiDetachCircle(arc) {
  function d3_geom_voronoiClipEdges (line 10134) | function d3_geom_voronoiClipEdges(extent) {
  function d3_geom_voronoiConnectEdge (line 10144) | function d3_geom_voronoiConnectEdge(edge, extent) {
  function d3_geom_voronoiEdge (line 10218) | function d3_geom_voronoiEdge(lSite, rSite) {
  function d3_geom_voronoiCreateEdge (line 10223) | function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
  function d3_geom_voronoiCreateBorderEdge (line 10232) | function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
  function d3_geom_voronoiSetEdgeEnd (line 10239) | function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
  function d3_geom_voronoiHalfEdge (line 10250) | function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
  function d3_geom_voronoiRedBlackTree (line 10264) | function d3_geom_voronoiRedBlackTree() {
  function d3_geom_voronoiRedBlackNode (line 10267) | function d3_geom_voronoiRedBlackNode(node) {
  function d3_geom_voronoiRedBlackRotateLeft (line 10430) | function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
  function d3_geom_voronoiRedBlackRotateRight (line 10443) | function d3_geom_voronoiRedBlackRotateRight(tree, node) {
  function d3_geom_voronoiRedBlackFirst (line 10456) | function d3_geom_voronoiRedBlackFirst(node) {
  function d3_geom_voronoi (line 10460) | function d3_geom_voronoi(sites, bbox) {
  function d3_geom_voronoiVertexOrder (line 10489) | function d3_geom_voronoiVertexOrder(a, b) {
  function voronoi (line 10495) | function voronoi(data) {
  function sites (line 10506) | function sites(data) {
  function d3_geom_voronoiTriangleArea (line 10559) | function d3_geom_voronoiTriangleArea(a, b, c) {
  function quadtree (line 10577) | function quadtree(data) {
  function d3_geom_quadtreeCompatX (line 10672) | function d3_geom_quadtreeCompatX(d) {
  function d3_geom_quadtreeCompatY (line 10675) | function d3_geom_quadtreeCompatY(d) {
  function d3_geom_quadtreeNode (line 10678) | function d3_geom_quadtreeNode() {
  function d3_geom_quadtreeVisit (line 10687) | function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
  function d3_geom_quadtreeFind (line 10696) | function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
  function d3_interpolateRgb (line 10733) | function d3_interpolateRgb(a, b) {
  function d3_interpolateObject (line 10742) | function d3_interpolateObject(a, b) {
  function d3_interpolateNumber (line 10762) | function d3_interpolateNumber(a, b) {
  function d3_interpolateString (line 10769) | function d3_interpolateString(a, b) {
  function d3_interpolate (line 10803) | function d3_interpolate(a, b) {
  function d3_interpolateArray (line 10813) | function d3_interpolateArray(a, b) {
  function d3_ease_clamp (line 10864) | function d3_ease_clamp(f) {
  function d3_ease_reverse (line 10869) | function d3_ease_reverse(f) {
  function d3_ease_reflect (line 10874) | function d3_ease_reflect(f) {
  function d3_ease_quad (line 10879) | function d3_ease_quad(t) {
  function d3_ease_cubic (line 10882) | function d3_ease_cubic(t) {
  function d3_ease_cubicInOut (line 10885) | function d3_ease_cubicInOut(t) {
  function d3_ease_poly (line 10891) | function d3_ease_poly(e) {
  function d3_ease_sin (line 10896) | function d3_ease_sin(t) {
  function d3_ease_exp (line 10899) | function d3_ease_exp(t) {
  function d3_ease_circle (line 10902) | function d3_ease_circle(t) {
  function d3_ease_elastic (line 10905) | function d3_ease_elastic(a, p) {
  function d3_ease_back (line 10913) | function d3_ease_back(s) {
  function d3_ease_bounce (line 10919) | function d3_ease_bounce(t) {
  function d3_interpolateHcl (line 10923) | function d3_interpolateHcl(a, b) {
  function d3_interpolateHsl (line 10934) | function d3_interpolateHsl(a, b) {
  function d3_interpolateLab (line 10945) | function d3_interpolateLab(a, b) {
  function d3_interpolateRound (line 10954) | function d3_interpolateRound(a, b) {
  function d3_transform (line 10970) | function d3_transform(m) {
  function d3_transformDot (line 10986) | function d3_transformDot(a, b) {
  function d3_transformNormalize (line 10989) | function d3_transformNormalize(a) {
  function d3_transformCombine (line 10997) | function d3_transformCombine(a, b, k) {
  function d3_interpolateTransform (line 11011) | function d3_interpolateTransform(a, b) {
  function d3_uninterpolateNumber (line 11063) | function d3_uninterpolateNumber(a, b) {
  function d3_uninterpolateClamp (line 11069) | function d3_uninterpolateClamp(a, b) {
  function d3_layout_bundlePath (line 11083) | function d3_layout_bundlePath(link) {
  function d3_layout_bundleAncestors (line 11096) | function d3_layout_bundleAncestors(node) {
  function d3_layout_bundleLeastCommonAncestor (line 11106) | function d3_layout_bundleLeastCommonAncestor(a, b) {
  function relayout (line 11118) | function relayout() {
  function resort (line 11184) | function resort() {
  function repulse (line 11231) | function repulse(node) {
  function position (line 11403) | function position(dimension, size) {
  function dragmove (line 11432) | function dragmove(d) {
  function d3_layout_forceDragstart (line 11438) | function d3_layout_forceDragstart(d) {
  function d3_layout_forceDragend (line 11441) | function d3_layout_forceDragend(d) {
  function d3_layout_forceMouseover (line 11444) | function d3_layout_forceMouseover(d) {
  function d3_layout_forceMouseout (line 11448) | function d3_layout_forceMouseout(d) {
  function d3_layout_forceAccumulate (line 11451) | function d3_layout_forceAccumulate(quad, alpha, charges) {
  function hierarchy (line 11481) | function hierarchy(root) {
  function d3_layout_hierarchyRebind (line 11537) | function d3_layout_hierarchyRebind(object, hierarchy) {
  function d3_layout_hierarchyVisitBefore (line 11543) | function d3_layout_hierarchyVisitBefore(node, callback) {
  function d3_layout_hierarchyVisitAfter (line 11553) | function d3_layout_hierarchyVisitAfter(node, callback) {
  function d3_layout_hierarchyChildren (line 11566) | function d3_layout_hierarchyChildren(d) {
  function d3_layout_hierarchyValue (line 11569) | function d3_layout_hierarchyValue(d) {
  function d3_layout_hierarchySort (line 11572) | function d3_layout_hierarchySort(a, b) {
  function d3_layout_hierarchyLinks (line 11575) | function d3_layout_hierarchyLinks(nodes) {
  function position (line 11587) | function position(node, x, dx, dy) {
  function depth (line 11602) | function depth(node) {
  function partition (line 11610) | function partition(d, i) {
  function pie (line 11624) | function pie(data) {
  function stack (line 11674) | function stack(data, index) {
  function d3_layout_stackX (line 11729) | function d3_layout_stackX(d) {
  function d3_layout_stackY (line 11732) | function d3_layout_stackY(d) {
  function d3_layout_stackOut (line 11735) | function d3_layout_stackOut(d, y0, y) {
  function d3_layout_stackOrderDefault (line 11802) | function d3_layout_stackOrderDefault(data) {
  function d3_layout_stackOffsetZero (line 11805) | function d3_layout_stackOffsetZero(data) {
  function d3_layout_stackMaxIndex (line 11810) | function d3_layout_stackMaxIndex(array) {
  function d3_layout_stackReduceSum (line 11820) | function d3_layout_stackReduceSum(d) {
  function d3_layout_stackSum (line 11823) | function d3_layout_stackSum(p, d) {
  function histogram (line 11828) | function histogram(data, i) {
  function d3_layout_histogramBinSturges (line 11872) | function d3_layout_histogramBinSturges(range, values) {
  function d3_layout_histogramBinFixed (line 11875) | function d3_layout_histogramBinFixed(range, n) {
  function d3_layout_histogramRange (line 11880) | function d3_layout_histogramRange(values) {
  function pack (line 11885) | function pack(d, i) {
  function d3_layout_packSort (line 11924) | function d3_layout_packSort(a, b) {
  function d3_layout_packInsert (line 11927) | function d3_layout_packInsert(a, b) {
  function d3_layout_packSplice (line 11934) | function d3_layout_packSplice(a, b) {
  function d3_layout_packIntersects (line 11938) | function d3_layout_packIntersects(a, b) {
  function d3_layout_packSiblings (line 11942) | function d3_layout_packSiblings(node) {
  function d3_layout_packLink (line 12006) | function d3_layout_packLink(node) {
  function d3_layout_packUnlink (line 12009) | function d3_layout_packUnlink(node) {
  function d3_layout_packTransform (line 12013) | function d3_layout_packTransform(node, x, y, k) {
  function d3_layout_packPlace (line 12023) | function d3_layout_packPlace(a, b, c) {
  function tree (line 12039) | function tree(d, i) {
  function wrapTree (line 12058) | function wrapTree(root0) {
  function firstWalk (line 12082) | function firstWalk(v) {
  function secondWalk (line 12098) | function secondWalk(v) {
  function apportion (line 12102) | function apportion(v, w, ancestor) {
  function sizeNode (line 12132) | function sizeNode(node) {
  function d3_layout_treeSeparation (line 12153) | function d3_layout_treeSeparation(a, b) {
  function d3_layout_treeLeft (line 12156) | function d3_layout_treeLeft(v) {
  function d3_layout_treeRight (line 12160) | function d3_layout_treeRight(v) {
  function d3_layout_treeMove (line 12164) | function d3_layout_treeMove(wm, wp, shift) {
  function d3_layout_treeShift (line 12172) | function d3_layout_treeShift(v) {
  function d3_layout_treeAncestor (line 12181) | function d3_layout_treeAncestor(vim, v, ancestor) {
  function cluster (line 12186) | function cluster(d, i) {
  function d3_layout_clusterY (line 12226) | function d3_layout_clusterY(children) {
  function d3_layout_clusterX (line 12231) | function d3_layout_clusterX(children) {
  function d3_layout_clusterLeft (line 12236) | function d3_layout_clusterLeft(node) {
  function d3_layout_clusterRight (line 12240) | function d3_layout_clusterRight(node) {
  function scale (line 12246) | function scale(children, k) {
  function squarify (line 12253) | function squarify(node) {
  function stickify (line 12280) | function stickify(node) {
  function worst (line 12297) | function worst(row, u) {
  function position (line 12308) | function position(row, u, rect, flush) {
  function treemap (line 12338) | function treemap(d) {
  function padFunction (line 12357) | function padFunction(node) {
  function padConstant (line 12361) | function padConstant(node) {
  function d3_layout_treemapPadNull (line 12392) | function d3_layout_treemapPadNull(node) {
  function d3_layout_treemapPad (line 12400) | function d3_layout_treemapPad(node, padding) {
  function d3_scaleExtent (line 12452) | function d3_scaleExtent(domain) {
  function d3_scaleRange (line 12456) | function d3_scaleRange(scale) {
  function d3_scale_bilinear (line 12459) | function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_nice (line 12465) | function d3_scale_nice(domain, nice) {
  function d3_scale_niceStep (line 12475) | function d3_scale_niceStep(step) {
  function d3_scale_polylinear (line 12489) | function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_linear (line 12507) | function d3_scale_linear(domain, range, interpolate, clamp) {
  function d3_scale_linearRebind (line 12559) | function d3_scale_linearRebind(scale, linear) {
  function d3_scale_linearNice (line 12562) | function d3_scale_linearNice(domain, m) {
  function d3_scale_linearTickRange (line 12565) | function d3_scale_linearTickRange(domain, m) {
  function d3_scale_linearTicks (line 12574) | function d3_scale_linearTicks(domain, m) {
  function d3_scale_linearTickFormat (line 12577) | function d3_scale_linearTickFormat(domain, m, format) {
  function d3_scale_linearPrecision (line 12605) | function d3_scale_linearPrecision(value) {
  function d3_scale_linearFormatPrecision (line 12608) | function d3_scale_linearFormatPrecision(type, range) {
  function d3_scale_log (line 12615) | function d3_scale_log(linear, base, positive, domain) {
  function d3_scale_pow (line 12687) | function d3_scale_pow(linear, exponent, domain) {
  function d3_scale_powPow (line 12721) | function d3_scale_powPow(e) {
  function d3_scale_ordinal (line 12735) | function d3_scale_ordinal(domain, ranger) {
  function d3_scale_quantile (line 12843) | function d3_scale_quantile(domain, range) {
  function d3_scale_quantize (line 12879) | function d3_scale_quantize(x0, x1, range) {
  function d3_scale_threshold (line 12913) | function d3_scale_threshold(domain, range) {
  function d3_scale_identity (line 12939) | function d3_scale_identity(domain) {
  function d3_zero (line 12961) | function d3_zero() {
  function arc (line 12966) | function arc() {
  function circleSegment (line 13039) | function circleSegment(r1, cw) {
  function d3_svg_arcInnerRadius (line 13084) | function d3_svg_arcInnerRadius(d) {
  function d3_svg_arcOuterRadius (line 13087) | function d3_svg_arcOuterRadius(d) {
  function d3_svg_arcStartAngle (line 13090) | function d3_svg_arcStartAngle(d) {
  function d3_svg_arcEndAngle (line 13093) | function d3_svg_arcEndAngle(d) {
  function d3_svg_arcPadAngle (line 13096) | function d3_svg_arcPadAngle(d) {
  function d3_svg_arcSweep (line 13099) | function d3_svg_arcSweep(x0, y0, x1, y1) {
  function d3_svg_arcCornerTangents (line 13102) | function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
  function d3_svg_line (line 13107) | function d3_svg_line(projection) {
  function d3_svg_lineLinear (line 13174) | function d3_svg_lineLinear(points) {
  function d3_svg_lineLinearClosed (line 13177) | function d3_svg_lineLinearClosed(points) {
  function d3_svg_lineStep (line 13180) | function d3_svg_lineStep(points) {
  function d3_svg_lineStepBefore (line 13186) | function d3_svg_lineStepBefore(points) {
  function d3_svg_lineStepAfter (line 13191) | function d3_svg_lineStepAfter(points) {
  function d3_svg_lineCardinalOpen (line 13196) | function d3_svg_lineCardinalOpen(points, tension) {
  function d3_svg_lineCardinalClosed (line 13199) | function d3_svg_lineCardinalClosed(points, tension) {
  function d3_svg_lineCardinal (line 13203) | function d3_svg_lineCardinal(points, tension) {
  function d3_svg_lineHermite (line 13206) | function d3_svg_lineHermite(points, tangents) {
  function d3_svg_lineCardinalTangents (line 13233) | function d3_svg_lineCardinalTangents(points, tension) {
  function d3_svg_lineBasis (line 13243) | function d3_svg_lineBasis(points) {
  function d3_svg_lineBasisOpen (line 13259) | function d3_svg_lineBasisOpen(points) {
  function d3_svg_lineBasisClosed (line 13279) | function d3_svg_lineBasisClosed(points) {
  function d3_svg_lineBundle (line 13298) | function d3_svg_lineBundle(points, tension) {
  function d3_svg_lineDot4 (line 13311) | function d3_svg_lineDot4(a, b) {
  function d3_svg_lineBasisBezier (line 13315) | function d3_svg_lineBasisBezier(path, x, y) {
  function d3_svg_lineSlope (line 13318) | function d3_svg_lineSlope(p0, p1) {
  function d3_svg_lineFiniteDifferences (line 13321) | function d3_svg_lineFiniteDifferences(points) {
  function d3_svg_lineMonotoneTangents (line 13329) | function d3_svg_lineMonotoneTangents(points) {
  function d3_svg_lineMonotone (line 13353) | function d3_svg_lineMonotone(points) {
  function d3_svg_lineRadial (line 13362) | function d3_svg_lineRadial(points) {
  function d3_svg_area (line 13373) | function d3_svg_area(projection) {
  function chord (line 13463) | function chord(d, i) {
  function subgroup (line 13467) | function subgroup(self, f, d, i) {
  function equals (line 13477) | function equals(a, b) {
  function arc (line 13480) | function arc(r, p, a) {
  function curve (line 13483) | function curve(r0, p0, r1, p1) {
  function d3_svg_chordRadius (line 13513) | function d3_svg_chordRadius(d) {
  function diagonal (line 13518) | function diagonal(d, i) {
  function d3_svg_diagonalProjection (line 13546) | function d3_svg_diagonalProjection(d) {
  function d3_svg_diagonalRadialProjection (line 13556) | function d3_svg_diagonalRadialProjection(projection) {
  function symbol (line 13564) | function symbol(d, i) {
  function d3_svg_symbolSize (line 13579) | function d3_svg_symbolSize() {
  function d3_svg_symbolType (line 13582) | function d3_svg_symbolType() {
  function d3_svg_symbolCircle (line 13585) | function d3_svg_symbolCircle(size) {
  function d3_selection_interruptNS (line 13634) | function d3_selection_interruptNS(ns) {
  function d3_transition (line 13648) | function d3_transition(groups, ns, id) {
  function d3_transition_tween (line 13720) | function d3_transition_tween(groups, name, value, tween) {
  function attrNull (line 13734) | function attrNull() {
  function attrNullNS (line 13737) | function attrNullNS() {
  function attrTween (line 13740) | function attrTween(b) {
  function attrTweenNS (line 13748) | function attrTweenNS(b) {
  function attrTween (line 13760) | function attrTween(d, i) {
  function attrTweenNS (line 13766) | function attrTweenNS(d, i) {
  function styleNull (line 13784) | function styleNull() {
  function styleString (line 13787) | function styleString(b) {
  function styleTween (line 13799) | function styleTween(d, i) {
  function d3_transition_text (line 13810) | function d3_transition_text(b) {
  function d3_transitionNamespace (line 13890) | function d3_transitionNamespace(name) {
  function d3_transitionNode (line 13893) | function d3_transitionNode(node, i, ns, id, inherit) {
  function axis (line 13957) | function axis(g) {
  function d3_svg_axisX (line 14052) | function d3_svg_axisX(selection, x0, x1) {
  function d3_svg_axisY (line 14058) | function d3_svg_axisY(selection, y0, y1) {
  function brush (line 14066) | function brush(g) {
  function redraw (line 14152) | function redraw(g) {
  function redrawX (line 14157) | function redrawX(g) {
  function redrawY (line 14161) | function redrawY(g) {
  function brushstart (line 14165) | function brushstart() {
  function d3_time_formatIsoNative (line 14358) | function d3_time_formatIsoNative(date) {
  function d3_time_scale (line 14405) | function d3_time_scale(linear, methods, format) {
  function d3_time_scaleDate (line 14455) | function d3_time_scaleDate(t) {
  function d3_json (line 14514) | function d3_json(request) {
  function d3_html (line 14520) | function d3_html(request) {

FILE: bem-bootstrap-4/specificity-graph/example.js
  function defaultExample (line 7) | function defaultExample() {

FILE: bem-bootstrap-4/specificity-graph/specificity-graph-standalone.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function mousemove (line 228) | function mousemove() {
  function normalizeArray (line 330) | function normalizeArray(parts, allowAboveRoot) {
  function trim (line 439) | function trim(arr) {
  function filter (line 512) | function filter (xs, f) {
  function noop (line 599) | function noop() {}
  function updatePosition (line 645) | function updatePosition(str) {
  function position (line 656) | function position() {
  function Position (line 669) | function Position(start) {
  function error (line 685) | function error(msg) {
  function stylesheet (line 703) | function stylesheet() {
  function open (line 716) | function open() {
  function close (line 724) | function close() {
  function rules (line 732) | function rules() {
  function match (line 750) | function match(re) {
  function whitespace (line 763) | function whitespace() {
  function comments (line 771) | function comments(rules) {
  function comment (line 786) | function comment() {
  function selector (line 814) | function selector() {
  function declaration (line 834) | function declaration() {
  function declarations (line 864) | function declarations() {
  function keyframe (line 887) | function keyframe() {
  function atkeyframes (line 910) | function atkeyframes() {
  function atsupports (line 945) | function atsupports() {
  function athost (line 969) | function athost() {
  function atmedia (line 991) | function atmedia() {
  function atcustommedia (line 1016) | function atcustommedia() {
  function atpage (line 1032) | function atpage() {
  function atdocument (line 1062) | function atdocument() {
  function atfontface (line 1088) | function atfontface() {
  function _compileAtrule (line 1134) | function _compileAtrule(name) {
  function atrule (line 1150) | function atrule() {
  function rule (line 1170) | function rule() {
  function trim (line 1191) | function trim(str) {
  function addParent (line 1199) | function addParent(obj, parent) {
  function Compiler (line 1240) | function Compiler(opts) {
  function Compiler (line 1295) | function Compiler(options) {
  function Compiler (line 1496) | function Compiler(options) {
  function mixin (line 1808) | function mixin(compiler) {
  function resolveUrl (line 1949) | function resolveUrl(/* ...urls */) {
  function callbackAsync (line 2063) | function callbackAsync(callback, error, result) {
  function parseMapToJSON (line 2067) | function parseMapToJSON(string) {
  function resolveSourceMap (line 2073) | function resolveSourceMap(code, codeUrl, read, callback) {
  function resolveSourceMapSync (line 2096) | function resolveSourceMapSync(code, codeUrl, read) {
  function resolveSourceMapHelper (line 2108) | function resolveSourceMapHelper(code, codeUrl) {
  function resolveSources (line 2141) | function resolveSources(map, mapUrl, read, options, callback) {
  function resolveSourcesSync (line 2181) | function resolveSourcesSync(map, mapUrl, read, options) {
  function resolveSourcesHelper (line 2201) | function resolveSourcesHelper(map, mapUrl, options, fn) {
  function resolve (line 2221) | function resolve(code, codeUrl, read, options, callback) {
  function resolveSync (line 2244) | function resolveSync(code, codeUrl, read, options) {
  function ArraySet (line 2298) | function ArraySet() {
  function toVLQSigned (line 2450) | function toVLQSigned(aValue) {
  function fromVLQSigned (line 2462) | function fromVLQSigned(aValue) {
  function recursiveSearch (line 2586) | function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
  function SourceMapConsumer (line 2695) | function SourceMapConsumer(aSourceMap) {
  function SourceMapGenerator (line 3157) | function SourceMapGenerator(aArgs) {
  function SourceNode (line 3570) | function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  function addMappingWithCode (line 3679) | function addMappingWithCode(mapping, code) {
  function getArg (line 3968) | function getArg(aArgs, aName, aDefaultValue) {
  function urlParse (line 3982) | function urlParse(aUrl) {
  function urlGenerate (line 3997) | function urlGenerate(aParsedUrl) {
  function normalize (line 4030) | function normalize(aPath) {
  function join (line 4091) | function join(aRoot, aPath) {
  function relative (line 4140) | function relative(aRoot, aPath) {
  function toSetString (line 4168) | function toSetString(aStr) {
  function fromSetString (line 4173) | function fromSetString(aStr) {
  function strcmp (line 4178) | function strcmp(aStr1, aStr2) {
  function compareByOriginalPositions (line 4192) | function compareByOriginalPositions(mappingA, mappingB, onlyCompareOrigi...
  function compareByGeneratedPositions (line 4233) | function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGene...
  function amdefine (line 4289) | function amdefine(module, requireFn) {
  function urix (line 4578) | function urix(aPath) {
  function cssbeautify (line 4623) | function cssbeautify(style, opt) {
  function d3_ascending (line 5096) | function d3_ascending(a, b) {
  function d3_number (line 5159) | function d3_number(x) {
  function d3_numeric (line 5162) | function d3_numeric(x) {
  function d3_bisector (line 5221) | function d3_bisector(compare) {
  function d3_zipLength (line 5282) | function d3_zipLength(d) {
  function d3_range_integerScale (line 5334) | function d3_range_integerScale(x) {
  function d3_class (line 5339) | function d3_class(ctor, properties) {
  function d3_Map (line 5361) | function d3_Map() {
  function d3_map_escape (line 5394) | function d3_map_escape(key) {
  function d3_map_unescape (line 5397) | function d3_map_unescape(key) {
  function d3_map_has (line 5400) | function d3_map_has(key) {
  function d3_map_remove (line 5403) | function d3_map_remove(key) {
  function d3_map_keys (line 5406) | function d3_map_keys() {
  function d3_map_size (line 5411) | function d3_map_size() {
  function d3_map_empty (line 5416) | function d3_map_empty() {
  function map (line 5422) | function map(mapType, array, depth) {
  function entries (line 5446) | function entries(map, depth) {
  function d3_Set (line 5488) | function d3_Set() {
  function d3_rebind (line 5511) | function d3_rebind(target, source, method) {
  function d3_vendorSymbol (line 5517) | function d3_vendorSymbol(object, name) {
  function d3_noop (line 5526) | function d3_noop() {}
  function d3_dispatch (line 5532) | function d3_dispatch() {}
  function d3_dispatch_event (line 5547) | function d3_dispatch_event(dispatch) {
  function d3_eventPreventDefault (line 5570) | function d3_eventPreventDefault() {
  function d3_eventSource (line 5573) | function d3_eventSource() {
  function d3_eventDispatch (line 5578) | function d3_eventDispatch(target) {
  function d3_selection (line 5604) | function d3_selection(groups) {
  function d3_selection_selector (line 5643) | function d3_selection_selector(selector) {
  function d3_selection_selectorAll (line 5661) | function d3_selection_selectorAll(selector) {
  function d3_selection_attr (line 5699) | function d3_selection_attr(name, value) {
  function d3_collapse (line 5723) | function d3_collapse(s) {
  function d3_selection_classedRe (line 5743) | function d3_selection_classedRe(name) {
  function d3_selection_classes (line 5746) | function d3_selection_classes(name) {
  function d3_selection_classed (line 5749) | function d3_selection_classed(name, value) {
  function d3_selection_classedName (line 5762) | function d3_selection_classedName(name) {
  function d3_selection_style (line 5788) | function d3_selection_style(name, value, priority) {
  function d3_selection_property (line 5809) | function d3_selection_property(name, value) {
  function d3_selection_creator (line 5848) | function d3_selection_creator(name) {
  function d3_selectionRemove (line 5865) | function d3_selectionRemove() {
  function bind (line 5880) | function bind(group, groupData) {
  function d3_selection_dataNode (line 5948) | function d3_selection_dataNode(data) {
  function d3_selection_filter (line 5970) | function d3_selection_filter(selector) {
  function d3_selection_sortComparator (line 5991) | function d3_selection_sortComparator(comparator) {
  function d3_selection_each (line 6002) | function d3_selection_each(groups, callback) {
  function d3_selection_enter (line 6034) | function d3_selection_enter(selection) {
  function d3_selection_enterInsertBefore (line 6067) | function d3_selection_enterInsertBefore(enter) {
  function d3_selection_on (line 6101) | function d3_selection_on(type, listener, capture) {
  function d3_selection_onListener (line 6138) | function d3_selection_onListener(listener, argumentz) {
  function d3_selection_onFilter (line 6150) | function d3_selection_onFilter(listener, argumentz) {
  function d3_event_dragSuppress (line 6160) | function d3_event_dragSuppress() {
  function d3_mousePoint (line 6185) | function d3_mousePoint(container, e) {
  function drag (line 6221) | function drag() {
  function dragstart (line 6224) | function dragstart(id, position, subject, move, end) {
  function d3_behavior_dragTouchId (line 6268) | function d3_behavior_dragTouchId() {
  function d3_behavior_dragTouchSubject (line 6271) | function d3_behavior_dragTouchSubject() {
  function d3_behavior_dragMouseSubject (line 6274) | function d3_behavior_dragMouseSubject() {
  function d3_sgn (line 6286) | function d3_sgn(x) {
  function d3_cross2d (line 6289) | function d3_cross2d(a, b, c) {
  function d3_acos (line 6292) | function d3_acos(x) {
  function d3_asin (line 6295) | function d3_asin(x) {
  function d3_sinh (line 6298) | function d3_sinh(x) {
  function d3_cosh (line 6301) | function d3_cosh(x) {
  function d3_tanh (line 6304) | function d3_tanh(x) {
  function d3_haversin (line 6307) | function d3_haversin(x) {
  function interpolate (line 6314) | function interpolate(t) {
  function zoom (line 6331) | function zoom(g) {
  function location (line 6431) | function location(p) {
  function point (line 6434) | function point(l) {
  function scaleTo (line 6437) | function scaleTo(s) {
  function translateTo (line 6440) | function translateTo(p, l) {
  function zoomTo (line 6445) | function zoomTo(that, p, l, k) {
  function rescale (line 6457) | function rescale() {
  function zoomstarted (line 6465) | function zoomstarted(dispatch) {
  function zoomed (line 6470) | function zoomed(dispatch) {
  function zoomended (line 6478) | function zoomended(dispatch) {
  function mousedowned (line 6484) | function mousedowned() {
  function touchstarted (line 6499) | function touchstarted() {
  function mousewheeled (line 6569) | function mousewheeled() {
  function dblclicked (line 6582) | function dblclicked() {
  function d3_color (line 6597) | function d3_color() {}
  function d3_hsl (line 6602) | function d3_hsl(h, s, l) {
  function d3_hsl_rgb (line 6617) | function d3_hsl_rgb(h, s, l) {
  function d3_hcl (line 6637) | function d3_hcl(h, c, l) {
  function d3_hcl_lab (line 6650) | function d3_hcl_lab(h, c, l) {
  function d3_lab (line 6656) | function d3_lab(l, a, b) {
  function d3_lab_rgb (line 6671) | function d3_lab_rgb(l, a, b) {
  function d3_lab_hcl (line 6678) | function d3_lab_hcl(l, a, b) {
  function d3_lab_xyz (line 6681) | function d3_lab_xyz(x) {
  function d3_xyz_lab (line 6684) | function d3_xyz_lab(x) {
  function d3_xyz_rgb (line 6687) | function d3_xyz_rgb(r) {
  function d3_rgb (line 6691) | function d3_rgb(r, g, b) {
  function d3_rgbNumber (line 6694) | function d3_rgbNumber(value) {
  function d3_rgbString (line 6697) | function d3_rgbString(value) {
  function d3_rgb_hex (line 6720) | function d3_rgb_hex(v) {
  function d3_rgb_parse (line 6723) | function d3_rgb_parse(format, rgb, hsl) {
  function d3_rgb_hsl (line 6757) | function d3_rgb_hsl(r, g, b) {
  function d3_rgb_lab (line 6769) | function d3_rgb_lab(r, g, b) {
  function d3_rgb_xyz (line 6776) | function d3_rgb_xyz(r) {
  function d3_rgb_parseNumber (line 6779) | function d3_rgb_parseNumber(c) {
  function d3_functor (line 6935) | function d3_functor(v) {
  function d3_identity (line 6941) | function d3_identity(d) {
  function d3_xhrType (line 6945) | function d3_xhrType(response) {
  function d3_xhr (line 6952) | function d3_xhr(url, mimeType, response, callback) {
  function d3_xhr_fixCallback (line 7027) | function d3_xhr_fixCallback(callback) {
  function d3_xhrHasResponse (line 7032) | function d3_xhrHasResponse(request) {
  function dsv (line 7038) | function dsv(url, row, callback) {
  function response (line 7046) | function response(request) {
  function typedResponse (line 7049) | function typedResponse(f) {
  function token (line 7068) | function token() {
  function formatRow (line 7130) | function formatRow(row) {
  function formatValue (line 7133) | function formatValue(text) {
  function d3_timer_step (line 7161) | function d3_timer_step() {
  function d3_timer_mark (line 7178) | function d3_timer_mark() {
  function d3_timer_sweep (line 7187) | function d3_timer_sweep() {
  function d3_format_precision (line 7200) | function d3_format_precision(x, p) {
  function d3_formatPrefix (line 7217) | function d3_formatPrefix(d, i) {
  function d3_locale_numberFormat (line 7228) | function d3_locale_numberFormat(locale) {
  function d3_format_typeDefault (line 7349) | function d3_format_typeDefault(x) {
  function d3_date_utc (line 7353) | function d3_date_utc() {
  function d3_time_interval (line 7419) | function d3_time_interval(local, step, number) {
  function d3_time_interval_utc (line 7467) | function d3_time_interval_utc(method) {
  function d3_locale_timeFormat (line 7527) | function d3_locale_timeFormat(locale) {
  function d3_time_formatPad (line 7747) | function d3_time_formatPad(value, fill, width) {
  function d3_time_formatRe (line 7751) | function d3_time_formatRe(names) {
  function d3_time_formatLookup (line 7754) | function d3_time_formatLookup(names) {
  function d3_time_parseWeekdayNumber (line 7759) | function d3_time_parseWeekdayNumber(date, string, i) {
  function d3_time_parseWeekNumberSunday (line 7764) | function d3_time_parseWeekNumberSunday(date, string, i) {
  function d3_time_parseWeekNumberMonday (line 7769) | function d3_time_parseWeekNumberMonday(date, string, i) {
  function d3_time_parseFullYear (line 7774) | function d3_time_parseFullYear(date, string, i) {
  function d3_time_parseYear (line 7779) | function d3_time_parseYear(date, string, i) {
  function d3_time_parseZone (line 7784) | function d3_time_parseZone(date, string, i) {
  function d3_time_expandYear (line 7788) | function d3_time_expandYear(d) {
  function d3_time_parseMonthNumber (line 7791) | function d3_time_parseMonthNumber(date, string, i) {
  function d3_time_parseDay (line 7796) | function d3_time_parseDay(date, string, i) {
  function d3_time_parseDayOfYear (line 7801) | function d3_time_parseDayOfYear(date, string, i) {
  function d3_time_parseHour24 (line 7806) | function d3_time_parseHour24(date, string, i) {
  function d3_time_parseMinutes (line 7811) | function d3_time_parseMinutes(date, string, i) {
  function d3_time_parseSeconds (line 7816) | function d3_time_parseSeconds(date, string, i) {
  function d3_time_parseMilliseconds (line 7821) | function d3_time_parseMilliseconds(date, string, i) {
  function d3_time_zone (line 7826) | function d3_time_zone(d) {
  function d3_time_parseLiteralPercent (line 7830) | function d3_time_parseLiteralPercent(date, string, i) {
  function d3_time_formatMulti (line 7835) | function d3_time_formatMulti(formats) {
  function d3_adder (line 7866) | function d3_adder() {}
  function d3_adderSum (line 7883) | function d3_adderSum(a, b, o) {
  function d3_geo_streamGeometry (line 7894) | function d3_geo_streamGeometry(geometry, listener) {
  function d3_geo_streamLine (line 7939) | function d3_geo_streamLine(coordinates, listener, closed) {
  function d3_geo_streamPolygon (line 7945) | function d3_geo_streamPolygon(coordinates, listener) {
  function d3_geo_areaRingStart (line 7974) | function d3_geo_areaRingStart() {
  function d3_geo_cartesian (line 7992) | function d3_geo_cartesian(spherical) {
  function d3_geo_cartesianDot (line 7996) | function d3_geo_cartesianDot(a, b) {
  function d3_geo_cartesianCross (line 7999) | function d3_geo_cartesianCross(a, b) {
  function d3_geo_cartesianAdd (line 8002) | function d3_geo_cartesianAdd(a, b) {
  function d3_geo_cartesianScale (line 8007) | function d3_geo_cartesianScale(vector, k) {
  function d3_geo_cartesianNormalize (line 8010) | function d3_geo_cartesianNormalize(d) {
  function d3_geo_spherical (line 8016) | function d3_geo_spherical(cartesian) {
  function d3_geo_sphericalEqual (line 8019) | function d3_geo_sphericalEqual(a, b) {
  function point (line 8044) | function point(λ, φ) {
  function linePoint (line 8049) | function linePoint(λ, φ) {
  function lineStart (line 8089) | function lineStart() {
  function lineEnd (line 8092) | function lineEnd() {
  function ringPoint (line 8097) | function ringPoint(λ, φ) {
  function ringStart (line 8105) | function ringStart() {
  function ringEnd (line 8108) | function ringEnd() {
  function angle (line 8115) | function angle(λ0, λ1) {
  function compareRanges (line 8118) | function compareRanges(a, b) {
  function withinRange (line 8121) | function withinRange(x, range) {
  function d3_geo_centroidPoint (line 8175) | function d3_geo_centroidPoint(λ, φ) {
  function d3_geo_centroidPointXYZ (line 8180) | function d3_geo_centroidPointXYZ(x, y, z) {
  function d3_geo_centroidLineStart (line 8186) | function d3_geo_centroidLineStart() {
  function d3_geo_centroidLineEnd (line 8207) | function d3_geo_centroidLineEnd() {
  function d3_geo_centroidRingStart (line 8210) | function d3_geo_centroidRingStart() {
  function d3_geo_compose (line 8240) | function d3_geo_compose(a, b) {
  function d3_true (line 8249) | function d3_true() {
  function d3_geo_clipPolygon (line 8252) | function d3_geo_clipPolygon(segments, compare, clipStartInside, interpol...
  function d3_geo_clipPolygonLinkCircular (line 8311) | function d3_geo_clipPolygonLinkCircular(array) {
  function d3_geo_clipPolygonIntersection (line 8322) | function d3_geo_clipPolygonIntersection(point, points, other, entry) {
  function d3_geo_clip (line 8330) | function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
  function d3_geo_clipSegmentLength1 (line 8422) | function d3_geo_clipSegmentLength1(segment) {
  function d3_geo_clipBufferListener (line 8425) | function d3_geo_clipBufferListener() {
  function d3_geo_clipSort (line 8446) | function d3_geo_clipSort(a, b) {
  function d3_geo_clipAntimeridianLine (line 8450) | function d3_geo_clipAntimeridianLine(listener) {
  function d3_geo_clipAntimeridianIntersect (line 8489) | function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
  function d3_geo_clipAntimeridianInterpolate (line 8493) | function d3_geo_clipAntimeridianInterpolate(from, to, direction, listene...
  function d3_geo_pointInPolygon (line 8516) | function d3_geo_pointInPolygon(point, polygon) {
  function d3_geo_clipCircle (line 8545) | function d3_geo_clipCircle(radius) {
  function d3_geom_clipLine (line 8641) | function d3_geom_clipLine(x0, y0, x1, y1) {
  function d3_geo_clipExtent (line 8713) | function d3_geo_clipExtent(x0, y0, x1, y1) {
  function d3_geo_conic (line 8847) | function d3_geo_conic(projectAt) {
  function d3_geo_conicEqualArea (line 8855) | function d3_geo_conicEqualArea(φ0, φ1) {
  function albersUsa (line 8882) | function albersUsa(coordinates) {
  function d3_geo_pathAreaRingStart (line 8964) | function d3_geo_pathAreaRingStart() {
  function d3_geo_pathBoundsPoint (line 8986) | function d3_geo_pathBoundsPoint(x, y) {
  function d3_geo_pathBuffer (line 8992) | function d3_geo_pathBuffer() {
  function d3_geo_pathBufferCircle (line 9037) | function d3_geo_pathBufferCircle(radius) {
  function d3_geo_pathCentroidPoint (line 9053) | function d3_geo_pathCentroidPoint(x, y) {
  function d3_geo_pathCentroidLineStart (line 9058) | function d3_geo_pathCentroidLineStart() {
  function d3_geo_pathCentroidLineEnd (line 9072) | function d3_geo_pathCentroidLineEnd() {
  function d3_geo_pathCentroidRingStart (line 9075) | function d3_geo_pathCentroidRingStart() {
  function d3_geo_pathContext (line 9096) | function d3_geo_pathContext(context) {
  function d3_geo_resample (line 9136) | function d3_geo_resample(project) {
  function path (line 9216) | function path(object) {
  function reset (line 9255) | function reset() {
  function d3_geo_pathProjectStream (line 9261) | function d3_geo_pathProjectStream(project) {
  function d3_geo_transform (line 9278) | function d3_geo_transform(stream) {
  function d3_geo_transformPoint (line 9301) | function d3_geo_transformPoint(stream, point) {
  function d3_geo_projection (line 9323) | function d3_geo_projection(project) {
  function d3_geo_projectionMutator (line 9328) | function d3_geo_projectionMutator(projectAt) {
  function d3_geo_projectionRadians (line 9400) | function d3_geo_projectionRadians(stream) {
  function d3_geo_equirectangular (line 9405) | function d3_geo_equirectangular(λ, φ) {
  function forward (line 9413) | function forward(coordinates) {
  function d3_geo_identityRotation (line 9423) | function d3_geo_identityRotation(λ, φ) {
  function d3_geo_rotation (line 9427) | function d3_geo_rotation(δλ, δφ, δγ) {
  function d3_geo_forwardRotationλ (line 9430) | function d3_geo_forwardRotationλ(δλ) {
  function d3_geo_rotationλ (line 9435) | function d3_geo_rotationλ(δλ) {
  function d3_geo_rotationφγ (line 9440) | function d3_geo_rotationφγ(δφ, δγ) {
  function circle (line 9454) | function circle() {
  function d3_geo_circleInterpolate (line 9484) | function d3_geo_circleInterpolate(radius, precision) {
  function d3_geo_circleAngle (line 9501) | function d3_geo_circleAngle(cr, point) {
  function graticule (line 9514) | function graticule() {
  function lines (line 9520) | function lines() {
  function d3_geo_graticuleX (line 9586) | function d3_geo_graticuleX(y0, y1, dy) {
  function d3_geo_graticuleY (line 9594) | function d3_geo_graticuleY(x0, x1, dx) {
  function d3_source (line 9602) | function d3_source(d) {
  function d3_target (line 9605) | function d3_target(d) {
  function greatArc (line 9610) | function greatArc() {
  function d3_geo_interpolate (line 9637) | function d3_geo_interpolate(x0, y0, x1, y1) {
  function d3_geo_lengthLineStart (line 9662) | function d3_geo_lengthLineStart() {
  function d3_geo_azimuthal (line 9677) | function d3_geo_azimuthal(scale, angle) {
  function d3_geo_conicConformal (line 9703) | function d3_geo_conicConformal(φ0, φ1) {
  function d3_geo_conicEquidistant (line 9726) | function d3_geo_conicEquidistant(φ0, φ1) {
  function d3_geo_mercator (line 9748) | function d3_geo_mercator(λ, φ) {
  function d3_geo_mercatorProjection (line 9754) | function d3_geo_mercatorProjection(project) {
  function d3_geo_transverseMercator (line 9795) | function d3_geo_transverseMercator(λ, φ) {
  function d3_geom_pointX (line 9813) | function d3_geom_pointX(d) {
  function d3_geom_pointY (line 9816) | function d3_geom_pointY(d) {
  function hull (line 9822) | function hull(data) {
  function d3_geom_hullUpper (line 9844) | function d3_geom_hullUpper(points) {
  function d3_geom_hullOrder (line 9852) | function d3_geom_hullOrder(a, b) {
  function d3_geom_polygonInside (line 9906) | function d3_geom_polygonInside(p, a, b) {
  function d3_geom_polygonIntersect (line 9909) | function d3_geom_polygonIntersect(c, d, a, b) {
  function d3_geom_polygonClosed (line 9913) | function d3_geom_polygonClosed(coordinates) {
  function d3_geom_voronoiBeach (line 9918) | function d3_geom_voronoiBeach() {
  function d3_geom_voronoiCreateBeach (line 9922) | function d3_geom_voronoiCreateBeach(site) {
  function d3_geom_voronoiDetachBeach (line 9927) | function d3_geom_voronoiDetachBeach(beach) {
  function d3_geom_voronoiRemoveBeach (line 9933) | function d3_geom_voronoiRemoveBeach(beach) {
  function d3_geom_voronoiAddBeach (line 9969) | function d3_geom_voronoiAddBeach(site) {
  function d3_geom_voronoiLeftBreakPoint (line 10023) | function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
  function d3_geom_voronoiRightBreakPoint (line 10035) | function d3_geom_voronoiRightBreakPoint(arc, directrix) {
  function d3_geom_voronoiCell (line 10041) | function d3_geom_voronoiCell(site) {
  function d3_geom_voronoiCloseCells (line 10054) | function d3_geom_voronoiCloseCells(extent) {
  function d3_geom_voronoiHalfEdgeOrder (line 10084) | function d3_geom_voronoiHalfEdgeOrder(a, b) {
  function d3_geom_voronoiCircle (line 10087) | function d3_geom_voronoiCircle() {
  function d3_geom_voronoiAttachCircle (line 10091) | function d3_geom_voronoiAttachCircle(arc) {
  function d3_geom_voronoiDetachCircle (line 10124) | function d3_geom_voronoiDetachCircle(arc) {
  function d3_geom_voronoiClipEdges (line 10134) | function d3_geom_voronoiClipEdges(extent) {
  function d3_geom_voronoiConnectEdge (line 10144) | function d3_geom_voronoiConnectEdge(edge, extent) {
  function d3_geom_voronoiEdge (line 10218) | function d3_geom_voronoiEdge(lSite, rSite) {
  function d3_geom_voronoiCreateEdge (line 10223) | function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
  function d3_geom_voronoiCreateBorderEdge (line 10232) | function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
  function d3_geom_voronoiSetEdgeEnd (line 10239) | function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
  function d3_geom_voronoiHalfEdge (line 10250) | function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
  function d3_geom_voronoiRedBlackTree (line 10264) | function d3_geom_voronoiRedBlackTree() {
  function d3_geom_voronoiRedBlackNode (line 10267) | function d3_geom_voronoiRedBlackNode(node) {
  function d3_geom_voronoiRedBlackRotateLeft (line 10430) | function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
  function d3_geom_voronoiRedBlackRotateRight (line 10443) | function d3_geom_voronoiRedBlackRotateRight(tree, node) {
  function d3_geom_voronoiRedBlackFirst (line 10456) | function d3_geom_voronoiRedBlackFirst(node) {
  function d3_geom_voronoi (line 10460) | function d3_geom_voronoi(sites, bbox) {
  function d3_geom_voronoiVertexOrder (line 10489) | function d3_geom_voronoiVertexOrder(a, b) {
  function voronoi (line 10495) | function voronoi(data) {
  function sites (line 10506) | function sites(data) {
  function d3_geom_voronoiTriangleArea (line 10559) | function d3_geom_voronoiTriangleArea(a, b, c) {
  function quadtree (line 10577) | function quadtree(data) {
  function d3_geom_quadtreeCompatX (line 10672) | function d3_geom_quadtreeCompatX(d) {
  function d3_geom_quadtreeCompatY (line 10675) | function d3_geom_quadtreeCompatY(d) {
  function d3_geom_quadtreeNode (line 10678) | function d3_geom_quadtreeNode() {
  function d3_geom_quadtreeVisit (line 10687) | function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
  function d3_geom_quadtreeFind (line 10696) | function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
  function d3_interpolateRgb (line 10733) | function d3_interpolateRgb(a, b) {
  function d3_interpolateObject (line 10742) | function d3_interpolateObject(a, b) {
  function d3_interpolateNumber (line 10762) | function d3_interpolateNumber(a, b) {
  function d3_interpolateString (line 10769) | function d3_interpolateString(a, b) {
  function d3_interpolate (line 10803) | function d3_interpolate(a, b) {
  function d3_interpolateArray (line 10813) | function d3_interpolateArray(a, b) {
  function d3_ease_clamp (line 10864) | function d3_ease_clamp(f) {
  function d3_ease_reverse (line 10869) | function d3_ease_reverse(f) {
  function d3_ease_reflect (line 10874) | function d3_ease_reflect(f) {
  function d3_ease_quad (line 10879) | function d3_ease_quad(t) {
  function d3_ease_cubic (line 10882) | function d3_ease_cubic(t) {
  function d3_ease_cubicInOut (line 10885) | function d3_ease_cubicInOut(t) {
  function d3_ease_poly (line 10891) | function d3_ease_poly(e) {
  function d3_ease_sin (line 10896) | function d3_ease_sin(t) {
  function d3_ease_exp (line 10899) | function d3_ease_exp(t) {
  function d3_ease_circle (line 10902) | function d3_ease_circle(t) {
  function d3_ease_elastic (line 10905) | function d3_ease_elastic(a, p) {
  function d3_ease_back (line 10913) | function d3_ease_back(s) {
  function d3_ease_bounce (line 10919) | function d3_ease_bounce(t) {
  function d3_interpolateHcl (line 10923) | function d3_interpolateHcl(a, b) {
  function d3_interpolateHsl (line 10934) | function d3_interpolateHsl(a, b) {
  function d3_interpolateLab (line 10945) | function d3_interpolateLab(a, b) {
  function d3_interpolateRound (line 10954) | function d3_interpolateRound(a, b) {
  function d3_transform (line 10970) | function d3_transform(m) {
  function d3_transformDot (line 10986) | function d3_transformDot(a, b) {
  function d3_transformNormalize (line 10989) | function d3_transformNormalize(a) {
  function d3_transformCombine (line 10997) | function d3_transformCombine(a, b, k) {
  function d3_interpolateTransform (line 11011) | function d3_interpolateTransform(a, b) {
  function d3_uninterpolateNumber (line 11063) | function d3_uninterpolateNumber(a, b) {
  function d3_uninterpolateClamp (line 11069) | function d3_uninterpolateClamp(a, b) {
  function d3_layout_bundlePath (line 11083) | function d3_layout_bundlePath(link) {
  function d3_layout_bundleAncestors (line 11096) | function d3_layout_bundleAncestors(node) {
  function d3_layout_bundleLeastCommonAncestor (line 11106) | function d3_layout_bundleLeastCommonAncestor(a, b) {
  function relayout (line 11118) | function relayout() {
  function resort (line 11184) | function resort() {
  function repulse (line 11231) | function repulse(node) {
  function position (line 11403) | function position(dimension, size) {
  function dragmove (line 11432) | function dragmove(d) {
  function d3_layout_forceDragstart (line 11438) | function d3_layout_forceDragstart(d) {
  function d3_layout_forceDragend (line 11441) | function d3_layout_forceDragend(d) {
  function d3_layout_forceMouseover (line 11444) | function d3_layout_forceMouseover(d) {
  function d3_layout_forceMouseout (line 11448) | function d3_layout_forceMouseout(d) {
  function d3_layout_forceAccumulate (line 11451) | function d3_layout_forceAccumulate(quad, alpha, charges) {
  function hierarchy (line 11481) | function hierarchy(root) {
  function d3_layout_hierarchyRebind (line 11537) | function d3_layout_hierarchyRebind(object, hierarchy) {
  function d3_layout_hierarchyVisitBefore (line 11543) | function d3_layout_hierarchyVisitBefore(node, callback) {
  function d3_layout_hierarchyVisitAfter (line 11553) | function d3_layout_hierarchyVisitAfter(node, callback) {
  function d3_layout_hierarchyChildren (line 11566) | function d3_layout_hierarchyChildren(d) {
  function d3_layout_hierarchyValue (line 11569) | function d3_layout_hierarchyValue(d) {
  function d3_layout_hierarchySort (line 11572) | function d3_layout_hierarchySort(a, b) {
  function d3_layout_hierarchyLinks (line 11575) | function d3_layout_hierarchyLinks(nodes) {
  function position (line 11587) | function position(node, x, dx, dy) {
  function depth (line 11602) | function depth(node) {
  function partition (line 11610) | function partition(d, i) {
  function pie (line 11624) | function pie(data) {
  function stack (line 11674) | function stack(data, index) {
  function d3_layout_stackX (line 11729) | function d3_layout_stackX(d) {
  function d3_layout_stackY (line 11732) | function d3_layout_stackY(d) {
  function d3_layout_stackOut (line 11735) | function d3_layout_stackOut(d, y0, y) {
  function d3_layout_stackOrderDefault (line 11802) | function d3_layout_stackOrderDefault(data) {
  function d3_layout_stackOffsetZero (line 11805) | function d3_layout_stackOffsetZero(data) {
  function d3_layout_stackMaxIndex (line 11810) | function d3_layout_stackMaxIndex(array) {
  function d3_layout_stackReduceSum (line 11820) | function d3_layout_stackReduceSum(d) {
  function d3_layout_stackSum (line 11823) | function d3_layout_stackSum(p, d) {
  function histogram (line 11828) | function histogram(data, i) {
  function d3_layout_histogramBinSturges (line 11872) | function d3_layout_histogramBinSturges(range, values) {
  function d3_layout_histogramBinFixed (line 11875) | function d3_layout_histogramBinFixed(range, n) {
  function d3_layout_histogramRange (line 11880) | function d3_layout_histogramRange(values) {
  function pack (line 11885) | function pack(d, i) {
  function d3_layout_packSort (line 11924) | function d3_layout_packSort(a, b) {
  function d3_layout_packInsert (line 11927) | function d3_layout_packInsert(a, b) {
  function d3_layout_packSplice (line 11934) | function d3_layout_packSplice(a, b) {
  function d3_layout_packIntersects (line 11938) | function d3_layout_packIntersects(a, b) {
  function d3_layout_packSiblings (line 11942) | function d3_layout_packSiblings(node) {
  function d3_layout_packLink (line 12006) | function d3_layout_packLink(node) {
  function d3_layout_packUnlink (line 12009) | function d3_layout_packUnlink(node) {
  function d3_layout_packTransform (line 12013) | function d3_layout_packTransform(node, x, y, k) {
  function d3_layout_packPlace (line 12023) | function d3_layout_packPlace(a, b, c) {
  function tree (line 12039) | function tree(d, i) {
  function wrapTree (line 12058) | function wrapTree(root0) {
  function firstWalk (line 12082) | function firstWalk(v) {
  function secondWalk (line 12098) | function secondWalk(v) {
  function apportion (line 12102) | function apportion(v, w, ancestor) {
  function sizeNode (line 12132) | function sizeNode(node) {
  function d3_layout_treeSeparation (line 12153) | function d3_layout_treeSeparation(a, b) {
  function d3_layout_treeLeft (line 12156) | function d3_layout_treeLeft(v) {
  function d3_layout_treeRight (line 12160) | function d3_layout_treeRight(v) {
  function d3_layout_treeMove (line 12164) | function d3_layout_treeMove(wm, wp, shift) {
  function d3_layout_treeShift (line 12172) | function d3_layout_treeShift(v) {
  function d3_layout_treeAncestor (line 12181) | function d3_layout_treeAncestor(vim, v, ancestor) {
  function cluster (line 12186) | function cluster(d, i) {
  function d3_layout_clusterY (line 12226) | function d3_layout_clusterY(children) {
  function d3_layout_clusterX (line 12231) | function d3_layout_clusterX(children) {
  function d3_layout_clusterLeft (line 12236) | function d3_layout_clusterLeft(node) {
  function d3_layout_clusterRight (line 12240) | function d3_layout_clusterRight(node) {
  function scale (line 12246) | function scale(children, k) {
  function squarify (line 12253) | function squarify(node) {
  function stickify (line 12280) | function stickify(node) {
  function worst (line 12297) | function worst(row, u) {
  function position (line 12308) | function position(row, u, rect, flush) {
  function treemap (line 12338) | function treemap(d) {
  function padFunction (line 12357) | function padFunction(node) {
  function padConstant (line 12361) | function padConstant(node) {
  function d3_layout_treemapPadNull (line 12392) | function d3_layout_treemapPadNull(node) {
  function d3_layout_treemapPad (line 12400) | function d3_layout_treemapPad(node, padding) {
  function d3_scaleExtent (line 12452) | function d3_scaleExtent(domain) {
  function d3_scaleRange (line 12456) | function d3_scaleRange(scale) {
  function d3_scale_bilinear (line 12459) | function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_nice (line 12465) | function d3_scale_nice(domain, nice) {
  function d3_scale_niceStep (line 12475) | function d3_scale_niceStep(step) {
  function d3_scale_polylinear (line 12489) | function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_linear (line 12507) | function d3_scale_linear(domain, range, interpolate, clamp) {
  function d3_scale_linearRebind (line 12559) | function d3_scale_linearRebind(scale, linear) {
  function d3_scale_linearNice (line 12562) | function d3_scale_linearNice(domain, m) {
  function d3_scale_linearTickRange (line 12565) | function d3_scale_linearTickRange(domain, m) {
  function d3_scale_linearTicks (line 12574) | function d3_scale_linearTicks(domain, m) {
  function d3_scale_linearTickFormat (line 12577) | function d3_scale_linearTickFormat(domain, m, format) {
  function d3_scale_linearPrecision (line 12605) | function d3_scale_linearPrecision(value) {
  function d3_scale_linearFormatPrecision (line 12608) | function d3_scale_linearFormatPrecision(type, range) {
  function d3_scale_log (line 12615) | function d3_scale_log(linear, base, positive, domain) {
  function d3_scale_pow (line 12687) | function d3_scale_pow(linear, exponent, domain) {
  function d3_scale_powPow (line 12721) | function d3_scale_powPow(e) {
  function d3_scale_ordinal (line 12735) | function d3_scale_ordinal(domain, ranger) {
  function d3_scale_quantile (line 12843) | function d3_scale_quantile(domain, range) {
  function d3_scale_quantize (line 12879) | function d3_scale_quantize(x0, x1, range) {
  function d3_scale_threshold (line 12913) | function d3_scale_threshold(domain, range) {
  function d3_scale_identity (line 12939) | function d3_scale_identity(domain) {
  function d3_zero (line 12961) | function d3_zero() {
  function arc (line 12966) | function arc() {
  function circleSegment (line 13039) | function circleSegment(r1, cw) {
  function d3_svg_arcInnerRadius (line 13084) | function d3_svg_arcInnerRadius(d) {
  function d3_svg_arcOuterRadius (line 13087) | function d3_svg_arcOuterRadius(d) {
  function d3_svg_arcStartAngle (line 13090) | function d3_svg_arcStartAngle(d) {
  function d3_svg_arcEndAngle (line 13093) | function d3_svg_arcEndAngle(d) {
  function d3_svg_arcPadAngle (line 13096) | function d3_svg_arcPadAngle(d) {
  function d3_svg_arcSweep (line 13099) | function d3_svg_arcSweep(x0, y0, x1, y1) {
  function d3_svg_arcCornerTangents (line 13102) | function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
  function d3_svg_line (line 13107) | function d3_svg_line(projection) {
  function d3_svg_lineLinear (line 13174) | function d3_svg_lineLinear(points) {
  function d3_svg_lineLinearClosed (line 13177) | function d3_svg_lineLinearClosed(points) {
  function d3_svg_lineStep (line 13180) | function d3_svg_lineStep(points) {
  function d3_svg_lineStepBefore (line 13186) | function d3_svg_lineStepBefore(points) {
  function d3_svg_lineStepAfter (line 13191) | function d3_svg_lineStepAfter(points) {
  function d3_svg_lineCardinalOpen (line 13196) | function d3_svg_lineCardinalOpen(points, tension) {
  function d3_svg_lineCardinalClosed (line 13199) | function d3_svg_lineCardinalClosed(points, tension) {
  function d3_svg_lineCardinal (line 13203) | function d3_svg_lineCardinal(points, tension) {
  function d3_svg_lineHermite (line 13206) | function d3_svg_lineHermite(points, tangents) {
  function d3_svg_lineCardinalTangents (line 13233) | function d3_svg_lineCardinalTangents(points, tension) {
  function d3_svg_lineBasis (line 13243) | function d3_svg_lineBasis(points) {
  function d3_svg_lineBasisOpen (line 13259) | function d3_svg_lineBasisOpen(points) {
  function d3_svg_lineBasisClosed (line 13279) | function d3_svg_lineBasisClosed(points) {
  function d3_svg_lineBundle (line 13298) | function d3_svg_lineBundle(points, tension) {
  function d3_svg_lineDot4 (line 13311) | function d3_svg_lineDot4(a, b) {
  function d3_svg_lineBasisBezier (line 13315) | function d3_svg_lineBasisBezier(path, x, y) {
  function d3_svg_lineSlope (line 13318) | function d3_svg_lineSlope(p0, p1) {
  function d3_svg_lineFiniteDifferences (line 13321) | function d3_svg_lineFiniteDifferences(points) {
  function d3_svg_lineMonotoneTangents (line 13329) | function d3_svg_lineMonotoneTangents(points) {
  function d3_svg_lineMonotone (line 13353) | function d3_svg_lineMonotone(points) {
  function d3_svg_lineRadial (line 13362) | function d3_svg_lineRadial(points) {
  function d3_svg_area (line 13373) | function d3_svg_area(projection) {
  function chord (line 13463) | function chord(d, i) {
  function subgroup (line 13467) | function subgroup(self, f, d, i) {
  function equals (line 13477) | function equals(a, b) {
  function arc (line 13480) | function arc(r, p, a) {
  function curve (line 13483) | function curve(r0, p0, r1, p1) {
  function d3_svg_chordRadius (line 13513) | function d3_svg_chordRadius(d) {
  function diagonal (line 13518) | function diagonal(d, i) {
  function d3_svg_diagonalProjection (line 13546) | function d3_svg_diagonalProjection(d) {
  function d3_svg_diagonalRadialProjection (line 13556) | function d3_svg_diagonalRadialProjection(projection) {
  function symbol (line 13564) | function symbol(d, i) {
  function d3_svg_symbolSize (line 13579) | function d3_svg_symbolSize() {
  function d3_svg_symbolType (line 13582) | function d3_svg_symbolType() {
  function d3_svg_symbolCircle (line 13585) | function d3_svg_symbolCircle(size) {
  function d3_selection_interruptNS (line 13634) | function d3_selection_interruptNS(ns) {
  function d3_transition (line 13648) | function d3_transition(groups, ns, id) {
  function d3_transition_tween (line 13720) | function d3_transition_tween(groups, name, value, tween) {
  function attrNull (line 13734) | function attrNull() {
  function attrNullNS (line 13737) | function attrNullNS() {
  function attrTween (line 13740) | function attrTween(b) {
  function attrTweenNS (line 13748) | function attrTweenNS(b) {
  function attrTween (line 13760) | function attrTween(d, i) {
  function attrTweenNS (line 13766) | function attrTweenNS(d, i) {
  function styleNull (line 13784) | function styleNull() {
  function styleString (line 13787) | function styleString(b) {
  function styleTween (line 13799) | function styleTween(d, i) {
  function d3_transition_text (line 13810) | function d3_transition_text(b) {
  function d3_transitionNamespace (line 13890) | function d3_transitionNamespace(name) {
  function d3_transitionNode (line 13893) | function d3_transitionNode(node, i, ns, id, inherit) {
  function axis (line 13957) | function axis(g) {
  function d3_svg_axisX (line 14052) | function d3_svg_axisX(selection, x0, x1) {
  function d3_svg_axisY (line 14058) | function d3_svg_axisY(selection, y0, y1) {
  function brush (line 14066) | function brush(g) {
  function redraw (line 14152) | function redraw(g) {
  function redrawX (line 14157) | function redrawX(g) {
  function redrawY (line 14161) | function redrawY(g) {
  function brushstart (line 14165) | function brushstart() {
  function d3_time_formatIsoNative (line 14358) | function d3_time_formatIsoNative(date) {
  function d3_time_scale (line 14405) | function d3_time_scale(linear, methods, format) {
  function d3_time_scaleDate (line 14455) | function d3_time_scaleDate(t) {
  function d3_json (line 14514) | function d3_json(request) {
  function d3_html (line 14520) | function d3_html(request) {

FILE: bem-css/specificity-graph/example.js
  function defaultExample (line 7) | function defaultExample() {

FILE: bem-css/specificity-graph/specificity-graph-standalone.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function mousemove (line 228) | function mousemove() {
  function normalizeArray (line 330) | function normalizeArray(parts, allowAboveRoot) {
  function trim (line 439) | function trim(arr) {
  function filter (line 512) | function filter (xs, f) {
  function noop (line 599) | function noop() {}
  function updatePosition (line 645) | function updatePosition(str) {
  function position (line 656) | function position() {
  function Position (line 669) | function Position(start) {
  function error (line 685) | function error(msg) {
  function stylesheet (line 703) | function stylesheet() {
  function open (line 716) | function open() {
  function close (line 724) | function close() {
  function rules (line 732) | function rules() {
  function match (line 750) | function match(re) {
  function whitespace (line 763) | function whitespace() {
  function comments (line 771) | function comments(rules) {
  function comment (line 786) | function comment() {
  function selector (line 814) | function selector() {
  function declaration (line 834) | function declaration() {
  function declarations (line 864) | function declarations() {
  function keyframe (line 887) | function keyframe() {
  function atkeyframes (line 910) | function atkeyframes() {
  function atsupports (line 945) | function atsupports() {
  function athost (line 969) | function athost() {
  function atmedia (line 991) | function atmedia() {
  function atcustommedia (line 1016) | function atcustommedia() {
  function atpage (line 1032) | function atpage() {
  function atdocument (line 1062) | function atdocument() {
  function atfontface (line 1088) | function atfontface() {
  function _compileAtrule (line 1134) | function _compileAtrule(name) {
  function atrule (line 1150) | function atrule() {
  function rule (line 1170) | function rule() {
  function trim (line 1191) | function trim(str) {
  function addParent (line 1199) | function addParent(obj, parent) {
  function Compiler (line 1240) | function Compiler(opts) {
  function Compiler (line 1295) | function Compiler(options) {
  function Compiler (line 1496) | function Compiler(options) {
  function mixin (line 1808) | function mixin(compiler) {
  function resolveUrl (line 1949) | function resolveUrl(/* ...urls */) {
  function callbackAsync (line 2063) | function callbackAsync(callback, error, result) {
  function parseMapToJSON (line 2067) | function parseMapToJSON(string) {
  function resolveSourceMap (line 2073) | function resolveSourceMap(code, codeUrl, read, callback) {
  function resolveSourceMapSync (line 2096) | function resolveSourceMapSync(code, codeUrl, read) {
  function resolveSourceMapHelper (line 2108) | function resolveSourceMapHelper(code, codeUrl) {
  function resolveSources (line 2141) | function resolveSources(map, mapUrl, read, options, callback) {
  function resolveSourcesSync (line 2181) | function resolveSourcesSync(map, mapUrl, read, options) {
  function resolveSourcesHelper (line 2201) | function resolveSourcesHelper(map, mapUrl, options, fn) {
  function resolve (line 2221) | function resolve(code, codeUrl, read, options, callback) {
  function resolveSync (line 2244) | function resolveSync(code, codeUrl, read, options) {
  function ArraySet (line 2298) | function ArraySet() {
  function toVLQSigned (line 2450) | function toVLQSigned(aValue) {
  function fromVLQSigned (line 2462) | function fromVLQSigned(aValue) {
  function recursiveSearch (line 2586) | function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
  function SourceMapConsumer (line 2695) | function SourceMapConsumer(aSourceMap) {
  function SourceMapGenerator (line 3157) | function SourceMapGenerator(aArgs) {
  function SourceNode (line 3570) | function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  function addMappingWithCode (line 3679) | function addMappingWithCode(mapping, code) {
  function getArg (line 3968) | function getArg(aArgs, aName, aDefaultValue) {
  function urlParse (line 3982) | function urlParse(aUrl) {
  function urlGenerate (line 3997) | function urlGenerate(aParsedUrl) {
  function normalize (line 4030) | function normalize(aPath) {
  function join (line 4091) | function join(aRoot, aPath) {
  function relative (line 4140) | function relative(aRoot, aPath) {
  function toSetString (line 4168) | function toSetString(aStr) {
  function fromSetString (line 4173) | function fromSetString(aStr) {
  function strcmp (line 4178) | function strcmp(aStr1, aStr2) {
  function compareByOriginalPositions (line 4192) | function compareByOriginalPositions(mappingA, mappingB, onlyCompareOrigi...
  function compareByGeneratedPositions (line 4233) | function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGene...
  function amdefine (line 4289) | function amdefine(module, requireFn) {
  function urix (line 4578) | function urix(aPath) {
  function cssbeautify (line 4623) | function cssbeautify(style, opt) {
  function d3_ascending (line 5096) | function d3_ascending(a, b) {
  function d3_number (line 5159) | function d3_number(x) {
  function d3_numeric (line 5162) | function d3_numeric(x) {
  function d3_bisector (line 5221) | function d3_bisector(compare) {
  function d3_zipLength (line 5282) | function d3_zipLength(d) {
  function d3_range_integerScale (line 5334) | function d3_range_integerScale(x) {
  function d3_class (line 5339) | function d3_class(ctor, properties) {
  function d3_Map (line 5361) | function d3_Map() {
  function d3_map_escape (line 5394) | function d3_map_escape(key) {
  function d3_map_unescape (line 5397) | function d3_map_unescape(key) {
  function d3_map_has (line 5400) | function d3_map_has(key) {
  function d3_map_remove (line 5403) | function d3_map_remove(key) {
  function d3_map_keys (line 5406) | function d3_map_keys() {
  function d3_map_size (line 5411) | function d3_map_size() {
  function d3_map_empty (line 5416) | function d3_map_empty() {
  function map (line 5422) | function map(mapType, array, depth) {
  function entries (line 5446) | function entries(map, depth) {
  function d3_Set (line 5488) | function d3_Set() {
  function d3_rebind (line 5511) | function d3_rebind(target, source, method) {
  function d3_vendorSymbol (line 5517) | function d3_vendorSymbol(object, name) {
  function d3_noop (line 5526) | function d3_noop() {}
  function d3_dispatch (line 5532) | function d3_dispatch() {}
  function d3_dispatch_event (line 5547) | function d3_dispatch_event(dispatch) {
  function d3_eventPreventDefault (line 5570) | function d3_eventPreventDefault() {
  function d3_eventSource (line 5573) | function d3_eventSource() {
  function d3_eventDispatch (line 5578) | function d3_eventDispatch(target) {
  function d3_selection (line 5604) | function d3_selection(groups) {
  function d3_selection_selector (line 5643) | function d3_selection_selector(selector) {
  function d3_selection_selectorAll (line 5661) | function d3_selection_selectorAll(selector) {
  function d3_selection_attr (line 5699) | function d3_selection_attr(name, value) {
  function d3_collapse (line 5723) | function d3_collapse(s) {
  function d3_selection_classedRe (line 5743) | function d3_selection_classedRe(name) {
  function d3_selection_classes (line 5746) | function d3_selection_classes(name) {
  function d3_selection_classed (line 5749) | function d3_selection_classed(name, value) {
  function d3_selection_classedName (line 5762) | function d3_selection_classedName(name) {
  function d3_selection_style (line 5788) | function d3_selection_style(name, value, priority) {
  function d3_selection_property (line 5809) | function d3_selection_property(name, value) {
  function d3_selection_creator (line 5848) | function d3_selection_creator(name) {
  function d3_selectionRemove (line 5865) | function d3_selectionRemove() {
  function bind (line 5880) | function bind(group, groupData) {
  function d3_selection_dataNode (line 5948) | function d3_selection_dataNode(data) {
  function d3_selection_filter (line 5970) | function d3_selection_filter(selector) {
  function d3_selection_sortComparator (line 5991) | function d3_selection_sortComparator(comparator) {
  function d3_selection_each (line 6002) | function d3_selection_each(groups, callback) {
  function d3_selection_enter (line 6034) | function d3_selection_enter(selection) {
  function d3_selection_enterInsertBefore (line 6067) | function d3_selection_enterInsertBefore(enter) {
  function d3_selection_on (line 6101) | function d3_selection_on(type, listener, capture) {
  function d3_selection_onListener (line 6138) | function d3_selection_onListener(listener, argumentz) {
  function d3_selection_onFilter (line 6150) | function d3_selection_onFilter(listener, argumentz) {
  function d3_event_dragSuppress (line 6160) | function d3_event_dragSuppress() {
  function d3_mousePoint (line 6185) | function d3_mousePoint(container, e) {
  function drag (line 6221) | function drag() {
  function dragstart (line 6224) | function dragstart(id, position, subject, move, end) {
  function d3_behavior_dragTouchId (line 6268) | function d3_behavior_dragTouchId() {
  function d3_behavior_dragTouchSubject (line 6271) | function d3_behavior_dragTouchSubject() {
  function d3_behavior_dragMouseSubject (line 6274) | function d3_behavior_dragMouseSubject() {
  function d3_sgn (line 6286) | function d3_sgn(x) {
  function d3_cross2d (line 6289) | function d3_cross2d(a, b, c) {
  function d3_acos (line 6292) | function d3_acos(x) {
  function d3_asin (line 6295) | function d3_asin(x) {
  function d3_sinh (line 6298) | function d3_sinh(x) {
  function d3_cosh (line 6301) | function d3_cosh(x) {
  function d3_tanh (line 6304) | function d3_tanh(x) {
  function d3_haversin (line 6307) | function d3_haversin(x) {
  function interpolate (line 6314) | function interpolate(t) {
  function zoom (line 6331) | function zoom(g) {
  function location (line 6431) | function location(p) {
  function point (line 6434) | function point(l) {
  function scaleTo (line 6437) | function scaleTo(s) {
  function translateTo (line 6440) | function translateTo(p, l) {
  function zoomTo (line 6445) | function zoomTo(that, p, l, k) {
  function rescale (line 6457) | function rescale() {
  function zoomstarted (line 6465) | function zoomstarted(dispatch) {
  function zoomed (line 6470) | function zoomed(dispatch) {
  function zoomended (line 6478) | function zoomended(dispatch) {
  function mousedowned (line 6484) | function mousedowned() {
  function touchstarted (line 6499) | function touchstarted() {
  function mousewheeled (line 6569) | function mousewheeled() {
  function dblclicked (line 6582) | function dblclicked() {
  function d3_color (line 6597) | function d3_color() {}
  function d3_hsl (line 6602) | function d3_hsl(h, s, l) {
  function d3_hsl_rgb (line 6617) | function d3_hsl_rgb(h, s, l) {
  function d3_hcl (line 6637) | function d3_hcl(h, c, l) {
  function d3_hcl_lab (line 6650) | function d3_hcl_lab(h, c, l) {
  function d3_lab (line 6656) | function d3_lab(l, a, b) {
  function d3_lab_rgb (line 6671) | function d3_lab_rgb(l, a, b) {
  function d3_lab_hcl (line 6678) | function d3_lab_hcl(l, a, b) {
  function d3_lab_xyz (line 6681) | function d3_lab_xyz(x) {
  function d3_xyz_lab (line 6684) | function d3_xyz_lab(x) {
  function d3_xyz_rgb (line 6687) | function d3_xyz_rgb(r) {
  function d3_rgb (line 6691) | function d3_rgb(r, g, b) {
  function d3_rgbNumber (line 6694) | function d3_rgbNumber(value) {
  function d3_rgbString (line 6697) | function d3_rgbString(value) {
  function d3_rgb_hex (line 6720) | function d3_rgb_hex(v) {
  function d3_rgb_parse (line 6723) | function d3_rgb_parse(format, rgb, hsl) {
  function d3_rgb_hsl (line 6757) | function d3_rgb_hsl(r, g, b) {
  function d3_rgb_lab (line 6769) | function d3_rgb_lab(r, g, b) {
  function d3_rgb_xyz (line 6776) | function d3_rgb_xyz(r) {
  function d3_rgb_parseNumber (line 6779) | function d3_rgb_parseNumber(c) {
  function d3_functor (line 6935) | function d3_functor(v) {
  function d3_identity (line 6941) | function d3_identity(d) {
  function d3_xhrType (line 6945) | function d3_xhrType(response) {
  function d3_xhr (line 6952) | function d3_xhr(url, mimeType, response, callback) {
  function d3_xhr_fixCallback (line 7027) | function d3_xhr_fixCallback(callback) {
  function d3_xhrHasResponse (line 7032) | function d3_xhrHasResponse(request) {
  function dsv (line 7038) | function dsv(url, row, callback) {
  function response (line 7046) | function response(request) {
  function typedResponse (line 7049) | function typedResponse(f) {
  function token (line 7068) | function token() {
  function formatRow (line 7130) | function formatRow(row) {
  function formatValue (line 7133) | function formatValue(text) {
  function d3_timer_step (line 7161) | function d3_timer_step() {
  function d3_timer_mark (line 7178) | function d3_timer_mark() {
  function d3_timer_sweep (line 7187) | function d3_timer_sweep() {
  function d3_format_precision (line 7200) | function d3_format_precision(x, p) {
  function d3_formatPrefix (line 7217) | function d3_formatPrefix(d, i) {
  function d3_locale_numberFormat (line 7228) | function d3_locale_numberFormat(locale) {
  function d3_format_typeDefault (line 7349) | function d3_format_typeDefault(x) {
  function d3_date_utc (line 7353) | function d3_date_utc() {
  function d3_time_interval (line 7419) | function d3_time_interval(local, step, number) {
  function d3_time_interval_utc (line 7467) | function d3_time_interval_utc(method) {
  function d3_locale_timeFormat (line 7527) | function d3_locale_timeFormat(locale) {
  function d3_time_formatPad (line 7747) | function d3_time_formatPad(value, fill, width) {
  function d3_time_formatRe (line 7751) | function d3_time_formatRe(names) {
  function d3_time_formatLookup (line 7754) | function d3_time_formatLookup(names) {
  function d3_time_parseWeekdayNumber (line 7759) | function d3_time_parseWeekdayNumber(date, string, i) {
  function d3_time_parseWeekNumberSunday (line 7764) | function d3_time_parseWeekNumberSunday(date, string, i) {
  function d3_time_parseWeekNumberMonday (line 7769) | function d3_time_parseWeekNumberMonday(date, string, i) {
  function d3_time_parseFullYear (line 7774) | function d3_time_parseFullYear(date, string, i) {
  function d3_time_parseYear (line 7779) | function d3_time_parseYear(date, string, i) {
  function d3_time_parseZone (line 7784) | function d3_time_parseZone(date, string, i) {
  function d3_time_expandYear (line 7788) | function d3_time_expandYear(d) {
  function d3_time_parseMonthNumber (line 7791) | function d3_time_parseMonthNumber(date, string, i) {
  function d3_time_parseDay (line 7796) | function d3_time_parseDay(date, string, i) {
  function d3_time_parseDayOfYear (line 7801) | function d3_time_parseDayOfYear(date, string, i) {
  function d3_time_parseHour24 (line 7806) | function d3_time_parseHour24(date, string, i) {
  function d3_time_parseMinutes (line 7811) | function d3_time_parseMinutes(date, string, i) {
  function d3_time_parseSeconds (line 7816) | function d3_time_parseSeconds(date, string, i) {
  function d3_time_parseMilliseconds (line 7821) | function d3_time_parseMilliseconds(date, string, i) {
  function d3_time_zone (line 7826) | function d3_time_zone(d) {
  function d3_time_parseLiteralPercent (line 7830) | function d3_time_parseLiteralPercent(date, string, i) {
  function d3_time_formatMulti (line 7835) | function d3_time_formatMulti(formats) {
  function d3_adder (line 7866) | function d3_adder() {}
  function d3_adderSum (line 7883) | function d3_adderSum(a, b, o) {
  function d3_geo_streamGeometry (line 7894) | function d3_geo_streamGeometry(geometry, listener) {
  function d3_geo_streamLine (line 7939) | function d3_geo_streamLine(coordinates, listener, closed) {
  function d3_geo_streamPolygon (line 7945) | function d3_geo_streamPolygon(coordinates, listener) {
  function d3_geo_areaRingStart (line 7974) | function d3_geo_areaRingStart() {
  function d3_geo_cartesian (line 7992) | function d3_geo_cartesian(spherical) {
  function d3_geo_cartesianDot (line 7996) | function d3_geo_cartesianDot(a, b) {
  function d3_geo_cartesianCross (line 7999) | function d3_geo_cartesianCross(a, b) {
  function d3_geo_cartesianAdd (line 8002) | function d3_geo_cartesianAdd(a, b) {
  function d3_geo_cartesianScale (line 8007) | function d3_geo_cartesianScale(vector, k) {
  function d3_geo_cartesianNormalize (line 8010) | function d3_geo_cartesianNormalize(d) {
  function d3_geo_spherical (line 8016) | function d3_geo_spherical(cartesian) {
  function d3_geo_sphericalEqual (line 8019) | function d3_geo_sphericalEqual(a, b) {
  function point (line 8044) | function point(λ, φ) {
  function linePoint (line 8049) | function linePoint(λ, φ) {
  function lineStart (line 8089) | function lineStart() {
  function lineEnd (line 8092) | function lineEnd() {
  function ringPoint (line 8097) | function ringPoint(λ, φ) {
  function ringStart (line 8105) | function ringStart() {
  function ringEnd (line 8108) | function ringEnd() {
  function angle (line 8115) | function angle(λ0, λ1) {
  function compareRanges (line 8118) | function compareRanges(a, b) {
  function withinRange (line 8121) | function withinRange(x, range) {
  function d3_geo_centroidPoint (line 8175) | function d3_geo_centroidPoint(λ, φ) {
  function d3_geo_centroidPointXYZ (line 8180) | function d3_geo_centroidPointXYZ(x, y, z) {
  function d3_geo_centroidLineStart (line 8186) | function d3_geo_centroidLineStart() {
  function d3_geo_centroidLineEnd (line 8207) | function d3_geo_centroidLineEnd() {
  function d3_geo_centroidRingStart (line 8210) | function d3_geo_centroidRingStart() {
  function d3_geo_compose (line 8240) | function d3_geo_compose(a, b) {
  function d3_true (line 8249) | function d3_true() {
  function d3_geo_clipPolygon (line 8252) | function d3_geo_clipPolygon(segments, compare, clipStartInside, interpol...
  function d3_geo_clipPolygonLinkCircular (line 8311) | function d3_geo_clipPolygonLinkCircular(array) {
  function d3_geo_clipPolygonIntersection (line 8322) | function d3_geo_clipPolygonIntersection(point, points, other, entry) {
  function d3_geo_clip (line 8330) | function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
  function d3_geo_clipSegmentLength1 (line 8422) | function d3_geo_clipSegmentLength1(segment) {
  function d3_geo_clipBufferListener (line 8425) | function d3_geo_clipBufferListener() {
  function d3_geo_clipSort (line 8446) | function d3_geo_clipSort(a, b) {
  function d3_geo_clipAntimeridianLine (line 8450) | function d3_geo_clipAntimeridianLine(listener) {
  function d3_geo_clipAntimeridianIntersect (line 8489) | function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
  function d3_geo_clipAntimeridianInterpolate (line 8493) | function d3_geo_clipAntimeridianInterpolate(from, to, direction, listene...
  function d3_geo_pointInPolygon (line 8516) | function d3_geo_pointInPolygon(point, polygon) {
  function d3_geo_clipCircle (line 8545) | function d3_geo_clipCircle(radius) {
  function d3_geom_clipLine (line 8641) | function d3_geom_clipLine(x0, y0, x1, y1) {
  function d3_geo_clipExtent (line 8713) | function d3_geo_clipExtent(x0, y0, x1, y1) {
  function d3_geo_conic (line 8847) | function d3_geo_conic(projectAt) {
  function d3_geo_conicEqualArea (line 8855) | function d3_geo_conicEqualArea(φ0, φ1) {
  function albersUsa (line 8882) | function albersUsa(coordinates) {
  function d3_geo_pathAreaRingStart (line 8964) | function d3_geo_pathAreaRingStart() {
  function d3_geo_pathBoundsPoint (line 8986) | function d3_geo_pathBoundsPoint(x, y) {
  function d3_geo_pathBuffer (line 8992) | function d3_geo_pathBuffer() {
  function d3_geo_pathBufferCircle (line 9037) | function d3_geo_pathBufferCircle(radius) {
  function d3_geo_pathCentroidPoint (line 9053) | function d3_geo_pathCentroidPoint(x, y) {
  function d3_geo_pathCentroidLineStart (line 9058) | function d3_geo_pathCentroidLineStart() {
  function d3_geo_pathCentroidLineEnd (line 9072) | function d3_geo_pathCentroidLineEnd() {
  function d3_geo_pathCentroidRingStart (line 9075) | function d3_geo_pathCentroidRingStart() {
  function d3_geo_pathContext (line 9096) | function d3_geo_pathContext(context) {
  function d3_geo_resample (line 9136) | function d3_geo_resample(project) {
  function path (line 9216) | function path(object) {
  function reset (line 9255) | function reset() {
  function d3_geo_pathProjectStream (line 9261) | function d3_geo_pathProjectStream(project) {
  function d3_geo_transform (line 9278) | function d3_geo_transform(stream) {
  function d3_geo_transformPoint (line 9301) | function d3_geo_transformPoint(stream, point) {
  function d3_geo_projection (line 9323) | function d3_geo_projection(project) {
  function d3_geo_projectionMutator (line 9328) | function d3_geo_projectionMutator(projectAt) {
  function d3_geo_projectionRadians (line 9400) | function d3_geo_projectionRadians(stream) {
  function d3_geo_equirectangular (line 9405) | function d3_geo_equirectangular(λ, φ) {
  function forward (line 9413) | function forward(coordinates) {
  function d3_geo_identityRotation (line 9423) | function d3_geo_identityRotation(λ, φ) {
  function d3_geo_rotation (line 9427) | function d3_geo_rotation(δλ, δφ, δγ) {
  function d3_geo_forwardRotationλ (line 9430) | function d3_geo_forwardRotationλ(δλ) {
  function d3_geo_rotationλ (line 9435) | function d3_geo_rotationλ(δλ) {
  function d3_geo_rotationφγ (line 9440) | function d3_geo_rotationφγ(δφ, δγ) {
  function circle (line 9454) | function circle() {
  function d3_geo_circleInterpolate (line 9484) | function d3_geo_circleInterpolate(radius, precision) {
  function d3_geo_circleAngle (line 9501) | function d3_geo_circleAngle(cr, point) {
  function graticule (line 9514) | function graticule() {
  function lines (line 9520) | function lines() {
  function d3_geo_graticuleX (line 9586) | function d3_geo_graticuleX(y0, y1, dy) {
  function d3_geo_graticuleY (line 9594) | function d3_geo_graticuleY(x0, x1, dx) {
  function d3_source (line 9602) | function d3_source(d) {
  function d3_target (line 9605) | function d3_target(d) {
  function greatArc (line 9610) | function greatArc() {
  function d3_geo_interpolate (line 9637) | function d3_geo_interpolate(x0, y0, x1, y1) {
  function d3_geo_lengthLineStart (line 9662) | function d3_geo_lengthLineStart() {
  function d3_geo_azimuthal (line 9677) | function d3_geo_azimuthal(scale, angle) {
  function d3_geo_conicConformal (line 9703) | function d3_geo_conicConformal(φ0, φ1) {
  function d3_geo_conicEquidistant (line 9726) | function d3_geo_conicEquidistant(φ0, φ1) {
  function d3_geo_mercator (line 9748) | function d3_geo_mercator(λ, φ) {
  function d3_geo_mercatorProjection (line 9754) | function d3_geo_mercatorProjection(project) {
  function d3_geo_transverseMercator (line 9795) | function d3_geo_transverseMercator(λ, φ) {
  function d3_geom_pointX (line 9813) | function d3_geom_pointX(d) {
  function d3_geom_pointY (line 9816) | function d3_geom_pointY(d) {
  function hull (line 9822) | function hull(data) {
  function d3_geom_hullUpper (line 9844) | function d3_geom_hullUpper(points) {
  function d3_geom_hullOrder (line 9852) | function d3_geom_hullOrder(a, b) {
  function d3_geom_polygonInside (line 9906) | function d3_geom_polygonInside(p, a, b) {
  function d3_geom_polygonIntersect (line 9909) | function d3_geom_polygonIntersect(c, d, a, b) {
  function d3_geom_polygonClosed (line 9913) | function d3_geom_polygonClosed(coordinates) {
  function d3_geom_voronoiBeach (line 9918) | function d3_geom_voronoiBeach() {
  function d3_geom_voronoiCreateBeach (line 9922) | function d3_geom_voronoiCreateBeach(site) {
  function d3_geom_voronoiDetachBeach (line 9927) | function d3_geom_voronoiDetachBeach(beach) {
  function d3_geom_voronoiRemoveBeach (line 9933) | function d3_geom_voronoiRemoveBeach(beach) {
  function d3_geom_voronoiAddBeach (line 9969) | function d3_geom_voronoiAddBeach(site) {
  function d3_geom_voronoiLeftBreakPoint (line 10023) | function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
  function d3_geom_voronoiRightBreakPoint (line 10035) | function d3_geom_voronoiRightBreakPoint(arc, directrix) {
  function d3_geom_voronoiCell (line 10041) | function d3_geom_voronoiCell(site) {
  function d3_geom_voronoiCloseCells (line 10054) | function d3_geom_voronoiCloseCells(extent) {
  function d3_geom_voronoiHalfEdgeOrder (line 10084) | function d3_geom_voronoiHalfEdgeOrder(a, b) {
  function d3_geom_voronoiCircle (line 10087) | function d3_geom_voronoiCircle() {
  function d3_geom_voronoiAttachCircle (line 10091) | function d3_geom_voronoiAttachCircle(arc) {
  function d3_geom_voronoiDetachCircle (line 10124) | function d3_geom_voronoiDetachCircle(arc) {
  function d3_geom_voronoiClipEdges (line 10134) | function d3_geom_voronoiClipEdges(extent) {
  function d3_geom_voronoiConnectEdge (line 10144) | function d3_geom_voronoiConnectEdge(edge, extent) {
  function d3_geom_voronoiEdge (line 10218) | function d3_geom_voronoiEdge(lSite, rSite) {
  function d3_geom_voronoiCreateEdge (line 10223) | function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
  function d3_geom_voronoiCreateBorderEdge (line 10232) | function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
  function d3_geom_voronoiSetEdgeEnd (line 10239) | function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
  function d3_geom_voronoiHalfEdge (line 10250) | function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
  function d3_geom_voronoiRedBlackTree (line 10264) | function d3_geom_voronoiRedBlackTree() {
  function d3_geom_voronoiRedBlackNode (line 10267) | function d3_geom_voronoiRedBlackNode(node) {
  function d3_geom_voronoiRedBlackRotateLeft (line 10430) | function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
  function d3_geom_voronoiRedBlackRotateRight (line 10443) | function d3_geom_voronoiRedBlackRotateRight(tree, node) {
  function d3_geom_voronoiRedBlackFirst (line 10456) | function d3_geom_voronoiRedBlackFirst(node) {
  function d3_geom_voronoi (line 10460) | function d3_geom_voronoi(sites, bbox) {
  function d3_geom_voronoiVertexOrder (line 10489) | function d3_geom_voronoiVertexOrder(a, b) {
  function voronoi (line 10495) | function voronoi(data) {
  function sites (line 10506) | function sites(data) {
  function d3_geom_voronoiTriangleArea (line 10559) | function d3_geom_voronoiTriangleArea(a, b, c) {
  function quadtree (line 10577) | function quadtree(data) {
  function d3_geom_quadtreeCompatX (line 10672) | function d3_geom_quadtreeCompatX(d) {
  function d3_geom_quadtreeCompatY (line 10675) | function d3_geom_quadtreeCompatY(d) {
  function d3_geom_quadtreeNode (line 10678) | function d3_geom_quadtreeNode() {
  function d3_geom_quadtreeVisit (line 10687) | function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
  function d3_geom_quadtreeFind (line 10696) | function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
  function d3_interpolateRgb (line 10733) | function d3_interpolateRgb(a, b) {
  function d3_interpolateObject (line 10742) | function d3_interpolateObject(a, b) {
  function d3_interpolateNumber (line 10762) | function d3_interpolateNumber(a, b) {
  function d3_interpolateString (line 10769) | function d3_interpolateString(a, b) {
  function d3_interpolate (line 10803) | function d3_interpolate(a, b) {
  function d3_interpolateArray (line 10813) | function d3_interpolateArray(a, b) {
  function d3_ease_clamp (line 10864) | function d3_ease_clamp(f) {
  function d3_ease_reverse (line 10869) | function d3_ease_reverse(f) {
  function d3_ease_reflect (line 10874) | function d3_ease_reflect(f) {
  function d3_ease_quad (line 10879) | function d3_ease_quad(t) {
  function d3_ease_cubic (line 10882) | function d3_ease_cubic(t) {
  function d3_ease_cubicInOut (line 10885) | function d3_ease_cubicInOut(t) {
  function d3_ease_poly (line 10891) | function d3_ease_poly(e) {
  function d3_ease_sin (line 10896) | function d3_ease_sin(t) {
  function d3_ease_exp (line 10899) | function d3_ease_exp(t) {
  function d3_ease_circle (line 10902) | function d3_ease_circle(t) {
  function d3_ease_elastic (line 10905) | function d3_ease_elastic(a, p) {
  function d3_ease_back (line 10913) | function d3_ease_back(s) {
  function d3_ease_bounce (line 10919) | function d3_ease_bounce(t) {
  function d3_interpolateHcl (line 10923) | function d3_interpolateHcl(a, b) {
  function d3_interpolateHsl (line 10934) | function d3_interpolateHsl(a, b) {
  function d3_interpolateLab (line 10945) | function d3_interpolateLab(a, b) {
  function d3_interpolateRound (line 10954) | function d3_interpolateRound(a, b) {
  function d3_transform (line 10970) | function d3_transform(m) {
  function d3_transformDot (line 10986) | function d3_transformDot(a, b) {
  function d3_transformNormalize (line 10989) | function d3_transformNormalize(a) {
  function d3_transformCombine (line 10997) | function d3_transformCombine(a, b, k) {
  function d3_interpolateTransform (line 11011) | function d3_interpolateTransform(a, b) {
  function d3_uninterpolateNumber (line 11063) | function d3_uninterpolateNumber(a, b) {
  function d3_uninterpolateClamp (line 11069) | function d3_uninterpolateClamp(a, b) {
  function d3_layout_bundlePath (line 11083) | function d3_layout_bundlePath(link) {
  function d3_layout_bundleAncestors (line 11096) | function d3_layout_bundleAncestors(node) {
  function d3_layout_bundleLeastCommonAncestor (line 11106) | function d3_layout_bundleLeastCommonAncestor(a, b) {
  function relayout (line 11118) | function relayout() {
  function resort (line 11184) | function resort() {
  function repulse (line 11231) | function repulse(node) {
  function position (line 11403) | function position(dimension, size) {
  function dragmove (line 11432) | function dragmove(d) {
  function d3_layout_forceDragstart (line 11438) | function d3_layout_forceDragstart(d) {
  function d3_layout_forceDragend (line 11441) | function d3_layout_forceDragend(d) {
  function d3_layout_forceMouseover (line 11444) | function d3_layout_forceMouseover(d) {
  function d3_layout_forceMouseout (line 11448) | function d3_layout_forceMouseout(d) {
  function d3_layout_forceAccumulate (line 11451) | function d3_layout_forceAccumulate(quad, alpha, charges) {
  function hierarchy (line 11481) | function hierarchy(root) {
  function d3_layout_hierarchyRebind (line 11537) | function d3_layout_hierarchyRebind(object, hierarchy) {
  function d3_layout_hierarchyVisitBefore (line 11543) | function d3_layout_hierarchyVisitBefore(node, callback) {
  function d3_layout_hierarchyVisitAfter (line 11553) | function d3_layout_hierarchyVisitAfter(node, callback) {
  function d3_layout_hierarchyChildren (line 11566) | function d3_layout_hierarchyChildren(d) {
  function d3_layout_hierarchyValue (line 11569) | function d3_layout_hierarchyValue(d) {
  function d3_layout_hierarchySort (line 11572) | function d3_layout_hierarchySort(a, b) {
  function d3_layout_hierarchyLinks (line 11575) | function d3_layout_hierarchyLinks(nodes) {
  function position (line 11587) | function position(node, x, dx, dy) {
  function depth (line 11602) | function depth(node) {
  function partition (line 11610) | function partition(d, i) {
  function pie (line 11624) | function pie(data) {
  function stack (line 11674) | function stack(data, index) {
  function d3_layout_stackX (line 11729) | function d3_layout_stackX(d) {
  function d3_layout_stackY (line 11732) | function d3_layout_stackY(d) {
  function d3_layout_stackOut (line 11735) | function d3_layout_stackOut(d, y0, y) {
  function d3_layout_stackOrderDefault (line 11802) | function d3_layout_stackOrderDefault(data) {
  function d3_layout_stackOffsetZero (line 11805) | function d3_layout_stackOffsetZero(data) {
  function d3_layout_stackMaxIndex (line 11810) | function d3_layout_stackMaxIndex(array) {
  function d3_layout_stackReduceSum (line 11820) | function d3_layout_stackReduceSum(d) {
  function d3_layout_stackSum (line 11823) | function d3_layout_stackSum(p, d) {
  function histogram (line 11828) | function histogram(data, i) {
  function d3_layout_histogramBinSturges (line 11872) | function d3_layout_histogramBinSturges(range, values) {
  function d3_layout_histogramBinFixed (line 11875) | function d3_layout_histogramBinFixed(range, n) {
  function d3_layout_histogramRange (line 11880) | function d3_layout_histogramRange(values) {
  function pack (line 11885) | function pack(d, i) {
  function d3_layout_packSort (line 11924) | function d3_layout_packSort(a, b) {
  function d3_layout_packInsert (line 11927) | function d3_layout_packInsert(a, b) {
  function d3_layout_packSplice (line 11934) | function d3_layout_packSplice(a, b) {
  function d3_layout_packIntersects (line 11938) | function d3_layout_packIntersects(a, b) {
  function d3_layout_packSiblings (line 11942) | function d3_layout_packSiblings(node) {
  function d3_layout_packLink (line 12006) | function d3_layout_packLink(node) {
  function d3_layout_packUnlink (line 12009) | function d3_layout_packUnlink(node) {
  function d3_layout_packTransform (line 12013) | function d3_layout_packTransform(node, x, y, k) {
  function d3_layout_packPlace (line 12023) | function d3_layout_packPlace(a, b, c) {
  function tree (line 12039) | function tree(d, i) {
  function wrapTree (line 12058) | function wrapTree(root0) {
  function firstWalk (line 12082) | function firstWalk(v) {
  function secondWalk (line 12098) | function secondWalk(v) {
  function apportion (line 12102) | function apportion(v, w, ancestor) {
  function sizeNode (line 12132) | function sizeNode(node) {
  function d3_layout_treeSeparation (line 12153) | function d3_layout_treeSeparation(a, b) {
  function d3_layout_treeLeft (line 12156) | function d3_layout_treeLeft(v) {
  function d3_layout_treeRight (line 12160) | function d3_layout_treeRight(v) {
  function d3_layout_treeMove (line 12164) | function d3_layout_treeMove(wm, wp, shift) {
  function d3_layout_treeShift (line 12172) | function d3_layout_treeShift(v) {
  function d3_layout_treeAncestor (line 12181) | function d3_layout_treeAncestor(vim, v, ancestor) {
  function cluster (line 12186) | function cluster(d, i) {
  function d3_layout_clusterY (line 12226) | function d3_layout_clusterY(children) {
  function d3_layout_clusterX (line 12231) | function d3_layout_clusterX(children) {
  function d3_layout_clusterLeft (line 12236) | function d3_layout_clusterLeft(node) {
  function d3_layout_clusterRight (line 12240) | function d3_layout_clusterRight(node) {
  function scale (line 12246) | function scale(children, k) {
  function squarify (line 12253) | function squarify(node) {
  function stickify (line 12280) | function stickify(node) {
  function worst (line 12297) | function worst(row, u) {
  function position (line 12308) | function position(row, u, rect, flush) {
  function treemap (line 12338) | function treemap(d) {
  function padFunction (line 12357) | function padFunction(node) {
  function padConstant (line 12361) | function padConstant(node) {
  function d3_layout_treemapPadNull (line 12392) | function d3_layout_treemapPadNull(node) {
  function d3_layout_treemapPad (line 12400) | function d3_layout_treemapPad(node, padding) {
  function d3_scaleExtent (line 12452) | function d3_scaleExtent(domain) {
  function d3_scaleRange (line 12456) | function d3_scaleRange(scale) {
  function d3_scale_bilinear (line 12459) | function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_nice (line 12465) | function d3_scale_nice(domain, nice) {
  function d3_scale_niceStep (line 12475) | function d3_scale_niceStep(step) {
  function d3_scale_polylinear (line 12489) | function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_linear (line 12507) | function d3_scale_linear(domain, range, interpolate, clamp) {
  function d3_scale_linearRebind (line 12559) | function d3_scale_linearRebind(scale, linear) {
  function d3_scale_linearNice (line 12562) | function d3_scale_linearNice(domain, m) {
  function d3_scale_linearTickRange (line 12565) | function d3_scale_linearTickRange(domain, m) {
  function d3_scale_linearTicks (line 12574) | function d3_scale_linearTicks(domain, m) {
  function d3_scale_linearTickFormat (line 12577) | function d3_scale_linearTickFormat(domain, m, format) {
  function d3_scale_linearPrecision (line 12605) | function d3_scale_linearPrecision(value) {
  function d3_scale_linearFormatPrecision (line 12608) | function d3_scale_linearFormatPrecision(type, range) {
  function d3_scale_log (line 12615) | function d3_scale_log(linear, base, positive, domain) {
  function d3_scale_pow (line 12687) | function d3_scale_pow(linear, exponent, domain) {
  function d3_scale_powPow (line 12721) | function d3_scale_powPow(e) {
  function d3_scale_ordinal (line 12735) | function d3_scale_ordinal(domain, ranger) {
  function d3_scale_quantile (line 12843) | function d3_scale_quantile(domain, range) {
  function d3_scale_quantize (line 12879) | function d3_scale_quantize(x0, x1, range) {
  function d3_scale_threshold (line 12913) | function d3_scale_threshold(domain, range) {
  function d3_scale_identity (line 12939) | function d3_scale_identity(domain) {
  function d3_zero (line 12961) | function d3_zero() {
  function arc (line 12966) | function arc() {
  function circleSegment (line 13039) | function circleSegment(r1, cw) {
  function d3_svg_arcInnerRadius (line 13084) | function d3_svg_arcInnerRadius(d) {
  function d3_svg_arcOuterRadius (line 13087) | function d3_svg_arcOuterRadius(d) {
  function d3_svg_arcStartAngle (line 13090) | function d3_svg_arcStartAngle(d) {
  function d3_svg_arcEndAngle (line 13093) | function d3_svg_arcEndAngle(d) {
  function d3_svg_arcPadAngle (line 13096) | function d3_svg_arcPadAngle(d) {
  function d3_svg_arcSweep (line 13099) | function d3_svg_arcSweep(x0, y0, x1, y1) {
  function d3_svg_arcCornerTangents (line 13102) | function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
  function d3_svg_line (line 13107) | function d3_svg_line(projection) {
  function d3_svg_lineLinear (line 13174) | function d3_svg_lineLinear(points) {
  function d3_svg_lineLinearClosed (line 13177) | function d3_svg_lineLinearClosed(points) {
  function d3_svg_lineStep (line 13180) | function d3_svg_lineStep(points) {
  function d3_svg_lineStepBefore (line 13186) | function d3_svg_lineStepBefore(points) {
  function d3_svg_lineStepAfter (line 13191) | function d3_svg_lineStepAfter(points) {
  function d3_svg_lineCardinalOpen (line 13196) | function d3_svg_lineCardinalOpen(points, tension) {
  function d3_svg_lineCardinalClosed (line 13199) | function d3_svg_lineCardinalClosed(points, tension) {
  function d3_svg_lineCardinal (line 13203) | function d3_svg_lineCardinal(points, tension) {
  function d3_svg_lineHermite (line 13206) | function d3_svg_lineHermite(points, tangents) {
  function d3_svg_lineCardinalTangents (line 13233) | function d3_svg_lineCardinalTangents(points, tension) {
  function d3_svg_lineBasis (line 13243) | function d3_svg_lineBasis(points) {
  function d3_svg_lineBasisOpen (line 13259) | function d3_svg_lineBasisOpen(points) {
  function d3_svg_lineBasisClosed (line 13279) | function d3_svg_lineBasisClosed(points) {
  function d3_svg_lineBundle (line 13298) | function d3_svg_lineBundle(points, tension) {
  function d3_svg_lineDot4 (line 13311) | function d3_svg_lineDot4(a, b) {
  function d3_svg_lineBasisBezier (line 13315) | function d3_svg_lineBasisBezier(path, x, y) {
  function d3_svg_lineSlope (line 13318) | function d3_svg_lineSlope(p0, p1) {
  function d3_svg_lineFiniteDifferences (line 13321) | function d3_svg_lineFiniteDifferences(points) {
  function d3_svg_lineMonotoneTangents (line 13329) | function d3_svg_lineMonotoneTangents(points) {
  function d3_svg_lineMonotone (line 13353) | function d3_svg_lineMonotone(points) {
  function d3_svg_lineRadial (line 13362) | function d3_svg_lineRadial(points) {
  function d3_svg_area (line 13373) | function d3_svg_area(projection) {
  function chord (line 13463) | function chord(d, i) {
  function subgroup (line 13467) | function subgroup(self, f, d, i) {
  function equals (line 13477) | function equals(a, b) {
  function arc (line 13480) | function arc(r, p, a) {
  function curve (line 13483) | function curve(r0, p0, r1, p1) {
  function d3_svg_chordRadius (line 13513) | function d3_svg_chordRadius(d) {
  function diagonal (line 13518) | function diagonal(d, i) {
  function d3_svg_diagonalProjection (line 13546) | function d3_svg_diagonalProjection(d) {
  function d3_svg_diagonalRadialProjection (line 13556) | function d3_svg_diagonalRadialProjection(projection) {
  function symbol (line 13564) | function symbol(d, i) {
  function d3_svg_symbolSize (line 13579) | function d3_svg_symbolSize() {
  function d3_svg_symbolType (line 13582) | function d3_svg_symbolType() {
  function d3_svg_symbolCircle (line 13585) | function d3_svg_symbolCircle(size) {
  function d3_selection_interruptNS (line 13634) | function d3_selection_interruptNS(ns) {
  function d3_transition (line 13648) | function d3_transition(groups, ns, id) {
  function d3_transition_tween (line 13720) | function d3_transition_tween(groups, name, value, tween) {
  function attrNull (line 13734) | function attrNull() {
  function attrNullNS (line 13737) | function attrNullNS() {
  function attrTween (line 13740) | function attrTween(b) {
  function attrTweenNS (line 13748) | function attrTweenNS(b) {
  function attrTween (line 13760) | function attrTween(d, i) {
  function attrTweenNS (line 13766) | function attrTweenNS(d, i) {
  function styleNull (line 13784) | function styleNull() {
  function styleString (line 13787) | function styleString(b) {
  function styleTween (line 13799) | function styleTween(d, i) {
  function d3_transition_text (line 13810) | function d3_transition_text(b) {
  function d3_transitionNamespace (line 13890) | function d3_transitionNamespace(name) {
  function d3_transitionNode (line 13893) | function d3_transitionNode(node, i, ns, id, inherit) {
  function axis (line 13957) | function axis(g) {
  function d3_svg_axisX (line 14052) | function d3_svg_axisX(selection, x0, x1) {
  function d3_svg_axisY (line 14058) | function d3_svg_axisY(selection, y0, y1) {
  function brush (line 14066) | function brush(g) {
  function redraw (line 14152) | function redraw(g) {
  function redrawX (line 14157) | function redrawX(g) {
  function redrawY (line 14161) | function redrawY(g) {
  function brushstart (line 14165) | function brushstart() {
  function d3_time_formatIsoNative (line 14358) | function d3_time_formatIsoNative(date) {
  function d3_time_scale (line 14405) | function d3_time_scale(linear, methods, format) {
  function d3_time_scaleDate (line 14455) | function d3_time_scaleDate(t) {
  function d3_json (line 14514) | function d3_json(request) {
  function d3_html (line 14520) | function d3_html(request) {

FILE: bem-flexboxgrid/specificity-graph/example.js
  function defaultExample (line 7) | function defaultExample() {

FILE: bem-flexboxgrid/specificity-graph/specificity-graph-standalone.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function mousemove (line 228) | function mousemove() {
  function normalizeArray (line 330) | function normalizeArray(parts, allowAboveRoot) {
  function trim (line 439) | function trim(arr) {
  function filter (line 512) | function filter (xs, f) {
  function noop (line 599) | function noop() {}
  function updatePosition (line 645) | function updatePosition(str) {
  function position (line 656) | function position() {
  function Position (line 669) | function Position(start) {
  function error (line 685) | function error(msg) {
  function stylesheet (line 703) | function stylesheet() {
  function open (line 716) | function open() {
  function close (line 724) | function close() {
  function rules (line 732) | function rules() {
  function match (line 750) | function match(re) {
  function whitespace (line 763) | function whitespace() {
  function comments (line 771) | function comments(rules) {
  function comment (line 786) | function comment() {
  function selector (line 814) | function selector() {
  function declaration (line 834) | function declaration() {
  function declarations (line 864) | function declarations() {
  function keyframe (line 887) | function keyframe() {
  function atkeyframes (line 910) | function atkeyframes() {
  function atsupports (line 945) | function atsupports() {
  function athost (line 969) | function athost() {
  function atmedia (line 991) | function atmedia() {
  function atcustommedia (line 1016) | function atcustommedia() {
  function atpage (line 1032) | function atpage() {
  function atdocument (line 1062) | function atdocument() {
  function atfontface (line 1088) | function atfontface() {
  function _compileAtrule (line 1134) | function _compileAtrule(name) {
  function atrule (line 1150) | function atrule() {
  function rule (line 1170) | function rule() {
  function trim (line 1191) | function trim(str) {
  function addParent (line 1199) | function addParent(obj, parent) {
  function Compiler (line 1240) | function Compiler(opts) {
  function Compiler (line 1295) | function Compiler(options) {
  function Compiler (line 1496) | function Compiler(options) {
  function mixin (line 1808) | function mixin(compiler) {
  function resolveUrl (line 1949) | function resolveUrl(/* ...urls */) {
  function callbackAsync (line 2063) | function callbackAsync(callback, error, result) {
  function parseMapToJSON (line 2067) | function parseMapToJSON(string) {
  function resolveSourceMap (line 2073) | function resolveSourceMap(code, codeUrl, read, callback) {
  function resolveSourceMapSync (line 2096) | function resolveSourceMapSync(code, codeUrl, read) {
  function resolveSourceMapHelper (line 2108) | function resolveSourceMapHelper(code, codeUrl) {
  function resolveSources (line 2141) | function resolveSources(map, mapUrl, read, options, callback) {
  function resolveSourcesSync (line 2181) | function resolveSourcesSync(map, mapUrl, read, options) {
  function resolveSourcesHelper (line 2201) | function resolveSourcesHelper(map, mapUrl, options, fn) {
  function resolve (line 2221) | function resolve(code, codeUrl, read, options, callback) {
  function resolveSync (line 2244) | function resolveSync(code, codeUrl, read, options) {
  function ArraySet (line 2298) | function ArraySet() {
  function toVLQSigned (line 2450) | function toVLQSigned(aValue) {
  function fromVLQSigned (line 2462) | function fromVLQSigned(aValue) {
  function recursiveSearch (line 2586) | function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
  function SourceMapConsumer (line 2695) | function SourceMapConsumer(aSourceMap) {
  function SourceMapGenerator (line 3157) | function SourceMapGenerator(aArgs) {
  function SourceNode (line 3570) | function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  function addMappingWithCode (line 3679) | function addMappingWithCode(mapping, code) {
  function getArg (line 3968) | function getArg(aArgs, aName, aDefaultValue) {
  function urlParse (line 3982) | function urlParse(aUrl) {
  function urlGenerate (line 3997) | function urlGenerate(aParsedUrl) {
  function normalize (line 4030) | function normalize(aPath) {
  function join (line 4091) | function join(aRoot, aPath) {
  function relative (line 4140) | function relative(aRoot, aPath) {
  function toSetString (line 4168) | function toSetString(aStr) {
  function fromSetString (line 4173) | function fromSetString(aStr) {
  function strcmp (line 4178) | function strcmp(aStr1, aStr2) {
  function compareByOriginalPositions (line 4192) | function compareByOriginalPositions(mappingA, mappingB, onlyCompareOrigi...
  function compareByGeneratedPositions (line 4233) | function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGene...
  function amdefine (line 4289) | function amdefine(module, requireFn) {
  function urix (line 4578) | function urix(aPath) {
  function cssbeautify (line 4623) | function cssbeautify(style, opt) {
  function d3_ascending (line 5096) | function d3_ascending(a, b) {
  function d3_number (line 5159) | function d3_number(x) {
  function d3_numeric (line 5162) | function d3_numeric(x) {
  function d3_bisector (line 5221) | function d3_bisector(compare) {
  function d3_zipLength (line 5282) | function d3_zipLength(d) {
  function d3_range_integerScale (line 5334) | function d3_range_integerScale(x) {
  function d3_class (line 5339) | function d3_class(ctor, properties) {
  function d3_Map (line 5361) | function d3_Map() {
  function d3_map_escape (line 5394) | function d3_map_escape(key) {
  function d3_map_unescape (line 5397) | function d3_map_unescape(key) {
  function d3_map_has (line 5400) | function d3_map_has(key) {
  function d3_map_remove (line 5403) | function d3_map_remove(key) {
  function d3_map_keys (line 5406) | function d3_map_keys() {
  function d3_map_size (line 5411) | function d3_map_size() {
  function d3_map_empty (line 5416) | function d3_map_empty() {
  function map (line 5422) | function map(mapType, array, depth) {
  function entries (line 5446) | function entries(map, depth) {
  function d3_Set (line 5488) | function d3_Set() {
  function d3_rebind (line 5511) | function d3_rebind(target, source, method) {
  function d3_vendorSymbol (line 5517) | function d3_vendorSymbol(object, name) {
  function d3_noop (line 5526) | function d3_noop() {}
  function d3_dispatch (line 5532) | function d3_dispatch() {}
  function d3_dispatch_event (line 5547) | function d3_dispatch_event(dispatch) {
  function d3_eventPreventDefault (line 5570) | function d3_eventPreventDefault() {
  function d3_eventSource (line 5573) | function d3_eventSource() {
  function d3_eventDispatch (line 5578) | function d3_eventDispatch(target) {
  function d3_selection (line 5604) | function d3_selection(groups) {
  function d3_selection_selector (line 5643) | function d3_selection_selector(selector) {
  function d3_selection_selectorAll (line 5661) | function d3_selection_selectorAll(selector) {
  function d3_selection_attr (line 5699) | function d3_selection_attr(name, value) {
  function d3_collapse (line 5723) | function d3_collapse(s) {
  function d3_selection_classedRe (line 5743) | function d3_selection_classedRe(name) {
  function d3_selection_classes (line 5746) | function d3_selection_classes(name) {
  function d3_selection_classed (line 5749) | function d3_selection_classed(name, value) {
  function d3_selection_classedName (line 5762) | function d3_selection_classedName(name) {
  function d3_selection_style (line 5788) | function d3_selection_style(name, value, priority) {
  function d3_selection_property (line 5809) | function d3_selection_property(name, value) {
  function d3_selection_creator (line 5848) | function d3_selection_creator(name) {
  function d3_selectionRemove (line 5865) | function d3_selectionRemove() {
  function bind (line 5880) | function bind(group, groupData) {
  function d3_selection_dataNode (line 5948) | function d3_selection_dataNode(data) {
  function d3_selection_filter (line 5970) | function d3_selection_filter(selector) {
  function d3_selection_sortComparator (line 5991) | function d3_selection_sortComparator(comparator) {
  function d3_selection_each (line 6002) | function d3_selection_each(groups, callback) {
  function d3_selection_enter (line 6034) | function d3_selection_enter(selection) {
  function d3_selection_enterInsertBefore (line 6067) | function d3_selection_enterInsertBefore(enter) {
  function d3_selection_on (line 6101) | function d3_selection_on(type, listener, capture) {
  function d3_selection_onListener (line 6138) | function d3_selection_onListener(listener, argumentz) {
  function d3_selection_onFilter (line 6150) | function d3_selection_onFilter(listener, argumentz) {
  function d3_event_dragSuppress (line 6160) | function d3_event_dragSuppress() {
  function d3_mousePoint (line 6185) | function d3_mousePoint(container, e) {
  function drag (line 6221) | function drag() {
  function dragstart (line 6224) | function dragstart(id, position, subject, move, end) {
  function d3_behavior_dragTouchId (line 6268) | function d3_behavior_dragTouchId() {
  function d3_behavior_dragTouchSubject (line 6271) | function d3_behavior_dragTouchSubject() {
  function d3_behavior_dragMouseSubject (line 6274) | function d3_behavior_dragMouseSubject() {
  function d3_sgn (line 6286) | function d3_sgn(x) {
  function d3_cross2d (line 6289) | function d3_cross2d(a, b, c) {
  function d3_acos (line 6292) | function d3_acos(x) {
  function d3_asin (line 6295) | function d3_asin(x) {
  function d3_sinh (line 6298) | function d3_sinh(x) {
  function d3_cosh (line 6301) | function d3_cosh(x) {
  function d3_tanh (line 6304) | function d3_tanh(x) {
  function d3_haversin (line 6307) | function d3_haversin(x) {
  function interpolate (line 6314) | function interpolate(t) {
  function zoom (line 6331) | function zoom(g) {
  function location (line 6431) | function location(p) {
  function point (line 6434) | function point(l) {
  function scaleTo (line 6437) | function scaleTo(s) {
  function translateTo (line 6440) | function translateTo(p, l) {
  function zoomTo (line 6445) | function zoomTo(that, p, l, k) {
  function rescale (line 6457) | function rescale() {
  function zoomstarted (line 6465) | function zoomstarted(dispatch) {
  function zoomed (line 6470) | function zoomed(dispatch) {
  function zoomended (line 6478) | function zoomended(dispatch) {
  function mousedowned (line 6484) | function mousedowned() {
  function touchstarted (line 6499) | function touchstarted() {
  function mousewheeled (line 6569) | function mousewheeled() {
  function dblclicked (line 6582) | function dblclicked() {
  function d3_color (line 6597) | function d3_color() {}
  function d3_hsl (line 6602) | function d3_hsl(h, s, l) {
  function d3_hsl_rgb (line 6617) | function d3_hsl_rgb(h, s, l) {
  function d3_hcl (line 6637) | function d3_hcl(h, c, l) {
  function d3_hcl_lab (line 6650) | function d3_hcl_lab(h, c, l) {
  function d3_lab (line 6656) | function d3_lab(l, a, b) {
  function d3_lab_rgb (line 6671) | function d3_lab_rgb(l, a, b) {
  function d3_lab_hcl (line 6678) | function d3_lab_hcl(l, a, b) {
  function d3_lab_xyz (line 6681) | function d3_lab_xyz(x) {
  function d3_xyz_lab (line 6684) | function d3_xyz_lab(x) {
  function d3_xyz_rgb (line 6687) | function d3_xyz_rgb(r) {
  function d3_rgb (line 6691) | function d3_rgb(r, g, b) {
  function d3_rgbNumber (line 6694) | function d3_rgbNumber(value) {
  function d3_rgbString (line 6697) | function d3_rgbString(value) {
  function d3_rgb_hex (line 6720) | function d3_rgb_hex(v) {
  function d3_rgb_parse (line 6723) | function d3_rgb_parse(format, rgb, hsl) {
  function d3_rgb_hsl (line 6757) | function d3_rgb_hsl(r, g, b) {
  function d3_rgb_lab (line 6769) | function d3_rgb_lab(r, g, b) {
  function d3_rgb_xyz (line 6776) | function d3_rgb_xyz(r) {
  function d3_rgb_parseNumber (line 6779) | function d3_rgb_parseNumber(c) {
  function d3_functor (line 6935) | function d3_functor(v) {
  function d3_identity (line 6941) | function d3_identity(d) {
  function d3_xhrType (line 6945) | function d3_xhrType(response) {
  function d3_xhr (line 6952) | function d3_xhr(url, mimeType, response, callback) {
  function d3_xhr_fixCallback (line 7027) | function d3_xhr_fixCallback(callback) {
  function d3_xhrHasResponse (line 7032) | function d3_xhrHasResponse(request) {
  function dsv (line 7038) | function dsv(url, row, callback) {
  function response (line 7046) | function response(request) {
  function typedResponse (line 7049) | function typedResponse(f) {
  function token (line 7068) | function token() {
  function formatRow (line 7130) | function formatRow(row) {
  function formatValue (line 7133) | function formatValue(text) {
  function d3_timer_step (line 7161) | function d3_timer_step() {
  function d3_timer_mark (line 7178) | function d3_timer_mark() {
  function d3_timer_sweep (line 7187) | function d3_timer_sweep() {
  function d3_format_precision (line 7200) | function d3_format_precision(x, p) {
  function d3_formatPrefix (line 7217) | function d3_formatPrefix(d, i) {
  function d3_locale_numberFormat (line 7228) | function d3_locale_numberFormat(locale) {
  function d3_format_typeDefault (line 7349) | function d3_format_typeDefault(x) {
  function d3_date_utc (line 7353) | function d3_date_utc() {
  function d3_time_interval (line 7419) | function d3_time_interval(local, step, number) {
  function d3_time_interval_utc (line 7467) | function d3_time_interval_utc(method) {
  function d3_locale_timeFormat (line 7527) | function d3_locale_timeFormat(locale) {
  function d3_time_formatPad (line 7747) | function d3_time_formatPad(value, fill, width) {
  function d3_time_formatRe (line 7751) | function d3_time_formatRe(names) {
  function d3_time_formatLookup (line 7754) | function d3_time_formatLookup(names) {
  function d3_time_parseWeekdayNumber (line 7759) | function d3_time_parseWeekdayNumber(date, string, i) {
  function d3_time_parseWeekNumberSunday (line 7764) | function d3_time_parseWeekNumberSunday(date, string, i) {
  function d3_time_parseWeekNumberMonday (line 7769) | function d3_time_parseWeekNumberMonday(date, string, i) {
  function d3_time_parseFullYear (line 7774) | function d3_time_parseFullYear(date, string, i) {
  function d3_time_parseYear (line 7779) | function d3_time_parseYear(date, string, i) {
  function d3_time_parseZone (line 7784) | function d3_time_parseZone(date, string, i) {
  function d3_time_expandYear (line 7788) | function d3_time_expandYear(d) {
  function d3_time_parseMonthNumber (line 7791) | function d3_time_parseMonthNumber(date, string, i) {
  function d3_time_parseDay (line 7796) | function d3_time_parseDay(date, string, i) {
  function d3_time_parseDayOfYear (line 7801) | function d3_time_parseDayOfYear(date, string, i) {
  function d3_time_parseHour24 (line 7806) | function d3_time_parseHour24(date, string, i) {
  function d3_time_parseMinutes (line 7811) | function d3_time_parseMinutes(date, string, i) {
  function d3_time_parseSeconds (line 7816) | function d3_time_parseSeconds(date, string, i) {
  function d3_time_parseMilliseconds (line 7821) | function d3_time_parseMilliseconds(date, string, i) {
  function d3_time_zone (line 7826) | function d3_time_zone(d) {
  function d3_time_parseLiteralPercent (line 7830) | function d3_time_parseLiteralPercent(date, string, i) {
  function d3_time_formatMulti (line 7835) | function d3_time_formatMulti(formats) {
  function d3_adder (line 7866) | function d3_adder() {}
  function d3_adderSum (line 7883) | function d3_adderSum(a, b, o) {
  function d3_geo_streamGeometry (line 7894) | function d3_geo_streamGeometry(geometry, listener) {
  function d3_geo_streamLine (line 7939) | function d3_geo_streamLine(coordinates, listener, closed) {
  function d3_geo_streamPolygon (line 7945) | function d3_geo_streamPolygon(coordinates, listener) {
  function d3_geo_areaRingStart (line 7974) | function d3_geo_areaRingStart() {
  function d3_geo_cartesian (line 7992) | function d3_geo_cartesian(spherical) {
  function d3_geo_cartesianDot (line 7996) | function d3_geo_cartesianDot(a, b) {
  function d3_geo_cartesianCross (line 7999) | function d3_geo_cartesianCross(a, b) {
  function d3_geo_cartesianAdd (line 8002) | function d3_geo_cartesianAdd(a, b) {
  function d3_geo_cartesianScale (line 8007) | function d3_geo_cartesianScale(vector, k) {
  function d3_geo_cartesianNormalize (line 8010) | function d3_geo_cartesianNormalize(d) {
  function d3_geo_spherical (line 8016) | function d3_geo_spherical(cartesian) {
  function d3_geo_sphericalEqual (line 8019) | function d3_geo_sphericalEqual(a, b) {
  function point (line 8044) | function point(λ, φ) {
  function linePoint (line 8049) | function linePoint(λ, φ) {
  function lineStart (line 8089) | function lineStart() {
  function lineEnd (line 8092) | function lineEnd() {
  function ringPoint (line 8097) | function ringPoint(λ, φ) {
  function ringStart (line 8105) | function ringStart() {
  function ringEnd (line 8108) | function ringEnd() {
  function angle (line 8115) | function angle(λ0, λ1) {
  function compareRanges (line 8118) | function compareRanges(a, b) {
  function withinRange (line 8121) | function withinRange(x, range) {
  function d3_geo_centroidPoint (line 8175) | function d3_geo_centroidPoint(λ, φ) {
  function d3_geo_centroidPointXYZ (line 8180) | function d3_geo_centroidPointXYZ(x, y, z) {
  function d3_geo_centroidLineStart (line 8186) | function d3_geo_centroidLineStart() {
  function d3_geo_centroidLineEnd (line 8207) | function d3_geo_centroidLineEnd() {
  function d3_geo_centroidRingStart (line 8210) | function d3_geo_centroidRingStart() {
  function d3_geo_compose (line 8240) | function d3_geo_compose(a, b) {
  function d3_true (line 8249) | function d3_true() {
  function d3_geo_clipPolygon (line 8252) | function d3_geo_clipPolygon(segments, compare, clipStartInside, interpol...
  function d3_geo_clipPolygonLinkCircular (line 8311) | function d3_geo_clipPolygonLinkCircular(array) {
  function d3_geo_clipPolygonIntersection (line 8322) | function d3_geo_clipPolygonIntersection(point, points, other, entry) {
  function d3_geo_clip (line 8330) | function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
  function d3_geo_clipSegmentLength1 (line 8422) | function d3_geo_clipSegmentLength1(segment) {
  function d3_geo_clipBufferListener (line 8425) | function d3_geo_clipBufferListener() {
  function d3_geo_clipSort (line 8446) | function d3_geo_clipSort(a, b) {
  function d3_geo_clipAntimeridianLine (line 8450) | function d3_geo_clipAntimeridianLine(listener) {
  function d3_geo_clipAntimeridianIntersect (line 8489) | function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
  function d3_geo_clipAntimeridianInterpolate (line 8493) | function d3_geo_clipAntimeridianInterpolate(from, to, direction, listene...
  function d3_geo_pointInPolygon (line 8516) | function d3_geo_pointInPolygon(point, polygon) {
  function d3_geo_clipCircle (line 8545) | function d3_geo_clipCircle(radius) {
  function d3_geom_clipLine (line 8641) | function d3_geom_clipLine(x0, y0, x1, y1) {
  function d3_geo_clipExtent (line 8713) | function d3_geo_clipExtent(x0, y0, x1, y1) {
  function d3_geo_conic (line 8847) | function d3_geo_conic(projectAt) {
  function d3_geo_conicEqualArea (line 8855) | function d3_geo_conicEqualArea(φ0, φ1) {
  function albersUsa (line 8882) | function albersUsa(coordinates) {
  function d3_geo_pathAreaRingStart (line 8964) | function d3_geo_pathAreaRingStart() {
  function d3_geo_pathBoundsPoint (line 8986) | function d3_geo_pathBoundsPoint(x, y) {
  function d3_geo_pathBuffer (line 8992) | function d3_geo_pathBuffer() {
  function d3_geo_pathBufferCircle (line 9037) | function d3_geo_pathBufferCircle(radius) {
  function d3_geo_pathCentroidPoint (line 9053) | function d3_geo_pathCentroidPoint(x, y) {
  function d3_geo_pathCentroidLineStart (line 9058) | function d3_geo_pathCentroidLineStart() {
  function d3_geo_pathCentroidLineEnd (line 9072) | function d3_geo_pathCentroidLineEnd() {
  function d3_geo_pathCentroidRingStart (line 9075) | function d3_geo_pathCentroidRingStart() {
  function d3_geo_pathContext (line 9096) | function d3_geo_pathContext(context) {
  function d3_geo_resample (line 9136) | function d3_geo_resample(project) {
  function path (line 9216) | function path(object) {
  function reset (line 9255) | function reset() {
  function d3_geo_pathProjectStream (line 9261) | function d3_geo_pathProjectStream(project) {
  function d3_geo_transform (line 9278) | function d3_geo_transform(stream) {
  function d3_geo_transformPoint (line 9301) | function d3_geo_transformPoint(stream, point) {
  function d3_geo_projection (line 9323) | function d3_geo_projection(project) {
  function d3_geo_projectionMutator (line 9328) | function d3_geo_projectionMutator(projectAt) {
  function d3_geo_projectionRadians (line 9400) | function d3_geo_projectionRadians(stream) {
  function d3_geo_equirectangular (line 9405) | function d3_geo_equirectangular(λ, φ) {
  function forward (line 9413) | function forward(coordinates) {
  function d3_geo_identityRotation (line 9423) | function d3_geo_identityRotation(λ, φ) {
  function d3_geo_rotation (line 9427) | function d3_geo_rotation(δλ, δφ, δγ) {
  function d3_geo_forwardRotationλ (line 9430) | function d3_geo_forwardRotationλ(δλ) {
  function d3_geo_rotationλ (line 9435) | function d3_geo_rotationλ(δλ) {
  function d3_geo_rotationφγ (line 9440) | function d3_geo_rotationφγ(δφ, δγ) {
  function circle (line 9454) | function circle() {
  function d3_geo_circleInterpolate (line 9484) | function d3_geo_circleInterpolate(radius, precision) {
  function d3_geo_circleAngle (line 9501) | function d3_geo_circleAngle(cr, point) {
  function graticule (line 9514) | function graticule() {
  function lines (line 9520) | function lines() {
  function d3_geo_graticuleX (line 9586) | function d3_geo_graticuleX(y0, y1, dy) {
  function d3_geo_graticuleY (line 9594) | function d3_geo_graticuleY(x0, x1, dx) {
  function d3_source (line 9602) | function d3_source(d) {
  function d3_target (line 9605) | function d3_target(d) {
  function greatArc (line 9610) | function greatArc() {
  function d3_geo_interpolate (line 9637) | function d3_geo_interpolate(x0, y0, x1, y1) {
  function d3_geo_lengthLineStart (line 9662) | function d3_geo_lengthLineStart() {
  function d3_geo_azimuthal (line 9677) | function d3_geo_azimuthal(scale, angle) {
  function d3_geo_conicConformal (line 9703) | function d3_geo_conicConformal(φ0, φ1) {
  function d3_geo_conicEquidistant (line 9726) | function d3_geo_conicEquidistant(φ0, φ1) {
  function d3_geo_mercator (line 9748) | function d3_geo_mercator(λ, φ) {
  function d3_geo_mercatorProjection (line 9754) | function d3_geo_mercatorProjection(project) {
  function d3_geo_transverseMercator (line 9795) | function d3_geo_transverseMercator(λ, φ) {
  function d3_geom_pointX (line 9813) | function d3_geom_pointX(d) {
  function d3_geom_pointY (line 9816) | function d3_geom_pointY(d) {
  function hull (line 9822) | function hull(data) {
  function d3_geom_hullUpper (line 9844) | function d3_geom_hullUpper(points) {
  function d3_geom_hullOrder (line 9852) | function d3_geom_hullOrder(a, b) {
  function d3_geom_polygonInside (line 9906) | function d3_geom_polygonInside(p, a, b) {
  function d3_geom_polygonIntersect (line 9909) | function d3_geom_polygonIntersect(c, d, a, b) {
  function d3_geom_polygonClosed (line 9913) | function d3_geom_polygonClosed(coordinates) {
  function d3_geom_voronoiBeach (line 9918) | function d3_geom_voronoiBeach() {
  function d3_geom_voronoiCreateBeach (line 9922) | function d3_geom_voronoiCreateBeach(site) {
  function d3_geom_voronoiDetachBeach (line 9927) | function d3_geom_voronoiDetachBeach(beach) {
  function d3_geom_voronoiRemoveBeach (line 9933) | function d3_geom_voronoiRemoveBeach(beach) {
  function d3_geom_voronoiAddBeach (line 9969) | function d3_geom_voronoiAddBeach(site) {
  function d3_geom_voronoiLeftBreakPoint (line 10023) | function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
  function d3_geom_voronoiRightBreakPoint (line 10035) | function d3_geom_voronoiRightBreakPoint(arc, directrix) {
  function d3_geom_voronoiCell (line 10041) | function d3_geom_voronoiCell(site) {
  function d3_geom_voronoiCloseCells (line 10054) | function d3_geom_voronoiCloseCells(extent) {
  function d3_geom_voronoiHalfEdgeOrder (line 10084) | function d3_geom_voronoiHalfEdgeOrder(a, b) {
  function d3_geom_voronoiCircle (line 10087) | function d3_geom_voronoiCircle() {
  function d3_geom_voronoiAttachCircle (line 10091) | function d3_geom_voronoiAttachCircle(arc) {
  function d3_geom_voronoiDetachCircle (line 10124) | function d3_geom_voronoiDetachCircle(arc) {
  function d3_geom_voronoiClipEdges (line 10134) | function d3_geom_voronoiClipEdges(extent) {
  function d3_geom_voronoiConnectEdge (line 10144) | function d3_geom_voronoiConnectEdge(edge, extent) {
  function d3_geom_voronoiEdge (line 10218) | function d3_geom_voronoiEdge(lSite, rSite) {
  function d3_geom_voronoiCreateEdge (line 10223) | function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
  function d3_geom_voronoiCreateBorderEdge (line 10232) | function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
  function d3_geom_voronoiSetEdgeEnd (line 10239) | function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
  function d3_geom_voronoiHalfEdge (line 10250) | function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
  function d3_geom_voronoiRedBlackTree (line 10264) | function d3_geom_voronoiRedBlackTree() {
  function d3_geom_voronoiRedBlackNode (line 10267) | function d3_geom_voronoiRedBlackNode(node) {
  function d3_geom_voronoiRedBlackRotateLeft (line 10430) | function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
  function d3_geom_voronoiRedBlackRotateRight (line 10443) | function d3_geom_voronoiRedBlackRotateRight(tree, node) {
  function d3_geom_voronoiRedBlackFirst (line 10456) | function d3_geom_voronoiRedBlackFirst(node) {
  function d3_geom_voronoi (line 10460) | function d3_geom_voronoi(sites, bbox) {
  function d3_geom_voronoiVertexOrder (line 10489) | function d3_geom_voronoiVertexOrder(a, b) {
  function voronoi (line 10495) | function voronoi(data) {
  function sites (line 10506) | function sites(data) {
  function d3_geom_voronoiTriangleArea (line 10559) | function d3_geom_voronoiTriangleArea(a, b, c) {
  function quadtree (line 10577) | function quadtree(data) {
  function d3_geom_quadtreeCompatX (line 10672) | function d3_geom_quadtreeCompatX(d) {
  function d3_geom_quadtreeCompatY (line 10675) | function d3_geom_quadtreeCompatY(d) {
  function d3_geom_quadtreeNode (line 10678) | function d3_geom_quadtreeNode() {
  function d3_geom_quadtreeVisit (line 10687) | function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
  function d3_geom_quadtreeFind (line 10696) | function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
  function d3_interpolateRgb (line 10733) | function d3_interpolateRgb(a, b) {
  function d3_interpolateObject (line 10742) | function d3_interpolateObject(a, b) {
  function d3_interpolateNumber (line 10762) | function d3_interpolateNumber(a, b) {
  function d3_interpolateString (line 10769) | function d3_interpolateString(a, b) {
  function d3_interpolate (line 10803) | function d3_interpolate(a, b) {
  function d3_interpolateArray (line 10813) | function d3_interpolateArray(a, b) {
  function d3_ease_clamp (line 10864) | function d3_ease_clamp(f) {
  function d3_ease_reverse (line 10869) | function d3_ease_reverse(f) {
  function d3_ease_reflect (line 10874) | function d3_ease_reflect(f) {
  function d3_ease_quad (line 10879) | function d3_ease_quad(t) {
  function d3_ease_cubic (line 10882) | function d3_ease_cubic(t) {
  function d3_ease_cubicInOut (line 10885) | function d3_ease_cubicInOut(t) {
  function d3_ease_poly (line 10891) | function d3_ease_poly(e) {
  function d3_ease_sin (line 10896) | function d3_ease_sin(t) {
  function d3_ease_exp (line 10899) | function d3_ease_exp(t) {
  function d3_ease_circle (line 10902) | function d3_ease_circle(t) {
  function d3_ease_elastic (line 10905) | function d3_ease_elastic(a, p) {
  function d3_ease_back (line 10913) | function d3_ease_back(s) {
  function d3_ease_bounce (line 10919) | function d3_ease_bounce(t) {
  function d3_interpolateHcl (line 10923) | function d3_interpolateHcl(a, b) {
  function d3_interpolateHsl (line 10934) | function d3_interpolateHsl(a, b) {
  function d3_interpolateLab (line 10945) | function d3_interpolateLab(a, b) {
  function d3_interpolateRound (line 10954) | function d3_interpolateRound(a, b) {
  function d3_transform (line 10970) | function d3_transform(m) {
  function d3_transformDot (line 10986) | function d3_transformDot(a, b) {
  function d3_transformNormalize (line 10989) | function d3_transformNormalize(a) {
  function d3_transformCombine (line 10997) | function d3_transformCombine(a, b, k) {
  function d3_interpolateTransform (line 11011) | function d3_interpolateTransform(a, b) {
  function d3_uninterpolateNumber (line 11063) | function d3_uninterpolateNumber(a, b) {
  function d3_uninterpolateClamp (line 11069) | function d3_uninterpolateClamp(a, b) {
  function d3_layout_bundlePath (line 11083) | function d3_layout_bundlePath(link) {
  function d3_layout_bundleAncestors (line 11096) | function d3_layout_bundleAncestors(node) {
  function d3_layout_bundleLeastCommonAncestor (line 11106) | function d3_layout_bundleLeastCommonAncestor(a, b) {
  function relayout (line 11118) | function relayout() {
  function resort (line 11184) | function resort() {
  function repulse (line 11231) | function repulse(node) {
  function position (line 11403) | function position(dimension, size) {
  function dragmove (line 11432) | function dragmove(d) {
  function d3_layout_forceDragstart (line 11438) | function d3_layout_forceDragstart(d) {
  function d3_layout_forceDragend (line 11441) | function d3_layout_forceDragend(d) {
  function d3_layout_forceMouseover (line 11444) | function d3_layout_forceMouseover(d) {
  function d3_layout_forceMouseout (line 11448) | function d3_layout_forceMouseout(d) {
  function d3_layout_forceAccumulate (line 11451) | function d3_layout_forceAccumulate(quad, alpha, charges) {
  function hierarchy (line 11481) | function hierarchy(root) {
  function d3_layout_hierarchyRebind (line 11537) | function d3_layout_hierarchyRebind(object, hierarchy) {
  function d3_layout_hierarchyVisitBefore (line 11543) | function d3_layout_hierarchyVisitBefore(node, callback) {
  function d3_layout_hierarchyVisitAfter (line 11553) | function d3_layout_hierarchyVisitAfter(node, callback) {
  function d3_layout_hierarchyChildren (line 11566) | function d3_layout_hierarchyChildren(d) {
  function d3_layout_hierarchyValue (line 11569) | function d3_layout_hierarchyValue(d) {
  function d3_layout_hierarchySort (line 11572) | function d3_layout_hierarchySort(a, b) {
  function d3_layout_hierarchyLinks (line 11575) | function d3_layout_hierarchyLinks(nodes) {
  function position (line 11587) | function position(node, x, dx, dy) {
  function depth (line 11602) | function depth(node) {
  function partition (line 11610) | function partition(d, i) {
  function pie (line 11624) | function pie(data) {
  function stack (line 11674) | function stack(data, index) {
  function d3_layout_stackX (line 11729) | function d3_layout_stackX(d) {
  function d3_layout_stackY (line 11732) | function d3_layout_stackY(d) {
  function d3_layout_stackOut (line 11735) | function d3_layout_stackOut(d, y0, y) {
  function d3_layout_stackOrderDefault (line 11802) | function d3_layout_stackOrderDefault(data) {
  function d3_layout_stackOffsetZero (line 11805) | function d3_layout_stackOffsetZero(data) {
  function d3_layout_stackMaxIndex (line 11810) | function d3_layout_stackMaxIndex(array) {
  function d3_layout_stackReduceSum (line 11820) | function d3_layout_stackReduceSum(d) {
  function d3_layout_stackSum (line 11823) | function d3_layout_stackSum(p, d) {
  function histogram (line 11828) | function histogram(data, i) {
  function d3_layout_histogramBinSturges (line 11872) | function d3_layout_histogramBinSturges(range, values) {
  function d3_layout_histogramBinFixed (line 11875) | function d3_layout_histogramBinFixed(range, n) {
  function d3_layout_histogramRange (line 11880) | function d3_layout_histogramRange(values) {
  function pack (line 11885) | function pack(d, i) {
  function d3_layout_packSort (line 11924) | function d3_layout_packSort(a, b) {
  function d3_layout_packInsert (line 11927) | function d3_layout_packInsert(a, b) {
  function d3_layout_packSplice (line 11934) | function d3_layout_packSplice(a, b) {
  function d3_layout_packIntersects (line 11938) | function d3_layout_packIntersects(a, b) {
  function d3_layout_packSiblings (line 11942) | function d3_layout_packSiblings(node) {
  function d3_layout_packLink (line 12006) | function d3_layout_packLink(node) {
  function d3_layout_packUnlink (line 12009) | function d3_layout_packUnlink(node) {
  function d3_layout_packTransform (line 12013) | function d3_layout_packTransform(node, x, y, k) {
  function d3_layout_packPlace (line 12023) | function d3_layout_packPlace(a, b, c) {
  function tree (line 12039) | function tree(d, i) {
  function wrapTree (line 12058) | function wrapTree(root0) {
  function firstWalk (line 12082) | function firstWalk(v) {
  function secondWalk (line 12098) | function secondWalk(v) {
  function apportion (line 12102) | function apportion(v, w, ancestor) {
  function sizeNode (line 12132) | function sizeNode(node) {
  function d3_layout_treeSeparation (line 12153) | function d3_layout_treeSeparation(a, b) {
  function d3_layout_treeLeft (line 12156) | function d3_layout_treeLeft(v) {
  function d3_layout_treeRight (line 12160) | function d3_layout_treeRight(v) {
  function d3_layout_treeMove (line 12164) | function d3_layout_treeMove(wm, wp, shift) {
  function d3_layout_treeShift (line 12172) | function d3_layout_treeShift(v) {
  function d3_layout_treeAncestor (line 12181) | function d3_layout_treeAncestor(vim, v, ancestor) {
  function cluster (line 12186) | function cluster(d, i) {
  function d3_layout_clusterY (line 12226) | function d3_layout_clusterY(children) {
  function d3_layout_clusterX (line 12231) | function d3_layout_clusterX(children) {
  function d3_layout_clusterLeft (line 12236) | function d3_layout_clusterLeft(node) {
  function d3_layout_clusterRight (line 12240) | function d3_layout_clusterRight(node) {
  function scale (line 12246) | function scale(children, k) {
  function squarify (line 12253) | function squarify(node) {
  function stickify (line 12280) | function stickify(node) {
  function worst (line 12297) | function worst(row, u) {
  function position (line 12308) | function position(row, u, rect, flush) {
  function treemap (line 12338) | function treemap(d) {
  function padFunction (line 12357) | function padFunction(node) {
  function padConstant (line 12361) | function padConstant(node) {
  function d3_layout_treemapPadNull (line 12392) | function d3_layout_treemapPadNull(node) {
  function d3_layout_treemapPad (line 12400) | function d3_layout_treemapPad(node, padding) {
  function d3_scaleExtent (line 12452) | function d3_scaleExtent(domain) {
  function d3_scaleRange (line 12456) | function d3_scaleRange(scale) {
  function d3_scale_bilinear (line 12459) | function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_nice (line 12465) | function d3_scale_nice(domain, nice) {
  function d3_scale_niceStep (line 12475) | function d3_scale_niceStep(step) {
  function d3_scale_polylinear (line 12489) | function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
  function d3_scale_linear (line 12507) | function d3_scale_linear(domain, range, interpolate, clamp) {
  function d3_scale_linearRebind (line 12559) | function d3_scale_linearRebind(scale, linear) {
  function d3_scale_linearNice (line 12562) | function d3_scale_linearNice(domain, m) {
  function d3_scale_linearTickRange (line 12565) | function d3_scale_linearTickRange(domain, m) {
  function d3_scale_linearTicks (line 12574) | function d3_scale_linearTicks(domain, m) {
  function d3_scale_linearTickFormat (line 12577) | function d3_scale_linearTickFormat(domain, m, format) {
  function d3_scale_linearPrecision (line 12605) | function d3_scale_linearPrecision(value) {
  function d3_scale_linearFormatPrecision (line 12608) | function d3_scale_linearFormatPrecision(type, range) {
  function d3_scale_log (line 12615) | function d3_scale_log(linear, base, positive, domain) {
  function d3_scale_pow (line 12687) | function d3_scale_pow(linear, exponent, domain) {
  function d3_scale_powPow (line 12721) | function d3_scale_powPow(e) {
  function d3_scale_ordinal (line 12735) | function d3_scale_ordinal(domain, ranger) {
  function d3_scale_quantile (line 12843) | function d3_scale_quantile(domain, range) {
  function d3_scale_quantize (line 12879) | function d3_scale_quantize(x0, x1, range) {
  function d3_scale_threshold (line 12913) | function d3_scale_threshold(domain, range) {
  function d3_scale_identity (line 12939) | function d3_scale_identity(domain) {
  function d3_zero (line 12961) | function d3_zero() {
  function arc (line 12966) | function arc() {
  function circleSegment (line 13039) | function circleSegment(r1, cw) {
  function d3_svg_arcInnerRadius (line 13084) | function d3_svg_arcInnerRadius(d) {
  function d3_svg_arcOuterRadius (line 13087) | function d3_svg_arcOuterRadius(d) {
  function d3_svg_arcStartAngle (line 13090) | function d3_svg_arcStartAngle(d) {
  function d3_svg_arcEndAngle (line 13093) | function d3_svg_arcEndAngle(d) {
  function d3_svg_arcPadAngle (line 13096) | function d3_svg_arcPadAngle(d) {
  function d3_svg_arcSweep (line 13099) | function d3_svg_arcSweep(x0, y0, x1, y1) {
  function d3_svg_arcCornerTangents (line 13102) | function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
  function d3_svg_line (line 13107) | function d3_svg_line(projection) {
  function d3_svg_lineLinear (line 13174) | function d3_svg_lineLinear(points) {
  function d3_svg_lineLinearClosed (line 13177) | function d3_svg_lineLinearClosed(points) {
  function d3_svg_lineStep (line 13180) | function d3_svg_lineStep(points) {
  function d3_svg_lineStepBefore (line 13186) | function d3_svg_lineStepBefore(points) {
  function d3_svg_lineStepAfter (line 13191) | function d3_svg_lineStepAfter(points) {
  function d3_svg_lineCardinalOpen (line 13196) | function d3_svg_lineCardinalOpen(points, tension) {
  function d3_svg_lineCardinalClosed (line 13199) | function d3_svg_lineCardinalClosed(points, tension) {
  function d3_svg_lineCardinal (line 13203) | function d3_svg_lineCardinal(points, tension) {
  function d3_svg_lineHermite (line 13206) | function d3_svg_lineHermite(points, tangents) {
  function d3_svg_lineCardinalTangents (line 13233) | function d3_svg_lineCardinalTangents(points, tension) {
  function d3_svg_lineBasis (line 13243) | function d3_svg_lineBasis(points) {
  function d3_svg_lineBasisOpen (line 13259) | function d3_svg_lineBasisOpen(points) {
  function d3_svg_lineBasisClosed (line 13279) | function d3_svg_lineBasisClosed(points) {
  function d3_svg_lineBundle (line 13298) | function d3_svg_lineBundle(points, tension) {
  function d3_svg_lineDot4 (line 13311) | function d3_svg_lineDot4(a, b) {
  function d3_svg_lineBasisBezier (line 13315) | function d3_svg_lineBasisBezier(path, x, y) {
  function d3_svg_lineSlope (line 13318) | function d3_svg_lineSlope(p0, p1) {
  function d3_svg_lineFiniteDifferences (line 13321) | function d3_svg_lineFiniteDifferences(points) {
  function d3_svg_lineMonotoneTangents (line 13329) | function d3_svg_lineMonotoneTangents(points) {
  function d3_svg_lineMonotone (line 13353) | function d3_svg_lineMonotone(points) {
  function d3_svg_lineRadial (line 13362) | function d3_svg_lineRadial(points) {
  function d3_svg_area (line 13373) | function d3_svg_area(projection) {
  function chord (line 13463) | function chord(d, i) {
  function subgroup (line 13467) | function subgroup(self, f, d, i) {
  function equals (line 13477) | function equals(a, b) {
  function arc (line 13480) | function arc(r, p, a) {
  function curve (line 13483) | function curve(r0, p0, r1, p1) {
  function d3_svg_chordRadius (line 13513) | function d3_svg_chordRadius(d) {
  function diagonal (line 13518) | function diagonal(d, i) {
  function d3_svg_diagonalProjection (line 13546) | function d3_svg_diagonalProjection(d) {
  function d3_svg_diagonalRadialProjection (line 13556) | function d3_svg_diagonalRadialProjection(projection) {
  function symbol (line 13564) | function symbol(d, i) {
  function d3_svg_symbolSize (line 13579) | function d3_svg_symbolSize() {
  function d3_svg_symbolType (line 13582) | function d3_svg_symbolType() {
  function d3_svg_symbolCircle (line 13585) | function d3_svg_symbolCircle(size) {
  function d3_selection_interruptNS (line 13634) | function d3_selection_interruptNS(ns) {
  function d3_transition (line 13648) | function d3_transition(groups, ns, id) {
  function d3_transition_tween (line 13720) | function d3_transition_tween(groups, name, value, tween) {
  function attrNull (line 13734) | function attrNull() {
  function attrNullNS (line 13737) | function attrNullNS() {
  function attrTween (line 13740) | function attrTween(b) {
  function attrTweenNS (line 13748) | function attrTweenNS(b) {
  function attrTween (line 13760) | function attrTween(d, i) {
  function attrTweenNS (line 13766) | function attrTweenNS(d, i) {
  function styleNull (line 13784) | function styleNull() {
  function styleString (line 13787) | function styleString(b) {
  function styleTween (line 13799) | function styleTween(d, i) {
  function d3_transition_text (line 13810) | function d3_transition_text(b) {
  function d3_transitionNamespace (line 13890) | function d3_transitionNamespace(name) {
  function d3_transitionNode (line 13893) | function d3_transitionNode(node, i, ns, id, inherit) {
  function axis (line 13957) | function axis(g) {
  function d3_svg_axisX (line 14052) | function d3_svg_axisX(selection, x0, x1) {
  function d3_svg_axisY (line 14058) | function d3_svg_axisY(selection, y0, y1) {
  function brush (line 14066) | function brush(g) {
  function redraw (line 14152) | function redraw(g) {
  function redrawX (line 14157) | function redrawX(g) {
  function redrawY (line 14161) | function redrawY(g) {
  function brushstart (line 14165) | function brushstart() {
  function d3_time_formatIsoNative (line 14358) | function d3_time_formatIsoNative(date) {
  function d3_time_scale (line 14405) | function d3_time_scale(linear, methods, format) {
  function d3_time_scaleDate (line 14455) | function d3_time_scaleDate(t) {
  function d3_json (line 14514) | function d3_json(request) {
  function d3_html (line 14520) | function d3_html(request) {

FILE: bem-platform/gulpfile.js
  constant YENV (line 17) | const YENV = process.env.YENV || 'development';

FILE: bem-platform/pages/index/index.bemhtml.js
  function buildBemXjst (line 4) | function buildBemXjst(__bem_xjst_libs__) {

FILE: bem-platform/pages/index/index.browser.bemhtml.js
  function buildBemXjst (line 4) | function buildBemXjst(__bem_xjst_libs__) {

FILE: bem-platform/pages/index/index.browser.js
  function initEntities (line 513) | function initEntities(domElem, uniqInitId, dropElemCacheQueue) {
  function initEntity (line 544) | function initEntity(entityName, domElem, params, ignoreLazyInit, callbac...
  function getEntityCls (line 586) | function getEntityCls(entityName) {
  function processParams (line 601) | function processParams(params, entityName, uniqInitId) {
  function findDomElem (line 617) | function findDomElem(ctx, selector, excludeSelf) {
  function getParams (line 629) | function getParams(domNode) {
  function getEntityParams (line 642) | function getEntityParams(domNode, entityName) {
  function extractParams (line 652) | function extractParams(domNode) {
  function removeDomNodeFromEntity (line 662) | function removeDomNodeFromEntity(entity, domNode) {
  function storeDomNodeParents (line 675) | function storeDomNodeParents(domElem) {
  function dropElemCacheForCtx (line 685) | function dropElemCacheForCtx(ctx, dropElemCacheQueue) {
  function buildElemKey (line 704) | function buildElemKey(elem) {
  function getJqueryCollection (line 726) | function getJqueryCollection(html) {
  function validateBlockParam (line 735) | function validateBlockParam(Block) {
  function getEntityBase (line 751) | function getEntityBase(baseCls, entityName, base) {
  function getPropList (line 1631) | function getPropList(obj) {
  function override (line 1643) | function override(base, res, add) {
  function applyMixins (line 1680) | function applyMixins(mixins, res) {
  function inherit (line 1702) | function inherit() {
  function doProvide (line 1793) | function doProvide(preserveGlobal) {
  function buildModFnName (line 2173) | function buildModFnName(prefix, modName, modVal) {
  function buildSpecialModFn (line 2190) | function buildSpecialModFn(modVal, curModFn, prevModFn, condition) {
  function modFnsToProps (line 2218) | function modFnsToProps(prefix, modFns, props) {
  function buildCheckMod (line 2249) | function buildCheckMod(modName, modVal) {
  function checkMod (line 2267) | function checkMod(block, modName, modVal) {
  function convertModHandlersToMethods (line 2277) | function convertModHandlersToMethods(props) {
  function declEntity (line 2289) | function declEntity(baseCls, entityName, base, props, staticProps) {
  function isSimple (line 2805) | function isSimple(obj) {
  function buildModPostfix (line 2810) | function buildModPostfix(modName, modVal) {
  function buildBlockClassName (line 2820) | function buildBlockClassName(name, modName, modVal) {
  function buildElemClassName (line 2824) | function buildElemClassName(block, name, modName, modVal) {
  function collectionMapMethod (line 3486) | function collectionMapMethod(collection, methodName, args) {
  function buildProxyMethodForOne (line 3492) | function buildProxyMethodForOne(methodName) {
  function buildProxyMethodForMany (line 3498) | function buildProxyMethodForMany(methodName) {
  function buildForEachEntityMethodProxyFn (line 3719) | function buildForEachEntityMethodProxyFn(methodName) {
  function buildEntitiesMethodProxyFn (line 3729) | function buildEntitiesMethodProxyFn(methodName) {
  function buildComplexProxyFn (line 3736) | function buildComplexProxyFn(arrayMethodName, entityMethodName) {
  function wrapperFn (line 3815) | function wrapperFn(fn, fnCtx, fnId) {
  function cloneEvent (line 4438) | function cloneEvent(event) {
  function dispatchEvent (line 4451) | function dispatchEvent(event, target) {
  function PointerEvent (line 4488) | function PointerEvent(type, params) {
  function SparseArrayMap (line 4531) | function SparseArrayMap() {
  function boundHandler (line 4762) | function boundHandler() {
  function wrapperFn (line 5663) | function wrapperFn(fn) {
  function eventHandler (line 5698) | function eventHandler(e) {
  function cloneEvent (line 5719) | function cloneEvent(event) {

FILE: bem-platform/pages/index/index.js
  function initEntities (line 513) | function initEntities(domElem, uniqInitId, dropElemCacheQueue) {
  function initEntity (line 544) | function initEntity(entityName, domElem, params, ignoreLazyInit, callbac...
  function getEntityCls (line 586) | function getEntityCls(entityName) {
  function processParams (line 601) | function processParams(params, entityName, uniqInitId) {
  function findDomElem (line 617) | function findDomElem(ctx, selector, excludeSelf) {
  function getParams (line 629) | function getParams(domNode) {
  function getEntityParams (line 642) | function getEntityParams(domNode, entityName) {
  function extractParams (line 652) | function extractParams(domNode) {
  function removeDomNodeFromEntity (line 662) | function removeDomNodeFromEntity(entity, domNode) {
  function storeDomNodeParents (line 675) | function storeDomNodeParents(domElem) {
  function dropElemCacheForCtx (line 685) | function dropElemCacheForCtx(ctx, dropElemCacheQueue) {
  function buildElemKey (line 704) | function buildElemKey(elem) {
  function getJqueryCollection (line 726) | function getJqueryCollection(html) {
  function validateBlockParam (line 735) | function validateBlockParam(Block) {
  function getEntityBase (line 751) | function getEntityBase(baseCls, entityName, base) {
  function getPropList (line 1631) | function getPropList(obj) {
  function override (line 1643) | function override(base, res, add) {
  function applyMixins (line 1680) | function applyMixins(mixins, res) {
  function inherit (line 1702) | function inherit() {
  function doProvide (line 1793) | function doProvide(preserveGlobal) {
  function buildModFnName (line 2173) | function buildModFnName(prefix, modName, modVal) {
  function buildSpecialModFn (line 2190) | function buildSpecialModFn(modVal, curModFn, prevModFn, condition) {
  function modFnsToProps (line 2218) | function modFnsToProps(prefix, modFns, props) {
  function buildCheckMod (line 2249) | function buildCheckMod(modName, modVal) {
  function checkMod (line 2267) | function checkMod(block, modName, modVal) {
  function convertModHandlersToMethods (line 2277) | function convertModHandlersToMethods(props) {
  function declEntity (line 2289) | function declEntity(baseCls, entityName, base, props, staticProps) {
  function isSimple (line 2805) | function isSimple(obj) {
  function buildModPostfix (line 2810) | function buildModPostfix(modName, modVal) {
  function buildBlockClassName (line 2820) | function buildBlockClassName(name, modName, modVal) {
  function buildElemClassName (line 2824) | function buildElemClassName(block, name, modName, modVal) {
  function collectionMapMethod (line 3486) | function collectionMapMethod(collection, methodName, args) {
  function buildProxyMethodForOne (line 3492) | function buildProxyMethodForOne(methodName) {
  function buildProxyMethodForMany (line 3498) | function buildProxyMethodForMany(methodName) {
  function buildForEachEntityMethodProxyFn (line 3719) | function buildForEachEntityMethodProxyFn(methodName) {
  function buildEntitiesMethodProxyFn (line 3729) | function buildEntitiesMethodProxyFn(methodName) {
  function buildComplexProxyFn (line 3736) | function buildComplexProxyFn(arrayMethodName, entityMethodName) {
  function wrapperFn (line 3815) | function wrapperFn(fn, fnCtx, fnId) {
  function cloneEvent (line 4438) | function cloneEvent(event) {
  function dispatchEvent (line 4451) | function dispatchEvent(event, target) {
  function PointerEvent (line 4488) | function PointerEvent(type, params) {
  function SparseArrayMap (line 4531) | function SparseArrayMap() {
  function boundHandler (line 4762) | function boundHandler() {
  function wrapperFn (line 5663) | function wrapperFn(fn) {
  function eventHandler (line 5698) | function eventHandler(e) {
  function cloneEvent (line 5719) | function cloneEvent(event) {
  function buildBemXjst (line 5738) | function buildBemXjst(__bem_xjst_libs__) {

FILE: bem-platform/specificity-graph/example.js
  function defaultExample (line 7) | function defaultExample() {

FILE: bem-platform/specificity-graph/specificity-graph-standalone.js
  function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function mousemove (line 228) | function mousemove() {
  function normalizeArray (line 330) | function normalizeArray(parts, allowAboveRoot) {
  function trim (line 439) | function trim(arr) {
  function filter (line 512) | function filter (xs, f) {
  function noop (line 599) | function noop() {}
  function updatePosition (line 645) | function updatePosition(str) {
  function position (line 656) | function position() {
  function Position (line 669) | function Position(start) {
  function error (line 685) | function error(msg) {
  function stylesheet (line 703) | function stylesheet() {
  function open (line 716) | function open() {
  function close (line 724) | function close() {
  function rules (line 732) | function rules() {
  function match (line 750) | function match(re) {
  function whitespace (line 763) | function whitespace() {
  function comments (line 771) | function comments(rules) {
  function comment (line 786) | function comment() {
  function selector (line 814) | function selector() {
  function declaration (line 834) | function declaration() {
  function declarations (line 864) | function declarations() {
  function keyframe (line 887) | function keyframe() {
  function atkeyframes (line 910) | function atkeyframes() {
  function atsupports (line 945) | function atsupports() {
  function athost (line 969) | function athost() {
  function atmedia (line 991) | function atmedia() {
  function atcustommedia (line 1016) | function atcustommedia() {
  function atpage (line 1032) | function atpage() {
  function atdocument (line 1062) | function atdocument() {
  function atfontface (line 1088) | function atfontface() {
  function _compileAtrule (line 1134) | function _compileAtrule(name) {
  function atrule (line 1150) | function atrule() {
  function rule (line 1170) | function rule() {
  function trim (line 1191) | function trim(str) {
  function addParent (line 1199) | function addParent(obj, parent) {
  function Compiler (line 1240) | function Compiler(opts) {
  function Compiler (line 1295) | function Compiler(options) {
  function Compiler (line 1496) | function Compiler(options) {
  function mixin (line 1808) | function mixin(compiler) {
  function resolveUrl (line 1949) | function resolveUrl(/* ...urls */) {
  function callbackAsync (line 2063) | function callbackAsync(callback, error, result) {
  function parseMapToJSON (line 2067) | function parseMapToJSON(string) {
  function resolveSourceMap (line 2073) | function resolveSourceMap(code, codeUrl, read, callback) {
  function resolveSourceMapSync (line 2096) | function resolveSourceMapSync(code, codeUrl, read) {
  function resolveSourceMapHelper (line 2108) | function resolveSourceMapHelper(code, codeUrl) {
  function resolveSources (line 2141) | function resolveSources(map, mapUrl, read, options, callback) {
  function resolveSourcesSync (line 2181) | function resolveSourcesSync(map, mapUrl, read, options) {
  function resolveSourcesHelper (line 2201) | function resolveSourcesHelper(map, mapUrl, options, fn) {
  function resolve (line 2221) | function resolve(code, codeUrl, read, options, callback) {
  function resolveSync (line 2244) | function resolveSync(code, codeUrl, read, options) {
  function ArraySet (line 2298) | function ArraySet() {
  function toVLQSigned (line 2450) | function toVLQSigned(aValue) {
  function fromVLQSigned (line 2462) | function fromVLQSigned(aValue) {
  function recursiveSearch (line 2586) | function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
  function SourceMapConsumer (line 2695) | function SourceMapConsumer(aSourceMap) {
  function SourceMapGenerator (line 3157) | function SourceMapGenerator(aArgs) {
  function SourceNode (line 3570) | function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  function addMappingWithCode (line 3679) | function addMappingWithCode(mapping, code) {
  function getArg (line 3968) | function getArg(aArgs, aName, aDefaultValue) {
  function urlParse (line 3982) | function urlParse(aUrl) {
  function urlGenerate (line 3997) | function urlGenerate(aParsedUrl) {
  function normalize (line 4030) | function normalize(aPath) {
  function join (line 4091) | function join(aRoot, aPath) {
  function relative (line 4140) | function relative(aRoot, aPath) {
  function toSetString (line 4168) | function toSetString(aStr) {
  function fromSetString (line 4173) | function fromSetString(aStr) {
  function strcmp (line 4178) | function strcmp(aStr1, aStr2) {
  function compareByOriginalPositions (line 4192) | function compareByOriginalPositions(mappingA, mappingB, onlyCompareOrigi...
  function compareByGeneratedPositions (line 4233) | function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGene...
  function amdefine (line 4289) | function amdefine(module, requireFn) {
  function urix (line 4578) | function urix(aPath) {
  function cssbeautify (line 4623) | function cssbeautify(style, opt) {
  function d3_ascending (line 5096) | function d3_ascending(a, b) {
  function d3_number (line 5159) | function d3_number(x) {
  function d3_numeric (line 5162) | function d3_numeric(x) {
  function d3_bisector (line 5221) | function d3_bisector(compare) {
  function d3_zipLength (line 5282) | function d3_zipLength(d) {
  function d3_range_integerScale (line 5334) | function d3_range_integerScale(x) {
  function d3_class (line 5339) | function d3_class(ctor, properties) {
  function d3_Map (line 5361) | function d3_Map() {
  function d3_map_escape (line 5394) | function d3_map_escape(key) {
  function d3_map_unescape (line 5397) | function d3_map_unescape(key) {
  function d3_map_has (line 5400) | function d3_map_has(key) {
  function d3_map_remove (line 5403) | function d3_map_remove(key) {
  function d3_map_keys (line 5406) | function d3_map_keys() {
  function d3_map_size (line 5411) | function d3_map_size() {
  function d3_map_empty (line 5416) | function d3_map_empty() {
  function map (line 5422) | function map(mapType, array, depth) {
  function entries (line 5446) | function entries(map, depth) {
  function d3_Set (line 5488) | function d3_Set() {
  function d3_rebind (line 5511) | function d3_rebind(target, source, method) {
  function d3_vendorSymbol (line 5517) | function d3_vendorSymbol(object, name) {
  function d3_noop (line 5526) | function d3_noop() {}
  function d3_dispatch (line 5532) | function d3_dispatch() {}
  function d3_dispatch_event (line 5547) | function d3_dispatch_event(dispatch) {
  function d3_eventPreventDefault (line 5570) | function d3_eventPreventDefault() {
  function d3_eventSource (line 5573) | function d3_eventSource() {
  function d3_eventDispatch (line 5578) | function d3_eventDispatch(target) {
  function d3_selection (line 5604) | function d3_selection(groups) {
  function d3_selection_selector (line 5643) | function d3_selection_selector(selector) {
  function d3_selection_selectorAll (line 5661) | function d3_selection_selectorAll(selector) {
  function d3_selection_attr (line 5699) | function d3_selection_attr(name, value) {
  function d3_collapse (line 5723) | function d3_collapse(s) {
  function d3_selection_classedRe (line 5743) | function d3_selection_classedRe(name) {
  function d3_selection_classes (line 5746) | function d3_selection_classes(name) {
  function d3_selection_classed (line 5749) | function d3_selection_classed(name, value) {
  function d3_selection_classedName (line 5762) | function d3_selection_classedName(name) {
  function d3_selection_style (line 5788) | function d3_selection_style(name, value, priority) {
  function d3_selection_property (line 5809) | function d3_selection_property(name, value) {
  function d3_selection_creator (line 5848) | function d3_selection_creator(name) {
  function d3_selectionRemove (line 5865) | function d3_selectionRemove() {
  function bind (line 5880) | function bind(group, groupData) {
  function d3_selection_dataNode (line 5948) | function d3_selection_dataNode(data) {
  function d3_selection_filter (line 5970) | function d3_selection_filter(selector) {
  function d3_selection_sortComparator (line 5991) | function d3_selection_sortComparator(comparator) {
  function d3_selection_each (line 6002) | function d3_selection_each(groups, callback) {
  function d3_selection_enter (line 6034) | function d3_selection_enter(selection) {
  function d3_selection_enterInsertBefore (line 6067) | function d3_selection_enterInsertBefore(enter) {
  function d3_selection_on (line 6101) | function d3_selection_on(type, listener, capture) {
  function d3_selection_onListener (line 6138) | function d3_selection_onListener(listener, argumentz) {
  function d3_selection_onFilter (line 6150) | function d3_selection_onFilter(listener, argumentz) {
  function d3_event_dragSuppress (line 6160) | function d3_event_dragSuppress() {
  function d3_mousePoint (line 6185) | function d3_mousePoint(container, e) {
  function drag (line 6221) | function drag() {
  function dragstart (line 6224) | function dragstart(id, position, subject, move, end) {
  function d3_behavior_dragTouchId (line 6268) | function d3_behavior_dragTouchId() {
  function d3_behavior_dragTouchSubject (line 6271) | function d3_behavior_dragTouchSubject() {
  function d3_behavior_dragMouseSubject (line 6274) | function d3_behavior_dragMouseSubject() {
  function d3_sgn (line 6286) | function d3_sgn(x) {
  function d3_cross2d (line 6289) | function d3_cross2d(a, b, c) {
  function d3_acos (line 6292) | function d3_acos(x) {
  function d3_asin (line 6295) | function d3_asin(x) {
  function d3_sinh (line 6298) | function d3_sinh(x) {
  function d3_cosh (line 6301) | function d3_cosh(x) {
  function d3_tanh (line 6304) | function d3_tanh(x) {
  function d3_haversin (line 6307) | function d3_haversin(x) {
  function interpolate (line 6314) | function interpolate(t) {
  function zoom (line 6331) | function zoom(g) {
  function location (line 6431) | function location(p) {
  function point (line 6434) | function point(l) {
  function scaleTo (line 6437) | function scaleTo(s) {
  function translateTo (line 6440) | function translateTo(p, l) {
  function zoomTo (line 6445) | function zoomTo(that, p, l, k) {
  function rescale (line 6457) | function rescale() {
  function zoomstarted (line 6465) | function zoomstarted(dispatch) {
  function zoomed (line 6470) | function zoomed(dispatch) {
  function zoomended (line 6478) | function zoomended(dispatch) {
  function mousedowned (line 6484) | function mousedowned() {
  function touchstarted (line 6499) | function touchstarted() {
  function mousewheeled (line 6569) | function mousewheeled() {
  function dblclicked (line 6582) | function dblclicked() {
  function d3_color (line 6597) | function d3_color() {}
  function d3_hsl (line 6602) | function d3_hsl(h, s, l) {
  function d3_hsl_rgb (line 6617) | function d3_hsl_rgb(h, s, l) {
  function d3_hcl (line 6637) | function d3_hcl(h, c, l) {
  function d3_hcl_lab (line 6650) | function d3_hcl_lab(h, c, l) {
  function d3_lab (line 6656) | function d3_lab(l, a, b) {
  function d3_lab_rgb (line 6671) | function d3_lab_rgb(l, a, b) {
  function d3_lab_hcl (line 6678) | function d3_lab_hcl(l, a, b) {
  function d3_lab_xyz (line 6681) | function d3_lab_xyz(x) {
  function d3_xyz_lab (line 6684) | function d3_xyz_lab(x) {
  function d3_xyz_rgb (line 6687) | function d3_xyz_rgb(r) {
  function d3_rgb (line 6691) | function d3_rgb(r, g, b) {
  function d3_rgbNumber (line 6694) | function d3_rgbNumber(value) {
  function d3_rgbString (line 6697) | function d3_rgbString(value) {
  function d3_rgb_hex (line 6720) | function d3_rgb_hex(v) {
  function d3_rgb_parse (line 6723) | function d3_rgb_parse(format, rgb, hsl) {
  function d3_rgb_hsl (line 6757) | function d3_rgb_hsl(r, g, b) {
  function d3_rgb_lab (line 6769) | function d3_rgb_lab(r, g, b) {
  function d3_rgb_xyz (line 6776) | function d3_rgb_xyz(r) {
  function d3_rgb_parseNumber (line 6779) | function d3_rgb_parseNumber(c) {
  function d3_functor (line 6935) | function d3_functor(v) {
  function d3_identity (line 6941) | function d3_identity(d) {
  function d3_xhrType (line 6945) | function d3_xhrType(response) {
  function d3_xhr (line 6952) | function d3_xhr(url, mimeType, response, callback) {
  function d3_xhr_fixCallback (line 7027) | function d3_xhr_fixCallback(callback) {
  function d3_xhrHasResponse (line 7032) | function d3_xhrHasResponse(request) {
  function dsv (line 7038) | function dsv(url, row, callback) {
  function response (line 7046) | function response(request) {
  function typedResponse (line 7049) | function typedResponse(f) {
  function token (line 7068) | function token() {
  function formatRow (line 7130) | function formatRow(row) {
  function formatValue (line 7133) | function formatValue(text) {
  function d3_timer_step (line 7161) | function d3_timer_step() {
  function d3_timer_mark (line 7178) | function d3_timer_mark() {
  function d3_timer_sweep (line 7187) | function d3_timer_sweep() {
  function d3_format_precision (line 7200) | function d3_format_precision(x, p) {
  function d3_formatPrefix (line 7217) | function d3_formatPrefix(d, i) {
  function d3_locale_numberFormat (line 7228) | function d3_locale_numberFormat(locale) {
  function d3_format_typeDefault (line 7349) | function d3_format_typeDefault(x) {
  function d3_date_utc (line 7353) | function d3_date_utc() {
  function d3_time_interval (line 7419) | function d3_time_interval(local, step, number) {
  function d3_time_interval_utc (line 7467) | function d3_time_interval_utc(method) {
  function d3_locale_timeFormat (line 7527) | function d3_locale_timeFormat(locale) {
  function d3_time_formatPad (line 7747) | function d3_time_formatPad(value, fill, width) {
  function d3_time_formatRe (line 7751) | function d3_time_formatRe(names) {
  function d3_time_formatLookup (line 7754) | function d3_time_formatLookup(names) {
  function d3_time_parseWeekdayNumber (line 7759) | function d3_time_parseWeekdayNumber(date, string, i) {
  function d3_time_parseWeekNumberSunday (line 7764) | function d3_time_parseWeekNumberSunday(date, string, i) {
  function d3_time_parseWeekNumberMonday (line 7769) | function d3_time_parseWeekNumberMonday(date, string, i) {
  function d3_time_parseFullYear (line 7774) | function d3_time_parseFullYear(date, string, i) {
  function d3_time_parseYear (line 7779) | function d3_time_parseYear(date, string, i) {
  function d3_time_parseZone (line 7784) | function d3_time_parseZone(date, string, i) {
  function d3_time_expandYear (line 7788) | function d3_time_expandYear(d) {
  function d3_time_parseMonthNumber (line 7791) | function d3_time_parseMonthNumber(date, string, i) {
  function d3_time_parseDay (line 7796) | function d3_time_parseDay(date, string, i) {
  function d3_time_parseDayOfYear (line 7801) | function d3_time_parseDayOfYear(date, string, i) {
  function d3_time_parseHour24 (line 7806) | function d3_time_parseHour24(date, string, i) {
  function d3_time_parseMinutes (line 7811) | function d3_time_parseMinutes(date, string, i) {
  function d3_time_parseSeconds (line 7816) | function d3_time_parseSeconds(date, string, i) {
  function d3_time_parseMilliseconds (line 7821) | function d3_time_parseMilliseconds(date, string, i) {
  function d3_time_zone (line 7826) | function d3_time_zone(d) {
  function d3_time_parseLiteralPercent (line 7830) | function d3_time_parseLiteralPercent(date, string, i) {
  function d3_time_formatMulti (line 7835) | function d3_time_formatMulti(formats) {
  function d3_adder (line 7866) | function d3_adder() {}
  function d3_adderSum (line 7883) | function d3_adderSum(a, b, o) {
  function d3_geo_streamGeometry (line 7894) | function d3_geo_streamGeometry(geometry, listener) {
  function d3_geo_streamLine (line 7939) | function d3_geo_streamLine(coordinates, listener, closed) {
  function d3_geo_streamPolygon (line 7945) | function d3_geo_streamPolygon(coordinates, listener) {
  function d3_geo_areaRingStart (line 7974) | function d3_geo_areaRingStart() {
  function d3_geo_cartesian (line 7992) | function d3_geo_cartesian(spherical) {
  function d3_geo_cartesianDot (line 7996) | function d3_geo_cartesianDot(a, b) {
  function d3_geo_cartesianCross (line 7999) | function d3_geo_cartesianCross(a, b) {
  function d3_geo_cartesianAdd (line 8002) | function d3_geo_cartesianAdd(a, b) {
  function d3_geo_cartesianScale (line 8007) | function d3_geo_cartesianScale(vector, k) {
  function d3_geo_cartesianNormalize (line 8010) | function d3_geo_cartesianNormalize(d) {
  function d3_geo_spherical (line 8016) | function d3_geo_spherical(cartesian) {
  function d3_geo_sphericalEqual (line 8019) | function d3_geo_sphericalEqual(a, b) {
  function point (line 8044) | function point(λ, φ) {
  function linePoint (line 8049) | function linePoint(λ, φ) {
  function lineStart (line 8089) | function lineStart() {
  function lineEnd (line 8092) | function lineEnd() {
  function ringPoint (line 8097) | function ringPoint(λ, φ) {
  function ringStart (line 8105) | function ringStart() {
  function ringEnd (line 8108) | function ringEnd() {
  function angle (line 8115) | function angle(λ0, λ1) {
  function compareRanges (line 8118) | function compareRanges(a, b) {
  function withinRange (line 8121) | function withinRange(x, range) {
  function d3_geo_centroidPoint (line 8175) | function d3_geo_centroidPoint(λ, φ) {
  function d3_geo_centroidPointXYZ (line 8180) | function d3_geo_centroidPointXYZ(x, y, z) {
  function d3_geo_centroidLineStart (line 8186) | function d3_geo_centroidLineStart() {
  function d3_geo_centroidLineEnd (line 8207) | function d3_geo_centroidLineEnd() {
  function d3_geo_centroidRingStart (line 8210) | function d3_geo_centroidRingStart
Condensed preview — 188 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,057K chars).
[
  {
    "path": ".csscomb.json",
    "chars": 8742,
    "preview": "{\n  \"remove-empty-rulesets\": true,\n  \"always-semicolon\": true,\n  \"color-case\": \"upper\",\n  \"block-indent\": \"  \",\n  \"color"
  },
  {
    "path": ".gitignore",
    "chars": 37,
    "preview": "node_modules/\n.idea\n~$statistics.xlsx"
  },
  {
    "path": "Gruntfile.js",
    "chars": 731,
    "preview": "module.exports = function(grunt) {\n  grunt.initConfig({\n    csscount: {\n      dev: {\n        src: [\n          'atomic/st"
  },
  {
    "path": "README.md",
    "chars": 3554,
    "preview": "## CSS-methodologies \"101\" examples: SMACSS, Atomic, BEM and so on.\n\n### Helping you select an CSS methodologie\nWe wrote"
  },
  {
    "path": "STATISTICS.md",
    "chars": 3225,
    "preview": "## Statistics\n\nThis statistics file, can have some old data, from previous commits. We tried to frequently update it.\n\nH"
  },
  {
    "path": "atomic/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "atomic/Gulpfile.js",
    "chars": 576,
    "preview": "var gulp = require('gulp');\nvar acss = require('gulp-atomizer');\nvar browserSync = require('browser-sync').create();\n\ngu"
  },
  {
    "path": "atomic/README.md",
    "chars": 127,
    "preview": "# Atomic\n\n## Usage\nThis example is already built, but if you want build it by yourself, here is a guide:\n\n`npm i`\n\n`npm "
  },
  {
    "path": "atomic/config.js",
    "chars": 86,
    "preview": "module.exports = {\n    \"custom\": {\n        \"Ff(Tahoma)\": \"Tahoma, sans-serif\"\n    }\n};"
  },
  {
    "path": "atomic/index.html",
    "chars": 6990,
    "preview": "<!DOCTYPE html>\r\n<html class=\"H(100%) Bgc(#eee)\">\r\n<head>\r\n    <title>Holy Grail Markup</title>\r\n    <link rel=\"styleshe"
  },
  {
    "path": "atomic/package.json",
    "chars": 180,
    "preview": "{\n  \"devDependencies\": {\n    \"browser-sync\": \"2.18.13\",\n    \"gulp\": \"^3.9.1\",\n    \"gulp-atomizer\": \"^3.0.7\"\n  },\n  \"scri"
  },
  {
    "path": "atomic/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "atomic/specificity-graph/index.html",
    "chars": 9840,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "atomic/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "atomic/specificity-graph/specificity.json",
    "chars": 5990,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":10,\"selectors\":\".Bdc\\\\(\\\\#45f\\\\)\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":"
  },
  {
    "path": "atomic/style.css",
    "chars": 2884,
    "preview": ".Bdc\\(\\#45f\\) {\n  border-color: #45f;\n}\n.Bds\\(s\\) {\n  border-style: solid;\n}\n.Bdw\\(1px\\) {\n  border-width: 1px;\n}\n.Bgc\\("
  },
  {
    "path": "bem-bootstrap-4/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "bem-bootstrap-4/Gulpfile.js",
    "chars": 1145,
    "preview": "var gulp            = require('gulp'),\n    sass            = require('gulp-sass'),\n    autoprefixer    = require('gulp-a"
  },
  {
    "path": "bem-bootstrap-4/README.md",
    "chars": 148,
    "preview": "# BEM Bootstrap 4\n\n## Usage\nThis example is already built, but if you want build it by yourself, here is a guide:\n\n`npm "
  },
  {
    "path": "bem-bootstrap-4/index.html",
    "chars": 6959,
    "preview": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n    <title>Ho"
  },
  {
    "path": "bem-bootstrap-4/package.json",
    "chars": 520,
    "preview": "{\n  \"name\": \"bem-flexboxgrid\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test"
  },
  {
    "path": "bem-bootstrap-4/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "bem-bootstrap-4/specificity-graph/index.html",
    "chars": 220210,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "bem-bootstrap-4/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "bem-bootstrap-4/specificity-graph/specificity.json",
    "chars": 216360,
    "preview": "[{\"selectorIndex\":0,\"line\":8,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":15,\"specificity\":1,\"selectors"
  },
  {
    "path": "bem-bootstrap-4/style.css",
    "chars": 151737,
    "preview": "/*!\n * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 201"
  },
  {
    "path": "bem-bootstrap-4/style.scss",
    "chars": 3354,
    "preview": "$container-max-widths: (\n    sm: 540px,\n    md: 640px,\n    lg: 700px\n);\n\n@import 'node_modules/bootstrap/scss/bootstrap'"
  },
  {
    "path": "bem-css/index.html",
    "chars": 6573,
    "preview": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <title>Holy Grail Markup</title>\r\n    <link rel=\"stylesheet\" href=\"style.css\">\r\n   "
  },
  {
    "path": "bem-css/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "bem-css/specificity-graph/index.html",
    "chars": 6669,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "bem-css/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "bem-css/specificity-graph/specificity.json",
    "chars": 2819,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":10,\"selectors"
  },
  {
    "path": "bem-css/style.css",
    "chars": 2609,
    "preview": "html {\n  height: 100%;\n}\n\n.page {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, "
  },
  {
    "path": "bem-flexboxgrid/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "bem-flexboxgrid/Gulpfile.js",
    "chars": 1354,
    "preview": "var gulp            = require('gulp'),\n    sass            = require('gulp-sass'),\n    sourcemaps      = require('gulp-s"
  },
  {
    "path": "bem-flexboxgrid/README.md",
    "chars": 148,
    "preview": "# BEM Flexboxgrid\n\n## Usage\nThis example is already built, but if you want build it by yourself, here is a guide:\n\n`npm "
  },
  {
    "path": "bem-flexboxgrid/index.html",
    "chars": 6753,
    "preview": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n    <title>Ho"
  },
  {
    "path": "bem-flexboxgrid/package.json",
    "chars": 578,
    "preview": "{\n  \"name\": \"bem-flexboxgrid\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test"
  },
  {
    "path": "bem-flexboxgrid/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "bem-flexboxgrid/specificity-graph/index.html",
    "chars": 25780,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "bem-flexboxgrid/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "bem-flexboxgrid/specificity-graph/specificity.json",
    "chars": 21930,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":10,\"selectors\":\".col\"},{\"selectorIndex\":1,\"line\":1,\"specificity\":10,\"selector"
  },
  {
    "path": "bem-flexboxgrid/style.css",
    "chars": 43856,
    "preview": ".col, .header, .header__title, .header__search, .main, .nav, .content, .news, .footer {\n  flex: 0 0 100%;\n\n  box-sizing:"
  },
  {
    "path": "bem-flexboxgrid/style.scss",
    "chars": 3762,
    "preview": "@import 'node_modules/flexbox-grid-sass/src/flexbox-grid';\n\nbody {\n  min-height: 100vh;\n  margin: 0;\n  padding: 0;\n\n  ba"
  },
  {
    "path": "bem-platform/.bem/templates/bemjson.js",
    "chars": 756,
    "preview": "'use strict';\n\nvar EOL = require('os').EOL;\n\nmodule.exports = function (entity, naming) {\n    return [\n        \"module.e"
  },
  {
    "path": "bem-platform/.bemrc",
    "chars": 779,
    "preview": "module.exports = {\n    root: true,\n\n    levels: {\n        'blocks': {\n            default: true\n        },\n        'bloc"
  },
  {
    "path": "bem-platform/.enb/make.js",
    "chars": 3947,
    "preview": "var techs = {\n        // essential\n        fileProvider: require('enb/techs/file-provider'),\n        fileMerge: require("
  },
  {
    "path": "bem-platform/.gitignore",
    "chars": 194,
    "preview": "node_modules/\n.DS_Store\n.idea/\n*.iml\n.project\n.svn\nnpm-debug.log\n\n# bem\n.bem/cache/\n.enb/tmp/\n*bundles*/*/*.*\n!*bundles*"
  },
  {
    "path": "bem-platform/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "bem-platform/README.md",
    "chars": 2923,
    "preview": "# holy-grail-markup implementation on BEM Platform\n\nBased on [project-stub](https://github.com/bem/project-stub).\n\n## Su"
  },
  {
    "path": "bem-platform/README.ru.md",
    "chars": 4140,
    "preview": "# Реализация holy-grail-markup на БЭМ-платформе\n\nОсновано на [project-stub](https://github.com/bem/project-stub).\n\n## По"
  },
  {
    "path": "bem-platform/blocks/button/button.css",
    "chars": 87,
    "preview": ".button {\n    display: inline-block;\n    vertical-align: bottom;\n    font-size: 9px;\n}\n"
  },
  {
    "path": "bem-platform/blocks/content/content.css",
    "chars": 168,
    "preview": ".content {\n  float: left;\n\n  width: 55%;\n}\n\n.content__title {\n  margin-top: 20px;\n  margin-bottom: 10px;\n  padding: 0 15"
  },
  {
    "path": "bem-platform/blocks/footer/footer.css",
    "chars": 205,
    "preview": ".footer {\n  position: absolute;\n  bottom: 0;\n\n  width: 700px;\n  height: 42px;\n\n  color: #fff;\n  background: #45F;\n}\n\n.fo"
  },
  {
    "path": "bem-platform/blocks/form/form.bemhtml.js",
    "chars": 70,
    "preview": "block('form')(\n    tag()('form'),\n    elem('label').tag()('label')\n);\n"
  },
  {
    "path": "bem-platform/blocks/header/header.css",
    "chars": 273,
    "preview": ".header {\n  padding: 20px;\n\n  background: #45F;\n}\n\n.header__title {\n  display: inline-block;\n\n  margin: 0;\n  padding-lef"
  },
  {
    "path": "bem-platform/blocks/header/header.deps.js",
    "chars": 30,
    "preview": "({\n    mustDeps: 'heading'\n})\n"
  },
  {
    "path": "bem-platform/blocks/heading/heading.bemhtml.js",
    "chars": 81,
    "preview": "block('heading').tag()(function() {\n    return 'h' + (this.mods.level || 1);\n});\n"
  },
  {
    "path": "bem-platform/blocks/heading/heading.post.css",
    "chars": 413,
    "preview": ".heading {\n    margin: 0 0 16px 0;\n\n    &_level {\n        &_1 {\n            font-size: 23.4px;\n            letter-spacin"
  },
  {
    "path": "bem-platform/blocks/main/main.bemhtml.js",
    "chars": 33,
    "preview": "block('main').mix()('clearfix');\n"
  },
  {
    "path": "bem-platform/blocks/main/main.css",
    "chars": 58,
    "preview": ".main {\n    min-height: 100%;\n    padding-bottom: 42px;\n}\n"
  },
  {
    "path": "bem-platform/blocks/main/main.deps.js",
    "chars": 49,
    "preview": "({\n    shouldDeps: [\n        'clearfix'\n    ]\n})\n"
  },
  {
    "path": "bem-platform/blocks/nav/nav.bemhtml.js",
    "chars": 63,
    "preview": "block('nav')(\n    tag()('ul'),\n    elem('item').tag()('li')\n);\n"
  },
  {
    "path": "bem-platform/blocks/nav/nav.css",
    "chars": 446,
    "preview": ".nav {\n  margin: 50px 0;\n  padding: 0;\n\n  list-style: none;\n}\n\n.nav__item_separate {\n  margin: 22px 0;\n}\n\n.nav__link {\n "
  },
  {
    "path": "bem-platform/blocks/news/news.css",
    "chars": 438,
    "preview": ".news {\n  float: right;\n\n  width: 25%;\n}\n\n.news__title {\n  margin: 0 0 20px 0;\n  padding: 10px;\n}\n\n.news__article {\n  ma"
  },
  {
    "path": "bem-platform/blocks/page/page.bemhtml.js",
    "chars": 113,
    "preview": "block('page').content()(function() {\n    return {\n        elem: 'inner',\n        content: applyNext()\n    };\n});\n"
  },
  {
    "path": "bem-platform/blocks/page/page.css",
    "chars": 225,
    "preview": "html {\n  height: 100%;\n}\n\n.page {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #eee;\n\n  font: 13px Tahoma, "
  },
  {
    "path": "bem-platform/blocks/search/search.css",
    "chars": 112,
    "preview": ".search {\n    font-size: 10.4px;\n}\n\n.search__field {\n    display: block;\n    width: 10em;\n    font-size: 9px;\n}\n"
  },
  {
    "path": "bem-platform/blocks/sidebar/sidebar.css",
    "chars": 43,
    "preview": ".sidebar {\n  float: left;\n\n  width: 20%;\n}\n"
  },
  {
    "path": "bem-platform/blocks/text/text.css",
    "chars": 261,
    "preview": ".text {\n  /* There can be some styles for content imported from backed */\n}\n\n.text img {\n  float: left;\n\n  margin: 0 15p"
  },
  {
    "path": "bem-platform/blocks/title/title.css",
    "chars": 78,
    "preview": ".title {\n    letter-spacing: 1px;\n\n    color: #fff;\n\n    font-size: 23.4px;\n}\n"
  },
  {
    "path": "bem-platform/gulpfile.js",
    "chars": 3649,
    "preview": "const path = require('path');\n\nconst Builder = require('gulp-bem-bundle-builder');\nconst bundler = require('gulp-bem-bun"
  },
  {
    "path": "bem-platform/package.json",
    "chars": 1490,
    "preview": "{\n  \"author\": \"\",\n  \"name\": \"bem-platform-holy-grail-markup\",\n  \"version\": \"2.0.0\",\n  \"browserslist\": [\n    \"ie >= 10\",\n"
  },
  {
    "path": "bem-platform/pages/index/index.bemdecl.js",
    "chars": 5306,
    "preview": "exports.blocks = [\n    {\n        \"name\": \"page\"\n    },\n    {\n        \"name\": \"page\",\n        \"elems\": [\n            {\n  "
  },
  {
    "path": "bem-platform/pages/index/index.bemhtml.bemdecl.js",
    "chars": 21,
    "preview": "exports.blocks = [];\n"
  },
  {
    "path": "bem-platform/pages/index/index.bemhtml.deps.js",
    "chars": 19,
    "preview": "exports.deps = [];\n"
  },
  {
    "path": "bem-platform/pages/index/index.bemhtml.js",
    "chars": 59406,
    "preview": "var BEMHTML;\n\n(function(global) {\n    function buildBemXjst(__bem_xjst_libs__) {\n        var exports = {};\n\n        /// "
  },
  {
    "path": "bem-platform/pages/index/index.bemjson.js",
    "chars": 11303,
    "preview": "module.exports = {\n    block: 'page',\n    title: 'Holy Grail Markup',\n    favicon: '/favicon.ico',\n    head: [\n        {"
  },
  {
    "path": "bem-platform/pages/index/index.browser.bemhtml.js",
    "chars": 1003,
    "preview": "var BEMHTML;\n\n(function(global) {\n    function buildBemXjst(__bem_xjst_libs__) {\n        var exports = {};\n\n        expo"
  },
  {
    "path": "bem-platform/pages/index/index.browser.js",
    "chars": 170711,
    "preview": "/**\n * Modules\n *\n * Copyright (c) 2013 Filatov Dmitry (dfilatov@yandex-team.ru)\n * Dual licensed under the MIT and GPL "
  },
  {
    "path": "bem-platform/pages/index/index.css",
    "chars": 2882,
    "preview": "html {\n  height: 100%;\n}\n\n.page {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, "
  },
  {
    "path": "bem-platform/pages/index/index.deps.js",
    "chars": 5631,
    "preview": "exports.deps = [\n    {\n        \"block\": \"page\"\n    },\n    {\n        \"block\": \"i-bem-dom\"\n    },\n    {\n        \"block\": \""
  },
  {
    "path": "bem-platform/pages/index/index.html",
    "chars": 5327,
    "preview": "<!DOCTYPE html><html class=\"ua_js_no\"><head><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><"
  },
  {
    "path": "bem-platform/pages/index/index.js",
    "chars": 171715,
    "preview": "/**\n * Modules\n *\n * Copyright (c) 2013 Filatov Dmitry (dfilatov@yandex-team.ru)\n * Dual licensed under the MIT and GPL "
  },
  {
    "path": "bem-platform/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "bem-platform/specificity-graph/index.html",
    "chars": 6905,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "bem-platform/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "bem-platform/specificity-graph/specificity.json",
    "chars": 3055,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":10,\"selectors"
  },
  {
    "path": "bem-sass/index.html",
    "chars": 6440,
    "preview": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Holy Grail Markup</title>\n    <link rel=\"stylesheet\" href=\"style.css\">\n    <!--"
  },
  {
    "path": "bem-sass/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "bem-sass/specificity-graph/index.html",
    "chars": 6669,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "bem-sass/specificity-graph/specificity-graph-standalone.js",
    "chars": 484097,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "bem-sass/specificity-graph/specificity.json",
    "chars": 2819,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":10,\"selectors"
  },
  {
    "path": "bem-sass/style.css",
    "chars": 2625,
    "preview": "html {\n  height: 100%;\n}\n\n.page {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, "
  },
  {
    "path": "bem-sass/style.scss",
    "chars": 2744,
    "preview": "html {\n  height: 100%;\n}\n\n.page {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, "
  },
  {
    "path": "css-modules/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "css-modules/README.md",
    "chars": 136,
    "preview": "# CSS Modules\n\n## Usage\nThis example is already built, but if you want build it by yourself, here is a guide:\n\n`npm i`\n\n"
  },
  {
    "path": "css-modules/app/index.js",
    "chars": 452,
    "preview": "import s from \"./styles.css\";\nimport Header from \"../header\";\nimport Main from \"../main\";\nimport Footer from \"../footer\""
  },
  {
    "path": "css-modules/app/styles.css",
    "chars": 267,
    "preview": "html\n{\n    height: 100%;\n}\n\nbody\n{\n    font: 13px Tahoma, Sans-Serif;\n\n    height: 100%;\n    margin: 0;\n    padding: 0;\n"
  },
  {
    "path": "css-modules/build/bundle.js",
    "chars": 14587,
    "preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/*"
  },
  {
    "path": "css-modules/build/style.css",
    "chars": 2409,
    "preview": "html {\n  height: 100%;\n}\n\nbody {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, S"
  },
  {
    "path": "css-modules/content/index.js",
    "chars": 1095,
    "preview": "import s from \"./styles.css\";\nimport image from \"./imgpsh_fullsize.jpg\";\n\nexport default function Content() {\n  return `"
  },
  {
    "path": "css-modules/content/styles.css",
    "chars": 309,
    "preview": ".content\n{\n    float: left;\n\n    width: 55%;\n}\n\n.title\n{\n    font-size: 130%;\n\n    margin-top: 20px;\n    margin-bottom: "
  },
  {
    "path": "css-modules/footer/index.js",
    "chars": 331,
    "preview": "import s from \"./styles.css\";\n\nexport default function Footer() {\n  return `<div class=\"${s.footer}\">\n      <span class="
  },
  {
    "path": "css-modules/footer/styles.css",
    "chars": 226,
    "preview": ".footer\n{\n    position: absolute;\n    bottom: 0;\n\n    width: 700px;\n    height: 42px;\n\n    color: #fff;\n    background: "
  },
  {
    "path": "css-modules/header/index.js",
    "chars": 398,
    "preview": "import s from \"./styles.css\";\n\nexport default function Header() {\n  return `<div class=\"${s.root}\">\n      <h1 class=\"${s"
  },
  {
    "path": "css-modules/header/styles.css",
    "chars": 456,
    "preview": ".root {\n    padding: 20px;\n    background: #45F;\n}\n\n.title {\n    display: inline-block;\n    margin: 0;\n    padding-left:"
  },
  {
    "path": "css-modules/index.html",
    "chars": 4993,
    "preview": "<!DOCTYPE html>\n    <html>\n    <head>\n        <title>Holy Grail Markup</title>\n        <link rel=\"stylesheet\" href=\"buil"
  },
  {
    "path": "css-modules/index.js",
    "chars": 88,
    "preview": "import App from \"./app\";\nimport fs from 'fs';\n\nfs.writeFileSync('./index.html', App());\n"
  },
  {
    "path": "css-modules/main/index.js",
    "chars": 249,
    "preview": "import s from \"./styles.css\";\nimport Nav from \"../nav\";\nimport Content from \"../content\";\nimport News from \"../news\";\n\ne"
  },
  {
    "path": "css-modules/main/styles.css",
    "chars": 80,
    "preview": ".main {\n    overflow: hidden;\n    padding-bottom: 42px;\n    min-height: 100%;\n}\n"
  },
  {
    "path": "css-modules/nav/index.js",
    "chars": 1050,
    "preview": "import s from \"./styles.css\";\n\nconst root = \"https://aleshaoleg.github.io/holy-grail-markup/\";\nconst active = \"css-modul"
  },
  {
    "path": "css-modules/nav/styles.css",
    "chars": 495,
    "preview": ".nav {\n    float: left;\n    width: 20%;\n}\n\n.list {\n    margin: 50px 0;\n    padding: 0;\n    list-style: none;\n}\n\n.link {\n"
  },
  {
    "path": "css-modules/news/index.js",
    "chars": 1276,
    "preview": "import s from \"./styles.css\";\n\nconst articles = [\n  {\n    date: \"01.01.16\",\n    hasMore: false,\n    content: `Vestibulum"
  },
  {
    "path": "css-modules/news/styles.css",
    "chars": 542,
    "preview": ".news {\n    float: right;\n    width: 25%;\n}\n\n.title {\n    margin: 0 0 20px 0;\n    padding: 10px;\n    background: #DDE6FF"
  },
  {
    "path": "css-modules/package.json",
    "chars": 353,
    "preview": "{\n  \"name\": \"css-modules\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"build\": \"webpack\",\n    \"postbuild\": \"node build/bun"
  },
  {
    "path": "css-modules/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "css-modules/specificity-graph/index.html",
    "chars": 6143,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "css-modules/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "css-modules/specificity-graph/specificity.json",
    "chars": 2293,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":1,\"selectors\""
  },
  {
    "path": "css-modules/webpack.config.js",
    "chars": 650,
    "preview": "const ExtractTextPlugin = require(\"extract-text-webpack-plugin\");\n\nmodule.exports = {\n  entry: \"./index.js\",\n  output: {"
  },
  {
    "path": "index.js",
    "chars": 3252,
    "preview": "var fs = require('fs');\nvar Comb = require('csscomb');\nvar config = require('./.csscomb.json');\nvar specificityGraph = r"
  },
  {
    "path": "oocss/index.html",
    "chars": 5844,
    "preview": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <title>Holy Grail Markup</title>\r\n    <link rel=\"stylesheet\" href=\"style.css\">\r\n   "
  },
  {
    "path": "oocss/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "oocss/specificity-graph/index.html",
    "chars": 6524,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "oocss/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "oocss/specificity-graph/specificity.json",
    "chars": 2674,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":1,\"selectors\""
  },
  {
    "path": "oocss/style.css",
    "chars": 2269,
    "preview": "html {\n  height: 100%;\n}\n\nbody {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, S"
  },
  {
    "path": "organic/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "organic/Gruntfile.js",
    "chars": 582,
    "preview": "module.exports = function(grunt) {\n    grunt.initConfig({\n        sass: {\n            dist: {\n                options: {"
  },
  {
    "path": "organic/README.md",
    "chars": 605,
    "preview": "# Organic\n\n## Usage\nThis example is already built, but if you want build it by yourself, here is a guide:\n\n`npm i`\n\n`npm"
  },
  {
    "path": "organic/index.html",
    "chars": 5933,
    "preview": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Holy Grail Markup</title>\n    <link rel=\"stylesheet\" href=\"style.css\">\n    <!--"
  },
  {
    "path": "organic/package.json",
    "chars": 200,
    "preview": "{\n  \"name\": \"TheTourSite\",\n  \"version\": \"0.0.1\",\n  \"devDependencies\": {\n    \"grunt\": \"0.4.1\",\n    \"grunt-contrib-concat\""
  },
  {
    "path": "organic/scss/app.scss",
    "chars": 360,
    "preview": "@import 'main';\n\n@import 'molecules/_html';\n@import 'molecules/_body';\n@import 'molecules/_wrapper';\n@import 'molecules/"
  },
  {
    "path": "organic/scss/atoms/_atoms.scss",
    "chars": 380,
    "preview": "@include define-atom('height-100') {\n  height: 100%;\n}\n\n@include define-atom('font') {\n  font: 13px Tahoma, sans-serif;\n"
  },
  {
    "path": "organic/scss/atoms/_box-model.scss",
    "chars": 1452,
    "preview": "// margin\n%margin-reset {\n  margin: 0;\n}\n%margin-centered {\n  margin: 0 auto;\n}\n@include generate-placeholder('margin', "
  },
  {
    "path": "organic/scss/atoms/_break-point.scss",
    "chars": 341,
    "preview": "@mixin break-point-lower-than($point) {\n  @media all and (max-width: $point) {\n    @content;\n  }\n}\n@mixin break-point-hi"
  },
  {
    "path": "organic/scss/atoms/_clearfix.scss",
    "chars": 85,
    "preview": "%clearfix {\n  &:after {\n    display: table;\n    clear: both;\n\n    content: '';\n  }\n}\n"
  },
  {
    "path": "organic/scss/atoms/_colors.scss",
    "chars": 467,
    "preview": "%black {\n  color: #000;\n}\n%white {\n  color: #FFF;\n}\n@mixin color($color: #000, $light: 0, $dark: 0) {\n  color: $color;\n "
  },
  {
    "path": "organic/scss/atoms/_cursor.scss",
    "chars": 663,
    "preview": "%cursor-auto {\n  cursor: auto;\n}\n%cursor-crosshair {\n  cursor: crosshair;\n}\n%cursor-default {\n  cursor: default;\n}\n%curs"
  },
  {
    "path": "organic/scss/atoms/_display.scss",
    "chars": 147,
    "preview": "%block {\n  display: block;\n\n  @include vendor(box-sizing, border-box);\n}\n%inline {\n  display: inline;\n}\n%inline-block {\n"
  },
  {
    "path": "organic/scss/atoms/_effects.scss",
    "chars": 410,
    "preview": "@mixin box-shadow($top: 0, $left: 1px, $blur: 1px, $color: #000, $inset: 'inset') {\n  -webkit-box-shadow: $top $left $bl"
  },
  {
    "path": "organic/scss/atoms/_floats.scss",
    "chars": 81,
    "preview": "%right {\n  float: right;\n}\n%left {\n  float: left;\n}\n%no-float {\n  float: none;\n}\n"
  },
  {
    "path": "organic/scss/atoms/_keyframes.scss",
    "chars": 303,
    "preview": "@mixin keyframes($animation-name) {\n  @-webkit-keyframes $animation-name {\n    @content;\n  }\n  @-moz-keyframes $animatio"
  },
  {
    "path": "organic/scss/atoms/_position.scss",
    "chars": 188,
    "preview": "@mixin absolute($x: 0, $y: 0) {\n  position: absolute;\n  top: $x;\n  left: $y;\n}\n@mixin fixed($x: 0, $y: 0) {\n  position: "
  },
  {
    "path": "organic/scss/atoms/_sizes.scss",
    "chars": 308,
    "preview": "@mixin width($value: auto) {\n  width: $value;\n}\n@mixin height($value: auto) {\n  height: $value;\n}\n@mixin size($wValue: a"
  },
  {
    "path": "organic/scss/atoms/_text.scss",
    "chars": 691,
    "preview": "%normal {\n  font-weight: normal;\n}\n%bold {\n  font-weight: bold;\n}\n%italic {\n  font-style: italic;\n}\n%underline {\n  text-"
  },
  {
    "path": "organic/scss/atoms/_transition.scss",
    "chars": 439,
    "preview": "@mixin transition($transition-property: all, $transition-time: 1000ms, $method: ease-out) {\n  -webkit-transition: $trans"
  },
  {
    "path": "organic/scss/atoms/_vendors.scss",
    "chars": 208,
    "preview": "@mixin vendor($property, $value...){\n    -webkit-#{$property}: $value;\n       -moz-#{$property}: $value;\n        -ms-#{$"
  },
  {
    "path": "organic/scss/atoms/_widths.scss",
    "chars": 1721,
    "preview": "// credits: inuit.css (https://github.com/csswizardry/inuit.css)\n\n%one-whole {\n  width: 100%;\n}\n\n// Halves\n%one-half {\n "
  },
  {
    "path": "organic/scss/common.scss",
    "chars": 661,
    "preview": "// ****** removes the first element of a list and returns it\n@function shift($list) {\n    $newList: ();\n    @for $i from"
  },
  {
    "path": "organic/scss/main.scss",
    "chars": 437,
    "preview": "@import 'common';\n\n@import 'atoms/_atoms';\n@import 'atoms/_vendors';\n@import 'atoms/_display';\n@import 'atoms/_text';\n@i"
  },
  {
    "path": "organic/scss/molecules/_body.scss",
    "chars": 120,
    "preview": "body {\n  @include atoms((\n    height-100\n    margin-0\n    padding-0\n    font\n  ));\n  @include bg-color($color: #EEE);\n}\n"
  },
  {
    "path": "organic/scss/molecules/_button.scss",
    "chars": 141,
    "preview": "@mixin button {\n  .button {\n    @include atoms((\n      inline-block\n      font-size-9-px\n    )) {\n      vertical-align: "
  },
  {
    "path": "organic/scss/molecules/_content.scss",
    "chars": 600,
    "preview": "@mixin content-title {\n  .content-title {\n    @include atoms((\n      margin-top-20\n      margin-bottom-10\n      font-siz"
  },
  {
    "path": "organic/scss/molecules/_footer.scss",
    "chars": 222,
    "preview": "@mixin footer-text {\n  .footer-text {\n    @include atoms((\n      block\n    )) {\n      margin: 5px;\n\n      font-size: 70%"
  },
  {
    "path": "organic/scss/molecules/_header.scss",
    "chars": 332,
    "preview": "@mixin header-title {\n  .header-title {\n    @include atoms((\n      height-100\n      padding-left-40\n      margin-0\n     "
  },
  {
    "path": "organic/scss/molecules/_html.scss",
    "chars": 49,
    "preview": "html {\n  @include atoms((\n    height-100\n  ));\n}\n"
  },
  {
    "path": "organic/scss/molecules/_label.scss",
    "chars": 253,
    "preview": "@mixin label {\n  .label {\n    @include atoms((\n      inline-block\n      white\n    ));\n  };\n}\n\n@mixin label-field {\n  .la"
  },
  {
    "path": "organic/scss/molecules/_main.scss",
    "chars": 108,
    "preview": ".main {\n  @include atoms((\n    padding-bottom-42\n  )) {\n    overflow: hidden;\n\n    min-height: 100%;\n  };\n}\n"
  },
  {
    "path": "organic/scss/molecules/_nav.scss",
    "chars": 754,
    "preview": "@mixin nav-list {\n  .nav-list {\n    @include atoms((\n      padding-0\n    )) {\n      margin: 50px 0;\n\n      list-style: n"
  },
  {
    "path": "organic/scss/molecules/_news.scss",
    "chars": 921,
    "preview": "@mixin news-title {\n  .news-title {\n    @include atoms((\n      font-size-100-per\n      bold\n      margin-0\n      margin-"
  },
  {
    "path": "organic/scss/molecules/_wrapper.scss",
    "chars": 154,
    "preview": ".wrapper {\n  @include atoms((\n    margin-centered\n  )) {\n    min-height: 100%;\n  };\n  @include width($value: 700px);\n  @"
  },
  {
    "path": "organic/scss/organelles/_organelles.scss",
    "chars": 970,
    "preview": ".header {\n  @include atoms((\n    padding-20\n  ));\n  @include bg-color($color: #45F);\n  @include header-title;\n  @include"
  },
  {
    "path": "organic/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "organic/specificity-graph/index.html",
    "chars": 10149,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "organic/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "organic/specificity-graph/specificity.json",
    "chars": 6299,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":1,\"specificity\":1,\"selectors\""
  },
  {
    "path": "organic/style.css",
    "chars": 3678,
    "preview": "html, body, .header .header-title {\n  height: 100%;\n}\n\nbody {\n  font: 13px Tahoma, sans-serif;\n}\n\n.header .header-search"
  },
  {
    "path": "package.json",
    "chars": 1022,
    "preview": "{\n  \"name\": \"holy-grail-markup\",\n  \"version\": \"1.0.0\",\n  \"description\": \"“Hello world” markup using different CSS method"
  },
  {
    "path": "raw/index.html",
    "chars": 4962,
    "preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html>\r\n    <head>\r\n        "
  },
  {
    "path": "raw/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "raw/specificity-graph/index.html",
    "chars": 7425,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "raw/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "raw/specificity-graph/specificity.json",
    "chars": 3575,
    "preview": "[{\"selectorIndex\":0,\"line\":3,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":7,\"specificity\":1,\"selectors\""
  },
  {
    "path": "raw/style.css",
    "chars": 2590,
    "preview": "/* Layout ******************/\r\n\r\nhtml {\n  height: 100%;\r\n}\r\n\r\nbody {\n  position: relative;\n\n  width: 700px;\n  min-height"
  },
  {
    "path": "smacss/basic.css",
    "chars": 133,
    "preview": "html {\n  height: 100%;\n}\n\nbody {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, S"
  },
  {
    "path": "smacss/build.css",
    "chars": 2306,
    "preview": "html {\n  height: 100%;\n}\n\nbody {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n\n  background: #EEE;\n\n  font: 13px Tahoma, S"
  },
  {
    "path": "smacss/index.html",
    "chars": 6802,
    "preview": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <title>Holy Grail Markup</title>\r\n    <link rel=\"stylesheet\" href=\"basic.css\">\r\n   "
  },
  {
    "path": "smacss/layouts.css",
    "chars": 495,
    "preview": ".l-wrapper {\n  position: relative;\n\n  width: 700px;\n  min-height: 100%;\n  margin: 0 auto;\n\n  background: #FFF;\n}\n\n.l-hea"
  },
  {
    "path": "smacss/modules.css",
    "chars": 1517,
    "preview": ".header-title {\n  display: inline-block;\n\n  margin: 0;\n  padding-left: 40px;\n\n  letter-spacing: 1px;\n\n  color: #FFF;\n\n  "
  },
  {
    "path": "smacss/specificity-graph/example.js",
    "chars": 1327,
    "preview": "'use strict'\n\n// if using standalone js, specifityGraph will be a global.\n// If going to be bundled via f.e. Browserify,"
  },
  {
    "path": "smacss/specificity-graph/index.html",
    "chars": 6168,
    "preview": "<!;DOCTYPE; html>\n<html>\n  <head>\n    <meta charset='utf-8'>\n    <meta name='viewport' content='width=device-width, init"
  },
  {
    "path": "smacss/specificity-graph/specificity-graph-standalone.js",
    "chars": 484161,
    "preview": "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof defin"
  },
  {
    "path": "smacss/specificity-graph/specificity.json",
    "chars": 2318,
    "preview": "[{\"selectorIndex\":0,\"line\":1,\"specificity\":1,\"selectors\":\"html\"},{\"selectorIndex\":1,\"line\":5,\"specificity\":1,\"selectors\""
  },
  {
    "path": "smacss/states.css",
    "chars": 55,
    "preview": ".nav-link:hover {\n  color: #FFF;\n  background: #D00;\n}\n"
  },
  {
    "path": "smacss/themes.css",
    "chars": 106,
    "preview": ".nav-link-blue {\n  background: #293499;\n}\n\n.nav-link-light-blue {\n  color: #000;\n  background: #DDE6FF;\n}\n"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the AleshaOleg/holy-grail-markup GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 188 files (6.4 MB), approximately 1.7M tokens, and a symbol index with 6176 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!