jekyll_pages_api_search 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CONTRIBUTING.md +15 -0
- data/LICENSE.md +31 -0
- data/README.md +144 -0
- data/assets/js/search-bundle.js +17 -0
- data/assets/js/search-bundle.js.gz +0 -0
- data/assets/js/search.js +96 -0
- data/lib/jekyll_pages_api_search.rb +8 -0
- data/lib/jekyll_pages_api_search/js_copier.rb +19 -0
- data/lib/jekyll_pages_api_search/lunr.min.js +7 -0
- data/lib/jekyll_pages_api_search/sass.rb +5 -0
- data/lib/jekyll_pages_api_search/sass/jekyll_pages_api_search.scss +45 -0
- data/lib/jekyll_pages_api_search/search.html +18 -0
- data/lib/jekyll_pages_api_search/search.js +22 -0
- data/lib/jekyll_pages_api_search/search.rb +30 -0
- data/lib/jekyll_pages_api_search/search_hook.rb +44 -0
- data/lib/jekyll_pages_api_search/tags.rb +28 -0
- data/lib/jekyll_pages_api_search/version.rb +5 -0
- metadata +202 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 95458b7591198de57362c26d126a2750c2d77109
|
4
|
+
data.tar.gz: a82d61d17b53b54b975d678d3579e9a205138d16
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7961a1c5c1b4ed84e405a9a62badd77deca8bd22015f3c5e6a4828f60ee2e3a14893f79476f19f417566f95be165ec0a8bfa963349080a14749e4adcd7f19f38
|
7
|
+
data.tar.gz: f52a6617304044e10b0c28ebe23ab79e98c46511bbb3587dca58bd1346cb0dd6dcdfb86532bfd5241a580b7455a0199d1185dfda9b7428a56b3b9bbecaceecda
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
## Welcome!
|
2
|
+
|
3
|
+
We're so glad you're thinking about contributing to an 18F open source project! If you're unsure or afraid of anything, just ask or submit the issue or pull request anyways. The worst that can happen is that you'll be politely asked to change something. We appreciate any sort of contribution, and don't want a wall of rules to get in the way of that.
|
4
|
+
|
5
|
+
Before contributing, we encourage you to read our CONTRIBUTING policy (you are here), our LICENSE, and our README, all of which should be in this repository. If you have any questions, or want to read more about our underlying policies, you can consult the 18F Open Source Policy GitHub repository at https://github.com/18f/open-source-policy, or just shoot us an email/official government letterhead note to [18f@gsa.gov](mailto:18f@gsa.gov).
|
6
|
+
|
7
|
+
## Public domain
|
8
|
+
|
9
|
+
This project is in the public domain within the United States, and
|
10
|
+
copyright and related rights in the work worldwide are waived through
|
11
|
+
the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
|
12
|
+
|
13
|
+
All contributions to this project will be released under the CC0
|
14
|
+
dedication. By submitting a pull request, you are agreeing to comply
|
15
|
+
with this waiver of copyright interest.
|
data/LICENSE.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
As a work of the United States Government, this project is in the
|
2
|
+
public domain within the United States.
|
3
|
+
|
4
|
+
Additionally, we waive copyright and related rights in the work
|
5
|
+
worldwide through the CC0 1.0 Universal public domain dedication.
|
6
|
+
|
7
|
+
## CC0 1.0 Universal Summary
|
8
|
+
|
9
|
+
This is a human-readable summary of the [Legal Code (read the full text)](https://creativecommons.org/publicdomain/zero/1.0/legalcode).
|
10
|
+
|
11
|
+
### No Copyright
|
12
|
+
|
13
|
+
The person who associated a work with this deed has dedicated the work to
|
14
|
+
the public domain by waiving all of his or her rights to the work worldwide
|
15
|
+
under copyright law, including all related and neighboring rights, to the
|
16
|
+
extent allowed by law.
|
17
|
+
|
18
|
+
You can copy, modify, distribute and perform the work, even for commercial
|
19
|
+
purposes, all without asking permission.
|
20
|
+
|
21
|
+
### Other Information
|
22
|
+
|
23
|
+
In no way are the patent or trademark rights of any person affected by CC0,
|
24
|
+
nor are the rights that other persons may have in the work or in how the
|
25
|
+
work is used, such as publicity or privacy rights.
|
26
|
+
|
27
|
+
Unless expressly stated otherwise, the person who associated a work with
|
28
|
+
this deed makes no warranties about the work, and disclaims liability for
|
29
|
+
all uses of the work, to the fullest extent permitted by applicable law.
|
30
|
+
When using or citing the work, you should not imply endorsement by the
|
31
|
+
author or the affirmer.
|
data/README.md
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
## jekyll_pages_api_search Plugin
|
2
|
+
|
3
|
+
This Ruby gem adds a [lunr.js](http://lunrjs.com) search index to a
|
4
|
+
[Jekyll](http://jekyllrb.com/)-based web site.
|
5
|
+
|
6
|
+
The search index is generated and compressed automatically via `jekyll build`
|
7
|
+
or `jekyll serve`. The supporting JavaScript code is optimized, compressed,
|
8
|
+
and loads asynchronously. These features ensure that the preparation of the
|
9
|
+
search index does not introduce rendering latency in the browser.
|
10
|
+
|
11
|
+
### Installation
|
12
|
+
|
13
|
+
Add this line to your Jekyll project's `Gemfile`:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
group :jekyll_plugins do
|
17
|
+
gem 'jekyll_pages_api_search'
|
18
|
+
end
|
19
|
+
```
|
20
|
+
|
21
|
+
Then add the following to the project's `_config.yml` file:
|
22
|
+
|
23
|
+
```yaml
|
24
|
+
# Configuration for jekyll_pages_api_search plugin gem.
|
25
|
+
jekyll_pages_api_search:
|
26
|
+
# Uncomment this to speed up site generation while developing.
|
27
|
+
#skip_index: true
|
28
|
+
|
29
|
+
# Each member of `index_fields` should correspond to a field generated by
|
30
|
+
# the jekyll_pages_api. It can hold an optional `boost` member as a signal
|
31
|
+
# to Lunr.js to weight the field more highly (default is 1).
|
32
|
+
index_fields:
|
33
|
+
title:
|
34
|
+
boost: 10
|
35
|
+
tags:
|
36
|
+
boost: 10
|
37
|
+
url:
|
38
|
+
boost: 5
|
39
|
+
body:
|
40
|
+
```
|
41
|
+
|
42
|
+
Now running `jekyll build` or `jekyll serve` will produce `search-index.json`
|
43
|
+
and `search-index.json.gz` files in the `_site` directory (or other output
|
44
|
+
directory, as configured).
|
45
|
+
|
46
|
+
If you're running [Nginx](http://nginx.org), you may want to use the
|
47
|
+
[`gzip_static on`
|
48
|
+
directive](http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html)
|
49
|
+
to take advantage of the gzipped versions of the search index and supporting
|
50
|
+
JavaScript.
|
51
|
+
|
52
|
+
### Usage
|
53
|
+
|
54
|
+
To add the index to your pages, insert the following tags in your `_layouts`
|
55
|
+
and `_includes` files as you see fit:
|
56
|
+
|
57
|
+
- `{% jekyll_pages_api_search_interface %}`: inserts the HTML for the search
|
58
|
+
box and search results
|
59
|
+
- `{% jekyll_pages_api_search_load %}`: inserts the `<script>` tags to load
|
60
|
+
the search code asynchronously; the search code will then load
|
61
|
+
`search-index.json` asynchronously
|
62
|
+
|
63
|
+
You can also add `@import "jekyll_pages_api_search";` to one of your [Sass
|
64
|
+
assets](http://jekyllrb.com/docs/assets/) to use the default interface style.
|
65
|
+
|
66
|
+
### Customization
|
67
|
+
|
68
|
+
If you prefer to craft your own versions of these tags and styles, you can
|
69
|
+
capture the output of these tags and the Sass `@import` statement, then create
|
70
|
+
new tags or included files based on this output, careful not to change
|
71
|
+
anything that causes the interaction between these components to fail.
|
72
|
+
|
73
|
+
Alternately, you can inspect the code of this Gem (all paths relative to
|
74
|
+
`lib/jekyll_pages_api_search/`):
|
75
|
+
|
76
|
+
- `{% jekyll_pages_api_search_interface %}`: includes `search.html`
|
77
|
+
- `{% jekyll_pages_api_search_load %}`: generated by the `LoadSearchTag` class
|
78
|
+
from `tags.rb`
|
79
|
+
- `@import "jekyll_pages_api_search";`: includes
|
80
|
+
`sass/jekyll_pages_api_search.scss`
|
81
|
+
|
82
|
+
### Under the hood
|
83
|
+
|
84
|
+
This plugin depends on [jQuery](https://jquery.com/),
|
85
|
+
[AngularJS](https://angularjs.org/), and
|
86
|
+
[angular-livesearch](https://github.com/mauriciogentile/angular-livesearch).
|
87
|
+
|
88
|
+
All of these components are bundled together with `assets/js/search.js` into
|
89
|
+
`assets/js/search-bundle.js` using [Browserify](http://browserify.org/). If
|
90
|
+
you already use some of these components, you may wish to fetch the
|
91
|
+
`assets/js/search.js` file directly from this repository and use
|
92
|
+
`package.json` and `bower.json` as a guide to update or create your own
|
93
|
+
Browserify configuration.
|
94
|
+
|
95
|
+
### Developing
|
96
|
+
|
97
|
+
Building the gem requires [Node.js](https://nodejs.org/) and several Node
|
98
|
+
packages. The `Rakefile` will prompt you to install Node.js and any packages
|
99
|
+
that are missing from your system when running `bundle exec rake build`.
|
100
|
+
|
101
|
+
* Run `bundle` to install any necessary gems.
|
102
|
+
* Run `bundle exec rake -T` to get a list of build commands and descriptions.
|
103
|
+
* Run `bundle exec rake update_js_components` download and install the latest
|
104
|
+
JavaScript components listed in `bower.json`.
|
105
|
+
* Run `bundle exec rake test` to run the tests.
|
106
|
+
* Run `bundle exec rake build` to ensure the entire gem can build.
|
107
|
+
* Commit an update to bump the version number of
|
108
|
+
`lib/jekyll_pages_api_search/version.rb` before running `bundle exec rake
|
109
|
+
release`.
|
110
|
+
|
111
|
+
While developing this gem, add this to the Gemfile of any project using the
|
112
|
+
gem to try out your changes (presuming the project's working directory is a
|
113
|
+
sibling of the gem's working directory):
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
group :jekyll_plugins do
|
117
|
+
gem 'jekyll_pages_api_search', :path => '../jekyll_pages_api_search'
|
118
|
+
end
|
119
|
+
```
|
120
|
+
|
121
|
+
### Contributing
|
122
|
+
|
123
|
+
1. Fork the repo (or just clone it if you're an 18F team member)
|
124
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
125
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
126
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
127
|
+
5. Create a new Pull Request
|
128
|
+
|
129
|
+
Feel free to ping [@mbland](https://github.com/mbland) with any questions you
|
130
|
+
may have, especially if the current documentation should've addressed your
|
131
|
+
needs, but didn't.
|
132
|
+
|
133
|
+
### Public domain
|
134
|
+
|
135
|
+
This project is in the worldwide [public domain](LICENSE.md). As stated in
|
136
|
+
[CONTRIBUTING](CONTRIBUTING.md):
|
137
|
+
|
138
|
+
> This project is in the public domain within the United States, and copyright
|
139
|
+
> and related rights in the work worldwide are waived through the
|
140
|
+
> [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
|
141
|
+
>
|
142
|
+
> All contributions to this project will be released under the CC0 dedication.
|
143
|
+
> By submitting a pull request, you are agreeing to comply with this waiver of
|
144
|
+
> copyright interest.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
2
|
+
"use strict";angular.module("LiveSearch",["ng"]).directive("liveSearch",["$compile","$timeout",function(e,l){return{restrict:"E",replace:!0,scope:{liveSearchCallback:"=",liveSearchSelect:"=?",liveSearchSelectCallback:"=",liveSearchItemTemplate:"@",liveSearchWaitTimeout:"=?",liveSearchMaxResultSize:"=?",liveSearchMaxlength:"=?"},template:"<input type='text' />",link:function(t,i,c,n){var a;t.results=[],t.visible=!1,t.selectedIndex=-1,t.select=function(e){t.selectedIndex=e,t.visible=!1},t.isSelected=function(e){return t.selectedIndex===e},t.$watch("selectedIndex",function(e,l){var n=t.results[e];if(n)if(c.liveSearchSelectCallback){var a=t.liveSearchSelectCallback.call(null,{items:t.results,item:n});i.val(a)}else c.liveSearchSelect?i.val(n[c.liveSearchSelect]):i.val(n);"undefined"!==i.controller("ngModel")&&i.controller("ngModel").$setViewValue(i.val())}),t.$watch("visible",function(e,l){if(e!==!1){t.width=i[0].clientWidth;var c=r(i[0]);t.top=c.y+i[0].clientHeight+1+"px",t.left=c.x+"px"}}),i[0].onkeydown=function(e){40==e.keyCode?t.selectedIndex+1===t.results.length?t.selectedIndex=0:t.selectedIndex++:38==e.keyCode&&(0===t.selectedIndex?t.selectedIndex=t.results.length-1:-1==t.selectedIndex?t.selectedIndex=0:t.selectedIndex--),13==e.keyCode&&(t.visible=!1),t.$apply()},i[0].onkeyup=function(e){if(13==e.keyCode||37==e.keyCode||38==e.keyCode||39==e.keyCode||40==e.keyCode)return!1;var c=i;l.cancel(a);var n=c.val().split(","),r=n[n.length-1].trim();return r.length<3||null!==t.liveSearchMaxlength&&r.length>t.liveSearchMaxlength?(t.visible=!1,void t.$apply()):void(a=l(function(){var e=[],l=t.liveSearchCallback.call(null,{query:r});l.then(function(l){l&&(e=l.slice(0,(t.liveSearchMaxResultSize||20)-1)),t.visible=!0}),l["finally"](function(){t.selectedIndex=-1,t.results=e.filter(function(l,t){return e.indexOf(l)==t})})},t.liveSearchWaitTimeout||100))};var r=function(e){for(var l=0,t=0;e;)l+=e.offsetLeft-e.scrollLeft+e.clientLeft,t+=e.offsetTop-e.scrollTop+e.clientTop,e=e.offsetParent;return{x:l,y:t}},s=i.attr("live-search-item-template")||"{{result}}",d="<ul ng-show='visible' ng-style=\"{'top':top,'left':left,'width':width}\" class='searchresultspopup'><li ng-class=\"{ 'selected' : isSelected($index) }\" ng-click='select($index)' ng-repeat='result in results'>"+s+"</li></ul>",o=e(d)(t);document.body.appendChild(o[0])}}}]);
|
3
|
+
|
4
|
+
},{}],2:[function(require,module,exports){
|
5
|
+
(function (global){
|
6
|
+
var __browserify_shim_require__=require;(function(t,e,n,r,i){!function(t,e,n){"use strict";function r(t){return function(){var e,n,r=arguments[0],i="["+(t?t+":":"")+r+"] ",o=arguments[1],a=arguments,s=function(t){return"function"==typeof t?t.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof t?"undefined":"string"!=typeof t?JSON.stringify(t):t};for(e=i+o.replace(/\{\d+\}/g,function(t){var e,n=+t.slice(1,-1);return n+2<a.length?(e=a[n+2],"function"==typeof e?e.toString().replace(/ ?\{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?L(e):e):t}),e=e+"\nhttp://errors.angularjs.org/1.2.28/"+(t?t+"/":"")+r,n=2;n<arguments.length;n++)e=e+(2==n?"?":"&")+"p"+(n-2)+"="+encodeURIComponent(s(arguments[n]));return new Error(e)}}function i(t){if(null==t||k(t))return!1;var e=t.length;return 1===t.nodeType&&e?!0:w(t)||Nn(t)||0===e||"number"==typeof e&&e>0&&e-1 in t}function o(t,e,n){var r;if(t)if(S(t))for(r in t)"prototype"==r||"length"==r||"name"==r||t.hasOwnProperty&&!t.hasOwnProperty(r)||e.call(n,t[r],r);else if(Nn(t)||i(t))for(r=0;r<t.length;r++)e.call(n,t[r],r);else if(t.forEach&&t.forEach!==o)t.forEach(e,n);else for(r in t)t.hasOwnProperty(r)&&e.call(n,t[r],r);return t}function a(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e.sort()}function s(t,e,n){for(var r=a(t),i=0;i<r.length;i++)e.call(n,t[r[i]],r[i]);return r}function u(t){return function(e,n){t(n,e)}}function c(){for(var t,e=Mn.length;e;){if(e--,t=Mn[e].charCodeAt(0),57==t)return Mn[e]="A",Mn.join("");if(90!=t)return Mn[e]=String.fromCharCode(t+1),Mn.join("");Mn[e]="0"}return Mn.unshift("0"),Mn.join("")}function l(t,e){e?t.$$hashKey=e:delete t.$$hashKey}function f(t){var e=t.$$hashKey;return o(arguments,function(e){e!==t&&o(e,function(e,n){t[n]=e})}),l(t,e),t}function h(t){return parseInt(t,10)}function p(t,e){return f(new(f(function(){},{prototype:t})),e)}function d(){}function $(t){return t}function v(t){return function(){return t}}function g(t){return"undefined"==typeof t}function m(t){return"undefined"!=typeof t}function y(t){return null!=t&&"object"==typeof t}function w(t){return"string"==typeof t}function b(t){return"number"==typeof t}function x(t){return"[object Date]"===An.call(t)}function S(t){return"function"==typeof t}function C(t){return"[object RegExp]"===An.call(t)}function k(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function E(t){return t&&t.$evalAsync&&t.$watch}function A(t){return"[object File]"===An.call(t)}function O(t){return"[object Blob]"===An.call(t)}function T(t){return t&&S(t.then)}function M(t){return!(!t||!(t.nodeName||t.prop&&t.attr&&t.find))}function N(t,e,n){var r=[];return o(t,function(t,i,o){r.push(e.call(n,t,i,o))}),r}function P(t,e){return-1!=j(t,e)}function j(t,e){if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(e===t[n])return n;return-1}function D(t,e){var n=j(t,e);return n>=0&&t.splice(n,1),e}function R(t,e,n,r){if(k(t)||E(t))throw On("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(e){if(t===e)throw On("cpi","Can't copy! Source and destination are identical.");if(n=n||[],r=r||[],y(t)){var i=j(n,t);if(-1!==i)return r[i];n.push(t),r.push(e)}var a;if(Nn(t)){e.length=0;for(var s=0;s<t.length;s++)a=R(t[s],null,n,r),y(t[s])&&(n.push(t[s]),r.push(a)),e.push(a)}else{var u=e.$$hashKey;Nn(e)?e.length=0:o(e,function(t,n){delete e[n]});for(var c in t)a=R(t[c],null,n,r),y(t[c])&&(n.push(t[c]),r.push(a)),e[c]=a;l(e,u)}}else e=t,t&&(Nn(t)?e=R(t,[],n,r):x(t)?e=new Date(t.getTime()):C(t)?(e=new RegExp(t.source,t.toString().match(/[^\/]*$/)[0]),e.lastIndex=t.lastIndex):y(t)&&(e=R(t,{},n,r)));return e}function _(t,e){if(Nn(t)){e=e||[];for(var n=0;n<t.length;n++)e[n]=t[n]}else if(y(t)){e=e||{};for(var r in t)!vn.call(t,r)||"$"===r.charAt(0)&&"$"===r.charAt(1)||(e[r]=t[r])}return e||t}function q(t,e){if(t===e)return!0;if(null===t||null===e)return!1;if(t!==t&&e!==e)return!0;var r,i,o,a=typeof t,s=typeof e;if(a==s&&"object"==a){if(!Nn(t)){if(x(t))return x(e)?isNaN(t.getTime())&&isNaN(e.getTime())||t.getTime()===e.getTime():!1;if(C(t)&&C(e))return t.toString()==e.toString();if(E(t)||E(e)||k(t)||k(e)||Nn(e))return!1;o={};for(i in t)if("$"!==i.charAt(0)&&!S(t[i])){if(!q(t[i],e[i]))return!1;o[i]=!0}for(i in e)if(!o.hasOwnProperty(i)&&"$"!==i.charAt(0)&&e[i]!==n&&!S(e[i]))return!1;return!0}if(!Nn(e))return!1;if((r=t.length)==e.length){for(i=0;r>i;i++)if(!q(t[i],e[i]))return!1;return!0}}return!1}function U(t,e,n){return t.concat(kn.call(e,n))}function V(t,e){return kn.call(t,e||0)}function I(t,e){var n=arguments.length>2?V(arguments,2):[];return!S(e)||e instanceof RegExp?e:n.length?function(){return arguments.length?e.apply(t,n.concat(kn.call(arguments,0))):e.apply(t,n)}:function(){return arguments.length?e.apply(t,arguments):e.call(t)}}function F(t,r){var i=r;return"string"==typeof t&&"$"===t.charAt(0)?i=n:k(r)?i="$WINDOW":r&&e===r?i="$DOCUMENT":E(r)&&(i="$SCOPE"),i}function L(t,e){return"undefined"==typeof t?n:JSON.stringify(t,F,e?" ":null)}function H(t){return w(t)?JSON.parse(t):t}function B(t){if("function"==typeof t)t=!0;else if(t&&0!==t.length){var e=$n(""+t);t=!("f"==e||"0"==e||"false"==e||"no"==e||"n"==e||"[]"==e)}else t=!1;return t}function z(t){t=bn(t).clone();try{t.empty()}catch(e){}var n=3,r=bn("<div>").append(t).html();try{return t[0].nodeType===n?$n(r):r.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(t,e){return"<"+$n(e)})}catch(e){return $n(r)}}function W(t){try{return decodeURIComponent(t)}catch(e){}}function Q(t){var e,n,r={};return o((t||"").split("&"),function(t){if(t&&(e=t.replace(/\+/g,"%20").split("="),n=W(e[0]),m(n))){var i=m(e[1])?W(e[1]):!0;vn.call(r,n)?Nn(r[n])?r[n].push(i):r[n]=[r[n],i]:r[n]=i}}),r}function J(t){var e=[];return o(t,function(t,n){Nn(t)?o(t,function(t){e.push(X(n,!0)+(t===!0?"":"="+X(t,!0)))}):e.push(X(n,!0)+(t===!0?"":"="+X(t,!0)))}),e.length?e.join("&"):""}function G(t){return X(t,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function X(t,e){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,e?"%20":"+")}function K(t,n){function r(t){t&&s.push(t)}var i,a,s=[t],u=["ng:app","ng-app","x-ng-app","data-ng-app"],c=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;o(u,function(n){u[n]=!0,r(e.getElementById(n)),n=n.replace(":","\\:"),t.querySelectorAll&&(o(t.querySelectorAll("."+n),r),o(t.querySelectorAll("."+n+"\\:"),r),o(t.querySelectorAll("["+n+"]"),r))}),o(s,function(t){if(!i){var e=" "+t.className+" ",n=c.exec(e);n?(i=t,a=(n[2]||"").replace(/\s+/g,",")):o(t.attributes,function(e){!i&&u[e.name]&&(i=t,a=e.value)})}}),i&&n(i,a?[a]:[])}function Y(n,r){var i=function(){if(n=bn(n),n.injector()){var t=n[0]===e?"document":z(n);throw On("btstrpd","App Already Bootstrapped with this Element '{0}'",t.replace(/</,"<").replace(/>/,">"))}r=r||[],r.unshift(["$provide",function(t){t.value("$rootElement",n)}]),r.unshift("ng");var i=jt(r);return i.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(t,e,n,r,i){t.$apply(function(){e.data("$injector",r),n(e)(t)})}]),i},a=/^NG_DEFER_BOOTSTRAP!/;return t&&!a.test(t.name)?i():(t.name=t.name.replace(a,""),void(Tn.resumeBootstrap=function(t){o(t,function(t){r.push(t)}),i()}))}function Z(t,e){return e=e||"_",t.replace(Dn,function(t,n){return(n?e:"")+t.toLowerCase()})}function tt(){xn=t.jQuery,xn&&xn.fn.on?(bn=xn,f(xn.fn,{scope:Jn.scope,isolateScope:Jn.isolateScope,controller:Jn.controller,injector:Jn.injector,inheritedData:Jn.inheritedData}),lt("remove",!0,!0,!1),lt("empty",!1,!1,!1),lt("html",!1,!1,!0)):bn=dt,Tn.element=bn}function et(t,e,n){if(!t)throw On("areq","Argument '{0}' is {1}",e||"?",n||"required");return t}function nt(t,e,n){return n&&Nn(t)&&(t=t[t.length-1]),et(S(t),e,"not a function, got "+(t&&"object"==typeof t?t.constructor.name||"Object":typeof t)),t}function rt(t,e){if("hasOwnProperty"===t)throw On("badname","hasOwnProperty is not a valid {0} name",e)}function it(t,e,n){if(!e)return t;for(var r,i=e.split("."),o=t,a=i.length,s=0;a>s;s++)r=i[s],t&&(t=(o=t)[r]);return!n&&S(t)?I(o,t):t}function ot(t){var e=t[0],n=t[t.length-1];if(e===n)return bn(e);var r=e,i=[r];do{if(r=r.nextSibling,!r)break;i.push(r)}while(r!==n);return bn(i)}function at(t){function e(t,e,n){return t[e]||(t[e]=n())}var n=r("$injector"),i=r("ng"),o=e(t,"angular",Object);return o.$$minErr=o.$$minErr||r,e(o,"module",function(){var t={};return function(r,o,a){var s=function(t,e){if("hasOwnProperty"===t)throw i("badname","hasOwnProperty is not a valid {0} name",e)};return s(r,"module"),o&&t.hasOwnProperty(r)&&(t[r]=null),e(t,r,function(){function t(t,n,r){return function(){return e[r||"push"]([t,n,arguments]),u}}if(!o)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",r);var e=[],i=[],s=t("$injector","invoke"),u={_invokeQueue:e,_runBlocks:i,requires:o,name:r,provider:t("$provide","provider"),factory:t("$provide","factory"),service:t("$provide","service"),value:t("$provide","value"),constant:t("$provide","constant","unshift"),animation:t("$animateProvider","register"),filter:t("$filterProvider","register"),controller:t("$controllerProvider","register"),directive:t("$compileProvider","directive"),config:s,run:function(t){return i.push(t),this}};return a&&s(a),u})}})}function st(e){f(e,{bootstrap:Y,copy:R,extend:f,equals:q,element:bn,forEach:o,injector:jt,noop:d,bind:I,toJson:L,fromJson:H,identity:$,isUndefined:g,isDefined:m,isString:w,isFunction:S,isObject:y,isNumber:b,isElement:M,isArray:Nn,version:Rn,isDate:x,lowercase:$n,uppercase:gn,callbacks:{counter:0},$$minErr:r,$$csp:jn}),Sn=at(t);try{Sn("ngLocale")}catch(n){Sn("ngLocale",[]).provider("$locale",ne)}Sn("ng",["ngLocale"],["$provide",function(t){t.provider({$$sanitizeUri:Me}),t.provider("$compile",It).directive({a:Pr,input:Hr,textarea:Hr,form:_r,script:ki,select:Oi,style:Mi,option:Ti,ngBind:ei,ngBindHtml:ri,ngBindTemplate:ni,ngClass:ii,ngClassEven:ai,ngClassOdd:oi,ngCloak:si,ngController:ui,ngForm:qr,ngHide:yi,ngIf:fi,ngInclude:hi,ngInit:di,ngNonBindable:$i,ngPluralize:vi,ngRepeat:gi,ngShow:mi,ngStyle:wi,ngSwitch:bi,ngSwitchWhen:xi,ngSwitchDefault:Si,ngOptions:Ai,ngTransclude:Ci,ngModel:Gr,ngList:Yr,ngChange:Xr,required:Kr,ngRequired:Kr,ngValue:ti}).directive({ngInclude:pi}).directive(jr).directive(ci),t.provider({$anchorScroll:Dt,$animate:rr,$browser:qt,$cacheFactory:Ut,$controller:Ht,$document:Bt,$exceptionHandler:zt,$filter:Fe,$interpolate:te,$interval:ee,$http:Xt,$httpBackend:Yt,$location:$e,$log:ve,$parse:ke,$rootScope:Te,$q:Ee,$sce:Re,$sceDelegate:De,$sniffer:_e,$templateCache:Vt,$timeout:qe,$window:Ie,$$rAF:Oe,$$asyncCallback:Rt})}])}function ut(){return++qn}function ct(t){return t.replace(In,function(t,e,n,r){return r?n.toUpperCase():n}).replace(Fn,"Moz$1")}function lt(t,e,n,r){function i(t){var i,a,s,u,c,l,f,h=n&&t?[this.filter(t)]:[this],p=e;if(!r||null!=t)for(;h.length;)for(i=h.shift(),a=0,s=i.length;s>a;a++)for(u=bn(i[a]),p?u.triggerHandler("$destroy"):p=!p,c=0,l=(f=u.children()).length;l>c;c++)h.push(xn(f[c]));return o.apply(this,arguments)}var o=xn.fn[t];o=o.$original||o,i.$original=o,xn.fn[t]=i}function ft(t){return!Bn.test(t)}function ht(t,e){var n,r,i,o,a,s,u=e.createDocumentFragment(),c=[];if(ft(t))c.push(e.createTextNode(t));else{for(n=u.appendChild(e.createElement("div")),r=(zn.exec(t)||["",""])[1].toLowerCase(),i=Qn[r]||Qn._default,n.innerHTML="<div> </div>"+i[1]+t.replace(Wn,"<$1></$2>")+i[2],n.removeChild(n.firstChild),o=i[0];o--;)n=n.lastChild;for(a=0,s=n.childNodes.length;s>a;++a)c.push(n.childNodes[a]);n=u.firstChild,n.textContent=""}return u.textContent="",u.innerHTML="",c}function pt(t,n){n=n||e;var r;return(r=Hn.exec(t))?[n.createElement(r[1])]:ht(t,n)}function dt(t){if(t instanceof dt)return t;if(w(t)&&(t=Pn(t)),!(this instanceof dt)){if(w(t)&&"<"!=t.charAt(0))throw Ln("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new dt(t)}if(w(t)){Ct(this,pt(t));var n=bn(e.createDocumentFragment());n.append(this)}else Ct(this,t)}function $t(t){return t.cloneNode(!0)}function vt(t){mt(t);for(var e=0,n=t.childNodes||[];e<n.length;e++)vt(n[e])}function gt(t,e,n,r){if(m(r))throw Ln("offargs","jqLite#off() does not support the `selector` argument");var i=yt(t,"events"),a=yt(t,"handle");a&&(g(e)?o(i,function(e,n){Vn(t,n,e),delete i[n]}):o(e.split(" "),function(e){g(n)?(Vn(t,e,i[e]),delete i[e]):D(i[e]||[],n)}))}function mt(t,e){var r=t.ng339,i=_n[r];if(i){if(e)return void delete _n[r].data[e];i.handle&&(i.events.$destroy&&i.handle({},"$destroy"),gt(t)),delete _n[r],t.ng339=n}}function yt(t,e,n){var r=t.ng339,i=_n[r||-1];return m(n)?(i||(t.ng339=r=ut(),i=_n[r]={}),void(i[e]=n)):i&&i[e]}function wt(t,e,n){var r=yt(t,"data"),i=m(n),o=!i&&m(e),a=o&&!y(e);if(r||a||yt(t,"data",r={}),i)r[e]=n;else{if(!o)return r;if(a)return r&&r[e];f(r,e)}}function bt(t,e){return t.getAttribute?(" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+e+" ")>-1:!1}function xt(t,e){e&&t.setAttribute&&o(e.split(" "),function(e){t.setAttribute("class",Pn((" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+Pn(e)+" "," ")))})}function St(t,e){if(e&&t.setAttribute){var n=(" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(e.split(" "),function(t){t=Pn(t),-1===n.indexOf(" "+t+" ")&&(n+=t+" ")}),t.setAttribute("class",Pn(n))}}function Ct(t,e){if(e){e=e.nodeName||!m(e.length)||k(e)?[e]:e;for(var n=0;n<e.length;n++)t.push(e[n])}}function kt(t,e){return Et(t,"$"+(e||"ngController")+"Controller")}function Et(t,e,r){9==t.nodeType&&(t=t.documentElement);for(var i=Nn(e)?e:[e];t;){for(var o=0,a=i.length;a>o;o++)if((r=bn.data(t,i[o]))!==n)return r;t=t.parentNode||11===t.nodeType&&t.host}}function At(t){for(var e=0,n=t.childNodes;e<n.length;e++)vt(n[e]);for(;t.firstChild;)t.removeChild(t.firstChild)}function Ot(t,e){var n=Gn[e.toLowerCase()];return n&&Xn[t.nodeName]&&n}function Tt(t,n){var r=function(r,i){if(r.preventDefault||(r.preventDefault=function(){r.returnValue=!1}),r.stopPropagation||(r.stopPropagation=function(){r.cancelBubble=!0}),r.target||(r.target=r.srcElement||e),g(r.defaultPrevented)){var a=r.preventDefault;r.preventDefault=function(){r.defaultPrevented=!0,a.call(r)},r.defaultPrevented=!1}r.isDefaultPrevented=function(){return r.defaultPrevented||r.returnValue===!1};var s=_(n[i||r.type]||[]);o(s,function(e){e.call(t,r)}),8>=wn?(r.preventDefault=null,r.stopPropagation=null,r.isDefaultPrevented=null):(delete r.preventDefault,delete r.stopPropagation,delete r.isDefaultPrevented)};return r.elem=t,r}function Mt(t,e){var r,i=typeof t;return"function"==i||"object"==i&&null!==t?"function"==typeof(r=t.$$hashKey)?r=t.$$hashKey():r===n&&(r=t.$$hashKey=(e||c)()):r=t,i+":"+r}function Nt(t,e){if(e){var n=0;this.nextUid=function(){return++n}}o(t,this.put,this)}function Pt(t){var e,n,r,i;return"function"==typeof t?(e=t.$inject)||(e=[],t.length&&(n=t.toString().replace(tr,""),r=n.match(Kn),o(r[1].split(Yn),function(t){t.replace(Zn,function(t,n,r){e.push(r)})})),t.$inject=e):Nn(t)?(i=t.length-1,nt(t[i],"fn"),e=t.slice(0,i)):nt(t,"fn",!0),e}function jt(t){function e(t){return function(e,n){return y(e)?void o(e,u(t)):t(e,n)}}function n(t,e){if(rt(t,"service"),(S(e)||Nn(e))&&(e=b.instantiate(e)),!e.$get)throw er("pget","Provider '{0}' must define $get factory method.",t);return m[t+p]=e}function r(t,e){return n(t,{$get:e})}function i(t,e){return r(t,["$injector",function(t){return t.instantiate(e)}])}function a(t,e){return r(t,v(e))}function s(t,e){rt(t,"constant"),m[t]=e,x[t]=e}function c(t,e){var n=b.get(t+p),r=n.$get;n.$get=function(){var t=C.invoke(r,n);return C.invoke(e,null,{$delegate:t})}}function l(t){var e,n,r,i,a=[];return o(t,function(t){if(!g.get(t)){g.put(t,!0);try{if(w(t))for(e=Sn(t),a=a.concat(l(e.requires)).concat(e._runBlocks),n=e._invokeQueue,r=0,i=n.length;i>r;r++){var o=n[r],s=b.get(o[0]);s[o[1]].apply(s,o[2])}else S(t)?a.push(b.invoke(t)):Nn(t)?a.push(b.invoke(t)):nt(t,"module")}catch(u){throw Nn(t)&&(t=t[t.length-1]),u.message&&u.stack&&-1==u.stack.indexOf(u.message)&&(u=u.message+"\n"+u.stack),er("modulerr","Failed to instantiate module {0} due to:\n{1}",t,u.stack||u.message||u)}}}),a}function f(t,e){function n(n){if(t.hasOwnProperty(n)){if(t[n]===h)throw er("cdep","Circular dependency found: {0}",n+" <- "+$.join(" <- "));return t[n]}try{return $.unshift(n),t[n]=h,t[n]=e(n)}catch(r){throw t[n]===h&&delete t[n],r}finally{$.shift()}}function r(t,e,r){var i,o,a,s=[],u=Pt(t);for(o=0,i=u.length;i>o;o++){if(a=u[o],"string"!=typeof a)throw er("itkn","Incorrect injection token! Expected service name as string, got {0}",a);s.push(r&&r.hasOwnProperty(a)?r[a]:n(a))}return Nn(t)&&(t=t[i]),t.apply(e,s)}function i(t,e){var n,i,o=function(){};return o.prototype=(Nn(t)?t[t.length-1]:t).prototype,n=new o,i=r(t,n,e),y(i)||S(i)?i:n}return{invoke:r,instantiate:i,get:n,annotate:Pt,has:function(e){return m.hasOwnProperty(e+p)||t.hasOwnProperty(e)}}}var h={},p="Provider",$=[],g=new Nt([],!0),m={$provide:{provider:e(n),factory:e(r),service:e(i),value:e(a),constant:e(s),decorator:c}},b=m.$injector=f(m,function(){throw er("unpr","Unknown provider: {0}",$.join(" <- "))}),x={},C=x.$injector=f(x,function(t){var e=b.get(t+p);return C.invoke(e.$get,e)});return o(l(t),function(t){C.invoke(t||d)}),C}function Dt(){var t=!0;this.disableAutoScrolling=function(){t=!1},this.$get=["$window","$location","$rootScope",function(e,n,r){function i(t){var e=null;return o(t,function(t){e||"a"!==$n(t.nodeName)||(e=t)}),e}function a(){var t,r=n.hash();r?(t=s.getElementById(r))?t.scrollIntoView():(t=i(s.getElementsByName(r)))?t.scrollIntoView():"top"===r&&e.scrollTo(0,0):e.scrollTo(0,0)}var s=e.document;return t&&r.$watch(function(){return n.hash()},function(){r.$evalAsync(a)}),a}]}function Rt(){this.$get=["$$rAF","$timeout",function(t,e){return t.supported?function(e){return t(e)}:function(t){return e(t,0,!1)}}]}function _t(t,e,r,i){function a(t){try{t.apply(null,V(arguments,1))}finally{if(m--,0===m)for(;y.length;)try{y.pop()()}catch(e){r.error(e)}}}function s(t,e){!function n(){o(x,function(t){t()}),b=e(n,t)}()}function u(){S!=c.url()&&(S=c.url(),o(E,function(t){t(c.url())}))}var c=this,l=e[0],f=t.location,h=t.history,p=t.setTimeout,$=t.clearTimeout,v={};c.isMock=!1;var m=0,y=[];c.$$completeOutstandingRequest=a,c.$$incOutstandingRequestCount=function(){m++},c.notifyWhenNoOutstandingRequests=function(t){o(x,function(t){t()}),0===m?t():y.push(t)};var b,x=[];c.addPollFn=function(t){return g(b)&&s(100,p),x.push(t),t};var S=f.href,C=e.find("base"),k=null;c.url=function(e,n){if(f!==t.location&&(f=t.location),h!==t.history&&(h=t.history),e){if(S==e)return;var r=S&&se(S)===se(e);return S=e,!r&&i.history?n?h.replaceState(null,"",e):(h.pushState(null,"",e),C.attr("href",C.attr("href"))):(r||(k=e),n?f.replace(e):f.href=e),c}return k||f.href.replace(/%27/g,"'")};var E=[],A=!1;c.onUrlChange=function(e){return A||(i.history&&bn(t).on("popstate",u),i.hashchange?bn(t).on("hashchange",u):c.addPollFn(u),A=!0),E.push(e),e},c.$$checkUrlChange=u,c.baseHref=function(){var t=C.attr("href");return t?t.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var O={},T="",M=c.baseHref();c.cookies=function(t,e){var i,o,a,s,u;if(!t){if(l.cookie!==T)for(T=l.cookie,o=T.split("; "),O={},s=0;s<o.length;s++)a=o[s],u=a.indexOf("="),u>0&&(t=unescape(a.substring(0,u)),O[t]===n&&(O[t]=unescape(a.substring(u+1))));return O}e===n?l.cookie=escape(t)+"=;path="+M+";expires=Thu, 01 Jan 1970 00:00:00 GMT":w(e)&&(i=(l.cookie=escape(t)+"="+escape(e)+";path="+M).length+1,i>4096&&r.warn("Cookie '"+t+"' possibly not set or overflowed because it was too large ("+i+" > 4096 bytes)!"))},c.defer=function(t,e){var n;return m++,n=p(function(){delete v[n],a(t)},e||0),v[n]=!0,n},c.defer.cancel=function(t){return v[t]?(delete v[t],$(t),a(d),!0):!1}}function qt(){this.$get=["$window","$log","$sniffer","$document",function(t,e,n,r){return new _t(t,r,e,n)}]}function Ut(){this.$get=function(){function t(t,n){function i(t){t!=h&&(p?p==t&&(p=t.n):p=t,o(t.n,t.p),o(t,h),h=t,h.n=null)}function o(t,e){t!=e&&(t&&(t.p=e),e&&(e.n=t))}if(t in e)throw r("$cacheFactory")("iid","CacheId '{0}' is already taken!",t);var a=0,s=f({},n,{id:t}),u={},c=n&&n.capacity||Number.MAX_VALUE,l={},h=null,p=null;return e[t]={put:function(t,e){if(c<Number.MAX_VALUE){var n=l[t]||(l[t]={key:t});i(n)}if(!g(e))return t in u||a++,u[t]=e,a>c&&this.remove(p.key),e},get:function(t){if(c<Number.MAX_VALUE){var e=l[t];if(!e)return;i(e)}return u[t]},remove:function(t){if(c<Number.MAX_VALUE){var e=l[t];if(!e)return;e==h&&(h=e.p),e==p&&(p=e.n),o(e.n,e.p),delete l[t]}delete u[t],a--},removeAll:function(){u={},a=0,l={},h=p=null},destroy:function(){u=null,s=null,l=null,delete e[t]},info:function(){return f({},s,{size:a})}}}var e={};return t.info=function(){var t={};return o(e,function(e,n){t[n]=e.info()}),t},t.get=function(t){return e[t]},t}}function Vt(){this.$get=["$cacheFactory",function(t){return t("templates")}]}function It(t,r){var i={},a="Directive",s=/^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,c=/(([\d\w_\-]+)(?:\:([^;]+))?;?)/,l=/^(on[a-z]+|formaction)$/;this.directive=function h(e,n){return rt(e,"directive"),w(e)?(et(n,"directiveFactory"),i.hasOwnProperty(e)||(i[e]=[],t.factory(e+a,["$injector","$exceptionHandler",function(t,n){var r=[];return o(i[e],function(i,o){try{var a=t.invoke(i);S(a)?a={compile:v(a)}:!a.compile&&a.link&&(a.compile=v(a.link)),a.priority=a.priority||0,a.index=o,a.name=a.name||e,a.require=a.require||a.controller&&a.name,a.restrict=a.restrict||"A",r.push(a)}catch(s){n(s)}}),r}])),i[e].push(n)):o(e,u(h)),this},this.aHrefSanitizationWhitelist=function(t){return m(t)?(r.aHrefSanitizationWhitelist(t),this):r.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(t){return m(t)?(r.imgSrcSanitizationWhitelist(t),this):r.imgSrcSanitizationWhitelist()},this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(t,r,u,h,d,v,g,m,b,x,C,k){function E(t,e,n,r,i){t instanceof bn||(t=bn(t)),o(t,function(e,n){3==e.nodeType&&e.nodeValue.match(/\S+/)&&(t[n]=e=bn(e).wrap("<span></span>").parent()[0])});var a=O(t,e,t,n,r,i);return A(t,"ng-scope"),function(e,n,r,i){et(e,"scope");var s=n?Jn.clone.call(t):t;o(r,function(t,e){s.data("$"+e+"Controller",t)});for(var u=0,c=s.length;c>u;u++){var l=s[u],f=l.nodeType;(1===f||9===f)&&s.eq(u).data("$scope",e)}return n&&n(s,e),a&&a(e,s,s,i),s}}function A(t,e){try{t.addClass(e)}catch(n){}}function O(t,e,r,i,o,a){function s(t,r,i,o){var a,s,u,c,l,f,h,p,$=r.length,v=new Array($);for(l=0;$>l;l++)v[l]=r[l];for(l=0,h=0,f=d.length;f>l;h++)u=v[h],a=d[l++],s=d[l++],a?(a.scope?(c=t.$new(),bn.data(u,"$scope",c)):c=t,p=a.transcludeOnThisElement?T(t,a.transclude,o):!a.templateOnThisElement&&o?o:!o&&e?T(t,e):null,a(s,c,u,i,p)):s&&s(t,u.childNodes,n,o)}for(var u,c,l,f,h,p,d=[],$=0;$<t.length;$++)u=new G,c=M(t[$],[],u,0===$?i:n,o),l=c.length?j(c,t[$],u,e,r,null,[],[],a):null,l&&l.scope&&A(u.$$element,"ng-scope"),h=l&&l.terminal||!(f=t[$].childNodes)||!f.length?null:O(f,l?(l.transcludeOnThisElement||!l.templateOnThisElement)&&l.transclude:e),d.push(l,h),p=p||l||h,a=null;return p?s:null}function T(t,e,n){var r=function(r,i,o){var a=!1;r||(r=t.$new(),r.$$transcluded=!0,a=!0);var s=e(r,i,o,n);return a&&s.on("$destroy",function(){r.$destroy()}),s};return r}function M(t,e,n,r,i){var o,a,u=t.nodeType,l=n.$attr;switch(u){case 1:R(e,Ft(Cn(t).toLowerCase()),"E",r,i);for(var f,h,p,d,$,v,g=t.attributes,m=0,y=g&&g.length;y>m;m++){var b=!1,x=!1;if(f=g[m],!wn||wn>=8||f.specified){h=f.name,$=Pn(f.value),d=Ft(h),(v=tt.test(d))&&(h=Z(d.substr(6),"-"));var S=d.replace(/(Start|End)$/,"");d===S+"Start"&&(b=h,x=h.substr(0,h.length-5)+"end",h=h.substr(0,h.length-6)),p=Ft(h.toLowerCase()),l[p]=h,(v||!n.hasOwnProperty(p))&&(n[p]=$,Ot(t,p)&&(n[p]=!0)),W(t,e,$,p),R(e,p,"A",r,i,b,x)}}if(a=t.className,w(a)&&""!==a)for(;o=c.exec(a);)p=Ft(o[2]),R(e,p,"C",r,i)&&(n[p]=Pn(o[3])),a=a.substr(o.index+o[0].length);break;case 3:H(e,t.nodeValue);break;case 8:try{o=s.exec(t.nodeValue),o&&(p=Ft(o[1]),R(e,p,"M",r,i)&&(n[p]=Pn(o[2])))}catch(C){}}return e.sort(F),e}function N(t,e,n){var r=[],i=0;if(e&&t.hasAttribute&&t.hasAttribute(e)){do{if(!t)throw ir("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",e,n);1==t.nodeType&&(t.hasAttribute(e)&&i++,t.hasAttribute(n)&&i--),r.push(t),t=t.nextSibling}while(i>0)}else r.push(t);return bn(r)}function P(t,e,n){return function(r,i,o,a,s){return i=N(i[0],e,n),t(r,i,o,a,s)}}function j(t,i,a,s,c,l,f,h,p){function d(t,e,n,r){t&&(n&&(t=P(t,n,r)),t.require=x.require,t.directiveName=C,(F===x||x.$$isolateScope)&&(t=J(t,{isolateScope:!0})),f.push(t)),e&&(n&&(e=P(e,n,r)),e.require=x.require,e.directiveName=C,(F===x||x.$$isolateScope)&&(e=J(e,{isolateScope:!0})),h.push(e))}function $(t,e,n,r){var i,a="data",s=!1;if(w(e)){for(;"^"==(i=e.charAt(0))||"?"==i;)e=e.substr(1),"^"==i&&(a="inheritedData"),s=s||"?"==i;if(i=null,r&&"data"===a&&(i=r[e]),i=i||n[a]("$"+e+"Controller"),!i&&!s)throw ir("ctreq","Controller '{0}', required by directive '{1}', can't be found!",e,t);return i}return Nn(e)&&(i=[],o(e,function(e){i.push($(t,e,n,r))})),i}function m(t,e,s,c,l){function p(t,e){var r;return arguments.length<2&&(e=t,t=n),K&&(r=k),l(t,e,r)}var d,m,y,w,b,x,S,C,k={};if(d=i===s?a:_(a,new G(bn(s),a.$attr)),m=d.$$element,F){var E=/^\s*([@=&])(\??)\s*(\w*)\s*$/;S=e.$new(!0),!H||H!==F&&H!==F.$$originalDirective?m.data("$isolateScopeNoTemplate",S):m.data("$isolateScope",S),A(m,"ng-isolate-scope"),o(F.scope,function(t,n){var i,o,a,s,u=t.match(E)||[],c=u[3]||n,l="?"==u[2],f=u[1];switch(S.$$isolateBindings[n]=f+c,f){case"@":d.$observe(c,function(t){S[n]=t}),d.$$observers[c].$$scope=e,d[c]&&(S[n]=r(d[c])(e));break;case"=":if(l&&!d[c])return;o=v(d[c]),s=o.literal?q:function(t,e){return t===e||t!==t&&e!==e},a=o.assign||function(){throw i=S[n]=o(e),ir("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",d[c],F.name)},i=S[n]=o(e),S.$watch(function(){var t=o(e);return s(t,S[n])||(s(t,i)?a(e,t=S[n]):S[n]=t),i=t},null,o.literal);break;case"&":o=v(d[c]),S[n]=function(t){return o(e,t)};break;default:throw ir("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",F.name,n,t)}})}for(C=l&&p,R&&o(R,function(t){var n,r={$scope:t===F||t.$$isolateScope?S:e,$element:m,$attrs:d,$transclude:C};x=t.controller,"@"==x&&(x=d[t.name]),n=g(x,r),k[t.name]=n,K||m.data("$"+t.name+"Controller",n),t.controllerAs&&(r.$scope[t.controllerAs]=n)}),y=0,w=f.length;w>y;y++)try{b=f[y],b(b.isolateScope?S:e,m,d,b.require&&$(b.directiveName,b.require,m,k),C)}catch(O){u(O,z(m))}var T=e;for(F&&(F.template||null===F.templateUrl)&&(T=S),t&&t(T,s.childNodes,n,l),y=h.length-1;y>=0;y--)try{b=h[y],b(b.isolateScope?S:e,m,d,b.require&&$(b.directiveName,b.require,m,k),C)}catch(O){u(O,z(m))}}p=p||{};for(var b,x,C,k,O,T,j=-Number.MAX_VALUE,R=p.controllerDirectives,F=p.newIsolateScopeDirective,H=p.templateDirective,B=p.nonTlbTranscludeDirective,W=!1,X=!1,K=p.hasElementTranscludeDirective,Z=a.$$element=bn(i),tt=l,et=s,nt=0,rt=t.length;rt>nt;nt++){x=t[nt];var it=x.$$start,ot=x.$$end;if(it&&(Z=N(i,it,ot)),k=n,j>x.priority)break;if((T=x.scope)&&(b=b||x,x.templateUrl||(L("new/isolated scope",F,x,Z),y(T)&&(F=x))),C=x.name,!x.templateUrl&&x.controller&&(T=x.controller,R=R||{},L("'"+C+"' controller",R[C],x,Z),R[C]=x),(T=x.transclude)&&(W=!0,x.$$tlb||(L("transclusion",B,x,Z),B=x),"element"==T?(K=!0,j=x.priority,k=Z,Z=a.$$element=bn(e.createComment(" "+C+": "+a[C]+" ")),i=Z[0],Q(c,V(k),i),et=E(k,s,j,tt&&tt.name,{nonTlbTranscludeDirective:B})):(k=bn($t(i)).contents(),Z.empty(),et=E(k,s))),x.template)if(X=!0,L("template",H,x,Z),H=x,T=S(x.template)?x.template(Z,a):x.template,T=Y(T),x.replace){if(tt=x,k=ft(T)?[]:bn(Pn(T)),i=k[0],1!=k.length||1!==i.nodeType)throw ir("tplrt","Template for directive '{0}' must have exactly one root element. {1}",C,"");Q(c,Z,i);var at={$attr:{}},st=M(i,[],at),ut=t.splice(nt+1,t.length-(nt+1));F&&D(st),t=t.concat(st).concat(ut),U(a,at),rt=t.length}else Z.html(T);if(x.templateUrl)X=!0,L("template",H,x,Z),H=x,x.replace&&(tt=x),m=I(t.splice(nt,t.length-nt),Z,a,c,W&&et,f,h,{controllerDirectives:R,newIsolateScopeDirective:F,templateDirective:H,nonTlbTranscludeDirective:B}),rt=t.length;else if(x.compile)try{O=x.compile(Z,a,et),S(O)?d(null,O,it,ot):O&&d(O.pre,O.post,it,ot)}catch(ct){u(ct,z(Z))}x.terminal&&(m.terminal=!0,j=Math.max(j,x.priority))}return m.scope=b&&b.scope===!0,m.transcludeOnThisElement=W,m.templateOnThisElement=X,m.transclude=et,p.hasElementTranscludeDirective=K,m}function D(t){for(var e=0,n=t.length;n>e;e++)t[e]=p(t[e],{$$isolateScope:!0})}function R(e,r,o,s,c,l,f){if(r===c)return null;var h=null;if(i.hasOwnProperty(r))for(var d,$=t.get(r+a),v=0,g=$.length;g>v;v++)try{d=$[v],(s===n||s>d.priority)&&-1!=d.restrict.indexOf(o)&&(l&&(d=p(d,{$$start:l,$$end:f})),e.push(d),h=d)}catch(m){u(m)}return h}function U(t,e){var n=e.$attr,r=t.$attr,i=t.$$element;o(t,function(r,i){"$"!=i.charAt(0)&&(e[i]&&e[i]!==r&&(r+=("style"===i?";":" ")+e[i]),t.$set(i,r,!0,n[i]))}),o(e,function(e,o){"class"==o?(A(i,e),t["class"]=(t["class"]?t["class"]+" ":"")+e):"style"==o?(i.attr("style",i.attr("style")+";"+e),t.style=(t.style?t.style+";":"")+e):"$"==o.charAt(0)||t.hasOwnProperty(o)||(t[o]=e,r[o]=n[o])})}function I(t,e,n,r,i,a,s,u){var c,l,p=[],$=e[0],v=t.shift(),g=f({},v,{templateUrl:null,transclude:null,replace:null,$$originalDirective:v}),m=S(v.templateUrl)?v.templateUrl(e,n):v.templateUrl;return e.empty(),h.get(x.getTrustedResourceUrl(m),{cache:d}).success(function(f){var h,d,w,b;if(f=Y(f),v.replace){if(w=ft(f)?[]:bn(Pn(f)),h=w[0],1!=w.length||1!==h.nodeType)throw ir("tplrt","Template for directive '{0}' must have exactly one root element. {1}",v.name,m);d={$attr:{}},Q(r,e,h);var x=M(h,[],d);y(v.scope)&&D(x),t=x.concat(t),U(n,d)}else h=$,e.html(f);for(t.unshift(g),c=j(t,h,n,i,e,v,a,s,u),o(r,function(t,n){t==h&&(r[n]=e[0])}),l=O(e[0].childNodes,i);p.length;){var S=p.shift(),C=p.shift(),k=p.shift(),E=p.shift(),N=e[0];if(C!==$){var P=C.className;u.hasElementTranscludeDirective&&v.replace||(N=$t(h)),Q(k,bn(C),N),A(bn(N),P)}b=c.transcludeOnThisElement?T(S,c.transclude,E):E,c(l,S,N,r,b)}p=null}).error(function(t,e,n,r){throw ir("tpload","Failed to load template: {0}",r.url)}),function(t,e,n,r,i){var o=i;p?(p.push(e),p.push(n),p.push(r),p.push(o)):(c.transcludeOnThisElement&&(o=T(e,c.transclude,i)),c(l,e,n,r,o))}}function F(t,e){var n=e.priority-t.priority;return 0!==n?n:t.name!==e.name?t.name<e.name?-1:1:t.index-e.index}function L(t,e,n,r){if(e)throw ir("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",e.name,n.name,t,z(r))}function H(t,e){var n=r(e,!0);n&&t.push({priority:0,compile:function(t){var e=t.parent(),r=e.length;return r&&A(t.parent(),"ng-binding"),function(t,e){var i=e.parent(),o=i.data("$binding")||[];o.push(n),i.data("$binding",o),r||A(i,"ng-binding"),t.$watch(n,function(t){e[0].nodeValue=t})}}})}function B(t,e){if("srcdoc"==e)return x.HTML;var n=Cn(t);return"xlinkHref"==e||"FORM"==n&&"action"==e||"IMG"!=n&&("src"==e||"ngSrc"==e)?x.RESOURCE_URL:void 0}function W(t,e,n,i){var o=r(n,!0);if(o){if("multiple"===i&&"SELECT"===Cn(t))throw ir("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",z(t));e.push({priority:100,compile:function(){return{pre:function(e,n,a){var s=a.$$observers||(a.$$observers={});if(l.test(i))throw ir("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");o=r(a[i],!0,B(t,i)),o&&(a[i]=o(e),(s[i]||(s[i]=[])).$$inter=!0,(a.$$observers&&a.$$observers[i].$$scope||e).$watch(o,function(t,e){"class"===i&&t!=e?a.$updateClass(t,e):a.$set(i,t)}))}}}})}}function Q(t,n,r){var i,o,a=n[0],s=n.length,u=a.parentNode;
|
7
|
+
if(t)for(i=0,o=t.length;o>i;i++)if(t[i]==a){t[i++]=r;for(var c=i,l=c+s-1,f=t.length;f>c;c++,l++)f>l?t[c]=t[l]:delete t[c];t.length-=s-1;break}u&&u.replaceChild(r,a);var h=e.createDocumentFragment();h.appendChild(a),r[bn.expando]=a[bn.expando];for(var p=1,d=n.length;d>p;p++){var $=n[p];bn($).remove(),h.appendChild($),delete n[p]}n[0]=r,n.length=1}function J(t,e){return f(function(){return t.apply(null,arguments)},t,e)}var G=function(t,e){this.$$element=t,this.$attr=e||{}};G.prototype={$normalize:Ft,$addClass:function(t){t&&t.length>0&&C.addClass(this.$$element,t)},$removeClass:function(t){t&&t.length>0&&C.removeClass(this.$$element,t)},$updateClass:function(t,e){var n=Lt(t,e),r=Lt(e,t);0===n.length?C.removeClass(this.$$element,r):0===r.length?C.addClass(this.$$element,n):C.setClass(this.$$element,n,r)},$set:function(t,e,r,i){var a,s=Ot(this.$$element[0],t);s&&(this.$$element.prop(t,e),i=s),this[t]=e,i?this.$attr[t]=i:(i=this.$attr[t],i||(this.$attr[t]=i=Z(t,"-"))),a=Cn(this.$$element),("A"===a&&"href"===t||"IMG"===a&&"src"===t)&&(this[t]=e=k(e,"src"===t)),r!==!1&&(null===e||e===n?this.$$element.removeAttr(i):this.$$element.attr(i,e));var c=this.$$observers;c&&o(c[t],function(t){try{t(e)}catch(n){u(n)}})},$observe:function(t,e){var n=this,r=n.$$observers||(n.$$observers={}),i=r[t]||(r[t]=[]);return i.push(e),m.$evalAsync(function(){i.$$inter||e(n[t])}),e}};var X=r.startSymbol(),K=r.endSymbol(),Y="{{"==X||"}}"==K?$:function(t){return t.replace(/\{\{/g,X).replace(/}}/g,K)},tt=/^ngAttr[A-Z]/;return E}]}function Ft(t){return ct(t.replace(or,""))}function Lt(t,e){var n="",r=t.split(/\s+/),i=e.split(/\s+/);t:for(var o=0;o<r.length;o++){for(var a=r[o],s=0;s<i.length;s++)if(a==i[s])continue t;n+=(n.length>0?" ":"")+a}return n}function Ht(){var t={},e=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(e,n){rt(e,"controller"),y(e)?f(t,e):t[e]=n},this.$get=["$injector","$window",function(n,i){return function(o,a){var s,u,c,l;if(w(o)&&(u=o.match(e),c=u[1],l=u[3],o=t.hasOwnProperty(c)?t[c]:it(a.$scope,c,!0)||it(i,c,!0),nt(o,c,!0)),s=n.instantiate(o,a),l){if(!a||"object"!=typeof a.$scope)throw r("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",c||o.name,l);a.$scope[l]=s}return s}}]}function Bt(){this.$get=["$window",function(t){return bn(t.document)}]}function zt(){this.$get=["$log",function(t){return function(e,n){t.error.apply(t,arguments)}}]}function Wt(t){var e,n,r,i={};return t?(o(t.split("\n"),function(t){r=t.indexOf(":"),e=$n(Pn(t.substr(0,r))),n=Pn(t.substr(r+1)),e&&(i[e]=i[e]?i[e]+", "+n:n)}),i):i}function Qt(t){var e=y(t)?t:n;return function(n){return e||(e=Wt(t)),n?e[$n(n)]||null:e}}function Jt(t,e,n){return S(n)?n(t,e):(o(n,function(n){t=n(t,e)}),t)}function Gt(t){return t>=200&&300>t}function Xt(){var t=/^\s*(\[|\{[^\{])/,e=/[\}\]]\s*$/,r=/^\)\]\}',?\n/,i={"Content-Type":"application/json;charset=utf-8"},a=this.defaults={transformResponse:[function(n){return w(n)&&(n=n.replace(r,""),t.test(n)&&e.test(n)&&(n=H(n))),n}],transformRequest:[function(t){return!y(t)||A(t)||O(t)?t:L(t)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:_(i),put:_(i),patch:_(i)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},u=this.interceptors=[],c=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(t,e,r,i,l,h){function p(t){function e(t){var e=f({},t,{data:Jt(t.data,t.headers,i.transformResponse)});return Gt(t.status)?e:l.reject(e)}function r(t){function e(t){var e;o(t,function(n,r){S(n)&&(e=n(),null!=e?t[r]=e:delete t[r])})}var n,r,i,s=a.headers,u=f({},t.headers);s=f({},s.common,s[$n(t.method)]);t:for(n in s){r=$n(n);for(i in u)if($n(i)===r)continue t;u[n]=s[n]}return e(u),u}var i={method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse},s=r(t);f(i,t),i.headers=s,i.method=gn(i.method);var u=function(t){s=t.headers;var n=Jt(t.data,Qt(s),t.transformRequest);return g(n)&&o(s,function(t,e){"content-type"===$n(e)&&delete s[e]}),g(t.withCredentials)&&!g(a.withCredentials)&&(t.withCredentials=a.withCredentials),v(t,n,s).then(e,e)},c=[u,n],h=l.when(i);for(o(k,function(t){(t.request||t.requestError)&&c.unshift(t.request,t.requestError),(t.response||t.responseError)&&c.push(t.response,t.responseError)});c.length;){var p=c.shift(),d=c.shift();h=h.then(p,d)}return h.success=function(t){return h.then(function(e){t(e.data,e.status,e.headers,i)}),h},h.error=function(t){return h.then(null,function(e){t(e.data,e.status,e.headers,i)}),h},h}function d(t){o(arguments,function(t){p[t]=function(e,n){return p(f(n||{},{method:t,url:e}))}})}function $(t){o(arguments,function(t){p[t]=function(e,n,r){return p(f(r||{},{method:t,url:e,data:n}))}})}function v(r,o,s){function u(t,e,n,r){h&&(Gt(t)?h.put(w,[t,e,Wt(n),r]):h.remove(w)),c(e,t,n,r),i.$$phase||i.$apply()}function c(t,e,n,i){e=Math.max(e,0),(Gt(e)?$.resolve:$.reject)({data:t,status:e,headers:Qt(n),config:r,statusText:i})}function f(){var t=j(p.pendingRequests,r);-1!==t&&p.pendingRequests.splice(t,1)}var h,d,$=l.defer(),v=$.promise,w=b(r.url,r.params);if(p.pendingRequests.push(r),v.then(f,f),!r.cache&&!a.cache||r.cache===!1||"GET"!==r.method&&"JSONP"!==r.method||(h=y(r.cache)?r.cache:y(a.cache)?a.cache:C),h)if(d=h.get(w),m(d)){if(T(d))return d.then(f,f),d;Nn(d)?c(d[1],d[0],_(d[2]),d[3]):c(d,200,{},"OK")}else h.put(w,v);if(g(d)){var x=Ve(r.url)?e.cookies()[r.xsrfCookieName||a.xsrfCookieName]:n;x&&(s[r.xsrfHeaderName||a.xsrfHeaderName]=x),t(r.method,w,o,u,s,r.timeout,r.withCredentials,r.responseType)}return v}function b(t,e){if(!e)return t;var n=[];return s(e,function(t,e){null===t||g(t)||(Nn(t)||(t=[t]),o(t,function(t){y(t)&&(t=x(t)?t.toISOString():L(t)),n.push(X(e)+"="+X(t))}))}),n.length>0&&(t+=(-1==t.indexOf("?")?"?":"&")+n.join("&")),t}var C=r("$http"),k=[];return o(u,function(t){k.unshift(w(t)?h.get(t):h.invoke(t))}),o(c,function(t,e){var n=w(t)?h.get(t):h.invoke(t);k.splice(e,0,{response:function(t){return n(l.when(t))},responseError:function(t){return n(l.reject(t))}})}),p.pendingRequests=[],d("get","delete","head","jsonp"),$("post","put","patch"),p.defaults=a,p}]}function Kt(e){if(8>=wn&&(!e.match(/^(get|post|head|put|delete|options)$/i)||!t.XMLHttpRequest))return new t.ActiveXObject("Microsoft.XMLHTTP");if(t.XMLHttpRequest)return new t.XMLHttpRequest;throw r("$httpBackend")("noxhr","This browser does not support XMLHttpRequest.")}function Yt(){this.$get=["$browser","$window","$document",function(t,e,n){return Zt(t,Kt,t.defer,e.angular.callbacks,n[0])}]}function Zt(t,e,n,r,i){function a(t,e,n){var o=i.createElement("script"),a=null;return o.type="text/javascript",o.src=t,o.async=!0,a=function(t){Vn(o,"load",a),Vn(o,"error",a),i.body.removeChild(o),o=null;var s=-1,u="unknown";t&&("load"!==t.type||r[e].called||(t={type:"error"}),u=t.type,s="error"===t.type?404:200),n&&n(s,u)},Un(o,"load",a),Un(o,"error",a),8>=wn&&(o.onreadystatechange=function(){w(o.readyState)&&/loaded|complete/.test(o.readyState)&&(o.onreadystatechange=null,a({type:"load"}))}),i.body.appendChild(o),a}var s=-1;return function(i,u,c,l,f,h,p,$){function v(){y=s,b&&b(),x&&x.abort()}function g(e,r,i,o,a){C&&n.cancel(C),b=x=null,0===r&&(r=i?200:"file"==Ue(u).protocol?404:0),r=1223===r?204:r,a=a||"",e(r,i,o,a),t.$$completeOutstandingRequest(d)}var y;if(t.$$incOutstandingRequestCount(),u=u||t.url(),"jsonp"==$n(i)){var w="_"+(r.counter++).toString(36);r[w]=function(t){r[w].data=t,r[w].called=!0};var b=a(u.replace("JSON_CALLBACK","angular.callbacks."+w),w,function(t,e){g(l,t,r[w].data,"",e),r[w]=d})}else{var x=e(i);if(x.open(i,u,!0),o(f,function(t,e){m(t)&&x.setRequestHeader(e,t)}),x.onreadystatechange=function(){if(x&&4==x.readyState){var t=null,e=null,n="";y!==s&&(t=x.getAllResponseHeaders(),e="response"in x?x.response:x.responseText),y===s&&10>wn||(n=x.statusText),g(l,y||x.status,e,t,n)}},p&&(x.withCredentials=!0),$)try{x.responseType=$}catch(S){if("json"!==$)throw S}x.send(c||null)}if(h>0)var C=n(v,h);else T(h)&&h.then(v)}}function te(){var t="{{",e="}}";this.startSymbol=function(e){return e?(t=e,this):t},this.endSymbol=function(t){return t?(e=t,this):e},this.$get=["$parse","$exceptionHandler","$sce",function(n,r,i){function o(o,u,c){for(var l,f,h,p,d=0,$=[],v=o.length,g=!1,m=[];v>d;)-1!=(l=o.indexOf(t,d))&&-1!=(f=o.indexOf(e,l+a))?(d!=l&&$.push(o.substring(d,l)),$.push(h=n(p=o.substring(l+a,f))),h.exp=p,d=f+s,g=!0):(d!=v&&$.push(o.substring(d)),d=v);if((v=$.length)||($.push(""),v=1),c&&$.length>1)throw ar("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",o);return!u||g?(m.length=v,h=function(t){try{for(var e,n=0,a=v;a>n;n++){if("function"==typeof(e=$[n]))if(e=e(t),e=c?i.getTrusted(c,e):i.valueOf(e),null==e)e="";else switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=L(e)}m[n]=e}return m.join("")}catch(s){var u=ar("interr","Can't interpolate: {0}\n{1}",o,s.toString());r(u)}},h.exp=o,h.parts=$,h):void 0}var a=t.length,s=e.length;return o.startSymbol=function(){return t},o.endSymbol=function(){return e},o}]}function ee(){this.$get=["$rootScope","$window","$q",function(t,e,n){function r(r,o,a,s){var u=e.setInterval,c=e.clearInterval,l=n.defer(),f=l.promise,h=0,p=m(s)&&!s;return a=m(a)?a:0,f.then(null,null,r),f.$$intervalId=u(function(){l.notify(h++),a>0&&h>=a&&(l.resolve(h),c(f.$$intervalId),delete i[f.$$intervalId]),p||t.$apply()},o),i[f.$$intervalId]=l,f}var i={};return r.cancel=function(t){return t&&t.$$intervalId in i?(i[t.$$intervalId].reject("canceled"),e.clearInterval(t.$$intervalId),delete i[t.$$intervalId],!0):!1},r}]}function ne(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(t){return 1===t?"one":"other"}}}}function re(t){for(var e=t.split("/"),n=e.length;n--;)e[n]=G(e[n]);return e.join("/")}function ie(t,e,n){var r=Ue(t,n);e.$$protocol=r.protocol,e.$$host=r.hostname,e.$$port=h(r.port)||ur[r.protocol]||null}function oe(t,e,n){var r="/"!==t.charAt(0);r&&(t="/"+t);var i=Ue(t,n);e.$$path=decodeURIComponent(r&&"/"===i.pathname.charAt(0)?i.pathname.substring(1):i.pathname),e.$$search=Q(i.search),e.$$hash=decodeURIComponent(i.hash),e.$$path&&"/"!=e.$$path.charAt(0)&&(e.$$path="/"+e.$$path)}function ae(t,e){return 0===e.indexOf(t)?e.substr(t.length):void 0}function se(t){var e=t.indexOf("#");return-1==e?t:t.substr(0,e)}function ue(t){return t.substr(0,se(t).lastIndexOf("/")+1)}function ce(t){return t.substring(0,t.indexOf("/",t.indexOf("//")+2))}function le(t,e){this.$$html5=!0,e=e||"";var r=ue(t);ie(t,this,t),this.$$parse=function(e){var n=ae(r,e);if(!w(n))throw cr("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',e,r);oe(n,this,t),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var t=J(this.$$search),e=this.$$hash?"#"+G(this.$$hash):"";this.$$url=re(this.$$path)+(t?"?"+t:"")+e,this.$$absUrl=r+this.$$url.substr(1)},this.$$parseLinkUrl=function(i,o){var a,s,u;return(a=ae(t,i))!==n?(s=a,u=(a=ae(e,a))!==n?r+(ae("/",a)||a):t+s):(a=ae(r,i))!==n?u=r+a:r==i+"/"&&(u=r),u&&this.$$parse(u),!!u}}function fe(t,e){var n=ue(t);ie(t,this,t),this.$$parse=function(r){function i(t,e,n){var r,i=/^\/[A-Z]:(\/.*)/;return 0===e.indexOf(n)&&(e=e.replace(n,"")),i.exec(e)?t:(r=i.exec(t),r?r[1]:t)}var o=ae(t,r)||ae(n,r),a="#"==o.charAt(0)?ae(e,o):this.$$html5?o:"";if(!w(a))throw cr("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',r,e);oe(a,this,t),this.$$path=i(this.$$path,a,t),this.$$compose()},this.$$compose=function(){var n=J(this.$$search),r=this.$$hash?"#"+G(this.$$hash):"";this.$$url=re(this.$$path)+(n?"?"+n:"")+r,this.$$absUrl=t+(this.$$url?e+this.$$url:"")},this.$$parseLinkUrl=function(e,n){return se(t)==se(e)?(this.$$parse(e),!0):!1}}function he(t,e){this.$$html5=!0,fe.apply(this,arguments);var n=ue(t);this.$$parseLinkUrl=function(r,i){var o,a;return t==se(r)?o=r:(a=ae(n,r))?o=t+e+a:n===r+"/"&&(o=n),o&&this.$$parse(o),!!o},this.$$compose=function(){var n=J(this.$$search),r=this.$$hash?"#"+G(this.$$hash):"";this.$$url=re(this.$$path)+(n?"?"+n:"")+r,this.$$absUrl=t+e+this.$$url}}function pe(t){return function(){return this[t]}}function de(t,e){return function(n){return g(n)?this[t]:(this[t]=e(n),this.$$compose(),this)}}function $e(){var e="",n=!1;this.hashPrefix=function(t){return m(t)?(e=t,this):e},this.html5Mode=function(t){return m(t)?(n=t,this):n},this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(r,i,o,a){function s(t){r.$broadcast("$locationChangeSuccess",u.absUrl(),t)}var u,c,l,f=i.baseHref(),h=i.url();n?(l=ce(h)+(f||"/"),c=o.history?le:he):(l=se(h),c=fe),u=new c(l,"#"+e),u.$$parseLinkUrl(h,h);var p=/^\s*(javascript|mailto):/i;a.on("click",function(e){if(!e.ctrlKey&&!e.metaKey&&2!=e.which){for(var n=bn(e.target);"a"!==$n(n[0].nodeName);)if(n[0]===a[0]||!(n=n.parent())[0])return;var o=n.prop("href"),s=n.attr("href")||n.attr("xlink:href");y(o)&&"[object SVGAnimatedString]"===o.toString()&&(o=Ue(o.animVal).href),p.test(o)||!o||n.attr("target")||e.isDefaultPrevented()||u.$$parseLinkUrl(o,s)&&(e.preventDefault(),u.absUrl()!=i.url()&&(r.$apply(),t.angular["ff-684208-preventDefault"]=!0))}}),u.absUrl()!=h&&i.url(u.absUrl(),!0),i.onUrlChange(function(t){u.absUrl()!=t&&(r.$evalAsync(function(){var e=u.absUrl();u.$$parse(t),r.$broadcast("$locationChangeStart",t,e).defaultPrevented?(u.$$parse(e),i.url(e)):s(e)}),r.$$phase||r.$digest())});var d=0;return r.$watch(function(){var t=i.url(),e=u.$$replace;return d&&t==u.absUrl()||(d++,r.$evalAsync(function(){r.$broadcast("$locationChangeStart",u.absUrl(),t).defaultPrevented?u.$$parse(t):(i.url(u.absUrl(),e),s(t))})),u.$$replace=!1,d}),u}]}function ve(){var t=!0,e=this;this.debugEnabled=function(e){return m(e)?(t=e,this):t},this.$get=["$window",function(n){function r(t){return t instanceof Error&&(t.stack?t=t.message&&-1===t.stack.indexOf(t.message)?"Error: "+t.message+"\n"+t.stack:t.stack:t.sourceURL&&(t=t.message+"\n"+t.sourceURL+":"+t.line)),t}function i(t){var e=n.console||{},i=e[t]||e.log||d,a=!1;try{a=!!i.apply}catch(s){}return a?function(){var t=[];return o(arguments,function(e){t.push(r(e))}),i.apply(e,t)}:function(t,e){i(t,null==e?"":e)}}return{log:i("log"),info:i("info"),warn:i("warn"),error:i("error"),debug:function(){var n=i("debug");return function(){t&&n.apply(e,arguments)}}()}}]}function ge(t,e){if("__defineGetter__"===t||"__defineSetter__"===t||"__lookupGetter__"===t||"__lookupSetter__"===t||"__proto__"===t)throw fr("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",e);return t}function me(t,e){if(t){if(t.constructor===t)throw fr("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",e);if(t.document&&t.location&&t.alert&&t.setInterval)throw fr("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",e);if(t.children&&(t.nodeName||t.prop&&t.attr&&t.find))throw fr("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",e);if(t===Object)throw fr("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",e)}return t}function ye(t,e){if(t){if(t.constructor===t)throw fr("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",e);if(t===pr||t===dr||$r&&t===$r)throw fr("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",e)}}function we(t,e,r,i,o){me(t,i),o=o||{};for(var a,s=e.split("."),u=0;s.length>1;u++){a=ge(s.shift(),i);var c=me(t[a],i);c||(c={},t[a]=c),t=c,t.then&&o.unwrapPromises&&(lr(i),"$$v"in t||!function(t){t.then(function(e){t.$$v=e})}(t),t.$$v===n&&(t.$$v={}),t=t.$$v)}return a=ge(s.shift(),i),me(t[a],i),t[a]=r,r}function be(t){return"constructor"==t}function xe(t,e,r,i,o,a,s){ge(t,a),ge(e,a),ge(r,a),ge(i,a),ge(o,a);var u=function(t){return me(t,a)},c=s.expensiveChecks,l=c||be(t)?u:$,f=c||be(e)?u:$,h=c||be(r)?u:$,p=c||be(i)?u:$,d=c||be(o)?u:$;return s.unwrapPromises?function(s,u){var c,$=u&&u.hasOwnProperty(t)?u:s;return null==$?$:($=l($[t]),$&&$.then&&(lr(a),"$$v"in $||(c=$,c.$$v=n,c.then(function(t){c.$$v=l(t)})),$=l($.$$v)),e?null==$?n:($=f($[e]),$&&$.then&&(lr(a),"$$v"in $||(c=$,c.$$v=n,c.then(function(t){c.$$v=f(t)})),$=f($.$$v)),r?null==$?n:($=h($[r]),$&&$.then&&(lr(a),"$$v"in $||(c=$,c.$$v=n,c.then(function(t){c.$$v=h(t)})),$=h($.$$v)),i?null==$?n:($=p($[i]),$&&$.then&&(lr(a),"$$v"in $||(c=$,c.$$v=n,c.then(function(t){c.$$v=p(t)})),$=p($.$$v)),o?null==$?n:($=d($[o]),$&&$.then&&(lr(a),"$$v"in $||(c=$,c.$$v=n,c.then(function(t){c.$$v=d(t)})),$=d($.$$v)),$):$):$):$):$)}:function(a,s){var u=s&&s.hasOwnProperty(t)?s:a;return null==u?u:(u=l(u[t]),e?null==u?n:(u=f(u[e]),r?null==u?n:(u=h(u[r]),i?null==u?n:(u=p(u[i]),o?null==u?n:u=d(u[o]):u):u):u):u)}}function Se(t,e){return function(n,r){return t(n,r,lr,me,e)}}function Ce(t,e,r){var i=e.expensiveChecks,a=i?br:wr;if(a.hasOwnProperty(t))return a[t];var s,u=t.split("."),c=u.length;if(e.csp)s=6>c?xe(u[0],u[1],u[2],u[3],u[4],r,e):function(t,i){var o,a=0;do o=xe(u[a++],u[a++],u[a++],u[a++],u[a++],r,e)(t,i),i=n,t=o;while(c>a);return o};else{var l="var p;\n";i&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var f=i;o(u,function(t,n){ge(t,r);var o=(n?"s":'((l&&l.hasOwnProperty("'+t+'"))?l:s)')+'["'+t+'"]',a=i||be(t);a&&(o="eso("+o+", fe)",f=!0),l+="if(s == null) return undefined;\ns="+o+";\n",e.unwrapPromises&&(l+='if (s && s.then) {\n pw("'+r.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v='+(a?"eso(v)":"v")+";});\n}\n s="+(a?"eso(s.$$v)":"s.$$v")+"\n}\n")}),l+="return s;";var h=new Function("s","l","pw","eso","fe",l);h.toString=v(l),(f||e.unwrapPromises)&&(h=Se(h,r)),s=h}return"hasOwnProperty"!==t&&(a[t]=s),s}function ke(){var t={},e={},n={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0,expensiveChecks:!1};this.unwrapPromises=function(t){return m(t)?(n.unwrapPromises=!!t,this):n.unwrapPromises},this.logPromiseWarnings=function(t){return m(t)?(n.logPromiseWarnings=t,this):n.logPromiseWarnings},this.$get=["$filter","$sniffer","$log",function(r,i,o){n.csp=i.csp;var a={csp:n.csp,unwrapPromises:n.unwrapPromises,logPromiseWarnings:n.logPromiseWarnings,expensiveChecks:!0};return lr=function(t){n.logPromiseWarnings&&!hr.hasOwnProperty(t)&&(hr[t]=!0,o.warn("[$parse] Promise found in the expression `"+t+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))},function(i,o){var s;switch(typeof i){case"string":var u=o?e:t;if(u.hasOwnProperty(i))return u[i];var c=o?a:n,l=new mr(c),f=new yr(l,r,c);return s=f.parse(i),"hasOwnProperty"!==i&&(u[i]=s),s;case"function":return i;default:return d}}}]}function Ee(){this.$get=["$rootScope","$exceptionHandler",function(t,e){return Ae(function(e){t.$evalAsync(e)},e)}]}function Ae(t,e){function r(t){return t}function i(t){return c(t)}function a(t){var e=s(),n=0,r=Nn(t)?[]:{};return o(t,function(t,i){n++,u(t).then(function(t){r.hasOwnProperty(i)||(r[i]=t,--n||e.resolve(r))},function(t){r.hasOwnProperty(i)||e.reject(t)})}),0===n&&e.resolve(r),e.promise}var s=function(){var o,a,c=[];return a={resolve:function(e){if(c){var r=c;c=n,o=u(e),r.length&&t(function(){for(var t,e=0,n=r.length;n>e;e++)t=r[e],o.then(t[0],t[1],t[2])})}},reject:function(t){a.resolve(l(t))},notify:function(e){if(c){var n=c;c.length&&t(function(){for(var t,r=0,i=n.length;i>r;r++)t=n[r],t[2](e)})}},promise:{then:function(t,n,a){var u=s(),l=function(n){try{u.resolve((S(t)?t:r)(n))}catch(i){u.reject(i),e(i)}},f=function(t){try{u.resolve((S(n)?n:i)(t))}catch(r){u.reject(r),e(r)}},h=function(t){try{u.notify((S(a)?a:r)(t))}catch(n){e(n)}};return c?c.push([l,f,h]):o.then(l,f,h),u.promise},"catch":function(t){return this.then(null,t)},"finally":function(t){function e(t,e){var n=s();return e?n.resolve(t):n.reject(t),n.promise}function n(n,i){var o=null;try{o=(t||r)()}catch(a){return e(a,!1)}return T(o)?o.then(function(){return e(n,i)},function(t){return e(t,!1)}):e(n,i)}return this.then(function(t){return n(t,!0)},function(t){return n(t,!1)})}}}},u=function(e){return T(e)?e:{then:function(n){var r=s();return t(function(){r.resolve(n(e))}),r.promise}}},c=function(t){var e=s();return e.reject(t),e.promise},l=function(n){return{then:function(r,o){var a=s();return t(function(){try{a.resolve((S(o)?o:i)(n))}catch(t){a.reject(t),e(t)}}),a.promise}}},f=function(n,o,a,l){var f,h=s(),p=function(t){try{return(S(o)?o:r)(t)}catch(n){return e(n),c(n)}},d=function(t){try{return(S(a)?a:i)(t)}catch(n){return e(n),c(n)}},$=function(t){try{return(S(l)?l:r)(t)}catch(n){e(n)}};return t(function(){u(n).then(function(t){f||(f=!0,h.resolve(u(t).then(p,d,$)))},function(t){f||(f=!0,h.resolve(d(t)))},function(t){f||h.notify($(t))})}),h.promise};return{defer:s,reject:c,when:f,all:a}}function Oe(){this.$get=["$window","$timeout",function(t,e){var n=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame,r=t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.webkitCancelRequestAnimationFrame,i=!!n,o=i?function(t){var e=n(t);return function(){r(e)}}:function(t){var n=e(t,16.66,!1);return function(){e.cancel(n)}};return o.supported=i,o}]}function Te(){var t=10,e=r("$rootScope"),n=null;this.digestTtl=function(e){return arguments.length&&(t=e),t},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(r,a,s,u){function l(){this.$id=c(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this["this"]=this.$root=this,this.$$destroyed=!1,this.$$asyncQueue=[],this.$$postDigestQueue=[],this.$$listeners={},this.$$listenerCount={},this.$$isolateBindings={}}function f(t){if(g.$$phase)throw e("inprog","{0} already in progress",g.$$phase);g.$$phase=t}function h(){g.$$phase=null}function p(t,e){var n=s(t);return nt(n,e),n}function $(t,e,n){do t.$$listenerCount[n]-=e,0===t.$$listenerCount[n]&&delete t.$$listenerCount[n];while(t=t.$parent)}function v(){}l.prototype={constructor:l,$new:function(t){var e;return t?(e=new l,e.$root=this.$root,e.$$asyncQueue=this.$$asyncQueue,e.$$postDigestQueue=this.$$postDigestQueue):(this.$$childScopeClass||(this.$$childScopeClass=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$id=c(),this.$$childScopeClass=null},this.$$childScopeClass.prototype=this),e=new this.$$childScopeClass),e["this"]=e,e.$parent=this,e.$$prevSibling=this.$$childTail,this.$$childHead?(this.$$childTail.$$nextSibling=e,this.$$childTail=e):this.$$childHead=this.$$childTail=e,e},$watch:function(t,e,r){var i=this,o=p(t,"watch"),a=i.$$watchers,s={fn:e,last:v,get:o,exp:t,eq:!!r};if(n=null,!S(e)){var u=p(e||d,"listener");s.fn=function(t,e,n){u(n)}}if("string"==typeof t&&o.constant){var c=s.fn;s.fn=function(t,e,n){c.call(this,t,e,n),D(a,s)}}return a||(a=i.$$watchers=[]),a.unshift(s),function(){D(a,s),n=null}},$watchCollection:function(t,e){function n(){o=h(c);var t,e,n;if(y(o))if(i(o)){a!==p&&(a=p,v=a.length=0,f++),t=o.length,v!==t&&(f++,a.length=v=t);for(var r=0;t>r;r++)n=a[r]!==a[r]&&o[r]!==o[r],n||a[r]===o[r]||(f++,a[r]=o[r])}else{a!==d&&(a=d={},v=0,f++),t=0;for(e in o)o.hasOwnProperty(e)&&(t++,a.hasOwnProperty(e)?(n=a[e]!==a[e]&&o[e]!==o[e],n||a[e]===o[e]||(f++,a[e]=o[e])):(v++,a[e]=o[e],f++));if(v>t){f++;for(e in a)a.hasOwnProperty(e)&&!o.hasOwnProperty(e)&&(v--,delete a[e])}}else a!==o&&(a=o,f++);return f}function r(){if($?($=!1,e(o,o,c)):e(o,u,c),l)if(y(o))if(i(o)){u=new Array(o.length);for(var t=0;t<o.length;t++)u[t]=o[t]}else{u={};for(var n in o)vn.call(o,n)&&(u[n]=o[n])}else u=o}var o,a,u,c=this,l=e.length>1,f=0,h=s(t),p=[],d={},$=!0,v=0;return this.$watch(n,r)},$digest:function(){var r,i,o,s,c,l,p,d,$,g,m,y=this.$$asyncQueue,w=this.$$postDigestQueue,b=t,x=this,C=[];f("$digest"),u.$$checkUrlChange(),n=null;do{for(l=!1,d=x;y.length;){try{m=y.shift(),m.scope.$eval(m.expression)}catch(k){h(),a(k)}n=null}t:do{if(s=d.$$watchers)for(c=s.length;c--;)try{if(r=s[c])if((i=r.get(d))===(o=r.last)||(r.eq?q(i,o):"number"==typeof i&&"number"==typeof o&&isNaN(i)&&isNaN(o))){if(r===n){l=!1;break t}}else l=!0,n=r,r.last=r.eq?R(i,null):i,r.fn(i,o===v?i:o,d),5>b&&($=4-b,C[$]||(C[$]=[]),g=S(r.exp)?"fn: "+(r.exp.name||r.exp.toString()):r.exp,g+="; newVal: "+L(i)+"; oldVal: "+L(o),C[$].push(g))}catch(k){h(),a(k)}if(!(p=d.$$childHead||d!==x&&d.$$nextSibling))for(;d!==x&&!(p=d.$$nextSibling);)d=d.$parent}while(d=p);if((l||y.length)&&!b--)throw h(),e("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",t,L(C))}while(l||y.length);for(h();w.length;)try{w.shift()()}catch(k){a(k)}},$destroy:function(){if(!this.$$destroyed){var t=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this!==g&&(o(this.$$listenerCount,I(null,$,this)),t.$$childHead==this&&(t.$$childHead=this.$$nextSibling),t.$$childTail==this&&(t.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=d,this.$on=this.$watch=function(){return d})}},$eval:function(t,e){return s(t)(this,e)},$evalAsync:function(t){g.$$phase||g.$$asyncQueue.length||u.defer(function(){g.$$asyncQueue.length&&g.$digest()}),this.$$asyncQueue.push({scope:this,expression:t})},$$postDigest:function(t){this.$$postDigestQueue.push(t)},$apply:function(t){try{return f("$apply"),this.$eval(t)}catch(e){a(e)}finally{h();try{g.$digest()}catch(e){throw a(e),e}}},$on:function(t,e){var n=this.$$listeners[t];n||(this.$$listeners[t]=n=[]),n.push(e);var r=this;do r.$$listenerCount[t]||(r.$$listenerCount[t]=0),r.$$listenerCount[t]++;while(r=r.$parent);var i=this;return function(){var r=j(n,e);-1!==r&&(n[r]=null,$(i,1,t))}},$emit:function(t,e){var n,r,i,o=[],s=this,u=!1,c={name:t,targetScope:s,stopPropagation:function(){u=!0},preventDefault:function(){c.defaultPrevented=!0},defaultPrevented:!1},l=U([c],arguments,1);do{for(n=s.$$listeners[t]||o,c.currentScope=s,r=0,i=n.length;i>r;r++)if(n[r])try{n[r].apply(null,l)}catch(f){a(f)}else n.splice(r,1),r--,i--;if(u)return c;s=s.$parent}while(s);return c},$broadcast:function(t,e){for(var n,r,i,o=this,s=o,u=o,c={name:t,targetScope:o,preventDefault:function(){c.defaultPrevented=!0},defaultPrevented:!1},l=U([c],arguments,1);s=u;){for(c.currentScope=s,n=s.$$listeners[t]||[],r=0,i=n.length;i>r;r++)if(n[r])try{n[r].apply(null,l)}catch(f){a(f)}else n.splice(r,1),r--,i--;if(!(u=s.$$listenerCount[t]&&s.$$childHead||s!==o&&s.$$nextSibling))for(;s!==o&&!(u=s.$$nextSibling);)s=s.$parent}return c}};var g=new l;return g}]}function Me(){var t=/^\s*(https?|ftp|mailto|tel|file):/,e=/^\s*((https?|ftp|file):|data:image\/)/;this.aHrefSanitizationWhitelist=function(e){return m(e)?(t=e,this):t},this.imgSrcSanitizationWhitelist=function(t){return m(t)?(e=t,this):e},this.$get=function(){return function(n,r){var i,o=r?e:t;return wn&&!(wn>=8)||(i=Ue(n).href,""===i||i.match(o))?n:"unsafe:"+i}}}function Ne(t){return t.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")}function Pe(t){if("self"===t)return t;if(w(t)){if(t.indexOf("***")>-1)throw xr("iwcard","Illegal sequence *** in string matcher. String: {0}",t);return t=Ne(t).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+t+"$")}if(C(t))return new RegExp("^"+t.source+"$");throw xr("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function je(t){var e=[];return m(t)&&o(t,function(t){e.push(Pe(t))}),e}function De(){this.SCE_CONTEXTS=Sr;var t=["self"],e=[];this.resourceUrlWhitelist=function(e){return arguments.length&&(t=je(e)),t},this.resourceUrlBlacklist=function(t){return arguments.length&&(e=je(t)),e},this.$get=["$injector",function(r){function i(t,e){return"self"===t?Ve(e):!!t.exec(e.href)}function o(n){var r,o,a=Ue(n.toString()),s=!1;for(r=0,o=t.length;o>r;r++)if(i(t[r],a)){s=!0;break}if(s)for(r=0,o=e.length;o>r;r++)if(i(e[r],a)){s=!1;break}return s}function a(t){var e=function(t){this.$$unwrapTrustedValue=function(){return t}};return t&&(e.prototype=new t),e.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},e.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},e}function s(t,e){var r=h.hasOwnProperty(t)?h[t]:null;if(!r)throw xr("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",t,e);if(null===e||e===n||""===e)return e;if("string"!=typeof e)throw xr("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",t);return new r(e)}function u(t){return t instanceof f?t.$$unwrapTrustedValue():t}function c(t,e){if(null===e||e===n||""===e)return e;var r=h.hasOwnProperty(t)?h[t]:null;if(r&&e instanceof r)return e.$$unwrapTrustedValue();if(t===Sr.RESOURCE_URL){if(o(e))return e;throw xr("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",e.toString())}if(t===Sr.HTML)return l(e);throw xr("unsafe","Attempting to use an unsafe value in a safe context.")}var l=function(t){throw xr("unsafe","Attempting to use an unsafe value in a safe context.")};r.has("$sanitize")&&(l=r.get("$sanitize"));var f=a(),h={};return h[Sr.HTML]=a(f),h[Sr.CSS]=a(f),h[Sr.URL]=a(f),h[Sr.JS]=a(f),h[Sr.RESOURCE_URL]=a(h[Sr.URL]),{trustAs:s,getTrusted:c,valueOf:u}}]}function Re(){var t=!0;this.enabled=function(e){return arguments.length&&(t=!!e),t},this.$get=["$parse","$sniffer","$sceDelegate",function(e,n,r){if(t&&n.msie&&n.msieDocumentMode<8)throw xr("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var i=_(Sr);i.isEnabled=function(){return t},i.trustAs=r.trustAs,i.getTrusted=r.getTrusted,i.valueOf=r.valueOf,t||(i.trustAs=i.getTrusted=function(t,e){return e},i.valueOf=$),i.parseAs=function(t,n){var r=e(n);return r.literal&&r.constant?r:function(e,n){return i.getTrusted(t,r(e,n))}};var a=i.parseAs,s=i.getTrusted,u=i.trustAs;return o(Sr,function(t,e){var n=$n(e);i[ct("parse_as_"+n)]=function(e){return a(t,e)},i[ct("get_trusted_"+n)]=function(e){return s(t,e)},i[ct("trust_as_"+n)]=function(e){return u(t,e)}}),i}]}function _e(){this.$get=["$window","$document",function(t,e){var n,r,i={},o=h((/android (\d+)/.exec($n((t.navigator||{}).userAgent))||[])[1]),a=/Boxee/i.test((t.navigator||{}).userAgent),s=e[0]||{},u=s.documentMode,c=/^(Moz|webkit|O|ms)(?=[A-Z])/,l=s.body&&s.body.style,f=!1,p=!1;if(l){for(var d in l)if(r=c.exec(d)){n=r[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in l&&"webkit"),f=!!("transition"in l||n+"Transition"in l),p=!!("animation"in l||n+"Animation"in l),!o||f&&p||(f=w(s.body.style.webkitTransition),p=w(s.body.style.webkitAnimation))}return{history:!(!t.history||!t.history.pushState||4>o||a),
|
8
|
+
hashchange:"onhashchange"in t&&(!u||u>7),hasEvent:function(t){if("input"==t&&9==wn)return!1;if(g(i[t])){var e=s.createElement("div");i[t]="on"+t in e}return i[t]},csp:jn(),vendorPrefix:n,transitions:f,animations:p,android:o,msie:wn,msieDocumentMode:u}}]}function qe(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(t,e,n,r){function i(i,a,s){var u,c=n.defer(),l=c.promise,f=m(s)&&!s;return u=e.defer(function(){try{c.resolve(i())}catch(e){c.reject(e),r(e)}finally{delete o[l.$$timeoutId]}f||t.$apply()},a),l.$$timeoutId=u,o[u]=c,l}var o={};return i.cancel=function(t){return t&&t.$$timeoutId in o?(o[t.$$timeoutId].reject("canceled"),delete o[t.$$timeoutId],e.defer.cancel(t.$$timeoutId)):!1},i}]}function Ue(t,e){var n=t;return wn&&(Cr.setAttribute("href",n),n=Cr.href),Cr.setAttribute("href",n),{href:Cr.href,protocol:Cr.protocol?Cr.protocol.replace(/:$/,""):"",host:Cr.host,search:Cr.search?Cr.search.replace(/^\?/,""):"",hash:Cr.hash?Cr.hash.replace(/^#/,""):"",hostname:Cr.hostname,port:Cr.port,pathname:"/"===Cr.pathname.charAt(0)?Cr.pathname:"/"+Cr.pathname}}function Ve(t){var e=w(t)?Ue(t):t;return e.protocol===kr.protocol&&e.host===kr.host}function Ie(){this.$get=v(t)}function Fe(t){function e(r,i){if(y(r)){var a={};return o(r,function(t,n){a[n]=e(n,t)}),a}return t.factory(r+n,i)}var n="Filter";this.register=e,this.$get=["$injector",function(t){return function(e){return t.get(e+n)}}],e("currency",He),e("date",Ke),e("filter",Le),e("json",Ye),e("limitTo",Ze),e("lowercase",Mr),e("number",Be),e("orderBy",tn),e("uppercase",Nr)}function Le(){return function(t,e,n){if(!Nn(t))return t;var r=typeof n,i=[];i.check=function(t){for(var e=0;e<i.length;e++)if(!i[e](t))return!1;return!0},"function"!==r&&(n="boolean"===r&&n?function(t,e){return Tn.equals(t,e)}:function(t,e){if(t&&e&&"object"==typeof t&&"object"==typeof e){for(var r in t)if("$"!==r.charAt(0)&&vn.call(t,r)&&n(t[r],e[r]))return!0;return!1}return e=(""+e).toLowerCase(),(""+t).toLowerCase().indexOf(e)>-1});var o=function(t,e){if("string"==typeof e&&"!"===e.charAt(0))return!o(t,e.substr(1));switch(typeof t){case"boolean":case"number":case"string":return n(t,e);case"object":switch(typeof e){case"object":return n(t,e);default:for(var r in t)if("$"!==r.charAt(0)&&o(t[r],e))return!0}return!1;case"array":for(var i=0;i<t.length;i++)if(o(t[i],e))return!0;return!1;default:return!1}};switch(typeof e){case"boolean":case"number":case"string":e={$:e};case"object":for(var a in e)!function(t){"undefined"!=typeof e[t]&&i.push(function(n){return o("$"==t?n:n&&n[t],e[t])})}(a);break;case"function":i.push(e);break;default:return t}for(var s=[],u=0;u<t.length;u++){var c=t[u];i.check(c)&&s.push(c)}return s}}function He(t){var e=t.NUMBER_FORMATS;return function(t,n){return g(n)&&(n=e.CURRENCY_SYM),ze(t,e.PATTERNS[1],e.GROUP_SEP,e.DECIMAL_SEP,2).replace(/\u00A4/g,n)}}function Be(t){var e=t.NUMBER_FORMATS;return function(t,n){return ze(t,e.PATTERNS[0],e.GROUP_SEP,e.DECIMAL_SEP,n)}}function ze(t,e,n,r,i){if(null==t||!isFinite(t)||y(t))return"";var o=0>t;t=Math.abs(t);var a=t+"",s="",u=[],c=!1;if(-1!==a.indexOf("e")){var l=a.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&&l[3]>i+1?(a="0",t=0):(s=a,c=!0)}if(c)i>0&&t>-1&&1>t&&(s=t.toFixed(i));else{var f=(a.split(Er)[1]||"").length;g(i)&&(i=Math.min(Math.max(e.minFrac,f),e.maxFrac)),t=+(Math.round(+(t.toString()+"e"+i)).toString()+"e"+-i),0===t&&(o=!1);var h=(""+t).split(Er),p=h[0];h=h[1]||"";var d,$=0,v=e.lgSize,m=e.gSize;if(p.length>=v+m)for($=p.length-v,d=0;$>d;d++)($-d)%m===0&&0!==d&&(s+=n),s+=p.charAt(d);for(d=$;d<p.length;d++)(p.length-d)%v===0&&0!==d&&(s+=n),s+=p.charAt(d);for(;h.length<i;)h+="0";i&&"0"!==i&&(s+=r+h.substr(0,i))}return u.push(o?e.negPre:e.posPre),u.push(s),u.push(o?e.negSuf:e.posSuf),u.join("")}function We(t,e,n){var r="";for(0>t&&(r="-",t=-t),t=""+t;t.length<e;)t="0"+t;return n&&(t=t.substr(t.length-e)),r+t}function Qe(t,e,n,r){return n=n||0,function(i){var o=i["get"+t]();return(n>0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),We(o,e,r)}}function Je(t,e){return function(n,r){var i=n["get"+t](),o=gn(e?"SHORT"+t:t);return r[o][i]}}function Ge(t){var e=-1*t.getTimezoneOffset(),n=e>=0?"+":"";return n+=We(Math[e>0?"floor":"ceil"](e/60),2)+We(Math.abs(e%60),2)}function Xe(t,e){return t.getHours()<12?e.AMPMS[0]:e.AMPMS[1]}function Ke(t){function e(t){var e;if(e=t.match(n)){var r=new Date(0),i=0,o=0,a=e[8]?r.setUTCFullYear:r.setFullYear,s=e[8]?r.setUTCHours:r.setHours;e[9]&&(i=h(e[9]+e[10]),o=h(e[9]+e[11])),a.call(r,h(e[1]),h(e[2])-1,h(e[3]));var u=h(e[4]||0)-i,c=h(e[5]||0)-o,l=h(e[6]||0),f=Math.round(1e3*parseFloat("0."+(e[7]||0)));return s.call(r,u,c,l,f),r}return t}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,r){var i,a,s="",u=[];if(r=r||"mediumDate",r=t.DATETIME_FORMATS[r]||r,w(n)&&(n=Tr.test(n)?h(n):e(n)),b(n)&&(n=new Date(n)),!x(n))return n;for(;r;)a=Or.exec(r),a?(u=U(u,a,1),r=u.pop()):(u.push(r),r=null);return o(u,function(e){i=Ar[e],s+=i?i(n,t.DATETIME_FORMATS):e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),s}}function Ye(){return function(t){return L(t,!0)}}function Ze(){return function(t,e){if(!Nn(t)&&!w(t))return t;if(e=Math.abs(Number(e))===1/0?Number(e):h(e),w(t))return e?e>=0?t.slice(0,e):t.slice(e,t.length):"";var n,r,i=[];for(e>t.length?e=t.length:e<-t.length&&(e=-t.length),e>0?(n=0,r=e):(n=t.length+e,r=t.length);r>n;n++)i.push(t[n]);return i}}function tn(t){return function(e,n,r){function o(t,e){for(var r=0;r<n.length;r++){var i=n[r](t,e);if(0!==i)return i}return 0}function a(t,e){return B(e)?function(e,n){return t(n,e)}:t}function s(t,e){var n=typeof t,r=typeof e;return n==r?(x(t)&&x(e)&&(t=t.valueOf(),e=e.valueOf()),"string"==n&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e?0:e>t?-1:1):r>n?-1:1}return i(e)?(n=Nn(n)?n:[n],0===n.length&&(n=["+"]),n=N(n,function(e){var n=!1,r=e||$;if(w(e)){if(("+"==e.charAt(0)||"-"==e.charAt(0))&&(n="-"==e.charAt(0),e=e.substring(1)),""===e)return a(function(t,e){return s(t,e)},n);if(r=t(e),r.constant){var i=r();return a(function(t,e){return s(t[i],e[i])},n)}}return a(function(t,e){return s(r(t),r(e))},n)}),kn.call(e).sort(a(o,r))):e}}function en(t){return S(t)&&(t={link:t}),t.restrict=t.restrict||"AC",v(t)}function nn(t,e,n,r){function i(e,n){n=n?"-"+Z(n,"-"):"",r.setClass(t,(e?Br:zr)+n,(e?zr:Br)+n)}var a=this,s=t.parent().controller("form")||Dr,u=0,c=a.$error={},l=[];a.$name=e.name||e.ngForm,a.$dirty=!1,a.$pristine=!0,a.$valid=!0,a.$invalid=!1,s.$addControl(a),t.addClass(Wr),i(!0),a.$addControl=function(t){rt(t.$name,"input"),l.push(t),t.$name&&(a[t.$name]=t)},a.$removeControl=function(t){t.$name&&a[t.$name]===t&&delete a[t.$name],o(c,function(e,n){a.$setValidity(n,!0,t)}),D(l,t)},a.$setValidity=function(t,e,n){var r=c[t];if(e)r&&(D(r,n),r.length||(u--,u||(i(e),a.$valid=!0,a.$invalid=!1),c[t]=!1,i(!0,t),s.$setValidity(t,!0,a)));else{if(u||i(e),r){if(P(r,n))return}else c[t]=r=[],u++,i(!1,t),s.$setValidity(t,!1,a);r.push(n),a.$valid=!1,a.$invalid=!0}},a.$setDirty=function(){r.removeClass(t,Wr),r.addClass(t,Qr),a.$dirty=!0,a.$pristine=!1,s.$setDirty()},a.$setPristine=function(){r.removeClass(t,Qr),r.addClass(t,Wr),a.$dirty=!1,a.$pristine=!0,o(l,function(t){t.$setPristine()})}}function rn(t,e,r,i){return t.$setValidity(e,r),r?i:n}function on(t,e){var n,r;if(e)for(n=0;n<e.length;++n)if(r=e[n],t[r])return!0;return!1}function an(t,e,n,r,i){if(y(i)){t.$$hasNativeValidators=!0;var o=function(o){return t.$error[e]||on(i,r)||!on(i,n)?o:void t.$setValidity(e,!1)};t.$parsers.push(o)}}function sn(t,e,n,i,o,a){var s=e.prop(dn),u=e[0].placeholder,c={},l=$n(e[0].type);if(i.$$validityState=s,!o.android){var f=!1;e.on("compositionstart",function(t){f=!0}),e.on("compositionend",function(){f=!1,p()})}var p=function(r){if(!f){var o=e.val();if(wn&&"input"===(r||c).type&&e[0].placeholder!==u)return void(u=e[0].placeholder);"password"!==l&&B(n.ngTrim||"T")&&(o=Pn(o));var a=s&&i.$$hasNativeValidators;(i.$viewValue!==o||""===o&&a)&&(t.$root.$$phase?i.$setViewValue(o):t.$apply(function(){i.$setViewValue(o)}))}};if(o.hasEvent("input"))e.on("input",p);else{var d,$=function(){d||(d=a.defer(function(){p(),d=null}))};e.on("keydown",function(t){var e=t.keyCode;91===e||e>15&&19>e||e>=37&&40>=e||$()}),o.hasEvent("paste")&&e.on("paste cut",$)}e.on("change",p),i.$render=function(){e.val(i.$isEmpty(i.$viewValue)?"":i.$viewValue)};var v,g,m=n.ngPattern;if(m){var y=function(t,e){return rn(i,"pattern",i.$isEmpty(e)||t.test(e),e)};g=m.match(/^\/(.*)\/([gim]*)$/),g?(m=new RegExp(g[1],g[2]),v=function(t){return y(m,t)}):v=function(n){var i=t.$eval(m);if(!i||!i.test)throw r("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",m,i,z(e));return y(i,n)},i.$formatters.push(v),i.$parsers.push(v)}if(n.ngMinlength){var w=h(n.ngMinlength),b=function(t){return rn(i,"minlength",i.$isEmpty(t)||t.length>=w,t)};i.$parsers.push(b),i.$formatters.push(b)}if(n.ngMaxlength){var x=h(n.ngMaxlength),S=function(t){return rn(i,"maxlength",i.$isEmpty(t)||t.length<=x,t)};i.$parsers.push(S),i.$formatters.push(S)}}function un(t,e,r,i,o,a){if(sn(t,e,r,i,o,a),i.$parsers.push(function(t){var e=i.$isEmpty(t);return e||Ir.test(t)?(i.$setValidity("number",!0),""===t?null:e?t:parseFloat(t)):(i.$setValidity("number",!1),n)}),an(i,"number",Lr,null,i.$$validityState),i.$formatters.push(function(t){return i.$isEmpty(t)?"":""+t}),r.min){var s=function(t){var e=parseFloat(r.min);return rn(i,"min",i.$isEmpty(t)||t>=e,t)};i.$parsers.push(s),i.$formatters.push(s)}if(r.max){var u=function(t){var e=parseFloat(r.max);return rn(i,"max",i.$isEmpty(t)||e>=t,t)};i.$parsers.push(u),i.$formatters.push(u)}i.$formatters.push(function(t){return rn(i,"number",i.$isEmpty(t)||b(t),t)})}function cn(t,e,n,r,i,o){sn(t,e,n,r,i,o);var a=function(t){return rn(r,"url",r.$isEmpty(t)||Ur.test(t),t)};r.$formatters.push(a),r.$parsers.push(a)}function ln(t,e,n,r,i,o){sn(t,e,n,r,i,o);var a=function(t){return rn(r,"email",r.$isEmpty(t)||Vr.test(t),t)};r.$formatters.push(a),r.$parsers.push(a)}function fn(t,e,n,r){g(n.name)&&e.attr("name",c()),e.on("click",function(){e[0].checked&&t.$apply(function(){r.$setViewValue(n.value)})}),r.$render=function(){var t=n.value;e[0].checked=t==r.$viewValue},n.$observe("value",r.$render)}function hn(t,e,n,r){var i=n.ngTrueValue,o=n.ngFalseValue;w(i)||(i=!0),w(o)||(o=!1),e.on("click",function(){t.$apply(function(){r.$setViewValue(e[0].checked)})}),r.$render=function(){e[0].checked=r.$viewValue},r.$isEmpty=function(t){return t!==i},r.$formatters.push(function(t){return t===i}),r.$parsers.push(function(t){return t?i:o})}function pn(t,e){return t="ngClass"+t,["$animate",function(n){function r(t,e){var n=[];t:for(var r=0;r<t.length;r++){for(var i=t[r],o=0;o<e.length;o++)if(i==e[o])continue t;n.push(i)}return n}function i(t){if(Nn(t))return t;if(w(t))return t.split(" ");if(y(t)){var e=[];return o(t,function(t,n){t&&(e=e.concat(n.split(" ")))}),e}return t}return{restrict:"AC",link:function(a,s,u){function c(t){var e=f(t,1);u.$addClass(e)}function l(t){var e=f(t,-1);u.$removeClass(e)}function f(t,e){var n=s.data("$classCounts")||{},r=[];return o(t,function(t){(e>0||n[t])&&(n[t]=(n[t]||0)+e,n[t]===+(e>0)&&r.push(t))}),s.data("$classCounts",n),r.join(" ")}function h(t,e){var i=r(e,t),o=r(t,e);o=f(o,-1),i=f(i,1),0===i.length?n.removeClass(s,o):0===o.length?n.addClass(s,i):n.setClass(s,i,o)}function p(t){if(e===!0||a.$index%2===e){var n=i(t||[]);if(d){if(!q(t,d)){var r=i(d);h(r,n)}}else c(n)}d=_(t)}var d;a.$watch(u[t],p,!0),u.$observe("class",function(e){p(a.$eval(u[t]))}),"ngClass"!==t&&a.$watch("$index",function(n,r){var o=1&n;if(o!==(1&r)){var s=i(a.$eval(u[t]));o===e?c(s):l(s)}})}}}]}var dn="validity",$n=function(t){return w(t)?t.toLowerCase():t},vn=Object.prototype.hasOwnProperty,gn=function(t){return w(t)?t.toUpperCase():t},mn=function(t){return w(t)?t.replace(/[A-Z]/g,function(t){return String.fromCharCode(32|t.charCodeAt(0))}):t},yn=function(t){return w(t)?t.replace(/[a-z]/g,function(t){return String.fromCharCode(-33&t.charCodeAt(0))}):t};"i"!=="I".toLowerCase()&&($n=mn,gn=yn);var wn,bn,xn,Sn,Cn,kn=[].slice,En=[].push,An=Object.prototype.toString,On=r("ng"),Tn=t.angular||(t.angular={}),Mn=["0","0","0"];wn=h((/msie (\d+)/.exec($n(navigator.userAgent))||[])[1]),isNaN(wn)&&(wn=h((/trident\/.*; rv:(\d+)/.exec($n(navigator.userAgent))||[])[1])),d.$inject=[],$.$inject=[];var Nn=function(){return S(Array.isArray)?Array.isArray:function(t){return"[object Array]"===An.call(t)}}(),Pn=function(){return String.prototype.trim?function(t){return w(t)?t.trim():t}:function(t){return w(t)?t.replace(/^\s\s*/,"").replace(/\s\s*$/,""):t}}();Cn=9>wn?function(t){return t=t.nodeName?t:t[0],t.scopeName&&"HTML"!=t.scopeName?gn(t.scopeName+":"+t.nodeName):t.nodeName}:function(t){return t.nodeName?t.nodeName:t[0].nodeName};var jn=function(){if(m(jn.isActive_))return jn.isActive_;var t=!(!e.querySelector("[ng-csp]")&&!e.querySelector("[data-ng-csp]"));if(!t)try{new Function("")}catch(n){t=!0}return jn.isActive_=t},Dn=/[A-Z]/g,Rn={full:"1.2.28",major:1,minor:2,dot:28,codeName:"finnish-disembarkation"};dt.expando="ng339";var _n=dt.cache={},qn=1,Un=t.document.addEventListener?function(t,e,n){t.addEventListener(e,n,!1)}:function(t,e,n){t.attachEvent("on"+e,n)},Vn=t.document.removeEventListener?function(t,e,n){t.removeEventListener(e,n,!1)}:function(t,e,n){t.detachEvent("on"+e,n)},In=(dt._data=function(t){return this.cache[t[this.expando]]||{}},/([\:\-\_]+(.))/g),Fn=/^moz([A-Z])/,Ln=r("jqLite"),Hn=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Bn=/<|&#?\w+;/,zn=/<([\w:]+)/,Wn=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Qn={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Qn.optgroup=Qn.option,Qn.tbody=Qn.tfoot=Qn.colgroup=Qn.caption=Qn.thead,Qn.th=Qn.td;var Jn=dt.prototype={ready:function(n){function r(){i||(i=!0,n())}var i=!1;"complete"===e.readyState?setTimeout(r):(this.on("DOMContentLoaded",r),dt(t).on("load",r))},toString:function(){var t=[];return o(this,function(e){t.push(""+e)}),"["+t.join(", ")+"]"},eq:function(t){return bn(t>=0?this[t]:this[this.length+t])},length:0,push:En,sort:[].sort,splice:[].splice},Gn={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(t){Gn[$n(t)]=t});var Xn={};o("input,select,option,textarea,button,form,details".split(","),function(t){Xn[gn(t)]=!0}),o({data:wt,removeData:mt},function(t,e){dt[e]=t}),o({data:wt,inheritedData:Et,scope:function(t){return bn.data(t,"$scope")||Et(t.parentNode||t,["$isolateScope","$scope"])},isolateScope:function(t){return bn.data(t,"$isolateScope")||bn.data(t,"$isolateScopeNoTemplate")},controller:kt,injector:function(t){return Et(t,"$injector")},removeAttr:function(t,e){t.removeAttribute(e)},hasClass:bt,css:function(t,e,r){if(e=ct(e),!m(r)){var i;return 8>=wn&&(i=t.currentStyle&&t.currentStyle[e],""===i&&(i="auto")),i=i||t.style[e],8>=wn&&(i=""===i?n:i),i}t.style[e]=r},attr:function(t,e,r){var i=$n(e);if(Gn[i]){if(!m(r))return t[e]||(t.attributes.getNamedItem(e)||d).specified?i:n;r?(t[e]=!0,t.setAttribute(e,i)):(t[e]=!1,t.removeAttribute(i))}else if(m(r))t.setAttribute(e,r);else if(t.getAttribute){var o=t.getAttribute(e,2);return null===o?n:o}},prop:function(t,e,n){return m(n)?void(t[e]=n):t[e]},text:function(){function t(t,n){var r=e[t.nodeType];return g(n)?r?t[r]:"":void(t[r]=n)}var e=[];return 9>wn?(e[1]="innerText",e[3]="nodeValue"):e[1]=e[3]="textContent",t.$dv="",t}(),val:function(t,e){if(g(e)){if("SELECT"===Cn(t)&&t.multiple){var n=[];return o(t.options,function(t){t.selected&&n.push(t.value||t.text)}),0===n.length?null:n}return t.value}t.value=e},html:function(t,e){if(g(e))return t.innerHTML;for(var n=0,r=t.childNodes;n<r.length;n++)vt(r[n]);t.innerHTML=e},empty:At},function(t,e){dt.prototype[e]=function(e,r){var i,o,a=this.length;if(t!==At&&(2==t.length&&t!==bt&&t!==kt?e:r)===n){if(y(e)){for(i=0;a>i;i++)if(t===wt)t(this[i],e);else for(o in e)t(this[i],o,e[o]);return this}for(var s=t.$dv,u=s===n?Math.min(a,1):a,c=0;u>c;c++){var l=t(this[c],e,r);s=s?s+l:l}return s}for(i=0;a>i;i++)t(this[i],e,r);return this}}),o({removeData:mt,dealoc:vt,on:function Ni(t,n,r,i){if(m(i))throw Ln("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");var a=yt(t,"events"),s=yt(t,"handle");a||yt(t,"events",a={}),s||yt(t,"handle",s=Tt(t,a)),o(n.split(" "),function(n){var i=a[n];if(!i){if("mouseenter"==n||"mouseleave"==n){var o=e.body.contains||e.body.compareDocumentPosition?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1};a[n]=[];var u={mouseleave:"mouseout",mouseenter:"mouseover"};Ni(t,u[n],function(t){var e=this,r=t.relatedTarget;(!r||r!==e&&!o(e,r))&&s(t,n)})}else Un(t,n,s),a[n]=[];i=a[n]}i.push(r)})},off:gt,one:function(t,e,n){t=bn(t),t.on(e,function r(){t.off(e,n),t.off(e,r)}),t.on(e,n)},replaceWith:function(t,e){var n,r=t.parentNode;vt(t),o(new dt(e),function(e){n?r.insertBefore(e,n.nextSibling):r.replaceChild(e,t),n=e})},children:function(t){var e=[];return o(t.childNodes,function(t){1===t.nodeType&&e.push(t)}),e},contents:function(t){return t.contentDocument||t.childNodes||[]},append:function(t,e){o(new dt(e),function(e){(1===t.nodeType||11===t.nodeType)&&t.appendChild(e)})},prepend:function(t,e){if(1===t.nodeType){var n=t.firstChild;o(new dt(e),function(e){t.insertBefore(e,n)})}},wrap:function(t,e){e=bn(e)[0];var n=t.parentNode;n&&n.replaceChild(e,t),e.appendChild(t)},remove:function(t){vt(t);var e=t.parentNode;e&&e.removeChild(t)},after:function(t,e){var n=t,r=t.parentNode;o(new dt(e),function(t){r.insertBefore(t,n.nextSibling),n=t})},addClass:St,removeClass:xt,toggleClass:function(t,e,n){e&&o(e.split(" "),function(e){var r=n;g(r)&&(r=!bt(t,e)),(r?St:xt)(t,e)})},parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},next:function(t){if(t.nextElementSibling)return t.nextElementSibling;for(var e=t.nextSibling;null!=e&&1!==e.nodeType;)e=e.nextSibling;return e},find:function(t,e){return t.getElementsByTagName?t.getElementsByTagName(e):[]},clone:$t,triggerHandler:function(t,e,n){var r,i,a,s=e.type||e,u=(yt(t,"events")||{})[s];u&&(r={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopPropagation:d,type:s,target:t},e.type&&(r=f(r,e)),i=_(u),a=n?[r].concat(n):[r],o(i,function(e){e.apply(t,a)}))}},function(t,e){dt.prototype[e]=function(e,n,r){for(var i,o=0;o<this.length;o++)g(i)?(i=t(this[o],e,n,r),m(i)&&(i=bn(i))):Ct(i,t(this[o],e,n,r));return m(i)?i:this},dt.prototype.bind=dt.prototype.on,dt.prototype.unbind=dt.prototype.off}),Nt.prototype={put:function(t,e){this[Mt(t,this.nextUid)]=e},get:function(t){return this[Mt(t,this.nextUid)]},remove:function(t){var e=this[t=Mt(t,this.nextUid)];return delete this[t],e}};var Kn=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Yn=/,/,Zn=/^\s*(_?)(\S+?)\1\s*$/,tr=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,er=r("$injector"),nr=r("$animate"),rr=["$provide",function(t){this.$$selectors={},this.register=function(e,n){var r=e+"-animation";if(e&&"."!=e.charAt(0))throw nr("notcsel","Expecting class selector starting with '.' got '{0}'.",e);this.$$selectors[e.substr(1)]=r,t.factory(r,n)},this.classNameFilter=function(t){return 1===arguments.length&&(this.$$classNameFilter=t instanceof RegExp?t:null),this.$$classNameFilter},this.$get=["$timeout","$$asyncCallback",function(t,e){function n(t){t&&e(t)}return{enter:function(t,e,r,i){r?r.after(t):(e&&e[0]||(e=r.parent()),e.append(t)),n(i)},leave:function(t,e){t.remove(),n(e)},move:function(t,e,n,r){this.enter(t,e,n,r)},addClass:function(t,e,r){e=w(e)?e:Nn(e)?e.join(" "):"",o(t,function(t){St(t,e)}),n(r)},removeClass:function(t,e,r){e=w(e)?e:Nn(e)?e.join(" "):"",o(t,function(t){xt(t,e)}),n(r)},setClass:function(t,e,r,i){o(t,function(t){St(t,e),xt(t,r)}),n(i)},enabled:d}}]}],ir=r("$compile");It.$inject=["$provide","$$sanitizeUriProvider"];var or=/^(x[\:\-_]|data[\:\-_])/i,ar=r("$interpolate"),sr=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,ur={http:80,https:443,ftp:21},cr=r("$location");he.prototype=fe.prototype=le.prototype={$$html5:!1,$$replace:!1,absUrl:pe("$$absUrl"),url:function(t){if(g(t))return this.$$url;var e=sr.exec(t);return e[1]&&this.path(decodeURIComponent(e[1])),(e[2]||e[1])&&this.search(e[3]||""),this.hash(e[5]||""),this},protocol:pe("$$protocol"),host:pe("$$host"),port:pe("$$port"),path:de("$$path",function(t){return t=null!==t?t.toString():"","/"==t.charAt(0)?t:"/"+t}),search:function(t,e){switch(arguments.length){case 0:return this.$$search;case 1:if(w(t)||b(t))t=t.toString(),this.$$search=Q(t);else{if(!y(t))throw cr("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");o(t,function(e,n){null==e&&delete t[n]}),this.$$search=t}break;default:g(e)||null===e?delete this.$$search[t]:this.$$search[t]=e}return this.$$compose(),this},hash:de("$$hash",function(t){return null!==t?t.toString():""}),replace:function(){return this.$$replace=!0,this}};var lr,fr=r("$parse"),hr={},pr=Function.prototype.call,dr=Function.prototype.apply,$r=Function.prototype.bind,vr={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:d,"+":function(t,e,r,i){return r=r(t,e),i=i(t,e),m(r)?m(i)?r+i:r:m(i)?i:n},"-":function(t,e,n,r){return n=n(t,e),r=r(t,e),(m(n)?n:0)-(m(r)?r:0)},"*":function(t,e,n,r){return n(t,e)*r(t,e)},"/":function(t,e,n,r){return n(t,e)/r(t,e)},"%":function(t,e,n,r){return n(t,e)%r(t,e)},"^":function(t,e,n,r){return n(t,e)^r(t,e)},"=":d,"===":function(t,e,n,r){return n(t,e)===r(t,e)},"!==":function(t,e,n,r){return n(t,e)!==r(t,e)},"==":function(t,e,n,r){return n(t,e)==r(t,e)},"!=":function(t,e,n,r){return n(t,e)!=r(t,e)},"<":function(t,e,n,r){return n(t,e)<r(t,e)},">":function(t,e,n,r){return n(t,e)>r(t,e)},"<=":function(t,e,n,r){return n(t,e)<=r(t,e)},">=":function(t,e,n,r){return n(t,e)>=r(t,e)},"&&":function(t,e,n,r){return n(t,e)&&r(t,e)},"||":function(t,e,n,r){return n(t,e)||r(t,e)},"&":function(t,e,n,r){return n(t,e)&r(t,e)},"|":function(t,e,n,r){return r(t,e)(t,e,n(t,e))},"!":function(t,e,n){return!n(t,e)}},gr={n:"\n",f:"\f",r:"\r",t:" ",v:"","'":"'",'"':'"'},mr=function(t){this.options=t};mr.prototype={constructor:mr,lex:function(t){for(this.text=t,this.index=0,this.ch=n,this.lastCh=":",this.tokens=[];this.index<this.text.length;){if(this.ch=this.text.charAt(this.index),this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent();else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch}),this.index++;else{if(this.isWhitespace(this.ch)){this.index++;continue}var e=this.ch+this.peek(),r=e+this.peek(2),i=vr[this.ch],o=vr[e],a=vr[r];a?(this.tokens.push({index:this.index,text:r,fn:a}),this.index+=3):o?(this.tokens.push({index:this.index,text:e,fn:o}),this.index+=2):i?(this.tokens.push({index:this.index,text:this.ch,fn:i}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(t){return-1!==t.indexOf(this.ch)},was:function(t){return-1!==t.indexOf(this.lastCh)},peek:function(t){var e=t||1;return this.index+e<this.text.length?this.text.charAt(this.index+e):!1},isNumber:function(t){return t>="0"&&"9">=t},isWhitespace:function(t){return" "===t||"\r"===t||" "===t||"\n"===t||""===t||" "===t},isIdent:function(t){return t>="a"&&"z">=t||t>="A"&&"Z">=t||"_"===t||"$"===t},isExpOperator:function(t){return"-"===t||"+"===t||this.isNumber(t)},throwError:function(t,e,n){n=n||this.index;var r=m(e)?"s "+e+"-"+this.index+" ["+this.text.substring(e,n)+"]":" "+n;throw fr("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",t,r,this.text)},readNumber:function(){for(var t="",e=this.index;this.index<this.text.length;){var n=$n(this.text.charAt(this.index));if("."==n||this.isNumber(n))t+=n;else{var r=this.peek();if("e"==n&&this.isExpOperator(r))t+=n;else if(this.isExpOperator(n)&&r&&this.isNumber(r)&&"e"==t.charAt(t.length-1))t+=n;else{if(!this.isExpOperator(n)||r&&this.isNumber(r)||"e"!=t.charAt(t.length-1))break;this.throwError("Invalid exponent")}}this.index++}t=1*t,this.tokens.push({index:e,text:t,literal:!0,constant:!0,fn:function(){return t}})},readIdent:function(){for(var t,e,n,r,i=this,o="",a=this.index;this.index<this.text.length&&(r=this.text.charAt(this.index),"."===r||this.isIdent(r)||this.isNumber(r));)"."===r&&(t=this.index),o+=r,this.index++;if(t)for(e=this.index;e<this.text.length;){if(r=this.text.charAt(e),"("===r){n=o.substr(t-a+1),o=o.substr(0,t-a),this.index=e;break}if(!this.isWhitespace(r))break;e++}var s={index:a,text:o};if(vr.hasOwnProperty(o))s.fn=vr[o],s.literal=!0,s.constant=!0;else{var u=Ce(o,this.options,this.text);s.fn=f(function(t,e){return u(t,e)},{assign:function(t,e){return we(t,o,e,i.text,i.options)}})}this.tokens.push(s),n&&(this.tokens.push({index:t,text:"."}),this.tokens.push({index:t+1,text:n}))},readString:function(t){var e=this.index;this.index++;for(var n="",r=t,i=!1;this.index<this.text.length;){var o=this.text.charAt(this.index);if(r+=o,i){if("u"===o){var a=this.text.substring(this.index+1,this.index+5);a.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+a+"]"),this.index+=4,n+=String.fromCharCode(parseInt(a,16))}else{var s=gr[o];n+=s||o}i=!1}else if("\\"===o)i=!0;else{if(o===t)return this.index++,void this.tokens.push({index:e,text:r,string:n,literal:!0,constant:!0,fn:function(){return n}});n+=o}this.index++}this.throwError("Unterminated quote",e)}};var yr=function(t,e,n){this.lexer=t,this.$filter=e,this.options=n};yr.ZERO=f(function(){return 0},{constant:!0}),yr.prototype={constructor:yr,parse:function(t){this.text=t,this.tokens=this.lexer.lex(t);var e=this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),e.literal=!!e.literal,e.constant=!!e.constant,e},primary:function(){var t;if(this.expect("("))t=this.filterChain(),this.consume(")");else if(this.expect("["))t=this.arrayDeclaration();else if(this.expect("{"))t=this.object();else{var e=this.expect();t=e.fn,t||this.throwError("not a primary expression",e),t.literal=!!e.literal,t.constant=!!e.constant}for(var n,r;n=this.expect("(","[",".");)"("===n.text?(t=this.functionCall(t,r),r=null):"["===n.text?(r=t,t=this.objectIndex(t)):"."===n.text?(r=t,t=this.fieldAccess(t)):this.throwError("IMPOSSIBLE");return t},throwError:function(t,e){throw fr("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",e.text,t,e.index+1,this.text,this.text.substring(e.index))},peekToken:function(){if(0===this.tokens.length)throw fr("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(t,e,n,r){if(this.tokens.length>0){var i=this.tokens[0],o=i.text;if(o===t||o===e||o===n||o===r||!t&&!e&&!n&&!r)return i}return!1},expect:function(t,e,n,r){var i=this.peek(t,e,n,r);return i?(this.tokens.shift(),i):!1},consume:function(t){this.expect(t)||this.throwError("is unexpected, expecting ["+t+"]",this.peek())},unaryFn:function(t,e){return f(function(n,r){return t(n,r,e)},{constant:e.constant})},ternaryFn:function(t,e,n){return f(function(r,i){return t(r,i)?e(r,i):n(r,i)},{constant:t.constant&&e.constant&&n.constant})},binaryFn:function(t,e,n){return f(function(r,i){return e(r,i,t,n)},{constant:t.constant&&n.constant})},statements:function(){for(var t=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&t.push(this.filterChain()),!this.expect(";"))return 1===t.length?t[0]:function(e,n){for(var r,i=0;i<t.length;i++){var o=t[i];o&&(r=o(e,n))}return r}},filterChain:function(){for(var t,e=this.expression();;){if(!(t=this.expect("|")))return e;e=this.binaryFn(e,t.fn,this.filter())}},filter:function(){for(var t=this.expect(),e=this.$filter(t.text),n=[];;){if(!(t=this.expect(":"))){var r=function(t,r,i){for(var o=[i],a=0;a<n.length;a++)o.push(n[a](t,r));return e.apply(t,o)};return function(){return r}}n.push(this.expression())}},expression:function(){return this.assignment()},assignment:function(){var t,e,n=this.ternary();return(e=this.expect("="))?(n.assign||this.throwError("implies assignment but ["+this.text.substring(0,e.index)+"] can not be assigned to",e),t=this.ternary(),function(e,r){return n.assign(e,t(e,r),r)}):n},ternary:function(){var t,e,n=this.logicalOR();return(e=this.expect("?"))?(t=this.assignment(),(e=this.expect(":"))?this.ternaryFn(n,t,this.assignment()):void this.throwError("expected :",e)):n},logicalOR:function(){for(var t,e=this.logicalAND();;){if(!(t=this.expect("||")))return e;e=this.binaryFn(e,t.fn,this.logicalAND())}},logicalAND:function(){var t,e=this.equality();return(t=this.expect("&&"))&&(e=this.binaryFn(e,t.fn,this.logicalAND())),e},equality:function(){var t,e=this.relational();return(t=this.expect("==","!=","===","!=="))&&(e=this.binaryFn(e,t.fn,this.equality())),e},relational:function(){var t,e=this.additive();return(t=this.expect("<",">","<=",">="))&&(e=this.binaryFn(e,t.fn,this.relational())),e},additive:function(){for(var t,e=this.multiplicative();t=this.expect("+","-");)e=this.binaryFn(e,t.fn,this.multiplicative());return e},multiplicative:function(){for(var t,e=this.unary();t=this.expect("*","/","%");)e=this.binaryFn(e,t.fn,this.unary());return e},unary:function(){var t;return this.expect("+")?this.primary():(t=this.expect("-"))?this.binaryFn(yr.ZERO,t.fn,this.unary()):(t=this.expect("!"))?this.unaryFn(t.fn,this.unary()):this.primary()},fieldAccess:function(t){var e=this,n=this.expect().text,r=Ce(n,this.options,this.text);return f(function(e,n,i){return r(i||t(e,n))},{assign:function(r,i,o){var a=t(r,o);return a||t.assign(r,a={}),we(a,n,i,e.text,e.options)}})},objectIndex:function(t){var e=this,r=this.expression();return this.consume("]"),f(function(i,o){var a,s,u=t(i,o),c=r(i,o);return ge(c,e.text),u?(a=me(u[c],e.text),a&&a.then&&e.options.unwrapPromises&&(s=a,"$$v"in a||(s.$$v=n,s.then(function(t){s.$$v=t})),a=a.$$v),a):n},{assign:function(n,i,o){var a=ge(r(n,o),e.text),s=me(t(n,o),e.text);return s||t.assign(n,s={}),s[a]=i}})},functionCall:function(t,e){var n=[];if(")"!==this.peekToken().text)do n.push(this.expression());while(this.expect(","));this.consume(")");var r=this;return function(i,o){for(var a=[],s=e?e(i,o):i,u=0;u<n.length;u++)a.push(me(n[u](i,o),r.text));var c=t(i,o,s)||d;me(s,r.text),ye(c,r.text);var l=c.apply?c.apply(s,a):c(a[0],a[1],a[2],a[3],a[4]);return me(l,r.text)}},arrayDeclaration:function(){var t=[],e=!0;if("]"!==this.peekToken().text)do{if(this.peek("]"))break;var n=this.expression();t.push(n),n.constant||(e=!1)}while(this.expect(","));return this.consume("]"),f(function(e,n){for(var r=[],i=0;i<t.length;i++)r.push(t[i](e,n));return r},{literal:!0,constant:e})},object:function(){var t=[],e=!0;if("}"!==this.peekToken().text)do{if(this.peek("}"))break;var n=this.expect(),r=n.string||n.text;this.consume(":");var i=this.expression();t.push({key:r,value:i}),i.constant||(e=!1)}while(this.expect(","));return this.consume("}"),f(function(e,n){for(var r={},i=0;i<t.length;i++){var o=t[i];r[o.key]=o.value(e,n)}return r},{literal:!0,constant:e})}};var wr={},br={},xr=r("$sce"),Sr={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Cr=e.createElement("a"),kr=Ue(t.location.href,!0);Fe.$inject=["$provide"],He.$inject=["$locale"],Be.$inject=["$locale"];var Er=".",Ar={yyyy:Qe("FullYear",4),yy:Qe("FullYear",2,0,!0),y:Qe("FullYear",1),MMMM:Je("Month"),MMM:Je("Month",!0),MM:Qe("Month",2,1),M:Qe("Month",1,1),dd:Qe("Date",2),d:Qe("Date",1),HH:Qe("Hours",2),H:Qe("Hours",1),hh:Qe("Hours",2,-12),h:Qe("Hours",1,-12),mm:Qe("Minutes",2),m:Qe("Minutes",1),ss:Qe("Seconds",2),
|
9
|
+
s:Qe("Seconds",1),sss:Qe("Milliseconds",3),EEEE:Je("Day"),EEE:Je("Day",!0),a:Xe,Z:Ge},Or=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Tr=/^\-?\d+$/;Ke.$inject=["$locale"];var Mr=v($n),Nr=v(gn);tn.$inject=["$parse"];var Pr=v({restrict:"E",compile:function(t,n){return 8>=wn&&(n.href||n.name||n.$set("href",""),t.append(e.createComment("IE fix"))),n.href||n.xlinkHref||n.name?void 0:function(t,e){var n="[object SVGAnimatedString]"===An.call(e.prop("href"))?"xlink:href":"href";e.on("click",function(t){e.attr(n)||t.preventDefault()})}}}),jr={};o(Gn,function(t,e){if("multiple"!=t){var n=Ft("ng-"+e);jr[n]=function(){return{priority:100,link:function(t,r,i){t.$watch(i[n],function(t){i.$set(e,!!t)})}}}}}),o(["src","srcset","href"],function(t){var e=Ft("ng-"+t);jr[e]=function(){return{priority:99,link:function(n,r,i){var o=t,a=t;"href"===t&&"[object SVGAnimatedString]"===An.call(r.prop("href"))&&(a="xlinkHref",i.$attr[a]="xlink:href",o=null),i.$observe(e,function(e){return e?(i.$set(a,e),void(wn&&o&&r.prop(o,i[a]))):void("href"===t&&i.$set(a,null))})}}}});var Dr={$addControl:d,$removeControl:d,$setValidity:d,$setDirty:d,$setPristine:d};nn.$inject=["$element","$attrs","$scope","$animate"];var Rr=function(t){return["$timeout",function(e){var r={name:"form",restrict:t?"EAC":"E",controller:nn,compile:function(){return{pre:function(t,r,i,o){if(!i.action){var a=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1};Un(r[0],"submit",a),r.on("$destroy",function(){e(function(){Vn(r[0],"submit",a)},0,!1)})}var s=r.parent().controller("form"),u=i.name||i.ngForm;u&&we(t,u,o,u),s&&r.on("$destroy",function(){s.$removeControl(o),u&&we(t,u,n,u),f(o,Dr)})}}}};return r}]},_r=Rr(),qr=Rr(!0),Ur=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Vr=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ir=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Fr={text:sn,number:un,url:cn,email:ln,radio:fn,checkbox:hn,hidden:d,button:d,submit:d,reset:d,file:d},Lr=["badInput"],Hr=["$browser","$sniffer",function(t,e){return{restrict:"E",require:"?ngModel",link:function(n,r,i,o){o&&(Fr[$n(i.type)]||Fr.text)(n,r,i,o,e,t)}}}],Br="ng-valid",zr="ng-invalid",Wr="ng-pristine",Qr="ng-dirty",Jr=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(t,e,n,i,a,s){function u(t,e){e=e?"-"+Z(e,"-"):"",s.removeClass(i,(t?zr:Br)+e),s.addClass(i,(t?Br:zr)+e)}this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$name=n.name;var c=a(n.ngModel),l=c.assign;if(!l)throw r("ngModel")("nonassign","Expression '{0}' is non-assignable. Element: {1}",n.ngModel,z(i));this.$render=d,this.$isEmpty=function(t){return g(t)||""===t||null===t||t!==t};var f=i.inheritedData("$formController")||Dr,h=0,p=this.$error={};i.addClass(Wr),u(!0),this.$setValidity=function(t,e){p[t]!==!e&&(e?(p[t]&&h--,h||(u(!0),this.$valid=!0,this.$invalid=!1)):(u(!1),this.$invalid=!0,this.$valid=!1,h++),p[t]=!e,u(e,t),f.$setValidity(t,e,this))},this.$setPristine=function(){this.$dirty=!1,this.$pristine=!0,s.removeClass(i,Qr),s.addClass(i,Wr)},this.$setViewValue=function(n){this.$viewValue=n,this.$pristine&&(this.$dirty=!0,this.$pristine=!1,s.removeClass(i,Wr),s.addClass(i,Qr),f.$setDirty()),o(this.$parsers,function(t){n=t(n)}),this.$modelValue!==n&&(this.$modelValue=n,l(t,n),o(this.$viewChangeListeners,function(t){try{t()}catch(n){e(n)}}))};var $=this;t.$watch(function(){var e=c(t);if($.$modelValue!==e){var n=$.$formatters,r=n.length;for($.$modelValue=e;r--;)e=n[r](e);$.$viewValue!==e&&($.$viewValue=e,$.$render())}return e})}],Gr=function(){return{require:["ngModel","^?form"],controller:Jr,link:function(t,e,n,r){var i=r[0],o=r[1]||Dr;o.$addControl(i),t.$on("$destroy",function(){o.$removeControl(i)})}}},Xr=v({require:"ngModel",link:function(t,e,n,r){r.$viewChangeListeners.push(function(){t.$eval(n.ngChange)})}}),Kr=function(){return{require:"?ngModel",link:function(t,e,n,r){if(r){n.required=!0;var i=function(t){return n.required&&r.$isEmpty(t)?void r.$setValidity("required",!1):(r.$setValidity("required",!0),t)};r.$formatters.push(i),r.$parsers.unshift(i),n.$observe("required",function(){i(r.$viewValue)})}}}},Yr=function(){return{require:"ngModel",link:function(t,e,r,i){var a=/\/(.*)\//.exec(r.ngList),s=a&&new RegExp(a[1])||r.ngList||",",u=function(t){if(!g(t)){var e=[];return t&&o(t.split(s),function(t){t&&e.push(Pn(t))}),e}};i.$parsers.push(u),i.$formatters.push(function(t){return Nn(t)?t.join(", "):n}),i.$isEmpty=function(t){return!t||!t.length}}}},Zr=/^(true|false|\d+)$/,ti=function(){return{priority:100,compile:function(t,e){return Zr.test(e.ngValue)?function(t,e,n){n.$set("value",t.$eval(n.ngValue))}:function(t,e,n){t.$watch(n.ngValue,function(t){n.$set("value",t)})}}}},ei=en({compile:function(t){return t.addClass("ng-binding"),function(t,e,r){e.data("$binding",r.ngBind),t.$watch(r.ngBind,function(t){e.text(t==n?"":t)})}}}),ni=["$interpolate",function(t){return function(e,n,r){var i=t(n.attr(r.$attr.ngBindTemplate));n.addClass("ng-binding").data("$binding",i),r.$observe("ngBindTemplate",function(t){n.text(t)})}}],ri=["$sce","$parse",function(t,e){return{compile:function(n){return n.addClass("ng-binding"),function(n,r,i){function o(){return(a(n)||"").toString()}r.data("$binding",i.ngBindHtml);var a=e(i.ngBindHtml);n.$watch(o,function(e){r.html(t.getTrustedHtml(a(n))||"")})}}}}],ii=pn("",!0),oi=pn("Odd",0),ai=pn("Even",1),si=en({compile:function(t,e){e.$set("ngCloak",n),t.removeClass("ng-cloak")}}),ui=[function(){return{scope:!0,controller:"@",priority:500}}],ci={},li={blur:!0,focus:!0};o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(t){var e=Ft("ng-"+t);ci[e]=["$parse","$rootScope",function(n,r){return{compile:function(i,o){var a=n(o[e],!0);return function(e,n){n.on(t,function(n){var i=function(){a(e,{$event:n})};li[t]&&r.$$phase?e.$evalAsync(i):e.$apply(i)})}}}}]});var fi=["$animate",function(t){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,r,i,o,a){var s,u,c;n.$watch(i.ngIf,function(o){B(o)?u||(u=n.$new(),a(u,function(n){n[n.length++]=e.createComment(" end ngIf: "+i.ngIf+" "),s={clone:n},t.enter(n,r.parent(),r)})):(c&&(c.remove(),c=null),u&&(u.$destroy(),u=null),s&&(c=ot(s.clone),t.leave(c,function(){c=null}),s=null))})}}}],hi=["$http","$templateCache","$anchorScroll","$animate","$sce",function(t,e,n,r,i){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Tn.noop,compile:function(o,a){var s=a.ngInclude||a.src,u=a.onload||"",c=a.autoscroll;return function(o,a,l,f,h){var p,d,$,v=0,g=function(){d&&(d.remove(),d=null),p&&(p.$destroy(),p=null),$&&(r.leave($,function(){d=null}),d=$,$=null)};o.$watch(i.parseAsResourceUrl(s),function(i){var s=function(){!m(c)||c&&!o.$eval(c)||n()},l=++v;i?(t.get(i,{cache:e}).success(function(t){if(l===v){var e=o.$new();f.template=t;var n=h(e,function(t){g(),r.enter(t,null,a,s)});p=e,$=n,p.$emit("$includeContentLoaded"),o.$eval(u)}}).error(function(){l===v&&g()}),o.$emit("$includeContentRequested")):(g(),f.template=null)})}}}}],pi=["$compile",function(t){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(e,n,r,i){n.html(i.template),t(n.contents())(e)}}}],di=en({priority:450,compile:function(){return{pre:function(t,e,n){t.$eval(n.ngInit)}}}}),$i=en({terminal:!0,priority:1e3}),vi=["$locale","$interpolate",function(t,e){var n=/{}/g;return{restrict:"EA",link:function(r,i,a){var s=a.count,u=a.$attr.when&&i.attr(a.$attr.when),c=a.offset||0,l=r.$eval(u)||{},f={},h=e.startSymbol(),p=e.endSymbol(),d=/^when(Minus)?(.+)$/;o(a,function(t,e){d.test(e)&&(l[$n(e.replace("when","").replace("Minus","-"))]=i.attr(a.$attr[e]))}),o(l,function(t,r){f[r]=e(t.replace(n,h+s+"-"+c+p))}),r.$watch(function(){var e=parseFloat(r.$eval(s));return isNaN(e)?"":(e in l||(e=t.pluralCat(e-c)),f[e](r,i,!0))},function(t){i.text(t)})}}}],gi=["$parse","$animate",function(t,n){function a(t){return t.clone[0]}function s(t){return t.clone[t.clone.length-1]}var u="$$NG_REMOVED",c=r("ngRepeat");return{transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,link:function(r,l,f,h,p){var d,$,v,g,m,y,w,b,x,S=f.ngRepeat,C=S.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),k={$id:Mt};if(!C)throw c("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",S);if(y=C[1],w=C[2],d=C[3],d?($=t(d),v=function(t,e,n){return x&&(k[x]=t),k[b]=e,k.$index=n,$(r,k)}):(g=function(t,e){return Mt(e)},m=function(t){return t}),C=y.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/),!C)throw c("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",y);b=C[3]||C[1],x=C[2];var E={};r.$watchCollection(w,function(t){var f,h,d,$,y,w,C,k,A,O,T,M,N=l[0],P={},j=[];if(i(t))O=t,A=v||g;else{A=v||m,O=[];for(w in t)t.hasOwnProperty(w)&&"$"!=w.charAt(0)&&O.push(w);O.sort()}for($=O.length,h=j.length=O.length,f=0;h>f;f++)if(w=t===O?f:O[f],C=t[w],k=A(w,C,f),rt(k,"`track by` id"),E.hasOwnProperty(k))T=E[k],delete E[k],P[k]=T,j[f]=T;else{if(P.hasOwnProperty(k))throw o(j,function(t){t&&t.scope&&(E[t.id]=t)}),c("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",S,k,L(C));j[f]={id:k},P[k]=!1}for(w in E)E.hasOwnProperty(w)&&(T=E[w],M=ot(T.clone),n.leave(M),o(M,function(t){t[u]=!0}),T.scope.$destroy());for(f=0,h=O.length;h>f;f++){if(w=t===O?f:O[f],C=t[w],T=j[f],j[f-1]&&(N=s(j[f-1])),T.scope){y=T.scope,d=N;do d=d.nextSibling;while(d&&d[u]);a(T)!=d&&n.move(ot(T.clone),null,bn(N)),N=s(T)}else y=r.$new();y[b]=C,x&&(y[x]=w),y.$index=f,y.$first=0===f,y.$last=f===$-1,y.$middle=!(y.$first||y.$last),y.$odd=!(y.$even=0===(1&f)),T.scope||p(y,function(t){t[t.length++]=e.createComment(" end ngRepeat: "+S+" "),n.enter(t,null,bn(N)),N=t,T.scope=y,T.clone=t,P[T.id]=T})}E=P})}}}],mi=["$animate",function(t){return function(e,n,r){e.$watch(r.ngShow,function(e){t[B(e)?"removeClass":"addClass"](n,"ng-hide")})}}],yi=["$animate",function(t){return function(e,n,r){e.$watch(r.ngHide,function(e){t[B(e)?"addClass":"removeClass"](n,"ng-hide")})}}],wi=en(function(t,e,n){t.$watch(n.ngStyle,function(t,n){n&&t!==n&&o(n,function(t,n){e.css(n,"")}),t&&e.css(t)},!0)}),bi=["$animate",function(t){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(e,n,r,i){var a=r.ngSwitch||r.on,s=[],u=[],c=[],l=[];e.$watch(a,function(n){var a,f;for(a=0,f=c.length;f>a;++a)c[a].remove();for(c.length=0,a=0,f=l.length;f>a;++a){var h=u[a];l[a].$destroy(),c[a]=h,t.leave(h,function(){c.splice(a,1)})}u.length=0,l.length=0,(s=i.cases["!"+n]||i.cases["?"])&&(e.$eval(r.change),o(s,function(n){var r=e.$new();l.push(r),n.transclude(r,function(e){var r=n.element;u.push(e),t.enter(e,r.parent(),r)})}))})}}}],xi=en({transclude:"element",priority:800,require:"^ngSwitch",link:function(t,e,n,r,i){r.cases["!"+n.ngSwitchWhen]=r.cases["!"+n.ngSwitchWhen]||[],r.cases["!"+n.ngSwitchWhen].push({transclude:i,element:e})}}),Si=en({transclude:"element",priority:800,require:"^ngSwitch",link:function(t,e,n,r,i){r.cases["?"]=r.cases["?"]||[],r.cases["?"].push({transclude:i,element:e})}}),Ci=en({link:function(t,e,n,i,o){if(!o)throw r("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",z(e));o(function(t){e.empty(),e.append(t)})}}),ki=["$templateCache",function(t){return{restrict:"E",terminal:!0,compile:function(e,n){if("text/ng-template"==n.type){var r=n.id,i=e[0].text;t.put(r,i)}}}}],Ei=r("ngOptions"),Ai=v({terminal:!0}),Oi=["$compile","$parse",function(t,r){var i=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,s={$setViewValue:d};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(t,e,n){var r,i,o=this,a={},u=s;o.databound=n.ngModel,o.init=function(t,e,n){u=t,r=e,i=n},o.addOption=function(e){rt(e,'"option value"'),a[e]=!0,u.$viewValue==e&&(t.val(e),i.parent()&&i.remove())},o.removeOption=function(t){this.hasOption(t)&&(delete a[t],u.$viewValue==t&&this.renderUnknownOption(t))},o.renderUnknownOption=function(e){var n="? "+Mt(e)+" ?";i.val(n),t.prepend(i),t.val(n),i.prop("selected",!0)},o.hasOption=function(t){return a.hasOwnProperty(t)},e.$on("$destroy",function(){o.renderUnknownOption=d})}],link:function(s,u,c,l){function f(t,e,n,r){n.$render=function(){var t=n.$viewValue;r.hasOption(t)?(C.parent()&&C.remove(),e.val(t),""===t&&d.prop("selected",!0)):g(t)&&d?e.val(""):r.renderUnknownOption(t)},e.on("change",function(){t.$apply(function(){C.parent()&&C.remove(),n.$setViewValue(e.val())})})}function h(t,e,n){var r;n.$render=function(){var t=new Nt(n.$viewValue);o(e.find("option"),function(e){e.selected=m(t.get(e.value))})},t.$watch(function(){q(r,n.$viewValue)||(r=_(n.$viewValue),n.$render())}),e.on("change",function(){t.$apply(function(){var t=[];o(e.find("option"),function(e){e.selected&&t.push(e.value)}),n.$setViewValue(t)})})}function p(e,o,s){function u(){var t=!1;if(y){var n=s.$modelValue;if(k&&Nn(n)){t=new Nt([]);for(var r={},i=0;i<n.length;i++)r[h]=n[i],t.put(k(e,r),n[i])}else t=new Nt(n)}return t}function c(){var t,n,r,i,c,l,w,C,A,O,T,M,N,P,j,D={"":[]},R=[""],_=s.$modelValue,q=g(e)||[],U=p?a(q):q,V={},I=u();for(T=0;A=U.length,A>T;T++){if(w=T,p){if(w=U[T],"$"===w.charAt(0))continue;V[p]=w}if(V[h]=q[w],t=d(e,V)||"",(n=D[t])||(n=D[t]=[],R.push(t)),y)M=m(I.remove(k?k(e,V):v(e,V)));else{if(k){var F={};F[h]=_,M=k(e,F)===k(e,V)}else M=_===v(e,V);I=I||M}j=f(e,V),j=m(j)?j:"",n.push({id:k?k(e,V):p?U[T]:T,label:j,selected:M})}for(y||(b||null===_?D[""].unshift({id:"",label:"",selected:!I}):I||D[""].unshift({id:"?",label:"",selected:!0})),O=0,C=R.length;C>O;O++){for(t=R[O],n=D[t],E.length<=O?(i={element:S.clone().attr("label",t),label:n.label},c=[i],E.push(c),o.append(i.element)):(c=E[O],i=c[0],i.label!=t&&i.element.attr("label",i.label=t)),N=null,T=0,A=n.length;A>T;T++)r=n[T],(l=c[T+1])?(N=l.element,l.label!==r.label&&(N.text(l.label=r.label),N.prop("label",l.label)),l.id!==r.id&&N.val(l.id=r.id),N[0].selected!==r.selected&&(N.prop("selected",l.selected=r.selected),wn&&N.prop("selected",l.selected))):(""===r.id&&b?P=b:(P=x.clone()).val(r.id).prop("selected",r.selected).attr("selected",r.selected).prop("label",r.label).text(r.label),c.push(l={element:P,label:r.label,id:r.id,selected:r.selected}),$.addOption(r.label,P),N?N.after(P):i.element.append(P),N=P);for(T++;c.length>T;)r=c.pop(),$.removeOption(r.label),r.element.remove()}for(;E.length>O;)E.pop()[0].element.remove()}var l;if(!(l=w.match(i)))throw Ei("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",w,z(o));var f=r(l[2]||l[1]),h=l[4]||l[6],p=l[5],d=r(l[3]||""),v=r(l[2]?l[1]:h),g=r(l[7]),C=l[8],k=C?r(l[8]):null,E=[[{element:o,label:""}]];b&&(t(b)(e),b.removeClass("ng-scope"),b.remove()),o.empty(),o.on("change",function(){e.$apply(function(){var t,r,i,a,u,l,f,d,$,m=g(e)||[],w={};if(y){for(i=[],l=0,d=E.length;d>l;l++)for(t=E[l],u=1,f=t.length;f>u;u++)if((a=t[u].element)[0].selected){if(r=a.val(),p&&(w[p]=r),k)for($=0;$<m.length&&(w[h]=m[$],k(e,w)!=r);$++);else w[h]=m[r];i.push(v(e,w))}}else if(r=o.val(),"?"==r)i=n;else if(""===r)i=null;else if(k){for($=0;$<m.length;$++)if(w[h]=m[$],k(e,w)==r){i=v(e,w);break}}else w[h]=m[r],p&&(w[p]=r),i=v(e,w);s.$setViewValue(i),c()})}),s.$render=c,e.$watchCollection(g,c),e.$watchCollection(function(){var t={},n=g(e);if(n){for(var r=new Array(n.length),i=0,o=n.length;o>i;i++)t[h]=n[i],r[i]=f(e,t);return r}},c),y&&e.$watchCollection(function(){return s.$modelValue},c)}if(l[1]){for(var d,$=l[0],v=l[1],y=c.multiple,w=c.ngOptions,b=!1,x=bn(e.createElement("option")),S=bn(e.createElement("optgroup")),C=x.clone(),k=0,E=u.children(),A=E.length;A>k;k++)if(""===E[k].value){d=b=E.eq(k);break}$.init(v,b,C),y&&(v.$isEmpty=function(t){return!t||0===t.length}),w?p(s,u,v):y?h(s,u,v):f(s,u,v,$)}}}}],Ti=["$interpolate",function(t){var e={addOption:d,removeOption:d};return{restrict:"E",priority:100,compile:function(n,r){if(g(r.value)){var i=t(n.text(),!0);i||r.$set("value",n.text())}return function(t,n,r){var o="$selectController",a=n.parent(),s=a.data(o)||a.parent().data(o);s&&s.databound?n.prop("selected",!1):s=e,i?t.$watch(i,function(t,e){r.$set("value",t),t!==e&&s.removeOption(e),s.addOption(t)}):s.addOption(r.value),n.on("$destroy",function(){s.removeOption(r.value)})}}}}],Mi=v({restrict:"E",terminal:!0});return t.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(tt(),st(Tn),void bn(e).ready(function(){K(e,Y)}))}(window,document),!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}</style>'),i("undefined"!=typeof angular?angular:window.angular)}).call(global,void 0,void 0,void 0,void 0,function(t){module.exports=t});
|
10
|
+
|
11
|
+
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
12
|
+
},{}],3:[function(require,module,exports){
|
13
|
+
!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.9",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(e<i.idx)return this.list=new t.Vector.Node(e,n,i),this.length++;for(var o=i,r=i.next;void 0!=r;){if(e<r.idx)return o.next=new t.Vector.Node(e,n,r),this.length++;o=r,r=r.next}return o.next=new t.Vector.Node(e,n,r),this.length++},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t,e=this.list,n=0;e;)t=e.val,n+=t*t,e=e.next;return this._magnitude=Math.sqrt(n)},t.Vector.prototype.dot=function(t){for(var e=this.list,n=t.list,i=0;e&&n;)e.idx<n.idx?e=e.next:e.idx>n.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t<arguments.length;t++)e=arguments[t],~this.indexOf(e)||this.elements.splice(this.locationFor(e),0,e);this.length=this.elements.length},t.SortedSet.prototype.toArray=function(){return this.elements.slice()},t.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},t.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},t.SortedSet.prototype.indexOf=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]<h[o]?i++:a[i]>h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s<o.length;s++){var a=o.elements[s],h=this._fields.reduce(function(t,e){var n=i[e.name].length;if(!n)return t;var o=i[e.name].filter(function(t){return t===a}).length;return t+o/n*e.boost},0);this.tokenStore.add(a,{ref:r,tf:h})}n&&this.eventEmitter.emit("add",e,this)},t.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var i=this.documentStore.get(n);this.documentStore.remove(n),i.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},t.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},t.Index.prototype.idf=function(t){var e="@"+t;if(Object.prototype.hasOwnProperty.call(this._idfCache,e))return this._idfCache[e];var n=this.tokenStore.count(t),i=1;return n>0&&(i=1+Math.log(this.tokenStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),p=new RegExp(a),f=new RegExp(l),d=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,E=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,b=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=d,a=v,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=m,a=g,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=f,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=p,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return-1===t.stopWordFilter.stopWords.indexOf(e)?e:void 0},t.stopWordFilter.stopWords=new t.SortedSet,t.stopWordFilter.stopWords.length=119,t.stopWordFilter.stopWords.elements=["","a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"],t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n<t.length;n++){if(!e[t[n]])return!1;e=e[t[n]]}return!0},t.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;n<t.length;n++){if(!e[t[n]])return{};e=e[t[n]]}return e},t.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},t.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},t.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,i=0;i<t.length;i++){if(!(t[i]in n))return;n=n[t[i]]}delete n.docs[e]}},t.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),i=n.docs||{},e=e||[];return Object.keys(i).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},t.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}},function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.lunr=e()}(this,function(){return t})}();
|
14
|
+
|
15
|
+
},{}],4:[function(require,module,exports){
|
16
|
+
"use strict";var angular=require("./../../bower_components/angular/angular"),lunr=require("./../../bower_components/lunr.js/lunr"),_livesearch=require("./../../bower_components/angular-livesearch/liveSearch"),ngHub=angular.module("hubSearch",["LiveSearch"]);ngHub.factory("searchIndexPromise",["$http","$q",function(e,n){return e.get(SEARCH_BASEURL+"/search-index.json").then(function(e){return e.data})}]),ngHub.factory("searchIndex",["searchIndexPromise",function(e){var n={};return e.then(function(e){n.url_to_doc=e.url_to_doc,n.index=lunr.Index.load(e.index)}),n}]),ngHub.factory("pagesSearch",["searchIndex",function(e){return function(n){var r=e.index.search(n);return angular.forEach(r,function(n){var r=e.url_to_doc[n.ref];n.page=r,n.displayTitle=r.title||r.url}),r}}]),ngHub.factory("searchUi",["$document",function(e){var n=function(e){return 191===e},r=function(e){var n=e.tagName.toLowerCase();return"input"===n},t=function(){var e=angular.element("#search1")[0];e.focus()},a=function(e){n(e.keyCode)&&!r(document.activeElement)&&(e.stopPropagation(),e.preventDefault(),t())};return{enableGlobalShortcut:function(){angular.element(e[0].body).on("keydown",a)},getSelectedResult:function(){var e=angular.element(".searchresultspopup").scope(),n=e.selectedIndex;return e.results[n]}}}]),ngHub.controller("SearchController",["$scope","$q","searchUi","pagesSearch",function(e,n,r,t){r.enableGlobalShortcut();var a=function(e){return 13===e};e.searchKeyDown=function(e){if(a(e.keyCode)){var n=r.getSelectedResult();window.location=n.page.url}},e.searchCallback=function(e){var r=n.defer(),a=t(e.query);return r.resolve(a),r.promise}}]),angular.bootstrap(document.documentElement,["hubSearch"]);
|
17
|
+
},{"./../../bower_components/angular-livesearch/liveSearch":1,"./../../bower_components/angular/angular":2,"./../../bower_components/lunr.js/lunr":3}]},{},[4]);
|
Binary file
|
data/assets/js/search.js
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var angular = require('angular/angular');
|
4
|
+
var lunr = require('lunr.js/lunr');
|
5
|
+
var _livesearch = require('angular-livesearch/liveSearch');
|
6
|
+
var ngHub = angular.module('hubSearch', ['LiveSearch']);
|
7
|
+
|
8
|
+
ngHub.factory('searchIndexPromise', ["$http", "$q", function($http, $q) {
|
9
|
+
return $http.get(SEARCH_BASEURL + '/search-index.json').then(function(response) {
|
10
|
+
return response.data;
|
11
|
+
});
|
12
|
+
}]);
|
13
|
+
|
14
|
+
ngHub.factory('searchIndex', ["searchIndexPromise", function(searchIndexPromise) {
|
15
|
+
var container = {};
|
16
|
+
searchIndexPromise.then(function(index_json) {
|
17
|
+
container.url_to_doc = index_json.url_to_doc;
|
18
|
+
container.index = lunr.Index.load(index_json.index);
|
19
|
+
});
|
20
|
+
return container;
|
21
|
+
}]);
|
22
|
+
|
23
|
+
ngHub.factory('pagesSearch', ["searchIndex", function(searchIndex) {
|
24
|
+
return function(term) {
|
25
|
+
var results = searchIndex.index.search(term);
|
26
|
+
angular.forEach(results, function(result) {
|
27
|
+
var page = searchIndex.url_to_doc[result.ref];
|
28
|
+
result.page = page;
|
29
|
+
// make top-level attribute available for LiveSearch
|
30
|
+
result.displayTitle = page.title || page.url;
|
31
|
+
});
|
32
|
+
return results;
|
33
|
+
};
|
34
|
+
}]);
|
35
|
+
|
36
|
+
// based on https://github.com/angular/angular.js/blob/54ddca537/docs/app/src/search.js#L198-L206
|
37
|
+
ngHub.factory('searchUi', ["$document", function($document) {
|
38
|
+
var isForwardSlash = function(keyCode) {
|
39
|
+
return keyCode === 191;
|
40
|
+
};
|
41
|
+
|
42
|
+
var isInput = function(el) {
|
43
|
+
var tagName = el.tagName.toLowerCase();
|
44
|
+
return tagName === 'input';
|
45
|
+
};
|
46
|
+
|
47
|
+
var giveSearchFocus = function() {
|
48
|
+
var input = angular.element('#search1')[0];
|
49
|
+
input.focus();
|
50
|
+
};
|
51
|
+
|
52
|
+
var onKeyDown = function(event) {
|
53
|
+
if (isForwardSlash(event.keyCode) && !isInput(document.activeElement)) {
|
54
|
+
event.stopPropagation();
|
55
|
+
event.preventDefault();
|
56
|
+
giveSearchFocus();
|
57
|
+
}
|
58
|
+
};
|
59
|
+
|
60
|
+
return {
|
61
|
+
enableGlobalShortcut: function() {
|
62
|
+
angular.element($document[0].body).on('keydown', onKeyDown);
|
63
|
+
},
|
64
|
+
|
65
|
+
getSelectedResult: function() {
|
66
|
+
// TODO find a less hacky way to retrieve this
|
67
|
+
var selectionScope = angular.element('.searchresultspopup').scope();
|
68
|
+
var resultIndex = selectionScope.selectedIndex;
|
69
|
+
return selectionScope.results[resultIndex];
|
70
|
+
}
|
71
|
+
};
|
72
|
+
}]);
|
73
|
+
|
74
|
+
ngHub.controller('SearchController', ["$scope", "$q", "searchUi", "pagesSearch", function($scope, $q, searchUi, pagesSearch) {
|
75
|
+
searchUi.enableGlobalShortcut();
|
76
|
+
|
77
|
+
var isEnter = function(keyCode) {
|
78
|
+
return keyCode === 13;
|
79
|
+
}
|
80
|
+
|
81
|
+
$scope.searchKeyDown = function($event) {
|
82
|
+
if (isEnter($event.keyCode)) {
|
83
|
+
var result = searchUi.getSelectedResult();
|
84
|
+
window.location = result.page.url;
|
85
|
+
}
|
86
|
+
};
|
87
|
+
|
88
|
+
$scope.searchCallback = function(params) {
|
89
|
+
var defer = $q.defer();
|
90
|
+
var results = pagesSearch(params.query);
|
91
|
+
defer.resolve(results);
|
92
|
+
return defer.promise;
|
93
|
+
};
|
94
|
+
}]);
|
95
|
+
|
96
|
+
angular.bootstrap(document.documentElement, ["hubSearch"]);
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# @author Mike Bland (michael.bland@gsa.gov)
|
2
|
+
|
3
|
+
require 'jekyll_pages_api_search/js_copier'
|
4
|
+
require 'jekyll_pages_api_search/sass'
|
5
|
+
require 'jekyll_pages_api_search/search'
|
6
|
+
require 'jekyll_pages_api_search/search_hook'
|
7
|
+
require 'jekyll_pages_api_search/tags'
|
8
|
+
require 'jekyll_pages_api_search/version'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# @author Mike Bland (michael.bland@gsa.gov)
|
2
|
+
|
3
|
+
require 'jekyll/static_file'
|
4
|
+
|
5
|
+
module JekyllPagesApiSearch
|
6
|
+
class JavascriptCopier
|
7
|
+
def self.copy_to_site(site)
|
8
|
+
assets_path = File.join('assets', 'js')
|
9
|
+
source = File.realpath(File.join(File.dirname(__FILE__), '..', '..'))
|
10
|
+
begin_path = source.size + File::SEPARATOR.size
|
11
|
+
Dir[File.join(source, assets_path, '**', '*.js*')].each do |f|
|
12
|
+
next unless File.file? f
|
13
|
+
f = f[begin_path..-1]
|
14
|
+
site.static_files << ::Jekyll::StaticFile.new(
|
15
|
+
site, source, File.dirname(f), File.basename(f))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/**
|
2
|
+
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.9
|
3
|
+
* Copyright (C) 2015 Oliver Nightingale
|
4
|
+
* MIT Licensed
|
5
|
+
* @license
|
6
|
+
*/
|
7
|
+
!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.9",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(e<i.idx)return this.list=new t.Vector.Node(e,n,i),this.length++;for(var o=i,r=i.next;void 0!=r;){if(e<r.idx)return o.next=new t.Vector.Node(e,n,r),this.length++;o=r,r=r.next}return o.next=new t.Vector.Node(e,n,r),this.length++},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t,e=this.list,n=0;e;)t=e.val,n+=t*t,e=e.next;return this._magnitude=Math.sqrt(n)},t.Vector.prototype.dot=function(t){for(var e=this.list,n=t.list,i=0;e&&n;)e.idx<n.idx?e=e.next:e.idx>n.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t<arguments.length;t++)e=arguments[t],~this.indexOf(e)||this.elements.splice(this.locationFor(e),0,e);this.length=this.elements.length},t.SortedSet.prototype.toArray=function(){return this.elements.slice()},t.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},t.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},t.SortedSet.prototype.indexOf=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]<h[o]?i++:a[i]>h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s<o.length;s++){var a=o.elements[s],h=this._fields.reduce(function(t,e){var n=i[e.name].length;if(!n)return t;var o=i[e.name].filter(function(t){return t===a}).length;return t+o/n*e.boost},0);this.tokenStore.add(a,{ref:r,tf:h})}n&&this.eventEmitter.emit("add",e,this)},t.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var i=this.documentStore.get(n);this.documentStore.remove(n),i.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},t.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},t.Index.prototype.idf=function(t){var e="@"+t;if(Object.prototype.hasOwnProperty.call(this._idfCache,e))return this._idfCache[e];var n=this.tokenStore.count(t),i=1;return n>0&&(i=1+Math.log(this.tokenStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),p=new RegExp(a),f=new RegExp(l),d=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,E=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,b=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=d,a=v,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=m,a=g,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=f,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=p,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return-1===t.stopWordFilter.stopWords.indexOf(e)?e:void 0},t.stopWordFilter.stopWords=new t.SortedSet,t.stopWordFilter.stopWords.length=119,t.stopWordFilter.stopWords.elements=["","a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"],t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n<t.length;n++){if(!e[t[n]])return!1;e=e[t[n]]}return!0},t.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;n<t.length;n++){if(!e[t[n]])return{};e=e[t[n]]}return e},t.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},t.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},t.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,i=0;i<t.length;i++){if(!(t[i]in n))return;n=n[t[i]]}delete n.docs[e]}},t.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),i=n.docs||{},e=e||[];return Object.keys(i).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},t.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}},function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.lunr=e()}(this,function(){return t})}();
|
@@ -0,0 +1,45 @@
|
|
1
|
+
// https://github.com/mauriciogentile/angular-livesearch/blob/1f4e357ab3b50701eeedcfb45c12cd901d612087/example/styles.css#L31-L65
|
2
|
+
ul.searchresultspopup {
|
3
|
+
border: #a4bed4 1px solid;
|
4
|
+
margin-top: 0px;
|
5
|
+
padding: 0px;
|
6
|
+
z-index: 99999!important;
|
7
|
+
position: fixed;
|
8
|
+
background-color: white;
|
9
|
+
/*max-height:200px;*/
|
10
|
+
border-collapse: separate;
|
11
|
+
overflow-y: hidden;
|
12
|
+
|
13
|
+
li {
|
14
|
+
cursor: pointer;
|
15
|
+
padding-left: 1px;
|
16
|
+
text-align: left;
|
17
|
+
list-style: none;
|
18
|
+
line-height: 20px;
|
19
|
+
list-style-image: none;
|
20
|
+
list-style-position: outside;
|
21
|
+
list-style-type: none;
|
22
|
+
}
|
23
|
+
|
24
|
+
li.selected,
|
25
|
+
li:hover {
|
26
|
+
background-color: #ededed;
|
27
|
+
}
|
28
|
+
|
29
|
+
b {
|
30
|
+
color: blue;
|
31
|
+
}
|
32
|
+
|
33
|
+
strong {
|
34
|
+
color: green;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
.sr-only { //for screen readers
|
39
|
+
position: absolute;
|
40
|
+
overflow: hidden;
|
41
|
+
width:1px;
|
42
|
+
height:1px;
|
43
|
+
margin: -1px;
|
44
|
+
padding:0;
|
45
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div ng-controller="SearchController" class="bare-content" ng-strict-di>
|
2
|
+
<div class="search-interface skip-nav-anchor" id="anchor" tabindex="-1">
|
3
|
+
<label for="search1" class="sr-only">Search - click or press '/'</label>
|
4
|
+
<live-search id="search1" type="text"
|
5
|
+
live-search-callback="searchCallback"
|
6
|
+
live-search-item-template="<a href='{{result.page.url}}'>{{result.page.title || result.page.url}}</a>"
|
7
|
+
live-search-select="displayTitle"
|
8
|
+
live-search-max-result-size="20"
|
9
|
+
ng-model="searchText"
|
10
|
+
ng-keydown="searchKeyDown($event)"
|
11
|
+
placeholder="Search – click or press '/'"
|
12
|
+
aria-autocomplete="list"
|
13
|
+
aria-activedescendant="search_result_0"
|
14
|
+
aria-haspopup="true"
|
15
|
+
></live-search>
|
16
|
+
</div>
|
17
|
+
<div ng-hide="searchText"></div>
|
18
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// @author Mike Bland (michael.bland@gsa.gov)
|
2
|
+
|
3
|
+
var index = lunr(function() {
|
4
|
+
this.ref('url');
|
5
|
+
|
6
|
+
for (var field_name in index_fields) {
|
7
|
+
var boost = index_fields[field_name];
|
8
|
+
this.field(field_name, boost);
|
9
|
+
}
|
10
|
+
});
|
11
|
+
|
12
|
+
var url_to_doc = {};
|
13
|
+
|
14
|
+
corpus.entries.forEach(function(page) {
|
15
|
+
index.add(page);
|
16
|
+
url_to_doc[page.url] = {url: page.url, title: page.title};
|
17
|
+
});
|
18
|
+
|
19
|
+
var result = JSON.stringify({
|
20
|
+
index: index.toJSON(),
|
21
|
+
url_to_doc: url_to_doc
|
22
|
+
});
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# @author Mike Bland (michael.bland@gsa.gov)
|
2
|
+
|
3
|
+
require 'jekyll_pages_api'
|
4
|
+
require 'v8'
|
5
|
+
|
6
|
+
module JekyllPagesApiSearch
|
7
|
+
class SearchIndexBuilder
|
8
|
+
def self.build_index(site)
|
9
|
+
corpus_page = find_corpus_page(site.pages)
|
10
|
+
raise 'Pages API corpus not found' if corpus_page == nil
|
11
|
+
|
12
|
+
dirname = File.dirname(__FILE__)
|
13
|
+
search_config = site.config['jekyll_pages_api_search']
|
14
|
+
cxt = V8::Context.new
|
15
|
+
cxt.load File.join(dirname, 'lunr.min.js')
|
16
|
+
cxt[:index_fields] = search_config['index_fields'] || {}
|
17
|
+
cxt.eval("var corpus = #{corpus_page.output};")
|
18
|
+
cxt.load(File.join(dirname, 'search.js'))
|
19
|
+
|
20
|
+
index_page = JekyllPagesApi::PageWithoutAFile.new(
|
21
|
+
site, site.source, '', 'search-index.json')
|
22
|
+
index_page.output = cxt[:result]
|
23
|
+
return index_page
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.find_corpus_page(pages)
|
27
|
+
pages.each {|page| return page if page.name == 'pages.json'}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# @author Mike Bland (michael.bland@gsa.gov)
|
2
|
+
|
3
|
+
require_relative 'js_copier'
|
4
|
+
|
5
|
+
require 'jekyll/site'
|
6
|
+
require 'jekyll_pages_api'
|
7
|
+
require 'zlib'
|
8
|
+
|
9
|
+
# This Jekyl::Site override creates a hook for generating the search index
|
10
|
+
# after the jekyll_pages_api plugin has produced the api/v1/pages.json corpus.
|
11
|
+
# In the very near term, we should probably create a proper hook in the
|
12
|
+
# jekyll_pages_api plugin itself.
|
13
|
+
module Jekyll
|
14
|
+
class Site
|
15
|
+
alias_method :pages_api_after_render, :after_render
|
16
|
+
alias_method :orig_write, :write
|
17
|
+
|
18
|
+
def skip_index?
|
19
|
+
search_config = self.config['jekyll_pages_api_search']
|
20
|
+
search_config.nil? || search_config['skip_index']
|
21
|
+
end
|
22
|
+
|
23
|
+
def after_render
|
24
|
+
pages_api_after_render
|
25
|
+
return if skip_index?
|
26
|
+
self.pages << JekyllPagesApiSearch::SearchIndexBuilder.build_index(self)
|
27
|
+
JekyllPagesApiSearch::JavascriptCopier.copy_to_site(self)
|
28
|
+
end
|
29
|
+
|
30
|
+
def write
|
31
|
+
orig_write
|
32
|
+
pages_api_search_after_write unless skip_index?
|
33
|
+
end
|
34
|
+
|
35
|
+
def pages_api_search_after_write
|
36
|
+
index = pages.find {|p| p.name == 'search-index.json'}
|
37
|
+
raise 'Search index not found' if index.nil?
|
38
|
+
compressed = "#{index.destination self.dest}.gz"
|
39
|
+
Zlib::GzipWriter.open(compressed, Zlib::BEST_COMPRESSION) do |gz|
|
40
|
+
gz.write index.output
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# @author Mike Bland (michael.bland@gsa.gov)
|
2
|
+
|
3
|
+
require 'liquid'
|
4
|
+
|
5
|
+
module JekyllPagesApiSearch
|
6
|
+
class SearchInterfaceTag < Liquid::Tag
|
7
|
+
NAME = 'jekyll_pages_api_search_interface'
|
8
|
+
Liquid::Template.register_tag(NAME, self)
|
9
|
+
CODE = File.read(File.join(File.dirname(__FILE__), 'search.html'))
|
10
|
+
|
11
|
+
def render(context)
|
12
|
+
CODE
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class LoadSearchTag < Liquid::Tag
|
17
|
+
NAME = 'jekyll_pages_api_search_load'
|
18
|
+
Liquid::Template.register_tag(NAME, self)
|
19
|
+
|
20
|
+
def render(context)
|
21
|
+
return @code if @code
|
22
|
+
baseurl = context.registers[:site].config['baseurl']
|
23
|
+
@code = ("<script>SEARCH_BASEURL = '#{baseurl}';</script>\n" +
|
24
|
+
"<script async src=\"#{baseurl}/assets/js/search-bundle.js\">" +
|
25
|
+
"</script>")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll_pages_api_search
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Bland
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll_pages_api
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: therubyracer
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.12.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.12.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sass
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.4'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.7'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: jekyll
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: codeclimate-test-reporter
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: coveralls
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: test_temp_file_helper
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: Contains a Jekyll plugin and associated files that facilitate adding
|
154
|
+
client-side search features to a site using the jekyll_pages_api gem.
|
155
|
+
email:
|
156
|
+
- michael.bland@gsa.gov
|
157
|
+
executables: []
|
158
|
+
extensions: []
|
159
|
+
extra_rdoc_files: []
|
160
|
+
files:
|
161
|
+
- CONTRIBUTING.md
|
162
|
+
- LICENSE.md
|
163
|
+
- README.md
|
164
|
+
- assets/js/search-bundle.js
|
165
|
+
- assets/js/search-bundle.js.gz
|
166
|
+
- assets/js/search.js
|
167
|
+
- lib/jekyll_pages_api_search.rb
|
168
|
+
- lib/jekyll_pages_api_search/js_copier.rb
|
169
|
+
- lib/jekyll_pages_api_search/lunr.min.js
|
170
|
+
- lib/jekyll_pages_api_search/sass.rb
|
171
|
+
- lib/jekyll_pages_api_search/sass/jekyll_pages_api_search.scss
|
172
|
+
- lib/jekyll_pages_api_search/search.html
|
173
|
+
- lib/jekyll_pages_api_search/search.js
|
174
|
+
- lib/jekyll_pages_api_search/search.rb
|
175
|
+
- lib/jekyll_pages_api_search/search_hook.rb
|
176
|
+
- lib/jekyll_pages_api_search/tags.rb
|
177
|
+
- lib/jekyll_pages_api_search/version.rb
|
178
|
+
homepage: https://github.com/18F/jekyll_pages_api_search
|
179
|
+
licenses:
|
180
|
+
- CC0
|
181
|
+
metadata: {}
|
182
|
+
post_install_message:
|
183
|
+
rdoc_options: []
|
184
|
+
require_paths:
|
185
|
+
- lib
|
186
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
requirements: []
|
197
|
+
rubyforge_project:
|
198
|
+
rubygems_version: 2.4.5
|
199
|
+
signing_key:
|
200
|
+
specification_version: 4
|
201
|
+
summary: Adds lunr.js search based on the jekyll_pages_api gem
|
202
|
+
test_files: []
|