Commit edc5671eed9ebb3ee5d3f21d7593c74a30867f76

Authored by songchongxian
1 parent 8c6ddd71

[8]临停支付 三个页面添加orgId

stoppayment\select.html //orgId
 stoppayment/Temporary/check.html //检查订单orgId
 pay/immediatepaycs.html//微信支付页面发起支付orgId
js/bootstrap/bootstrap.js
@@ -3,2375 +3,5 @@ @@ -3,2375 +3,5 @@
3 * Copyright 2011-2016 Twitter, Inc. 3 * Copyright 2011-2016 Twitter, Inc.
4 * Licensed under the MIT license 4 * Licensed under the MIT license
5 */ 5 */
6 -  
7 -if (typeof jQuery === 'undefined') {  
8 - throw new Error('Bootstrap\'s JavaScript requires jQuery')  
9 -}  
10 -  
11 -+function ($) {  
12 - 'use strict';  
13 - var version = $.fn.jquery.split(' ')[0].split('.')  
14 - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {  
15 - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')  
16 - }  
17 -}(jQuery);  
18 -  
19 -/* ========================================================================  
20 - * Bootstrap: transition.js v3.3.7  
21 - * http://getbootstrap.com/javascript/#transitions  
22 - * ========================================================================  
23 - * Copyright 2011-2016 Twitter, Inc.  
24 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
25 - * ======================================================================== */  
26 -  
27 -  
28 -+function ($) {  
29 - 'use strict';  
30 -  
31 - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)  
32 - // ============================================================  
33 -  
34 - function transitionEnd() {  
35 - var el = document.createElement('bootstrap')  
36 -  
37 - var transEndEventNames = {  
38 - WebkitTransition : 'webkitTransitionEnd',  
39 - MozTransition : 'transitionend',  
40 - OTransition : 'oTransitionEnd otransitionend',  
41 - transition : 'transitionend'  
42 - }  
43 -  
44 - for (var name in transEndEventNames) {  
45 - if (el.style[name] !== undefined) {  
46 - return { end: transEndEventNames[name] }  
47 - }  
48 - }  
49 -  
50 - return false // explicit for ie8 ( ._.)  
51 - }  
52 -  
53 - // http://blog.alexmaccaw.com/css-transitions  
54 - $.fn.emulateTransitionEnd = function (duration) {  
55 - var called = false  
56 - var $el = this  
57 - $(this).one('bsTransitionEnd', function () { called = true })  
58 - var callback = function () { if (!called) $($el).trigger($.support.transition.end) }  
59 - setTimeout(callback, duration)  
60 - return this  
61 - }  
62 -  
63 - $(function () {  
64 - $.support.transition = transitionEnd()  
65 -  
66 - if (!$.support.transition) return  
67 -  
68 - $.event.special.bsTransitionEnd = {  
69 - bindType: $.support.transition.end,  
70 - delegateType: $.support.transition.end,  
71 - handle: function (e) {  
72 - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)  
73 - }  
74 - }  
75 - })  
76 -  
77 -}(jQuery);  
78 -  
79 -/* ========================================================================  
80 - * Bootstrap: alert.js v3.3.7  
81 - * http://getbootstrap.com/javascript/#alerts  
82 - * ========================================================================  
83 - * Copyright 2011-2016 Twitter, Inc.  
84 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
85 - * ======================================================================== */  
86 -  
87 -  
88 -+function ($) {  
89 - 'use strict';  
90 -  
91 - // ALERT CLASS DEFINITION  
92 - // ======================  
93 -  
94 - var dismiss = '[data-dismiss="alert"]'  
95 - var Alert = function (el) {  
96 - $(el).on('click', dismiss, this.close)  
97 - }  
98 -  
99 - Alert.VERSION = '3.3.7'  
100 -  
101 - Alert.TRANSITION_DURATION = 150  
102 -  
103 - Alert.prototype.close = function (e) {  
104 - var $this = $(this)  
105 - var selector = $this.attr('data-target')  
106 -  
107 - if (!selector) {  
108 - selector = $this.attr('href')  
109 - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7  
110 - }  
111 -  
112 - var $parent = $(selector === '#' ? [] : selector)  
113 -  
114 - if (e) e.preventDefault()  
115 -  
116 - if (!$parent.length) {  
117 - $parent = $this.closest('.alert')  
118 - }  
119 -  
120 - $parent.trigger(e = $.Event('close.bs.alert'))  
121 -  
122 - if (e.isDefaultPrevented()) return  
123 -  
124 - $parent.removeClass('in')  
125 -  
126 - function removeElement() {  
127 - // detach from parent, fire event then clean up data  
128 - $parent.detach().trigger('closed.bs.alert').remove()  
129 - }  
130 -  
131 - $.support.transition && $parent.hasClass('fade') ?  
132 - $parent  
133 - .one('bsTransitionEnd', removeElement)  
134 - .emulateTransitionEnd(Alert.TRANSITION_DURATION) :  
135 - removeElement()  
136 - }  
137 -  
138 -  
139 - // ALERT PLUGIN DEFINITION  
140 - // =======================  
141 -  
142 - function Plugin(option) {  
143 - return this.each(function () {  
144 - var $this = $(this)  
145 - var data = $this.data('bs.alert')  
146 -  
147 - if (!data) $this.data('bs.alert', (data = new Alert(this)))  
148 - if (typeof option == 'string') data[option].call($this)  
149 - })  
150 - }  
151 -  
152 - var old = $.fn.alert  
153 -  
154 - $.fn.alert = Plugin  
155 - $.fn.alert.Constructor = Alert  
156 -  
157 -  
158 - // ALERT NO CONFLICT  
159 - // =================  
160 -  
161 - $.fn.alert.noConflict = function () {  
162 - $.fn.alert = old  
163 - return this  
164 - }  
165 -  
166 -  
167 - // ALERT DATA-API  
168 - // ==============  
169 -  
170 - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)  
171 -  
172 -}(jQuery);  
173 -  
174 -/* ========================================================================  
175 - * Bootstrap: button.js v3.3.7  
176 - * http://getbootstrap.com/javascript/#buttons  
177 - * ========================================================================  
178 - * Copyright 2011-2016 Twitter, Inc.  
179 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
180 - * ======================================================================== */  
181 -  
182 -  
183 -+function ($) {  
184 - 'use strict';  
185 -  
186 - // BUTTON PUBLIC CLASS DEFINITION  
187 - // ==============================  
188 -  
189 - var Button = function (element, options) {  
190 - this.$element = $(element)  
191 - this.options = $.extend({}, Button.DEFAULTS, options)  
192 - this.isLoading = false  
193 - }  
194 -  
195 - Button.VERSION = '3.3.7'  
196 -  
197 - Button.DEFAULTS = {  
198 - loadingText: 'loading...'  
199 - }  
200 -  
201 - Button.prototype.setState = function (state) {  
202 - var d = 'disabled'  
203 - var $el = this.$element  
204 - var val = $el.is('input') ? 'val' : 'html'  
205 - var data = $el.data()  
206 -  
207 - state += 'Text'  
208 -  
209 - if (data.resetText == null) $el.data('resetText', $el[val]())  
210 -  
211 - // push to event loop to allow forms to submit  
212 - setTimeout($.proxy(function () {  
213 - $el[val](data[state] == null ? this.options[state] : data[state])  
214 -  
215 - if (state == 'loadingText') {  
216 - this.isLoading = true  
217 - $el.addClass(d).attr(d, d).prop(d, true)  
218 - } else if (this.isLoading) {  
219 - this.isLoading = false  
220 - $el.removeClass(d).removeAttr(d).prop(d, false)  
221 - }  
222 - }, this), 0)  
223 - }  
224 -  
225 - Button.prototype.toggle = function () {  
226 - var changed = true  
227 - var $parent = this.$element.closest('[data-toggle="buttons"]')  
228 -  
229 - if ($parent.length) {  
230 - var $input = this.$element.find('input')  
231 - if ($input.prop('type') == 'radio') {  
232 - if ($input.prop('checked')) changed = false  
233 - $parent.find('.active').removeClass('active')  
234 - this.$element.addClass('active')  
235 - } else if ($input.prop('type') == 'checkbox') {  
236 - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false  
237 - this.$element.toggleClass('active')  
238 - }  
239 - $input.prop('checked', this.$element.hasClass('active'))  
240 - if (changed) $input.trigger('change')  
241 - } else {  
242 - this.$element.attr('aria-pressed', !this.$element.hasClass('active'))  
243 - this.$element.toggleClass('active')  
244 - }  
245 - }  
246 -  
247 -  
248 - // BUTTON PLUGIN DEFINITION  
249 - // ========================  
250 -  
251 - function Plugin(option) {  
252 - return this.each(function () {  
253 - var $this = $(this)  
254 - var data = $this.data('bs.button')  
255 - var options = typeof option == 'object' && option  
256 -  
257 - if (!data) $this.data('bs.button', (data = new Button(this, options)))  
258 -  
259 - if (option == 'toggle') data.toggle()  
260 - else if (option) data.setState(option)  
261 - })  
262 - }  
263 -  
264 - var old = $.fn.button  
265 -  
266 - $.fn.button = Plugin  
267 - $.fn.button.Constructor = Button  
268 -  
269 -  
270 - // BUTTON NO CONFLICT  
271 - // ==================  
272 -  
273 - $.fn.button.noConflict = function () {  
274 - $.fn.button = old  
275 - return this  
276 - }  
277 -  
278 -  
279 - // BUTTON DATA-API  
280 - // ===============  
281 -  
282 - $(document)  
283 - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {  
284 - var $btn = $(e.target).closest('.btn')  
285 - Plugin.call($btn, 'toggle')  
286 - if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {  
287 - // Prevent double click on radios, and the double selections (so cancellation) on checkboxes  
288 - e.preventDefault()  
289 - // The target component still receive the focus  
290 - if ($btn.is('input,button')) $btn.trigger('focus')  
291 - else $btn.find('input:visible,button:visible').first().trigger('focus')  
292 - }  
293 - })  
294 - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {  
295 - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))  
296 - })  
297 -  
298 -}(jQuery);  
299 -  
300 -/* ========================================================================  
301 - * Bootstrap: carousel.js v3.3.7  
302 - * http://getbootstrap.com/javascript/#carousel  
303 - * ========================================================================  
304 - * Copyright 2011-2016 Twitter, Inc.  
305 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
306 - * ======================================================================== */  
307 -  
308 -  
309 -+function ($) {  
310 - 'use strict';  
311 -  
312 - // CAROUSEL CLASS DEFINITION  
313 - // =========================  
314 -  
315 - var Carousel = function (element, options) {  
316 - this.$element = $(element)  
317 - this.$indicators = this.$element.find('.carousel-indicators')  
318 - this.options = options  
319 - this.paused = null  
320 - this.sliding = null  
321 - this.interval = null  
322 - this.$active = null  
323 - this.$items = null  
324 -  
325 - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))  
326 -  
327 - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element  
328 - .on('mouseenter.bs.carousel', $.proxy(this.pause, this))  
329 - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))  
330 - }  
331 -  
332 - Carousel.VERSION = '3.3.7'  
333 -  
334 - Carousel.TRANSITION_DURATION = 600  
335 -  
336 - Carousel.DEFAULTS = {  
337 - interval: 5000,  
338 - pause: 'hover',  
339 - wrap: true,  
340 - keyboard: true  
341 - }  
342 -  
343 - Carousel.prototype.keydown = function (e) {  
344 - if (/input|textarea/i.test(e.target.tagName)) return  
345 - switch (e.which) {  
346 - case 37: this.prev(); break  
347 - case 39: this.next(); break  
348 - default: return  
349 - }  
350 -  
351 - e.preventDefault()  
352 - }  
353 -  
354 - Carousel.prototype.cycle = function (e) {  
355 - e || (this.paused = false)  
356 -  
357 - this.interval && clearInterval(this.interval)  
358 -  
359 - this.options.interval  
360 - && !this.paused  
361 - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))  
362 -  
363 - return this  
364 - }  
365 -  
366 - Carousel.prototype.getItemIndex = function (item) {  
367 - this.$items = item.parent().children('.item')  
368 - return this.$items.index(item || this.$active)  
369 - }  
370 -  
371 - Carousel.prototype.getItemForDirection = function (direction, active) {  
372 - var activeIndex = this.getItemIndex(active)  
373 - var willWrap = (direction == 'prev' && activeIndex === 0)  
374 - || (direction == 'next' && activeIndex == (this.$items.length - 1))  
375 - if (willWrap && !this.options.wrap) return active  
376 - var delta = direction == 'prev' ? -1 : 1  
377 - var itemIndex = (activeIndex + delta) % this.$items.length  
378 - return this.$items.eq(itemIndex)  
379 - }  
380 -  
381 - Carousel.prototype.to = function (pos) {  
382 - var that = this  
383 - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))  
384 -  
385 - if (pos > (this.$items.length - 1) || pos < 0) return  
386 -  
387 - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"  
388 - if (activeIndex == pos) return this.pause().cycle()  
389 -  
390 - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))  
391 - }  
392 -  
393 - Carousel.prototype.pause = function (e) {  
394 - e || (this.paused = true)  
395 -  
396 - if (this.$element.find('.next, .prev').length && $.support.transition) {  
397 - this.$element.trigger($.support.transition.end)  
398 - this.cycle(true)  
399 - }  
400 -  
401 - this.interval = clearInterval(this.interval)  
402 -  
403 - return this  
404 - }  
405 -  
406 - Carousel.prototype.next = function () {  
407 - if (this.sliding) return  
408 - return this.slide('next')  
409 - }  
410 -  
411 - Carousel.prototype.prev = function () {  
412 - if (this.sliding) return  
413 - return this.slide('prev')  
414 - }  
415 -  
416 - Carousel.prototype.slide = function (type, next) {  
417 - var $active = this.$element.find('.item.active')  
418 - var $next = next || this.getItemForDirection(type, $active)  
419 - var isCycling = this.interval  
420 - var direction = type == 'next' ? 'left' : 'right'  
421 - var that = this  
422 -  
423 - if ($next.hasClass('active')) return (this.sliding = false)  
424 -  
425 - var relatedTarget = $next[0]  
426 - var slideEvent = $.Event('slide.bs.carousel', {  
427 - relatedTarget: relatedTarget,  
428 - direction: direction  
429 - })  
430 - this.$element.trigger(slideEvent)  
431 - if (slideEvent.isDefaultPrevented()) return  
432 -  
433 - this.sliding = true  
434 -  
435 - isCycling && this.pause()  
436 -  
437 - if (this.$indicators.length) {  
438 - this.$indicators.find('.active').removeClass('active')  
439 - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])  
440 - $nextIndicator && $nextIndicator.addClass('active')  
441 - }  
442 -  
443 - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"  
444 - if ($.support.transition && this.$element.hasClass('slide')) {  
445 - $next.addClass(type)  
446 - $next[0].offsetWidth // force reflow  
447 - $active.addClass(direction)  
448 - $next.addClass(direction)  
449 - $active  
450 - .one('bsTransitionEnd', function () {  
451 - $next.removeClass([type, direction].join(' ')).addClass('active')  
452 - $active.removeClass(['active', direction].join(' '))  
453 - that.sliding = false  
454 - setTimeout(function () {  
455 - that.$element.trigger(slidEvent)  
456 - }, 0)  
457 - })  
458 - .emulateTransitionEnd(Carousel.TRANSITION_DURATION)  
459 - } else {  
460 - $active.removeClass('active')  
461 - $next.addClass('active')  
462 - this.sliding = false  
463 - this.$element.trigger(slidEvent)  
464 - }  
465 -  
466 - isCycling && this.cycle()  
467 -  
468 - return this  
469 - }  
470 -  
471 -  
472 - // CAROUSEL PLUGIN DEFINITION  
473 - // ==========================  
474 -  
475 - function Plugin(option) {  
476 - return this.each(function () {  
477 - var $this = $(this)  
478 - var data = $this.data('bs.carousel')  
479 - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)  
480 - var action = typeof option == 'string' ? option : options.slide  
481 -  
482 - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))  
483 - if (typeof option == 'number') data.to(option)  
484 - else if (action) data[action]()  
485 - else if (options.interval) data.pause().cycle()  
486 - })  
487 - }  
488 -  
489 - var old = $.fn.carousel  
490 -  
491 - $.fn.carousel = Plugin  
492 - $.fn.carousel.Constructor = Carousel  
493 -  
494 -  
495 - // CAROUSEL NO CONFLICT  
496 - // ====================  
497 -  
498 - $.fn.carousel.noConflict = function () {  
499 - $.fn.carousel = old  
500 - return this  
501 - }  
502 -  
503 -  
504 - // CAROUSEL DATA-API  
505 - // =================  
506 -  
507 - var clickHandler = function (e) {  
508 - var href  
509 - var $this = $(this)  
510 - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7  
511 - if (!$target.hasClass('carousel')) return  
512 - var options = $.extend({}, $target.data(), $this.data())  
513 - var slideIndex = $this.attr('data-slide-to')  
514 - if (slideIndex) options.interval = false  
515 -  
516 - Plugin.call($target, options)  
517 -  
518 - if (slideIndex) {  
519 - $target.data('bs.carousel').to(slideIndex)  
520 - }  
521 -  
522 - e.preventDefault()  
523 - }  
524 -  
525 - $(document)  
526 - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)  
527 - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)  
528 -  
529 - $(window).on('load', function () {  
530 - $('[data-ride="carousel"]').each(function () {  
531 - var $carousel = $(this)  
532 - Plugin.call($carousel, $carousel.data())  
533 - })  
534 - })  
535 -  
536 -}(jQuery);  
537 -  
538 -/* ========================================================================  
539 - * Bootstrap: collapse.js v3.3.7  
540 - * http://getbootstrap.com/javascript/#collapse  
541 - * ========================================================================  
542 - * Copyright 2011-2016 Twitter, Inc.  
543 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
544 - * ======================================================================== */  
545 -  
546 -/* jshint latedef: false */  
547 -  
548 -+function ($) {  
549 - 'use strict';  
550 -  
551 - // COLLAPSE PUBLIC CLASS DEFINITION  
552 - // ================================  
553 -  
554 - var Collapse = function (element, options) {  
555 - this.$element = $(element)  
556 - this.options = $.extend({}, Collapse.DEFAULTS, options)  
557 - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +  
558 - '[data-toggle="collapse"][data-target="#' + element.id + '"]')  
559 - this.transitioning = null  
560 -  
561 - if (this.options.parent) {  
562 - this.$parent = this.getParent()  
563 - } else {  
564 - this.addAriaAndCollapsedClass(this.$element, this.$trigger)  
565 - }  
566 -  
567 - if (this.options.toggle) this.toggle()  
568 - }  
569 -  
570 - Collapse.VERSION = '3.3.7'  
571 -  
572 - Collapse.TRANSITION_DURATION = 350  
573 -  
574 - Collapse.DEFAULTS = {  
575 - toggle: true  
576 - }  
577 -  
578 - Collapse.prototype.dimension = function () {  
579 - var hasWidth = this.$element.hasClass('width')  
580 - return hasWidth ? 'width' : 'height'  
581 - }  
582 -  
583 - Collapse.prototype.show = function () {  
584 - if (this.transitioning || this.$element.hasClass('in')) return  
585 -  
586 - var activesData  
587 - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')  
588 -  
589 - if (actives && actives.length) {  
590 - activesData = actives.data('bs.collapse')  
591 - if (activesData && activesData.transitioning) return  
592 - }  
593 -  
594 - var startEvent = $.Event('show.bs.collapse')  
595 - this.$element.trigger(startEvent)  
596 - if (startEvent.isDefaultPrevented()) return  
597 -  
598 - if (actives && actives.length) {  
599 - Plugin.call(actives, 'hide')  
600 - activesData || actives.data('bs.collapse', null)  
601 - }  
602 -  
603 - var dimension = this.dimension()  
604 -  
605 - this.$element  
606 - .removeClass('collapse')  
607 - .addClass('collapsing')[dimension](0)  
608 - .attr('aria-expanded', true)  
609 -  
610 - this.$trigger  
611 - .removeClass('collapsed')  
612 - .attr('aria-expanded', true)  
613 -  
614 - this.transitioning = 1  
615 -  
616 - var complete = function () {  
617 - this.$element  
618 - .removeClass('collapsing')  
619 - .addClass('collapse in')[dimension]('')  
620 - this.transitioning = 0  
621 - this.$element  
622 - .trigger('shown.bs.collapse')  
623 - }  
624 -  
625 - if (!$.support.transition) return complete.call(this)  
626 -  
627 - var scrollSize = $.camelCase(['scroll', dimension].join('-'))  
628 -  
629 - this.$element  
630 - .one('bsTransitionEnd', $.proxy(complete, this))  
631 - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])  
632 - }  
633 -  
634 - Collapse.prototype.hide = function () {  
635 - if (this.transitioning || !this.$element.hasClass('in')) return  
636 -  
637 - var startEvent = $.Event('hide.bs.collapse')  
638 - this.$element.trigger(startEvent)  
639 - if (startEvent.isDefaultPrevented()) return  
640 -  
641 - var dimension = this.dimension()  
642 -  
643 - this.$element[dimension](this.$element[dimension]())[0].offsetHeight  
644 -  
645 - this.$element  
646 - .addClass('collapsing')  
647 - .removeClass('collapse in')  
648 - .attr('aria-expanded', false)  
649 -  
650 - this.$trigger  
651 - .addClass('collapsed')  
652 - .attr('aria-expanded', false)  
653 -  
654 - this.transitioning = 1  
655 -  
656 - var complete = function () {  
657 - this.transitioning = 0  
658 - this.$element  
659 - .removeClass('collapsing')  
660 - .addClass('collapse')  
661 - .trigger('hidden.bs.collapse')  
662 - }  
663 -  
664 - if (!$.support.transition) return complete.call(this)  
665 -  
666 - this.$element  
667 - [dimension](0)  
668 - .one('bsTransitionEnd', $.proxy(complete, this))  
669 - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)  
670 - }  
671 -  
672 - Collapse.prototype.toggle = function () {  
673 - this[this.$element.hasClass('in') ? 'hide' : 'show']()  
674 - }  
675 -  
676 - Collapse.prototype.getParent = function () {  
677 - return $(this.options.parent)  
678 - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')  
679 - .each($.proxy(function (i, element) {  
680 - var $element = $(element)  
681 - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)  
682 - }, this))  
683 - .end()  
684 - }  
685 -  
686 - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {  
687 - var isOpen = $element.hasClass('in')  
688 -  
689 - $element.attr('aria-expanded', isOpen)  
690 - $trigger  
691 - .toggleClass('collapsed', !isOpen)  
692 - .attr('aria-expanded', isOpen)  
693 - }  
694 -  
695 - function getTargetFromTrigger($trigger) {  
696 - var href  
697 - var target = $trigger.attr('data-target')  
698 - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7  
699 -  
700 - return $(target)  
701 - }  
702 -  
703 -  
704 - // COLLAPSE PLUGIN DEFINITION  
705 - // ==========================  
706 -  
707 - function Plugin(option) {  
708 - return this.each(function () {  
709 - var $this = $(this)  
710 - var data = $this.data('bs.collapse')  
711 - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)  
712 -  
713 - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false  
714 - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))  
715 - if (typeof option == 'string') data[option]()  
716 - })  
717 - }  
718 -  
719 - var old = $.fn.collapse  
720 -  
721 - $.fn.collapse = Plugin  
722 - $.fn.collapse.Constructor = Collapse  
723 -  
724 -  
725 - // COLLAPSE NO CONFLICT  
726 - // ====================  
727 -  
728 - $.fn.collapse.noConflict = function () {  
729 - $.fn.collapse = old  
730 - return this  
731 - }  
732 -  
733 -  
734 - // COLLAPSE DATA-API  
735 - // =================  
736 -  
737 - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {  
738 - var $this = $(this)  
739 -  
740 - if (!$this.attr('data-target')) e.preventDefault()  
741 -  
742 - var $target = getTargetFromTrigger($this)  
743 - var data = $target.data('bs.collapse')  
744 - var option = data ? 'toggle' : $this.data()  
745 -  
746 - Plugin.call($target, option)  
747 - })  
748 -  
749 -}(jQuery);  
750 -  
751 -/* ========================================================================  
752 - * Bootstrap: dropdown.js v3.3.7  
753 - * http://getbootstrap.com/javascript/#dropdowns  
754 - * ========================================================================  
755 - * Copyright 2011-2016 Twitter, Inc.  
756 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
757 - * ======================================================================== */  
758 -  
759 -  
760 -+function ($) {  
761 - 'use strict';  
762 -  
763 - // DROPDOWN CLASS DEFINITION  
764 - // =========================  
765 -  
766 - var backdrop = '.dropdown-backdrop'  
767 - var toggle = '[data-toggle="dropdown"]'  
768 - var Dropdown = function (element) {  
769 - $(element).on('click.bs.dropdown', this.toggle)  
770 - }  
771 -  
772 - Dropdown.VERSION = '3.3.7'  
773 -  
774 - function getParent($this) {  
775 - var selector = $this.attr('data-target')  
776 -  
777 - if (!selector) {  
778 - selector = $this.attr('href')  
779 - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7  
780 - }  
781 -  
782 - var $parent = selector && $(selector)  
783 -  
784 - return $parent && $parent.length ? $parent : $this.parent()  
785 - }  
786 -  
787 - function clearMenus(e) {  
788 - if (e && e.which === 3) return  
789 - $(backdrop).remove()  
790 - $(toggle).each(function () {  
791 - var $this = $(this)  
792 - var $parent = getParent($this)  
793 - var relatedTarget = { relatedTarget: this }  
794 -  
795 - if (!$parent.hasClass('open')) return  
796 -  
797 - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return  
798 -  
799 - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))  
800 -  
801 - if (e.isDefaultPrevented()) return  
802 -  
803 - $this.attr('aria-expanded', 'false')  
804 - $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))  
805 - })  
806 - }  
807 -  
808 - Dropdown.prototype.toggle = function (e) {  
809 - var $this = $(this)  
810 -  
811 - if ($this.is('.disabled, :disabled')) return  
812 -  
813 - var $parent = getParent($this)  
814 - var isActive = $parent.hasClass('open')  
815 -  
816 - clearMenus()  
817 -  
818 - if (!isActive) {  
819 - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {  
820 - // if mobile we use a backdrop because click events don't delegate  
821 - $(document.createElement('div'))  
822 - .addClass('dropdown-backdrop')  
823 - .insertAfter($(this))  
824 - .on('click', clearMenus)  
825 - }  
826 -  
827 - var relatedTarget = { relatedTarget: this }  
828 - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))  
829 -  
830 - if (e.isDefaultPrevented()) return  
831 -  
832 - $this  
833 - .trigger('focus')  
834 - .attr('aria-expanded', 'true')  
835 -  
836 - $parent  
837 - .toggleClass('open')  
838 - .trigger($.Event('shown.bs.dropdown', relatedTarget))  
839 - }  
840 -  
841 - return false  
842 - }  
843 -  
844 - Dropdown.prototype.keydown = function (e) {  
845 - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return  
846 -  
847 - var $this = $(this)  
848 -  
849 - e.preventDefault()  
850 - e.stopPropagation()  
851 -  
852 - if ($this.is('.disabled, :disabled')) return  
853 -  
854 - var $parent = getParent($this)  
855 - var isActive = $parent.hasClass('open')  
856 -  
857 - if (!isActive && e.which != 27 || isActive && e.which == 27) {  
858 - if (e.which == 27) $parent.find(toggle).trigger('focus')  
859 - return $this.trigger('click')  
860 - }  
861 -  
862 - var desc = ' li:not(.disabled):visible a'  
863 - var $items = $parent.find('.dropdown-menu' + desc)  
864 -  
865 - if (!$items.length) return  
866 -  
867 - var index = $items.index(e.target)  
868 -  
869 - if (e.which == 38 && index > 0) index-- // up  
870 - if (e.which == 40 && index < $items.length - 1) index++ // down  
871 - if (!~index) index = 0  
872 -  
873 - $items.eq(index).trigger('focus')  
874 - }  
875 -  
876 -  
877 - // DROPDOWN PLUGIN DEFINITION  
878 - // ==========================  
879 -  
880 - function Plugin(option) {  
881 - return this.each(function () {  
882 - var $this = $(this)  
883 - var data = $this.data('bs.dropdown')  
884 -  
885 - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))  
886 - if (typeof option == 'string') data[option].call($this)  
887 - })  
888 - }  
889 -  
890 - var old = $.fn.dropdown  
891 -  
892 - $.fn.dropdown = Plugin  
893 - $.fn.dropdown.Constructor = Dropdown  
894 -  
895 -  
896 - // DROPDOWN NO CONFLICT  
897 - // ====================  
898 -  
899 - $.fn.dropdown.noConflict = function () {  
900 - $.fn.dropdown = old  
901 - return this  
902 - }  
903 -  
904 -  
905 - // APPLY TO STANDARD DROPDOWN ELEMENTS  
906 - // ===================================  
907 -  
908 - $(document)  
909 - .on('click.bs.dropdown.data-api', clearMenus)  
910 - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })  
911 - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)  
912 - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)  
913 - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)  
914 -  
915 -}(jQuery);  
916 -  
917 -/* ========================================================================  
918 - * Bootstrap: modal.js v3.3.7  
919 - * http://getbootstrap.com/javascript/#modals  
920 - * ========================================================================  
921 - * Copyright 2011-2016 Twitter, Inc.  
922 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
923 - * ======================================================================== */  
924 -  
925 -  
926 -+function ($) {  
927 - 'use strict';  
928 -  
929 - // MODAL CLASS DEFINITION  
930 - // ======================  
931 -  
932 - var Modal = function (element, options) {  
933 - this.options = options  
934 - this.$body = $(document.body)  
935 - this.$element = $(element)  
936 - this.$dialog = this.$element.find('.modal-dialog')  
937 - this.$backdrop = null  
938 - this.isShown = null  
939 - this.originalBodyPad = null  
940 - this.scrollbarWidth = 0  
941 - this.ignoreBackdropClick = false  
942 -  
943 - if (this.options.remote) {  
944 - this.$element  
945 - .find('.modal-content')  
946 - .load(this.options.remote, $.proxy(function () {  
947 - this.$element.trigger('loaded.bs.modal')  
948 - }, this))  
949 - }  
950 - }  
951 -  
952 - Modal.VERSION = '3.3.7'  
953 -  
954 - Modal.TRANSITION_DURATION = 300  
955 - Modal.BACKDROP_TRANSITION_DURATION = 150  
956 -  
957 - Modal.DEFAULTS = {  
958 - backdrop: true,  
959 - keyboard: true,  
960 - show: true  
961 - }  
962 -  
963 - Modal.prototype.toggle = function (_relatedTarget) {  
964 - return this.isShown ? this.hide() : this.show(_relatedTarget)  
965 - }  
966 -  
967 - Modal.prototype.show = function (_relatedTarget) {  
968 - var that = this  
969 - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })  
970 -  
971 - this.$element.trigger(e)  
972 -  
973 - if (this.isShown || e.isDefaultPrevented()) return  
974 -  
975 - this.isShown = true  
976 -  
977 - this.checkScrollbar()  
978 - this.setScrollbar()  
979 - this.$body.addClass('modal-open')  
980 -  
981 - this.escape()  
982 - this.resize()  
983 -  
984 - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))  
985 -  
986 - this.$dialog.on('mousedown.dismiss.bs.modal', function () {  
987 - that.$element.one('mouseup.dismiss.bs.modal', function (e) {  
988 - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true  
989 - })  
990 - })  
991 -  
992 - this.backdrop(function () {  
993 - var transition = $.support.transition && that.$element.hasClass('fade')  
994 -  
995 - if (!that.$element.parent().length) {  
996 - that.$element.appendTo(that.$body) // don't move modals dom position  
997 - }  
998 -  
999 - that.$element  
1000 - .show()  
1001 - .scrollTop(0)  
1002 -  
1003 - that.adjustDialog()  
1004 -  
1005 - if (transition) {  
1006 - that.$element[0].offsetWidth // force reflow  
1007 - }  
1008 -  
1009 - that.$element.addClass('in')  
1010 -  
1011 - that.enforceFocus()  
1012 -  
1013 - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })  
1014 -  
1015 - transition ?  
1016 - that.$dialog // wait for modal to slide in  
1017 - .one('bsTransitionEnd', function () {  
1018 - that.$element.trigger('focus').trigger(e)  
1019 - })  
1020 - .emulateTransitionEnd(Modal.TRANSITION_DURATION) :  
1021 - that.$element.trigger('focus').trigger(e)  
1022 - })  
1023 - }  
1024 -  
1025 - Modal.prototype.hide = function (e) {  
1026 - if (e) e.preventDefault()  
1027 -  
1028 - e = $.Event('hide.bs.modal')  
1029 -  
1030 - this.$element.trigger(e)  
1031 -  
1032 - if (!this.isShown || e.isDefaultPrevented()) return  
1033 -  
1034 - this.isShown = false  
1035 -  
1036 - this.escape()  
1037 - this.resize()  
1038 -  
1039 - $(document).off('focusin.bs.modal')  
1040 -  
1041 - this.$element  
1042 - .removeClass('in')  
1043 - .off('click.dismiss.bs.modal')  
1044 - .off('mouseup.dismiss.bs.modal')  
1045 -  
1046 - this.$dialog.off('mousedown.dismiss.bs.modal')  
1047 -  
1048 - $.support.transition && this.$element.hasClass('fade') ?  
1049 - this.$element  
1050 - .one('bsTransitionEnd', $.proxy(this.hideModal, this))  
1051 - .emulateTransitionEnd(Modal.TRANSITION_DURATION) :  
1052 - this.hideModal()  
1053 - }  
1054 -  
1055 - Modal.prototype.enforceFocus = function () {  
1056 - $(document)  
1057 - .off('focusin.bs.modal') // guard against infinite focus loop  
1058 - .on('focusin.bs.modal', $.proxy(function (e) {  
1059 - if (document !== e.target &&  
1060 - this.$element[0] !== e.target &&  
1061 - !this.$element.has(e.target).length) {  
1062 - this.$element.trigger('focus')  
1063 - }  
1064 - }, this))  
1065 - }  
1066 -  
1067 - Modal.prototype.escape = function () {  
1068 - if (this.isShown && this.options.keyboard) {  
1069 - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {  
1070 - e.which == 27 && this.hide()  
1071 - }, this))  
1072 - } else if (!this.isShown) {  
1073 - this.$element.off('keydown.dismiss.bs.modal')  
1074 - }  
1075 - }  
1076 -  
1077 - Modal.prototype.resize = function () {  
1078 - if (this.isShown) {  
1079 - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))  
1080 - } else {  
1081 - $(window).off('resize.bs.modal')  
1082 - }  
1083 - }  
1084 -  
1085 - Modal.prototype.hideModal = function () {  
1086 - var that = this  
1087 - this.$element.hide()  
1088 - this.backdrop(function () {  
1089 - that.$body.removeClass('modal-open')  
1090 - that.resetAdjustments()  
1091 - that.resetScrollbar()  
1092 - that.$element.trigger('hidden.bs.modal')  
1093 - })  
1094 - }  
1095 -  
1096 - Modal.prototype.removeBackdrop = function () {  
1097 - this.$backdrop && this.$backdrop.remove()  
1098 - this.$backdrop = null  
1099 - }  
1100 -  
1101 - Modal.prototype.backdrop = function (callback) {  
1102 - var that = this  
1103 - var animate = this.$element.hasClass('fade') ? 'fade' : ''  
1104 -  
1105 - if (this.isShown && this.options.backdrop) {  
1106 - var doAnimate = $.support.transition && animate  
1107 -  
1108 - this.$backdrop = $(document.createElement('div'))  
1109 - .addClass('modal-backdrop ' + animate)  
1110 - .appendTo(this.$body)  
1111 -  
1112 - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {  
1113 - if (this.ignoreBackdropClick) {  
1114 - this.ignoreBackdropClick = false  
1115 - return  
1116 - }  
1117 - if (e.target !== e.currentTarget) return  
1118 - this.options.backdrop == 'static'  
1119 - ? this.$element[0].focus()  
1120 - : this.hide()  
1121 - }, this))  
1122 -  
1123 - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow  
1124 -  
1125 - this.$backdrop.addClass('in')  
1126 -  
1127 - if (!callback) return  
1128 -  
1129 - doAnimate ?  
1130 - this.$backdrop  
1131 - .one('bsTransitionEnd', callback)  
1132 - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :  
1133 - callback()  
1134 -  
1135 - } else if (!this.isShown && this.$backdrop) {  
1136 - this.$backdrop.removeClass('in')  
1137 -  
1138 - var callbackRemove = function () {  
1139 - that.removeBackdrop()  
1140 - callback && callback()  
1141 - }  
1142 - $.support.transition && this.$element.hasClass('fade') ?  
1143 - this.$backdrop  
1144 - .one('bsTransitionEnd', callbackRemove)  
1145 - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :  
1146 - callbackRemove()  
1147 -  
1148 - } else if (callback) {  
1149 - callback()  
1150 - }  
1151 - }  
1152 -  
1153 - // these following methods are used to handle overflowing modals  
1154 -  
1155 - Modal.prototype.handleUpdate = function () {  
1156 - this.adjustDialog()  
1157 - }  
1158 -  
1159 - Modal.prototype.adjustDialog = function () {  
1160 - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight  
1161 -  
1162 - this.$element.css({  
1163 - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',  
1164 - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''  
1165 - })  
1166 - }  
1167 -  
1168 - Modal.prototype.resetAdjustments = function () {  
1169 - this.$element.css({  
1170 - paddingLeft: '',  
1171 - paddingRight: ''  
1172 - })  
1173 - }  
1174 -  
1175 - Modal.prototype.checkScrollbar = function () {  
1176 - var fullWindowWidth = window.innerWidth  
1177 - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8  
1178 - var documentElementRect = document.documentElement.getBoundingClientRect()  
1179 - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)  
1180 - }  
1181 - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth  
1182 - this.scrollbarWidth = this.measureScrollbar()  
1183 - }  
1184 -  
1185 - Modal.prototype.setScrollbar = function () {  
1186 - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)  
1187 - this.originalBodyPad = document.body.style.paddingRight || ''  
1188 - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)  
1189 - }  
1190 -  
1191 - Modal.prototype.resetScrollbar = function () {  
1192 - this.$body.css('padding-right', this.originalBodyPad)  
1193 - }  
1194 -  
1195 - Modal.prototype.measureScrollbar = function () { // thx walsh  
1196 - var scrollDiv = document.createElement('div')  
1197 - scrollDiv.className = 'modal-scrollbar-measure'  
1198 - this.$body.append(scrollDiv)  
1199 - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth  
1200 - this.$body[0].removeChild(scrollDiv)  
1201 - return scrollbarWidth  
1202 - }  
1203 -  
1204 -  
1205 - // MODAL PLUGIN DEFINITION  
1206 - // =======================  
1207 -  
1208 - function Plugin(option, _relatedTarget) {  
1209 - return this.each(function () {  
1210 - var $this = $(this)  
1211 - var data = $this.data('bs.modal')  
1212 - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)  
1213 -  
1214 - if (!data) $this.data('bs.modal', (data = new Modal(this, options)))  
1215 - if (typeof option == 'string') data[option](_relatedTarget)  
1216 - else if (options.show) data.show(_relatedTarget)  
1217 - })  
1218 - }  
1219 -  
1220 - var old = $.fn.modal  
1221 -  
1222 - $.fn.modal = Plugin  
1223 - $.fn.modal.Constructor = Modal  
1224 -  
1225 -  
1226 - // MODAL NO CONFLICT  
1227 - // =================  
1228 -  
1229 - $.fn.modal.noConflict = function () {  
1230 - $.fn.modal = old  
1231 - return this  
1232 - }  
1233 -  
1234 -  
1235 - // MODAL DATA-API  
1236 - // ==============  
1237 -  
1238 - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {  
1239 - var $this = $(this)  
1240 - var href = $this.attr('href')  
1241 - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7  
1242 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())  
1243 -  
1244 - if ($this.is('a')) e.preventDefault()  
1245 -  
1246 - $target.one('show.bs.modal', function (showEvent) {  
1247 - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown  
1248 - $target.one('hidden.bs.modal', function () {  
1249 - $this.is(':visible') && $this.trigger('focus')  
1250 - })  
1251 - })  
1252 - Plugin.call($target, option, this)  
1253 - })  
1254 -  
1255 -}(jQuery);  
1256 -  
1257 -/* ========================================================================  
1258 - * Bootstrap: tooltip.js v3.3.7  
1259 - * http://getbootstrap.com/javascript/#tooltip  
1260 - * Inspired by the original jQuery.tipsy by Jason Frame  
1261 - * ========================================================================  
1262 - * Copyright 2011-2016 Twitter, Inc.  
1263 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
1264 - * ======================================================================== */  
1265 -  
1266 -  
1267 -+function ($) {  
1268 - 'use strict';  
1269 -  
1270 - // TOOLTIP PUBLIC CLASS DEFINITION  
1271 - // ===============================  
1272 -  
1273 - var Tooltip = function (element, options) {  
1274 - this.type = null  
1275 - this.options = null  
1276 - this.enabled = null  
1277 - this.timeout = null  
1278 - this.hoverState = null  
1279 - this.$element = null  
1280 - this.inState = null  
1281 -  
1282 - this.init('tooltip', element, options)  
1283 - }  
1284 -  
1285 - Tooltip.VERSION = '3.3.7'  
1286 -  
1287 - Tooltip.TRANSITION_DURATION = 150  
1288 -  
1289 - Tooltip.DEFAULTS = {  
1290 - animation: true,  
1291 - placement: 'top',  
1292 - selector: false,  
1293 - template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',  
1294 - trigger: 'hover focus',  
1295 - title: '',  
1296 - delay: 0,  
1297 - html: false,  
1298 - container: false,  
1299 - viewport: {  
1300 - selector: 'body',  
1301 - padding: 0  
1302 - }  
1303 - }  
1304 -  
1305 - Tooltip.prototype.init = function (type, element, options) {  
1306 - this.enabled = true  
1307 - this.type = type  
1308 - this.$element = $(element)  
1309 - this.options = this.getOptions(options)  
1310 - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))  
1311 - this.inState = { click: false, hover: false, focus: false }  
1312 -  
1313 - if (this.$element[0] instanceof document.constructor && !this.options.selector) {  
1314 - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')  
1315 - }  
1316 -  
1317 - var triggers = this.options.trigger.split(' ')  
1318 -  
1319 - for (var i = triggers.length; i--;) {  
1320 - var trigger = triggers[i]  
1321 -  
1322 - if (trigger == 'click') {  
1323 - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))  
1324 - } else if (trigger != 'manual') {  
1325 - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'  
1326 - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'  
1327 -  
1328 - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))  
1329 - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))  
1330 - }  
1331 - }  
1332 -  
1333 - this.options.selector ?  
1334 - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :  
1335 - this.fixTitle()  
1336 - }  
1337 -  
1338 - Tooltip.prototype.getDefaults = function () {  
1339 - return Tooltip.DEFAULTS  
1340 - }  
1341 -  
1342 - Tooltip.prototype.getOptions = function (options) {  
1343 - options = $.extend({}, this.getDefaults(), this.$element.data(), options)  
1344 -  
1345 - if (options.delay && typeof options.delay == 'number') {  
1346 - options.delay = {  
1347 - show: options.delay,  
1348 - hide: options.delay  
1349 - }  
1350 - }  
1351 -  
1352 - return options  
1353 - }  
1354 -  
1355 - Tooltip.prototype.getDelegateOptions = function () {  
1356 - var options = {}  
1357 - var defaults = this.getDefaults()  
1358 -  
1359 - this._options && $.each(this._options, function (key, value) {  
1360 - if (defaults[key] != value) options[key] = value  
1361 - })  
1362 -  
1363 - return options  
1364 - }  
1365 -  
1366 - Tooltip.prototype.enter = function (obj) {  
1367 - var self = obj instanceof this.constructor ?  
1368 - obj : $(obj.currentTarget).data('bs.' + this.type)  
1369 -  
1370 - if (!self) {  
1371 - self = new this.constructor(obj.currentTarget, this.getDelegateOptions())  
1372 - $(obj.currentTarget).data('bs.' + this.type, self)  
1373 - }  
1374 -  
1375 - if (obj instanceof $.Event) {  
1376 - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true  
1377 - }  
1378 -  
1379 - if (self.tip().hasClass('in') || self.hoverState == 'in') {  
1380 - self.hoverState = 'in'  
1381 - return  
1382 - }  
1383 -  
1384 - clearTimeout(self.timeout)  
1385 -  
1386 - self.hoverState = 'in'  
1387 -  
1388 - if (!self.options.delay || !self.options.delay.show) return self.show()  
1389 -  
1390 - self.timeout = setTimeout(function () {  
1391 - if (self.hoverState == 'in') self.show()  
1392 - }, self.options.delay.show)  
1393 - }  
1394 -  
1395 - Tooltip.prototype.isInStateTrue = function () {  
1396 - for (var key in this.inState) {  
1397 - if (this.inState[key]) return true  
1398 - }  
1399 -  
1400 - return false  
1401 - }  
1402 -  
1403 - Tooltip.prototype.leave = function (obj) {  
1404 - var self = obj instanceof this.constructor ?  
1405 - obj : $(obj.currentTarget).data('bs.' + this.type)  
1406 -  
1407 - if (!self) {  
1408 - self = new this.constructor(obj.currentTarget, this.getDelegateOptions())  
1409 - $(obj.currentTarget).data('bs.' + this.type, self)  
1410 - }  
1411 -  
1412 - if (obj instanceof $.Event) {  
1413 - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false  
1414 - }  
1415 -  
1416 - if (self.isInStateTrue()) return  
1417 -  
1418 - clearTimeout(self.timeout)  
1419 -  
1420 - self.hoverState = 'out'  
1421 -  
1422 - if (!self.options.delay || !self.options.delay.hide) return self.hide()  
1423 -  
1424 - self.timeout = setTimeout(function () {  
1425 - if (self.hoverState == 'out') self.hide()  
1426 - }, self.options.delay.hide)  
1427 - }  
1428 -  
1429 - Tooltip.prototype.show = function () {  
1430 - var e = $.Event('show.bs.' + this.type)  
1431 -  
1432 - if (this.hasContent() && this.enabled) {  
1433 - this.$element.trigger(e)  
1434 -  
1435 - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])  
1436 - if (e.isDefaultPrevented() || !inDom) return  
1437 - var that = this  
1438 -  
1439 - var $tip = this.tip()  
1440 -  
1441 - var tipId = this.getUID(this.type)  
1442 -  
1443 - this.setContent()  
1444 - $tip.attr('id', tipId)  
1445 - this.$element.attr('aria-describedby', tipId)  
1446 -  
1447 - if (this.options.animation) $tip.addClass('fade')  
1448 -  
1449 - var placement = typeof this.options.placement == 'function' ?  
1450 - this.options.placement.call(this, $tip[0], this.$element[0]) :  
1451 - this.options.placement  
1452 -  
1453 - var autoToken = /\s?auto?\s?/i  
1454 - var autoPlace = autoToken.test(placement)  
1455 - if (autoPlace) placement = placement.replace(autoToken, '') || 'top'  
1456 -  
1457 - $tip  
1458 - .detach()  
1459 - .css({ top: 0, left: 0, display: 'block' })  
1460 - .addClass(placement)  
1461 - .data('bs.' + this.type, this)  
1462 -  
1463 - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)  
1464 - this.$element.trigger('inserted.bs.' + this.type)  
1465 -  
1466 - var pos = this.getPosition()  
1467 - var actualWidth = $tip[0].offsetWidth  
1468 - var actualHeight = $tip[0].offsetHeight  
1469 -  
1470 - if (autoPlace) {  
1471 - var orgPlacement = placement  
1472 - var viewportDim = this.getPosition(this.$viewport)  
1473 -  
1474 - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :  
1475 - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :  
1476 - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :  
1477 - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :  
1478 - placement  
1479 -  
1480 - $tip  
1481 - .removeClass(orgPlacement)  
1482 - .addClass(placement)  
1483 - }  
1484 -  
1485 - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)  
1486 -  
1487 - this.applyPlacement(calculatedOffset, placement)  
1488 -  
1489 - var complete = function () {  
1490 - var prevHoverState = that.hoverState  
1491 - that.$element.trigger('shown.bs.' + that.type)  
1492 - that.hoverState = null  
1493 -  
1494 - if (prevHoverState == 'out') that.leave(that)  
1495 - }  
1496 -  
1497 - $.support.transition && this.$tip.hasClass('fade') ?  
1498 - $tip  
1499 - .one('bsTransitionEnd', complete)  
1500 - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :  
1501 - complete()  
1502 - }  
1503 - }  
1504 -  
1505 - Tooltip.prototype.applyPlacement = function (offset, placement) {  
1506 - var $tip = this.tip()  
1507 - var width = $tip[0].offsetWidth  
1508 - var height = $tip[0].offsetHeight  
1509 -  
1510 - // manually read margins because getBoundingClientRect includes difference  
1511 - var marginTop = parseInt($tip.css('margin-top'), 10)  
1512 - var marginLeft = parseInt($tip.css('margin-left'), 10)  
1513 -  
1514 - // we must check for NaN for ie 8/9  
1515 - if (isNaN(marginTop)) marginTop = 0  
1516 - if (isNaN(marginLeft)) marginLeft = 0  
1517 -  
1518 - offset.top += marginTop  
1519 - offset.left += marginLeft  
1520 -  
1521 - // $.fn.offset doesn't round pixel values  
1522 - // so we use setOffset directly with our own function B-0  
1523 - $.offset.setOffset($tip[0], $.extend({  
1524 - using: function (props) {  
1525 - $tip.css({  
1526 - top: Math.round(props.top),  
1527 - left: Math.round(props.left)  
1528 - })  
1529 - }  
1530 - }, offset), 0)  
1531 -  
1532 - $tip.addClass('in')  
1533 -  
1534 - // check to see if placing tip in new offset caused the tip to resize itself  
1535 - var actualWidth = $tip[0].offsetWidth  
1536 - var actualHeight = $tip[0].offsetHeight  
1537 -  
1538 - if (placement == 'top' && actualHeight != height) {  
1539 - offset.top = offset.top + height - actualHeight  
1540 - }  
1541 -  
1542 - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)  
1543 -  
1544 - if (delta.left) offset.left += delta.left  
1545 - else offset.top += delta.top  
1546 -  
1547 - var isVertical = /top|bottom/.test(placement)  
1548 - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight  
1549 - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'  
1550 -  
1551 - $tip.offset(offset)  
1552 - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)  
1553 - }  
1554 -  
1555 - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {  
1556 - this.arrow()  
1557 - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')  
1558 - .css(isVertical ? 'top' : 'left', '')  
1559 - }  
1560 -  
1561 - Tooltip.prototype.setContent = function () {  
1562 - var $tip = this.tip()  
1563 - var title = this.getTitle()  
1564 -  
1565 - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)  
1566 - $tip.removeClass('fade in top bottom left right')  
1567 - }  
1568 -  
1569 - Tooltip.prototype.hide = function (callback) {  
1570 - var that = this  
1571 - var $tip = $(this.$tip)  
1572 - var e = $.Event('hide.bs.' + this.type)  
1573 -  
1574 - function complete() {  
1575 - if (that.hoverState != 'in') $tip.detach()  
1576 - if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.  
1577 - that.$element  
1578 - .removeAttr('aria-describedby')  
1579 - .trigger('hidden.bs.' + that.type)  
1580 - }  
1581 - callback && callback()  
1582 - }  
1583 -  
1584 - this.$element.trigger(e)  
1585 -  
1586 - if (e.isDefaultPrevented()) return  
1587 -  
1588 - $tip.removeClass('in')  
1589 -  
1590 - $.support.transition && $tip.hasClass('fade') ?  
1591 - $tip  
1592 - .one('bsTransitionEnd', complete)  
1593 - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :  
1594 - complete()  
1595 -  
1596 - this.hoverState = null  
1597 -  
1598 - return this  
1599 - }  
1600 -  
1601 - Tooltip.prototype.fixTitle = function () {  
1602 - var $e = this.$element  
1603 - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {  
1604 - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')  
1605 - }  
1606 - }  
1607 -  
1608 - Tooltip.prototype.hasContent = function () {  
1609 - return this.getTitle()  
1610 - }  
1611 -  
1612 - Tooltip.prototype.getPosition = function ($element) {  
1613 - $element = $element || this.$element  
1614 -  
1615 - var el = $element[0]  
1616 - var isBody = el.tagName == 'BODY'  
1617 -  
1618 - var elRect = el.getBoundingClientRect()  
1619 - if (elRect.width == null) {  
1620 - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093  
1621 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })  
1622 - }  
1623 - var isSvg = window.SVGElement && el instanceof window.SVGElement  
1624 - // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.  
1625 - // See https://github.com/twbs/bootstrap/issues/20280  
1626 - var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())  
1627 - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }  
1628 - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null  
1629 -  
1630 - return $.extend({}, elRect, scroll, outerDims, elOffset)  
1631 - }  
1632 -  
1633 - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {  
1634 - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :  
1635 - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :  
1636 - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :  
1637 - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }  
1638 -  
1639 - }  
1640 -  
1641 - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {  
1642 - var delta = { top: 0, left: 0 }  
1643 - if (!this.$viewport) return delta  
1644 -  
1645 - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0  
1646 - var viewportDimensions = this.getPosition(this.$viewport)  
1647 -  
1648 - if (/right|left/.test(placement)) {  
1649 - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll  
1650 - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight  
1651 - if (topEdgeOffset < viewportDimensions.top) { // top overflow  
1652 - delta.top = viewportDimensions.top - topEdgeOffset  
1653 - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow  
1654 - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset  
1655 - }  
1656 - } else {  
1657 - var leftEdgeOffset = pos.left - viewportPadding  
1658 - var rightEdgeOffset = pos.left + viewportPadding + actualWidth  
1659 - if (leftEdgeOffset < viewportDimensions.left) { // left overflow  
1660 - delta.left = viewportDimensions.left - leftEdgeOffset  
1661 - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow  
1662 - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset  
1663 - }  
1664 - }  
1665 -  
1666 - return delta  
1667 - }  
1668 -  
1669 - Tooltip.prototype.getTitle = function () {  
1670 - var title  
1671 - var $e = this.$element  
1672 - var o = this.options  
1673 -  
1674 - title = $e.attr('data-original-title')  
1675 - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)  
1676 -  
1677 - return title  
1678 - }  
1679 -  
1680 - Tooltip.prototype.getUID = function (prefix) {  
1681 - do prefix += ~~(Math.random() * 1000000)  
1682 - while (document.getElementById(prefix))  
1683 - return prefix  
1684 - }  
1685 -  
1686 - Tooltip.prototype.tip = function () {  
1687 - if (!this.$tip) {  
1688 - this.$tip = $(this.options.template)  
1689 - if (this.$tip.length != 1) {  
1690 - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')  
1691 - }  
1692 - }  
1693 - return this.$tip  
1694 - }  
1695 -  
1696 - Tooltip.prototype.arrow = function () {  
1697 - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))  
1698 - }  
1699 -  
1700 - Tooltip.prototype.enable = function () {  
1701 - this.enabled = true  
1702 - }  
1703 -  
1704 - Tooltip.prototype.disable = function () {  
1705 - this.enabled = false  
1706 - }  
1707 -  
1708 - Tooltip.prototype.toggleEnabled = function () {  
1709 - this.enabled = !this.enabled  
1710 - }  
1711 -  
1712 - Tooltip.prototype.toggle = function (e) {  
1713 - var self = this  
1714 - if (e) {  
1715 - self = $(e.currentTarget).data('bs.' + this.type)  
1716 - if (!self) {  
1717 - self = new this.constructor(e.currentTarget, this.getDelegateOptions())  
1718 - $(e.currentTarget).data('bs.' + this.type, self)  
1719 - }  
1720 - }  
1721 -  
1722 - if (e) {  
1723 - self.inState.click = !self.inState.click  
1724 - if (self.isInStateTrue()) self.enter(self)  
1725 - else self.leave(self)  
1726 - } else {  
1727 - self.tip().hasClass('in') ? self.leave(self) : self.enter(self)  
1728 - }  
1729 - }  
1730 -  
1731 - Tooltip.prototype.destroy = function () {  
1732 - var that = this  
1733 - clearTimeout(this.timeout)  
1734 - this.hide(function () {  
1735 - that.$element.off('.' + that.type).removeData('bs.' + that.type)  
1736 - if (that.$tip) {  
1737 - that.$tip.detach()  
1738 - }  
1739 - that.$tip = null  
1740 - that.$arrow = null  
1741 - that.$viewport = null  
1742 - that.$element = null  
1743 - })  
1744 - }  
1745 -  
1746 -  
1747 - // TOOLTIP PLUGIN DEFINITION  
1748 - // =========================  
1749 -  
1750 - function Plugin(option) {  
1751 - return this.each(function () {  
1752 - var $this = $(this)  
1753 - var data = $this.data('bs.tooltip')  
1754 - var options = typeof option == 'object' && option  
1755 -  
1756 - if (!data && /destroy|hide/.test(option)) return  
1757 - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))  
1758 - if (typeof option == 'string') data[option]()  
1759 - })  
1760 - }  
1761 -  
1762 - var old = $.fn.tooltip  
1763 -  
1764 - $.fn.tooltip = Plugin  
1765 - $.fn.tooltip.Constructor = Tooltip  
1766 -  
1767 -  
1768 - // TOOLTIP NO CONFLICT  
1769 - // ===================  
1770 -  
1771 - $.fn.tooltip.noConflict = function () {  
1772 - $.fn.tooltip = old  
1773 - return this  
1774 - }  
1775 -  
1776 -}(jQuery);  
1777 -  
1778 -/* ========================================================================  
1779 - * Bootstrap: popover.js v3.3.7  
1780 - * http://getbootstrap.com/javascript/#popovers  
1781 - * ========================================================================  
1782 - * Copyright 2011-2016 Twitter, Inc.  
1783 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
1784 - * ======================================================================== */  
1785 -  
1786 -  
1787 -+function ($) {  
1788 - 'use strict';  
1789 -  
1790 - // POPOVER PUBLIC CLASS DEFINITION  
1791 - // ===============================  
1792 -  
1793 - var Popover = function (element, options) {  
1794 - this.init('popover', element, options)  
1795 - }  
1796 -  
1797 - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')  
1798 -  
1799 - Popover.VERSION = '3.3.7'  
1800 -  
1801 - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {  
1802 - placement: 'right',  
1803 - trigger: 'click',  
1804 - content: '',  
1805 - template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'  
1806 - })  
1807 -  
1808 -  
1809 - // NOTE: POPOVER EXTENDS tooltip.js  
1810 - // ================================  
1811 -  
1812 - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)  
1813 -  
1814 - Popover.prototype.constructor = Popover  
1815 -  
1816 - Popover.prototype.getDefaults = function () {  
1817 - return Popover.DEFAULTS  
1818 - }  
1819 -  
1820 - Popover.prototype.setContent = function () {  
1821 - var $tip = this.tip()  
1822 - var title = this.getTitle()  
1823 - var content = this.getContent()  
1824 -  
1825 - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)  
1826 - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events  
1827 - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'  
1828 - ](content)  
1829 -  
1830 - $tip.removeClass('fade top bottom left right in')  
1831 -  
1832 - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do  
1833 - // this manually by checking the contents.  
1834 - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()  
1835 - }  
1836 -  
1837 - Popover.prototype.hasContent = function () {  
1838 - return this.getTitle() || this.getContent()  
1839 - }  
1840 -  
1841 - Popover.prototype.getContent = function () {  
1842 - var $e = this.$element  
1843 - var o = this.options  
1844 -  
1845 - return $e.attr('data-content')  
1846 - || (typeof o.content == 'function' ?  
1847 - o.content.call($e[0]) :  
1848 - o.content)  
1849 - }  
1850 -  
1851 - Popover.prototype.arrow = function () {  
1852 - return (this.$arrow = this.$arrow || this.tip().find('.arrow'))  
1853 - }  
1854 -  
1855 -  
1856 - // POPOVER PLUGIN DEFINITION  
1857 - // =========================  
1858 -  
1859 - function Plugin(option) {  
1860 - return this.each(function () {  
1861 - var $this = $(this)  
1862 - var data = $this.data('bs.popover')  
1863 - var options = typeof option == 'object' && option  
1864 -  
1865 - if (!data && /destroy|hide/.test(option)) return  
1866 - if (!data) $this.data('bs.popover', (data = new Popover(this, options)))  
1867 - if (typeof option == 'string') data[option]()  
1868 - })  
1869 - }  
1870 -  
1871 - var old = $.fn.popover  
1872 -  
1873 - $.fn.popover = Plugin  
1874 - $.fn.popover.Constructor = Popover  
1875 -  
1876 -  
1877 - // POPOVER NO CONFLICT  
1878 - // ===================  
1879 -  
1880 - $.fn.popover.noConflict = function () {  
1881 - $.fn.popover = old  
1882 - return this  
1883 - }  
1884 -  
1885 -}(jQuery);  
1886 -  
1887 -/* ========================================================================  
1888 - * Bootstrap: scrollspy.js v3.3.7  
1889 - * http://getbootstrap.com/javascript/#scrollspy  
1890 - * ========================================================================  
1891 - * Copyright 2011-2016 Twitter, Inc.  
1892 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
1893 - * ======================================================================== */  
1894 -  
1895 -  
1896 -+function ($) {  
1897 - 'use strict';  
1898 -  
1899 - // SCROLLSPY CLASS DEFINITION  
1900 - // ==========================  
1901 -  
1902 - function ScrollSpy(element, options) {  
1903 - this.$body = $(document.body)  
1904 - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)  
1905 - this.options = $.extend({}, ScrollSpy.DEFAULTS, options)  
1906 - this.selector = (this.options.target || '') + ' .nav li > a'  
1907 - this.offsets = []  
1908 - this.targets = []  
1909 - this.activeTarget = null  
1910 - this.scrollHeight = 0  
1911 -  
1912 - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))  
1913 - this.refresh()  
1914 - this.process()  
1915 - }  
1916 -  
1917 - ScrollSpy.VERSION = '3.3.7'  
1918 -  
1919 - ScrollSpy.DEFAULTS = {  
1920 - offset: 10  
1921 - }  
1922 -  
1923 - ScrollSpy.prototype.getScrollHeight = function () {  
1924 - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)  
1925 - }  
1926 -  
1927 - ScrollSpy.prototype.refresh = function () {  
1928 - var that = this  
1929 - var offsetMethod = 'offset'  
1930 - var offsetBase = 0  
1931 -  
1932 - this.offsets = []  
1933 - this.targets = []  
1934 - this.scrollHeight = this.getScrollHeight()  
1935 -  
1936 - if (!$.isWindow(this.$scrollElement[0])) {  
1937 - offsetMethod = 'position'  
1938 - offsetBase = this.$scrollElement.scrollTop()  
1939 - }  
1940 -  
1941 - this.$body  
1942 - .find(this.selector)  
1943 - .map(function () {  
1944 - var $el = $(this)  
1945 - var href = $el.data('target') || $el.attr('href')  
1946 - var $href = /^#./.test(href) && $(href)  
1947 -  
1948 - return ($href  
1949 - && $href.length  
1950 - && $href.is(':visible')  
1951 - && [[$href[offsetMethod]().top + offsetBase, href]]) || null  
1952 - })  
1953 - .sort(function (a, b) { return a[0] - b[0] })  
1954 - .each(function () {  
1955 - that.offsets.push(this[0])  
1956 - that.targets.push(this[1])  
1957 - })  
1958 - }  
1959 -  
1960 - ScrollSpy.prototype.process = function () {  
1961 - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset  
1962 - var scrollHeight = this.getScrollHeight()  
1963 - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()  
1964 - var offsets = this.offsets  
1965 - var targets = this.targets  
1966 - var activeTarget = this.activeTarget  
1967 - var i  
1968 -  
1969 - if (this.scrollHeight != scrollHeight) {  
1970 - this.refresh()  
1971 - }  
1972 -  
1973 - if (scrollTop >= maxScroll) {  
1974 - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)  
1975 - }  
1976 -  
1977 - if (activeTarget && scrollTop < offsets[0]) {  
1978 - this.activeTarget = null  
1979 - return this.clear()  
1980 - }  
1981 -  
1982 - for (i = offsets.length; i--;) {  
1983 - activeTarget != targets[i]  
1984 - && scrollTop >= offsets[i]  
1985 - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])  
1986 - && this.activate(targets[i])  
1987 - }  
1988 - }  
1989 -  
1990 - ScrollSpy.prototype.activate = function (target) {  
1991 - this.activeTarget = target  
1992 -  
1993 - this.clear()  
1994 -  
1995 - var selector = this.selector +  
1996 - '[data-target="' + target + '"],' +  
1997 - this.selector + '[href="' + target + '"]'  
1998 -  
1999 - var active = $(selector)  
2000 - .parents('li')  
2001 - .addClass('active')  
2002 -  
2003 - if (active.parent('.dropdown-menu').length) {  
2004 - active = active  
2005 - .closest('li.dropdown')  
2006 - .addClass('active')  
2007 - }  
2008 -  
2009 - active.trigger('activate.bs.scrollspy')  
2010 - }  
2011 -  
2012 - ScrollSpy.prototype.clear = function () {  
2013 - $(this.selector)  
2014 - .parentsUntil(this.options.target, '.active')  
2015 - .removeClass('active')  
2016 - }  
2017 -  
2018 -  
2019 - // SCROLLSPY PLUGIN DEFINITION  
2020 - // ===========================  
2021 -  
2022 - function Plugin(option) {  
2023 - return this.each(function () {  
2024 - var $this = $(this)  
2025 - var data = $this.data('bs.scrollspy')  
2026 - var options = typeof option == 'object' && option  
2027 -  
2028 - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))  
2029 - if (typeof option == 'string') data[option]()  
2030 - })  
2031 - }  
2032 -  
2033 - var old = $.fn.scrollspy  
2034 -  
2035 - $.fn.scrollspy = Plugin  
2036 - $.fn.scrollspy.Constructor = ScrollSpy  
2037 -  
2038 -  
2039 - // SCROLLSPY NO CONFLICT  
2040 - // =====================  
2041 -  
2042 - $.fn.scrollspy.noConflict = function () {  
2043 - $.fn.scrollspy = old  
2044 - return this  
2045 - }  
2046 -  
2047 -  
2048 - // SCROLLSPY DATA-API  
2049 - // ==================  
2050 -  
2051 - $(window).on('load.bs.scrollspy.data-api', function () {  
2052 - $('[data-spy="scroll"]').each(function () {  
2053 - var $spy = $(this)  
2054 - Plugin.call($spy, $spy.data())  
2055 - })  
2056 - })  
2057 -  
2058 -}(jQuery);  
2059 -  
2060 -/* ========================================================================  
2061 - * Bootstrap: tab.js v3.3.7  
2062 - * http://getbootstrap.com/javascript/#tabs  
2063 - * ========================================================================  
2064 - * Copyright 2011-2016 Twitter, Inc.  
2065 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
2066 - * ======================================================================== */  
2067 -  
2068 -  
2069 -+function ($) {  
2070 - 'use strict';  
2071 -  
2072 - // TAB CLASS DEFINITION  
2073 - // ====================  
2074 -  
2075 - var Tab = function (element) {  
2076 - // jscs:disable requireDollarBeforejQueryAssignment  
2077 - this.element = $(element)  
2078 - // jscs:enable requireDollarBeforejQueryAssignment  
2079 - }  
2080 -  
2081 - Tab.VERSION = '3.3.7'  
2082 -  
2083 - Tab.TRANSITION_DURATION = 150  
2084 -  
2085 - Tab.prototype.show = function () {  
2086 - var $this = this.element  
2087 - var $ul = $this.closest('ul:not(.dropdown-menu)')  
2088 - var selector = $this.data('target')  
2089 -  
2090 - if (!selector) {  
2091 - selector = $this.attr('href')  
2092 - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7  
2093 - }  
2094 -  
2095 - if ($this.parent('li').hasClass('active')) return  
2096 -  
2097 - var $previous = $ul.find('.active:last a')  
2098 - var hideEvent = $.Event('hide.bs.tab', {  
2099 - relatedTarget: $this[0]  
2100 - })  
2101 - var showEvent = $.Event('show.bs.tab', {  
2102 - relatedTarget: $previous[0]  
2103 - })  
2104 -  
2105 - $previous.trigger(hideEvent)  
2106 - $this.trigger(showEvent)  
2107 -  
2108 - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return  
2109 -  
2110 - var $target = $(selector)  
2111 -  
2112 - this.activate($this.closest('li'), $ul)  
2113 - this.activate($target, $target.parent(), function () {  
2114 - $previous.trigger({  
2115 - type: 'hidden.bs.tab',  
2116 - relatedTarget: $this[0]  
2117 - })  
2118 - $this.trigger({  
2119 - type: 'shown.bs.tab',  
2120 - relatedTarget: $previous[0]  
2121 - })  
2122 - })  
2123 - }  
2124 -  
2125 - Tab.prototype.activate = function (element, container, callback) {  
2126 - var $active = container.find('> .active')  
2127 - var transition = callback  
2128 - && $.support.transition  
2129 - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)  
2130 -  
2131 - function next() {  
2132 - $active  
2133 - .removeClass('active')  
2134 - .find('> .dropdown-menu > .active')  
2135 - .removeClass('active')  
2136 - .end()  
2137 - .find('[data-toggle="tab"]')  
2138 - .attr('aria-expanded', false)  
2139 -  
2140 - element  
2141 - .addClass('active')  
2142 - .find('[data-toggle="tab"]')  
2143 - .attr('aria-expanded', true)  
2144 -  
2145 - if (transition) {  
2146 - element[0].offsetWidth // reflow for transition  
2147 - element.addClass('in')  
2148 - } else {  
2149 - element.removeClass('fade')  
2150 - }  
2151 -  
2152 - if (element.parent('.dropdown-menu').length) {  
2153 - element  
2154 - .closest('li.dropdown')  
2155 - .addClass('active')  
2156 - .end()  
2157 - .find('[data-toggle="tab"]')  
2158 - .attr('aria-expanded', true)  
2159 - }  
2160 -  
2161 - callback && callback()  
2162 - }  
2163 -  
2164 - $active.length && transition ?  
2165 - $active  
2166 - .one('bsTransitionEnd', next)  
2167 - .emulateTransitionEnd(Tab.TRANSITION_DURATION) :  
2168 - next()  
2169 -  
2170 - $active.removeClass('in')  
2171 - }  
2172 -  
2173 -  
2174 - // TAB PLUGIN DEFINITION  
2175 - // =====================  
2176 -  
2177 - function Plugin(option) {  
2178 - return this.each(function () {  
2179 - var $this = $(this)  
2180 - var data = $this.data('bs.tab')  
2181 -  
2182 - if (!data) $this.data('bs.tab', (data = new Tab(this)))  
2183 - if (typeof option == 'string') data[option]()  
2184 - })  
2185 - }  
2186 -  
2187 - var old = $.fn.tab  
2188 -  
2189 - $.fn.tab = Plugin  
2190 - $.fn.tab.Constructor = Tab  
2191 -  
2192 -  
2193 - // TAB NO CONFLICT  
2194 - // ===============  
2195 -  
2196 - $.fn.tab.noConflict = function () {  
2197 - $.fn.tab = old  
2198 - return this  
2199 - }  
2200 -  
2201 -  
2202 - // TAB DATA-API  
2203 - // ============  
2204 -  
2205 - var clickHandler = function (e) {  
2206 - e.preventDefault()  
2207 - Plugin.call($(this), 'show')  
2208 - }  
2209 -  
2210 - $(document)  
2211 - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)  
2212 - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)  
2213 -  
2214 -}(jQuery);  
2215 -  
2216 -/* ========================================================================  
2217 - * Bootstrap: affix.js v3.3.7  
2218 - * http://getbootstrap.com/javascript/#affix  
2219 - * ========================================================================  
2220 - * Copyright 2011-2016 Twitter, Inc.  
2221 - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)  
2222 - * ======================================================================== */  
2223 -  
2224 -  
2225 -+function ($) {  
2226 - 'use strict';  
2227 -  
2228 - // AFFIX CLASS DEFINITION  
2229 - // ======================  
2230 -  
2231 - var Affix = function (element, options) {  
2232 - this.options = $.extend({}, Affix.DEFAULTS, options)  
2233 -  
2234 - this.$target = $(this.options.target)  
2235 - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))  
2236 - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))  
2237 -  
2238 - this.$element = $(element)  
2239 - this.affixed = null  
2240 - this.unpin = null  
2241 - this.pinnedOffset = null  
2242 -  
2243 - this.checkPosition()  
2244 - }  
2245 -  
2246 - Affix.VERSION = '3.3.7'  
2247 -  
2248 - Affix.RESET = 'affix affix-top affix-bottom'  
2249 -  
2250 - Affix.DEFAULTS = {  
2251 - offset: 0,  
2252 - target: window  
2253 - }  
2254 -  
2255 - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {  
2256 - var scrollTop = this.$target.scrollTop()  
2257 - var position = this.$element.offset()  
2258 - var targetHeight = this.$target.height()  
2259 -  
2260 - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false  
2261 -  
2262 - if (this.affixed == 'bottom') {  
2263 - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'  
2264 - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'  
2265 - }  
2266 -  
2267 - var initializing = this.affixed == null  
2268 - var colliderTop = initializing ? scrollTop : position.top  
2269 - var colliderHeight = initializing ? targetHeight : height  
2270 -  
2271 - if (offsetTop != null && scrollTop <= offsetTop) return 'top'  
2272 - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'  
2273 -  
2274 - return false  
2275 - }  
2276 -  
2277 - Affix.prototype.getPinnedOffset = function () {  
2278 - if (this.pinnedOffset) return this.pinnedOffset  
2279 - this.$element.removeClass(Affix.RESET).addClass('affix')  
2280 - var scrollTop = this.$target.scrollTop()  
2281 - var position = this.$element.offset()  
2282 - return (this.pinnedOffset = position.top - scrollTop)  
2283 - }  
2284 -  
2285 - Affix.prototype.checkPositionWithEventLoop = function () {  
2286 - setTimeout($.proxy(this.checkPosition, this), 1)  
2287 - }  
2288 -  
2289 - Affix.prototype.checkPosition = function () {  
2290 - if (!this.$element.is(':visible')) return  
2291 -  
2292 - var height = this.$element.height()  
2293 - var offset = this.options.offset  
2294 - var offsetTop = offset.top  
2295 - var offsetBottom = offset.bottom  
2296 - var scrollHeight = Math.max($(document).height(), $(document.body).height())  
2297 -  
2298 - if (typeof offset != 'object') offsetBottom = offsetTop = offset  
2299 - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)  
2300 - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)  
2301 -  
2302 - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)  
2303 -  
2304 - if (this.affixed != affix) {  
2305 - if (this.unpin != null) this.$element.css('top', '')  
2306 -  
2307 - var affixType = 'affix' + (affix ? '-' + affix : '')  
2308 - var e = $.Event(affixType + '.bs.affix')  
2309 -  
2310 - this.$element.trigger(e)  
2311 -  
2312 - if (e.isDefaultPrevented()) return  
2313 -  
2314 - this.affixed = affix  
2315 - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null  
2316 -  
2317 - this.$element  
2318 - .removeClass(Affix.RESET)  
2319 - .addClass(affixType)  
2320 - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')  
2321 - }  
2322 -  
2323 - if (affix == 'bottom') {  
2324 - this.$element.offset({  
2325 - top: scrollHeight - height - offsetBottom  
2326 - })  
2327 - }  
2328 - }  
2329 -  
2330 -  
2331 - // AFFIX PLUGIN DEFINITION  
2332 - // =======================  
2333 -  
2334 - function Plugin(option) {  
2335 - return this.each(function () {  
2336 - var $this = $(this)  
2337 - var data = $this.data('bs.affix')  
2338 - var options = typeof option == 'object' && option  
2339 -  
2340 - if (!data) $this.data('bs.affix', (data = new Affix(this, options)))  
2341 - if (typeof option == 'string') data[option]()  
2342 - })  
2343 - }  
2344 -  
2345 - var old = $.fn.affix  
2346 -  
2347 - $.fn.affix = Plugin  
2348 - $.fn.affix.Constructor = Affix  
2349 -  
2350 -  
2351 - // AFFIX NO CONFLICT  
2352 - // =================  
2353 -  
2354 - $.fn.affix.noConflict = function () {  
2355 - $.fn.affix = old  
2356 - return this  
2357 - }  
2358 -  
2359 -  
2360 - // AFFIX DATA-API  
2361 - // ==============  
2362 -  
2363 - $(window).on('load', function () {  
2364 - $('[data-spy="affix"]').each(function () {  
2365 - var $spy = $(this)  
2366 - var data = $spy.data()  
2367 -  
2368 - data.offset = data.offset || {}  
2369 -  
2370 - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom  
2371 - if (data.offsetTop != null) data.offset.top = data.offsetTop  
2372 -  
2373 - Plugin.call($spy, data)  
2374 - })  
2375 - })  
2376 -  
2377 -}(jQuery); 6 +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
  7 +this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
2378 \ No newline at end of file 8 \ No newline at end of file
js/url.js
1 var mUrl = mUrl || {}; 1 var mUrl = mUrl || {};
2 2
3 3
4 -//songcxa 15801541129  
5 -mUrl.testtoken = "a49e4835f5184f0fb5d0aba2a30bca8b"; 4 +//songcxa 15801541129 测试环境 http://39.98.54.240:8090
  5 +//mUrl.testtoken = "a49e4835f5184f0fb5d0aba2a30bca8b";
  6 +//mUrl.testdeviceInfo = "868869021179618";//android
  7 +//mUrl.testopenid = "okuZ90q3qKXcUYvtPS7siklJzuEE";//王彪配合从数据库拿到
  8 +
  9 +//songcxa 15801541129 正式环境 http://pay.service.renniting.cn/v1
  10 +mUrl.testtoken = "842b8f4350d6454ba4ca336606959602";
6 mUrl.testdeviceInfo = "868869021179618";//android 11 mUrl.testdeviceInfo = "868869021179618";//android
  12 +mUrl.testopenid = "okuZ90l_HUpUvPKMp29YNNlwa61w";//王彪配合从数据库拿到
7 13
8 /*获取设置openid start*/ 14 /*获取设置openid start*/
9 mUrl.GetOpenid = function(){ 15 mUrl.GetOpenid = function(){
@@ -88,7 +94,9 @@ mUrl.getJx = function(){ @@ -88,7 +94,9 @@ mUrl.getJx = function(){
88 94
89 /*end*/ 95 /*end*/
90 96
91 -var cepath = 'http://39.98.54.240:8090';//http://pay.service.renniting.cn//http://39.98.54.240:8090//http://app.api.dyszt.com:8090//var cepath = 'http://app.api.dyszt.com:8090';//https://pay.service.rnting.com//'http://47.96.41.38:8090'; 97 +//var cepath = 'http://39.98.54.240:8090';//http://pay.service.renniting.cn//http://39.98.54.240:8090//http://app.api.dyszt.com:8090//var cepath = 'http://app.api.dyszt.com:8090';//https://pay.service.rnting.com//'http://47.96.41.38:8090';
  98 +//生产环境地址
  99 +var cepath = 'http://pay.service.renniting.cn/v1';
92 /*----------------------------------------------登录登出绑定手机号 start*/ 100 /*----------------------------------------------登录登出绑定手机号 start*/
93 //发送验证码 101 //发送验证码
94 mUrl.sendRandCode = cepath + '/user/sendverificode';//webPath + '/binding/sendRandCode'+mUrl.getCommonParam(); 102 mUrl.sendRandCode = cepath + '/user/sendverificode';//webPath + '/binding/sendRandCode'+mUrl.getCommonParam();
@@ -24,3 +24,16 @@ http://39.98.54.240:88/apidoc/index.php?s=/7&amp;page_id=605 @@ -24,3 +24,16 @@ http://39.98.54.240:88/apidoc/index.php?s=/7&amp;page_id=605
24 mUrl.queryAppOrgs = cepath + '/appOrg/queryAppOrgs';//获取区域列表songcxa 24 mUrl.queryAppOrgs = cepath + '/appOrg/queryAppOrgs';//获取区域列表songcxa
25 测试环境不需要加v1 25 测试环境不需要加v1
26 正式环境需要cepath + '/v1/appOrg/queryAppOrgs'; 26 正式环境需要cepath + '/v1/appOrg/queryAppOrgs';
  27 +
  28 + [6]会员卡列表
  29 + Threewf/more/VipCardtwo/Vipcard.html[右下角广告问题]
  30 +
  31 + [7]任性值规则
  32 + more\greade\greade.html
  33 +
  34 + [8]临停支付 三个页面添加orgId
  35 + stoppayment\select.html //orgId
  36 + stoppayment/Temporary/check.html //检查订单orgId
  37 + pay/immediatepaycs.html//微信支付页面发起支付orgId
  38 +
  39 + 苏FC684H / 正式环境 || 京A56789 / 测试环境
more/VipCardtwo/Vipcard.html
@@ -305,9 +305,9 @@ @@ -305,9 +305,9 @@
305 </body> 305 </body>
306 </html> 306 </html>
307 <script src="../../js/jquery-3.2.1.min.js"></script> 307 <script src="../../js/jquery-3.2.1.min.js"></script>
308 -<script src="../../js/bootstrap/bootstrap.js"></script> 308 +<script src="../../js/bootstrap/bootstrap.js?v=3.3.7"></script>
309 <script src="js/swiper.min.js"></script> 309 <script src="js/swiper.min.js"></script>
310 -<script src="js/choumei.js"></script> 310 +<!--<script src="js/choumei.js"></script>-->
311 <script src="../../js/md5.min.js"></script> 311 <script src="../../js/md5.min.js"></script>
312 <script src="../../js/url.js"></script> 312 <script src="../../js/url.js"></script>
313 <script src="../../js/ajax.js"></script> 313 <script src="../../js/ajax.js"></script>
more/self/self2.html
@@ -354,36 +354,37 @@ @@ -354,36 +354,37 @@
354 isAndroid_ios(); 354 isAndroid_ios();
355 var getcode = location.href; 355 var getcode = location.href;
356 356
357 -  
358 // alert('clapntemp_356+getcode=',getcode); 357 // alert('clapntemp_356+getcode=',getcode);
359 // alert('clapntemp_359+window.location.href=',window.location.search); 358 // alert('clapntemp_359+window.location.href=',window.location.search);
360 359
361 -  
362 - if(getcode&&getcode!=''){  
363 - var datacoded = getcode.split('?')[1];  
364 - if(datacoded&&datacoded!=''){  
365 - var datacode = datacoded.split('&')[0].split('=')[1];  
366 - if(datacoded.split('&')[0].split('=')[0]=='code'){  
367 - $('.appxs').css('display','none');  
368 - jsajax.getopenid(datacode,function(openid){  
369 - console.log("请求"+openid);  
370 - var pt = 'wx';  
371 - mUrl.setApporWX(pt);  
372 - jsajax.gett(openid,function(n){  
373 - if(n==1){//用户已绑定手机号  
374 - getinfoself();//获取用户信息  
375 - }else if(n==0){//用户未绑定手机号  
376 - console.log('用户未绑定手机号');  
377 - setUserinf('','','','','','','','');  
378 - }  
379 - });  
380 - });//获取openid token  
381 - }  
382 - } 360 + //正式环境-如果测试需要注释,放开386行测试环境
  361 + if (getcode && getcode != '') {
  362 + var datacoded = getcode.split('?')[1];
  363 + if (datacoded && datacoded != '') {
  364 + var datacode = datacoded.split('&')[0].split('=')[1];
  365 + if (datacoded.split('&')[0].split('=')[0] == 'code') {
  366 + $('.appxs').css('display', 'none');
  367 + jsajax.getopenid(datacode, function (openid) {
  368 + console.log("请求" + openid);
  369 + var pt = 'wx';
  370 + mUrl.setApporWX(pt);
  371 + jsajax.gett(openid, function (n) {
  372 + if (n == 1) {//用户已绑定手机号
  373 + getinfoself();//获取用户信息
  374 + } else if (n == 0) {//用户未绑定手机号
  375 + console.log('用户未绑定手机号');
  376 + setUserinf('', '', '', '', '', '', '', '');
  377 + }
  378 + });
  379 + });//获取openid token
  380 + }
  381 + }
383 } 382 }
  383 +
384 var getopenid = mUrl.GetOpenid(); 384 var getopenid = mUrl.GetOpenid();
385 -// alert('clapntemp_获取到用户openid'+getopenid);  
386 - 385 + //alert('clapntemp_获取到用户openid'+getopenid);
  386 + //测试环境
  387 + //getopenid = mUrl.testopenid;//songcxa测试环境获取设置openid[从王彪处拿取]
387 if(getopenid&&getopenid!=''&&getopenid!='null'){ 388 if(getopenid&&getopenid!=''&&getopenid!='null'){
388 389
389 console.log('获取到用户openid'+mUrl.GetOpenid()); 390 console.log('获取到用户openid'+mUrl.GetOpenid());
pay/immediatepaycs.html
1 -<!DOCTYPE html> 1 +<!DOCTYPE html>
2 <html lang="en"> 2 <html lang="en">
3 <head> 3 <head>
4 <meta charset="UTF-8"> 4 <meta charset="UTF-8">
@@ -78,7 +78,8 @@ @@ -78,7 +78,8 @@
78 <script> 78 <script>
79 var func = { 79 var func = {
80 openid:'', 80 openid:'',
81 - token:'' 81 + token:'',
  82 + orgId:''//获取组织ID
82 }; 83 };
83 var intDiff = parseInt(5*60);//倒计时总秒数量 84 var intDiff = parseInt(5*60);//倒计时总秒数量
84 function timer(intDiff){ 85 function timer(intDiff){
@@ -193,6 +194,7 @@ @@ -193,6 +194,7 @@
193 orderID= strurl[0].split('=')[1]; 194 orderID= strurl[0].split('=')[1];
194 var carnum = strurl[1].split('=')[1]; 195 var carnum = strurl[1].split('=')[1];
195 var unpaid = strurl[2].split('=')[1]; 196 var unpaid = strurl[2].split('=')[1];
  197 + func.orgId = strurl[4].split('=')[1] || "";
196 $("#carnum").text(carnum); 198 $("#carnum").text(carnum);
197 $("#unpaid").text(unpaid); 199 $("#unpaid").text(unpaid);
198 func.openid = mUrl.GetOpenid(); 200 func.openid = mUrl.GetOpenid();
@@ -207,7 +209,8 @@ @@ -207,7 +209,8 @@
207 paySource:'3', 209 paySource:'3',
208 paySrcType:'101', 210 paySrcType:'101',
209 couponPersonId:'', 211 couponPersonId:'',
210 - terminalSource:'3'//微信公众号 212 + terminalSource: '3',//微信公众号
  213 + orgId: func.orgId //组织ID
211 }; 214 };
212 215
213 jsondata = JSON.stringify(jsondata); 216 jsondata = JSON.stringify(jsondata);
stoppayment/Temporary/check.html
1 -<!DOCTYPE html> 1 +<!DOCTYPE html>
2 <html lang="en"> 2 <html lang="en">
3 <head> 3 <head>
4 <meta charset="UTF-8"> 4 <meta charset="UTF-8">
@@ -136,8 +136,8 @@ @@ -136,8 +136,8 @@
136 openid:'', 136 openid:'',
137 token:'', 137 token:'',
138 unpaid:'', 138 unpaid:'',
139 - countType:''  
140 - 139 + countType:'',
  140 + orgId:'',
141 }; 141 };
142 142
143 $(function(){ 143 $(function(){
@@ -156,8 +156,10 @@ @@ -156,8 +156,10 @@
156 var disFee = dataselectt[8].split('=')[1]; 156 var disFee = dataselectt[8].split('=')[1];
157 var disDesc = dataselectt[9].split('=')[1]; 157 var disDesc = dataselectt[9].split('=')[1];
158 func.countType = dataselectt[10].split('=')[1]; 158 func.countType = dataselectt[10].split('=')[1];
159 -  
160 - 159 + //songcxa 2019-1-2 添加组织ID
  160 + var orgId = dataselectt[12].split('=')[1];
  161 + func.orgId = orgId;
  162 +
161 var staytimes =jsajax.formatSeconds(staytime); //Math.floor(staytime/60) + "小时" + (staytime%60) + "分" ; 163 var staytimes =jsajax.formatSeconds(staytime); //Math.floor(staytime/60) + "小时" + (staytime%60) + "分" ;
162 //staytimes = jsajax.fStohours(staytime); 164 //staytimes = jsajax.fStohours(staytime);
163 due = jsajax.fenToYuan(due); 165 due = jsajax.fenToYuan(due);
@@ -231,7 +233,7 @@ @@ -231,7 +233,7 @@
231 var parkCode = dataselectt[11].split('=')[1]; 233 var parkCode = dataselectt[11].split('=')[1];
232 234
233 var Urlsrc = '../../pay/immediatepaycs.html?orderID='+orderID+"&carnum="+carnum+"&unpaid="+unpaid 235 var Urlsrc = '../../pay/immediatepaycs.html?orderID='+orderID+"&carnum="+carnum+"&unpaid="+unpaid
234 - +"&parkCode="+parkCode 236 + + "&parkCode=" + parkCode + "&orgId="+func.orgId
235 +"&"; 237 +"&";
236 getOneorder(carnum,parkCode,orderID,'',Urlsrc); 238 getOneorder(carnum,parkCode,orderID,'',Urlsrc);
237 239
stoppayment/select.html
@@ -449,6 +449,8 @@ var func={ @@ -449,6 +449,8 @@ var func={
449 discountDesc = datas[i].discountDesc;//已优惠 449 discountDesc = datas[i].discountDesc;//已优惠
450 } 450 }
451 } 451 }
  452 + //songcxa 添加组织ID 2019-1-2
  453 + var orgId = datas[i].orgId;
452 //console.log('-------------------------------'+discountType); 454 //console.log('-------------------------------'+discountType);
453 //查询到车牌号订单信息 455 //查询到车牌号订单信息
454 var src = 'Temporary/check.html?carnum='+plateno 456 var src = 'Temporary/check.html?carnum='+plateno
@@ -462,7 +464,8 @@ var func={ @@ -462,7 +464,8 @@ var func={
462 +"&disfee="+discountFee 464 +"&disfee="+discountFee
463 +"&disdesc="+discountDesc 465 +"&disdesc="+discountDesc
464 +'&discountType='+discountType 466 +'&discountType='+discountType
465 - +'&parkCode='+parkCode 467 + + '&parkCode=' + parkCode
  468 + + '&orgId=' + orgId
466 +"&"; 469 +"&";
467 470
468 471