ft-webplatform/assets/js/web-platform-dist.js.map
Martin Donnelly 76920442b1 init
2017-09-28 13:04:16 +01:00

1 line
4.6 MiB
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["web-platform.js","web-platform-app.js","web-platform-etf.js","web-platform-gw.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClhnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5+vBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACliKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"web-platform-dist.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n\"use strict\";\n\n_dereq_(327);\n\n_dereq_(328);\n\n_dereq_(2);\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2,\"327\":327,\"328\":328}],2:[function(_dereq_,module,exports){\n_dereq_(130);\nmodule.exports = _dereq_(23).RegExp.escape;\n\n},{\"130\":130,\"23\":23}],3:[function(_dereq_,module,exports){\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n},{}],4:[function(_dereq_,module,exports){\nvar cof = _dereq_(18);\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n\n},{\"18\":18}],5:[function(_dereq_,module,exports){\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = _dereq_(128)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) _dereq_(42)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n},{\"128\":128,\"42\":42}],6:[function(_dereq_,module,exports){\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n},{}],7:[function(_dereq_,module,exports){\nvar isObject = _dereq_(51);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n},{\"51\":51}],8:[function(_dereq_,module,exports){\n// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = _dereq_(119);\nvar toAbsoluteIndex = _dereq_(114);\nvar toLength = _dereq_(118);\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n\n},{\"114\":114,\"118\":118,\"119\":119}],9:[function(_dereq_,module,exports){\n// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = _dereq_(119);\nvar toAbsoluteIndex = _dereq_(114);\nvar toLength = _dereq_(118);\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n},{\"114\":114,\"118\":118,\"119\":119}],10:[function(_dereq_,module,exports){\nvar forOf = _dereq_(39);\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n\n},{\"39\":39}],11:[function(_dereq_,module,exports){\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = _dereq_(117);\nvar toLength = _dereq_(118);\nvar toAbsoluteIndex = _dereq_(114);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n},{\"114\":114,\"117\":117,\"118\":118}],12:[function(_dereq_,module,exports){\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = _dereq_(25);\nvar IObject = _dereq_(47);\nvar toObject = _dereq_(119);\nvar toLength = _dereq_(118);\nvar asc = _dereq_(15);\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n},{\"118\":118,\"119\":119,\"15\":15,\"25\":25,\"47\":47}],13:[function(_dereq_,module,exports){\nvar aFunction = _dereq_(3);\nvar toObject = _dereq_(119);\nvar IObject = _dereq_(47);\nvar toLength = _dereq_(118);\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n\n},{\"118\":118,\"119\":119,\"3\":3,\"47\":47}],14:[function(_dereq_,module,exports){\nvar isObject = _dereq_(51);\nvar isArray = _dereq_(49);\nvar SPECIES = _dereq_(128)('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n},{\"128\":128,\"49\":49,\"51\":51}],15:[function(_dereq_,module,exports){\n// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = _dereq_(14);\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n\n},{\"14\":14}],16:[function(_dereq_,module,exports){\n'use strict';\nvar aFunction = _dereq_(3);\nvar isObject = _dereq_(51);\nvar invoke = _dereq_(46);\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n\n},{\"3\":3,\"46\":46,\"51\":51}],17:[function(_dereq_,module,exports){\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = _dereq_(18);\nvar TAG = _dereq_(128)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n},{\"128\":128,\"18\":18}],18:[function(_dereq_,module,exports){\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n},{}],19:[function(_dereq_,module,exports){\n'use strict';\nvar dP = _dereq_(72).f;\nvar create = _dereq_(71);\nvar redefineAll = _dereq_(93);\nvar ctx = _dereq_(25);\nvar anInstance = _dereq_(6);\nvar forOf = _dereq_(39);\nvar $iterDefine = _dereq_(55);\nvar step = _dereq_(57);\nvar setSpecies = _dereq_(100);\nvar DESCRIPTORS = _dereq_(29);\nvar fastKey = _dereq_(66).fastKey;\nvar validate = _dereq_(125);\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n\n},{\"100\":100,\"125\":125,\"25\":25,\"29\":29,\"39\":39,\"55\":55,\"57\":57,\"6\":6,\"66\":66,\"71\":71,\"72\":72,\"93\":93}],20:[function(_dereq_,module,exports){\n// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = _dereq_(17);\nvar from = _dereq_(10);\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n\n},{\"10\":10,\"17\":17}],21:[function(_dereq_,module,exports){\n'use strict';\nvar redefineAll = _dereq_(93);\nvar getWeak = _dereq_(66).getWeak;\nvar anObject = _dereq_(7);\nvar isObject = _dereq_(51);\nvar anInstance = _dereq_(6);\nvar forOf = _dereq_(39);\nvar createArrayMethod = _dereq_(12);\nvar $has = _dereq_(41);\nvar validate = _dereq_(125);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n\n},{\"12\":12,\"125\":125,\"39\":39,\"41\":41,\"51\":51,\"6\":6,\"66\":66,\"7\":7,\"93\":93}],22:[function(_dereq_,module,exports){\n'use strict';\nvar global = _dereq_(40);\nvar $export = _dereq_(33);\nvar redefine = _dereq_(94);\nvar redefineAll = _dereq_(93);\nvar meta = _dereq_(66);\nvar forOf = _dereq_(39);\nvar anInstance = _dereq_(6);\nvar isObject = _dereq_(51);\nvar fails = _dereq_(35);\nvar $iterDetect = _dereq_(56);\nvar setToStringTag = _dereq_(101);\nvar inheritIfRequired = _dereq_(45);\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n\n},{\"101\":101,\"33\":33,\"35\":35,\"39\":39,\"40\":40,\"45\":45,\"51\":51,\"56\":56,\"6\":6,\"66\":66,\"93\":93,\"94\":94}],23:[function(_dereq_,module,exports){\nvar core = module.exports = { version: '2.5.0' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n},{}],24:[function(_dereq_,module,exports){\n'use strict';\nvar $defineProperty = _dereq_(72);\nvar createDesc = _dereq_(92);\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n},{\"72\":72,\"92\":92}],25:[function(_dereq_,module,exports){\n// optional / simple context binding\nvar aFunction = _dereq_(3);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n},{\"3\":3}],26:[function(_dereq_,module,exports){\n'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = _dereq_(35);\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n\n},{\"35\":35}],27:[function(_dereq_,module,exports){\n'use strict';\nvar anObject = _dereq_(7);\nvar toPrimitive = _dereq_(120);\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n\n},{\"120\":120,\"7\":7}],28:[function(_dereq_,module,exports){\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n},{}],29:[function(_dereq_,module,exports){\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !_dereq_(35)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n},{\"35\":35}],30:[function(_dereq_,module,exports){\nvar isObject = _dereq_(51);\nvar document = _dereq_(40).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n},{\"40\":40,\"51\":51}],31:[function(_dereq_,module,exports){\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n},{}],32:[function(_dereq_,module,exports){\n// all enumerable object keys, includes symbols\nvar getKeys = _dereq_(81);\nvar gOPS = _dereq_(78);\nvar pIE = _dereq_(82);\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n},{\"78\":78,\"81\":81,\"82\":82}],33:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar core = _dereq_(23);\nvar hide = _dereq_(42);\nvar redefine = _dereq_(94);\nvar ctx = _dereq_(25);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n},{\"23\":23,\"25\":25,\"40\":40,\"42\":42,\"94\":94}],34:[function(_dereq_,module,exports){\nvar MATCH = _dereq_(128)('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n},{\"128\":128}],35:[function(_dereq_,module,exports){\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n},{}],36:[function(_dereq_,module,exports){\n'use strict';\nvar hide = _dereq_(42);\nvar redefine = _dereq_(94);\nvar fails = _dereq_(35);\nvar defined = _dereq_(28);\nvar wks = _dereq_(128);\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n},{\"128\":128,\"28\":28,\"35\":35,\"42\":42,\"94\":94}],37:[function(_dereq_,module,exports){\n'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = _dereq_(7);\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n},{\"7\":7}],38:[function(_dereq_,module,exports){\n'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = _dereq_(49);\nvar isObject = _dereq_(51);\nvar toLength = _dereq_(118);\nvar ctx = _dereq_(25);\nvar IS_CONCAT_SPREADABLE = _dereq_(128)('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n\n},{\"118\":118,\"128\":128,\"25\":25,\"49\":49,\"51\":51}],39:[function(_dereq_,module,exports){\nvar ctx = _dereq_(25);\nvar call = _dereq_(53);\nvar isArrayIter = _dereq_(48);\nvar anObject = _dereq_(7);\nvar toLength = _dereq_(118);\nvar getIterFn = _dereq_(129);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n},{\"118\":118,\"129\":129,\"25\":25,\"48\":48,\"53\":53,\"7\":7}],40:[function(_dereq_,module,exports){\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n},{}],41:[function(_dereq_,module,exports){\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n},{}],42:[function(_dereq_,module,exports){\nvar dP = _dereq_(72);\nvar createDesc = _dereq_(92);\nmodule.exports = _dereq_(29) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n},{\"29\":29,\"72\":72,\"92\":92}],43:[function(_dereq_,module,exports){\nvar document = _dereq_(40).document;\nmodule.exports = document && document.documentElement;\n\n},{\"40\":40}],44:[function(_dereq_,module,exports){\nmodule.exports = !_dereq_(29) && !_dereq_(35)(function () {\n return Object.defineProperty(_dereq_(30)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n},{\"29\":29,\"30\":30,\"35\":35}],45:[function(_dereq_,module,exports){\nvar isObject = _dereq_(51);\nvar setPrototypeOf = _dereq_(99).set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n\n},{\"51\":51,\"99\":99}],46:[function(_dereq_,module,exports){\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n},{}],47:[function(_dereq_,module,exports){\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = _dereq_(18);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n},{\"18\":18}],48:[function(_dereq_,module,exports){\n// check on default Array iterator\nvar Iterators = _dereq_(58);\nvar ITERATOR = _dereq_(128)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n},{\"128\":128,\"58\":58}],49:[function(_dereq_,module,exports){\n// 7.2.2 IsArray(argument)\nvar cof = _dereq_(18);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n},{\"18\":18}],50:[function(_dereq_,module,exports){\n// 20.1.2.3 Number.isInteger(number)\nvar isObject = _dereq_(51);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n},{\"51\":51}],51:[function(_dereq_,module,exports){\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n},{}],52:[function(_dereq_,module,exports){\n// 7.2.8 IsRegExp(argument)\nvar isObject = _dereq_(51);\nvar cof = _dereq_(18);\nvar MATCH = _dereq_(128)('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n},{\"128\":128,\"18\":18,\"51\":51}],53:[function(_dereq_,module,exports){\n// call something on iterator step with safe closing on error\nvar anObject = _dereq_(7);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n},{\"7\":7}],54:[function(_dereq_,module,exports){\n'use strict';\nvar create = _dereq_(71);\nvar descriptor = _dereq_(92);\nvar setToStringTag = _dereq_(101);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n_dereq_(42)(IteratorPrototype, _dereq_(128)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n},{\"101\":101,\"128\":128,\"42\":42,\"71\":71,\"92\":92}],55:[function(_dereq_,module,exports){\n'use strict';\nvar LIBRARY = _dereq_(60);\nvar $export = _dereq_(33);\nvar redefine = _dereq_(94);\nvar hide = _dereq_(42);\nvar has = _dereq_(41);\nvar Iterators = _dereq_(58);\nvar $iterCreate = _dereq_(54);\nvar setToStringTag = _dereq_(101);\nvar getPrototypeOf = _dereq_(79);\nvar ITERATOR = _dereq_(128)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n},{\"101\":101,\"128\":128,\"33\":33,\"41\":41,\"42\":42,\"54\":54,\"58\":58,\"60\":60,\"79\":79,\"94\":94}],56:[function(_dereq_,module,exports){\nvar ITERATOR = _dereq_(128)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n},{\"128\":128}],57:[function(_dereq_,module,exports){\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n},{}],58:[function(_dereq_,module,exports){\nmodule.exports = {};\n\n},{}],59:[function(_dereq_,module,exports){\nvar getKeys = _dereq_(81);\nvar toIObject = _dereq_(117);\nmodule.exports = function (object, el) {\n var O = toIObject(object);\n var keys = getKeys(O);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) if (O[key = keys[index++]] === el) return key;\n};\n\n},{\"117\":117,\"81\":81}],60:[function(_dereq_,module,exports){\nmodule.exports = false;\n\n},{}],61:[function(_dereq_,module,exports){\n// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n\n},{}],62:[function(_dereq_,module,exports){\n// 20.2.2.16 Math.fround(x)\nvar sign = _dereq_(65);\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n\n},{\"65\":65}],63:[function(_dereq_,module,exports){\n// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n\n},{}],64:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n\n},{}],65:[function(_dereq_,module,exports){\n// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n\n},{}],66:[function(_dereq_,module,exports){\nvar META = _dereq_(124)('meta');\nvar isObject = _dereq_(51);\nvar has = _dereq_(41);\nvar setDesc = _dereq_(72).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !_dereq_(35)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n},{\"124\":124,\"35\":35,\"41\":41,\"51\":51,\"72\":72}],67:[function(_dereq_,module,exports){\nvar Map = _dereq_(160);\nvar $export = _dereq_(33);\nvar shared = _dereq_(103)('metadata');\nvar store = shared.store || (shared.store = new (_dereq_(266))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n\n},{\"103\":103,\"160\":160,\"266\":266,\"33\":33}],68:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar macrotask = _dereq_(113).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = _dereq_(18)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if (Observer) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n},{\"113\":113,\"18\":18,\"40\":40}],69:[function(_dereq_,module,exports){\n'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = _dereq_(3);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n},{\"3\":3}],70:[function(_dereq_,module,exports){\n'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = _dereq_(81);\nvar gOPS = _dereq_(78);\nvar pIE = _dereq_(82);\nvar toObject = _dereq_(119);\nvar IObject = _dereq_(47);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || _dereq_(35)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n},{\"119\":119,\"35\":35,\"47\":47,\"78\":78,\"81\":81,\"82\":82}],71:[function(_dereq_,module,exports){\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = _dereq_(7);\nvar dPs = _dereq_(73);\nvar enumBugKeys = _dereq_(31);\nvar IE_PROTO = _dereq_(102)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = _dereq_(30)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n _dereq_(43).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n},{\"102\":102,\"30\":30,\"31\":31,\"43\":43,\"7\":7,\"73\":73}],72:[function(_dereq_,module,exports){\nvar anObject = _dereq_(7);\nvar IE8_DOM_DEFINE = _dereq_(44);\nvar toPrimitive = _dereq_(120);\nvar dP = Object.defineProperty;\n\nexports.f = _dereq_(29) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n},{\"120\":120,\"29\":29,\"44\":44,\"7\":7}],73:[function(_dereq_,module,exports){\nvar dP = _dereq_(72);\nvar anObject = _dereq_(7);\nvar getKeys = _dereq_(81);\n\nmodule.exports = _dereq_(29) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n},{\"29\":29,\"7\":7,\"72\":72,\"81\":81}],74:[function(_dereq_,module,exports){\n'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = _dereq_(60) || !_dereq_(35)(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete _dereq_(40)[K];\n});\n\n},{\"35\":35,\"40\":40,\"60\":60}],75:[function(_dereq_,module,exports){\nvar pIE = _dereq_(82);\nvar createDesc = _dereq_(92);\nvar toIObject = _dereq_(117);\nvar toPrimitive = _dereq_(120);\nvar has = _dereq_(41);\nvar IE8_DOM_DEFINE = _dereq_(44);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = _dereq_(29) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n},{\"117\":117,\"120\":120,\"29\":29,\"41\":41,\"44\":44,\"82\":82,\"92\":92}],76:[function(_dereq_,module,exports){\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = _dereq_(117);\nvar gOPN = _dereq_(77).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n},{\"117\":117,\"77\":77}],77:[function(_dereq_,module,exports){\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = _dereq_(80);\nvar hiddenKeys = _dereq_(31).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n},{\"31\":31,\"80\":80}],78:[function(_dereq_,module,exports){\nexports.f = Object.getOwnPropertySymbols;\n\n},{}],79:[function(_dereq_,module,exports){\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = _dereq_(41);\nvar toObject = _dereq_(119);\nvar IE_PROTO = _dereq_(102)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n},{\"102\":102,\"119\":119,\"41\":41}],80:[function(_dereq_,module,exports){\nvar has = _dereq_(41);\nvar toIObject = _dereq_(117);\nvar arrayIndexOf = _dereq_(11)(false);\nvar IE_PROTO = _dereq_(102)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n},{\"102\":102,\"11\":11,\"117\":117,\"41\":41}],81:[function(_dereq_,module,exports){\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = _dereq_(80);\nvar enumBugKeys = _dereq_(31);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n},{\"31\":31,\"80\":80}],82:[function(_dereq_,module,exports){\nexports.f = {}.propertyIsEnumerable;\n\n},{}],83:[function(_dereq_,module,exports){\n// most Object methods by ES6 should accept primitives\nvar $export = _dereq_(33);\nvar core = _dereq_(23);\nvar fails = _dereq_(35);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n},{\"23\":23,\"33\":33,\"35\":35}],84:[function(_dereq_,module,exports){\nvar getKeys = _dereq_(81);\nvar toIObject = _dereq_(117);\nvar isEnum = _dereq_(82).f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n\n},{\"117\":117,\"81\":81,\"82\":82}],85:[function(_dereq_,module,exports){\n// all object keys, includes non-enumerable and symbols\nvar gOPN = _dereq_(77);\nvar gOPS = _dereq_(78);\nvar anObject = _dereq_(7);\nvar Reflect = _dereq_(40).Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n\n},{\"40\":40,\"7\":7,\"77\":77,\"78\":78}],86:[function(_dereq_,module,exports){\nvar $parseFloat = _dereq_(40).parseFloat;\nvar $trim = _dereq_(111).trim;\n\nmodule.exports = 1 / $parseFloat(_dereq_(112) + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n\n},{\"111\":111,\"112\":112,\"40\":40}],87:[function(_dereq_,module,exports){\nvar $parseInt = _dereq_(40).parseInt;\nvar $trim = _dereq_(111).trim;\nvar ws = _dereq_(112);\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n\n},{\"111\":111,\"112\":112,\"40\":40}],88:[function(_dereq_,module,exports){\n'use strict';\nvar path = _dereq_(89);\nvar invoke = _dereq_(46);\nvar aFunction = _dereq_(3);\nmodule.exports = function (/* ...pargs */) {\n var fn = aFunction(this);\n var length = arguments.length;\n var pargs = Array(length);\n var i = 0;\n var _ = path._;\n var holder = false;\n while (length > i) if ((pargs[i] = arguments[i++]) === _) holder = true;\n return function (/* ...args */) {\n var that = this;\n var aLen = arguments.length;\n var j = 0;\n var k = 0;\n var args;\n if (!holder && !aLen) return invoke(fn, pargs, that);\n args = pargs.slice();\n if (holder) for (;length > j; j++) if (args[j] === _) args[j] = arguments[k++];\n while (aLen > k) args.push(arguments[k++]);\n return invoke(fn, args, that);\n };\n};\n\n},{\"3\":3,\"46\":46,\"89\":89}],89:[function(_dereq_,module,exports){\nmodule.exports = _dereq_(40);\n\n},{\"40\":40}],90:[function(_dereq_,module,exports){\nmodule.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n},{}],91:[function(_dereq_,module,exports){\nvar newPromiseCapability = _dereq_(69);\n\nmodule.exports = function (C, x) {\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n},{\"69\":69}],92:[function(_dereq_,module,exports){\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n},{}],93:[function(_dereq_,module,exports){\nvar redefine = _dereq_(94);\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n\n},{\"94\":94}],94:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar hide = _dereq_(42);\nvar has = _dereq_(41);\nvar SRC = _dereq_(124)('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n_dereq_(23).inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n},{\"124\":124,\"23\":23,\"40\":40,\"41\":41,\"42\":42}],95:[function(_dereq_,module,exports){\nmodule.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n\n},{}],96:[function(_dereq_,module,exports){\n// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n\n},{}],97:[function(_dereq_,module,exports){\n'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = _dereq_(33);\nvar aFunction = _dereq_(3);\nvar ctx = _dereq_(25);\nvar forOf = _dereq_(39);\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n\n},{\"25\":25,\"3\":3,\"33\":33,\"39\":39}],98:[function(_dereq_,module,exports){\n'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = _dereq_(33);\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n\n},{\"33\":33}],99:[function(_dereq_,module,exports){\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = _dereq_(51);\nvar anObject = _dereq_(7);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = _dereq_(25)(Function.call, _dereq_(75).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n},{\"25\":25,\"51\":51,\"7\":7,\"75\":75}],100:[function(_dereq_,module,exports){\n'use strict';\nvar global = _dereq_(40);\nvar dP = _dereq_(72);\nvar DESCRIPTORS = _dereq_(29);\nvar SPECIES = _dereq_(128)('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n},{\"128\":128,\"29\":29,\"40\":40,\"72\":72}],101:[function(_dereq_,module,exports){\nvar def = _dereq_(72).f;\nvar has = _dereq_(41);\nvar TAG = _dereq_(128)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n},{\"128\":128,\"41\":41,\"72\":72}],102:[function(_dereq_,module,exports){\nvar shared = _dereq_(103)('keys');\nvar uid = _dereq_(124);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n},{\"103\":103,\"124\":124}],103:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n\n},{\"40\":40}],104:[function(_dereq_,module,exports){\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = _dereq_(7);\nvar aFunction = _dereq_(3);\nvar SPECIES = _dereq_(128)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n},{\"128\":128,\"3\":3,\"7\":7}],105:[function(_dereq_,module,exports){\n'use strict';\nvar fails = _dereq_(35);\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n\n},{\"35\":35}],106:[function(_dereq_,module,exports){\nvar toInteger = _dereq_(116);\nvar defined = _dereq_(28);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n},{\"116\":116,\"28\":28}],107:[function(_dereq_,module,exports){\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = _dereq_(52);\nvar defined = _dereq_(28);\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n},{\"28\":28,\"52\":52}],108:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar fails = _dereq_(35);\nvar defined = _dereq_(28);\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n\n},{\"28\":28,\"33\":33,\"35\":35}],109:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = _dereq_(118);\nvar repeat = _dereq_(110);\nvar defined = _dereq_(28);\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n\n},{\"110\":110,\"118\":118,\"28\":28}],110:[function(_dereq_,module,exports){\n'use strict';\nvar toInteger = _dereq_(116);\nvar defined = _dereq_(28);\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n\n},{\"116\":116,\"28\":28}],111:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar defined = _dereq_(28);\nvar fails = _dereq_(35);\nvar spaces = _dereq_(112);\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n\n},{\"112\":112,\"28\":28,\"33\":33,\"35\":35}],112:[function(_dereq_,module,exports){\nmodule.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n},{}],113:[function(_dereq_,module,exports){\nvar ctx = _dereq_(25);\nvar invoke = _dereq_(46);\nvar html = _dereq_(43);\nvar cel = _dereq_(30);\nvar global = _dereq_(40);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (_dereq_(18)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n},{\"18\":18,\"25\":25,\"30\":30,\"40\":40,\"43\":43,\"46\":46}],114:[function(_dereq_,module,exports){\nvar toInteger = _dereq_(116);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n},{\"116\":116}],115:[function(_dereq_,module,exports){\n// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = _dereq_(116);\nvar toLength = _dereq_(118);\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n\n},{\"116\":116,\"118\":118}],116:[function(_dereq_,module,exports){\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n},{}],117:[function(_dereq_,module,exports){\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = _dereq_(47);\nvar defined = _dereq_(28);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n},{\"28\":28,\"47\":47}],118:[function(_dereq_,module,exports){\n// 7.1.15 ToLength\nvar toInteger = _dereq_(116);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n},{\"116\":116}],119:[function(_dereq_,module,exports){\n// 7.1.13 ToObject(argument)\nvar defined = _dereq_(28);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n},{\"28\":28}],120:[function(_dereq_,module,exports){\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = _dereq_(51);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n},{\"51\":51}],121:[function(_dereq_,module,exports){\n'use strict';\nif (_dereq_(29)) {\n var LIBRARY = _dereq_(60);\n var global = _dereq_(40);\n var fails = _dereq_(35);\n var $export = _dereq_(33);\n var $typed = _dereq_(123);\n var $buffer = _dereq_(122);\n var ctx = _dereq_(25);\n var anInstance = _dereq_(6);\n var propertyDesc = _dereq_(92);\n var hide = _dereq_(42);\n var redefineAll = _dereq_(93);\n var toInteger = _dereq_(116);\n var toLength = _dereq_(118);\n var toIndex = _dereq_(115);\n var toAbsoluteIndex = _dereq_(114);\n var toPrimitive = _dereq_(120);\n var has = _dereq_(41);\n var classof = _dereq_(17);\n var isObject = _dereq_(51);\n var toObject = _dereq_(119);\n var isArrayIter = _dereq_(48);\n var create = _dereq_(71);\n var getPrototypeOf = _dereq_(79);\n var gOPN = _dereq_(77).f;\n var getIterFn = _dereq_(129);\n var uid = _dereq_(124);\n var wks = _dereq_(128);\n var createArrayMethod = _dereq_(12);\n var createArrayIncludes = _dereq_(11);\n var speciesConstructor = _dereq_(104);\n var ArrayIterators = _dereq_(141);\n var Iterators = _dereq_(58);\n var $iterDetect = _dereq_(56);\n var setSpecies = _dereq_(100);\n var arrayFill = _dereq_(9);\n var arrayCopyWithin = _dereq_(8);\n var $DP = _dereq_(72);\n var $GOPD = _dereq_(75);\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n\n},{\"100\":100,\"104\":104,\"11\":11,\"114\":114,\"115\":115,\"116\":116,\"118\":118,\"119\":119,\"12\":12,\"120\":120,\"122\":122,\"123\":123,\"124\":124,\"128\":128,\"129\":129,\"141\":141,\"17\":17,\"25\":25,\"29\":29,\"33\":33,\"35\":35,\"40\":40,\"41\":41,\"42\":42,\"48\":48,\"51\":51,\"56\":56,\"58\":58,\"6\":6,\"60\":60,\"71\":71,\"72\":72,\"75\":75,\"77\":77,\"79\":79,\"8\":8,\"9\":9,\"92\":92,\"93\":93}],122:[function(_dereq_,module,exports){\n'use strict';\nvar global = _dereq_(40);\nvar DESCRIPTORS = _dereq_(29);\nvar LIBRARY = _dereq_(60);\nvar $typed = _dereq_(123);\nvar hide = _dereq_(42);\nvar redefineAll = _dereq_(93);\nvar fails = _dereq_(35);\nvar anInstance = _dereq_(6);\nvar toInteger = _dereq_(116);\nvar toLength = _dereq_(118);\nvar toIndex = _dereq_(115);\nvar gOPN = _dereq_(77).f;\nvar dP = _dereq_(72).f;\nvar arrayFill = _dereq_(9);\nvar setToStringTag = _dereq_(101);\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n\n},{\"101\":101,\"115\":115,\"116\":116,\"118\":118,\"123\":123,\"29\":29,\"35\":35,\"40\":40,\"42\":42,\"6\":6,\"60\":60,\"72\":72,\"77\":77,\"9\":9,\"93\":93}],123:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar hide = _dereq_(42);\nvar uid = _dereq_(124);\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n\n},{\"124\":124,\"40\":40,\"42\":42}],124:[function(_dereq_,module,exports){\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n},{}],125:[function(_dereq_,module,exports){\nvar isObject = _dereq_(51);\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n\n},{\"51\":51}],126:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar core = _dereq_(23);\nvar LIBRARY = _dereq_(60);\nvar wksExt = _dereq_(127);\nvar defineProperty = _dereq_(72).f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n},{\"127\":127,\"23\":23,\"40\":40,\"60\":60,\"72\":72}],127:[function(_dereq_,module,exports){\nexports.f = _dereq_(128);\n\n},{\"128\":128}],128:[function(_dereq_,module,exports){\nvar store = _dereq_(103)('wks');\nvar uid = _dereq_(124);\nvar Symbol = _dereq_(40).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n},{\"103\":103,\"124\":124,\"40\":40}],129:[function(_dereq_,module,exports){\nvar classof = _dereq_(17);\nvar ITERATOR = _dereq_(128)('iterator');\nvar Iterators = _dereq_(58);\nmodule.exports = _dereq_(23).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n},{\"128\":128,\"17\":17,\"23\":23,\"58\":58}],130:[function(_dereq_,module,exports){\n// https://github.com/benjamingr/RexExp.escape\nvar $export = _dereq_(33);\nvar $re = _dereq_(95)(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n\n},{\"33\":33,\"95\":95}],131:[function(_dereq_,module,exports){\n// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = _dereq_(33);\n\n$export($export.P, 'Array', { copyWithin: _dereq_(8) });\n\n_dereq_(5)('copyWithin');\n\n},{\"33\":33,\"5\":5,\"8\":8}],132:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $every = _dereq_(12)(4);\n\n$export($export.P + $export.F * !_dereq_(105)([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n\n},{\"105\":105,\"12\":12,\"33\":33}],133:[function(_dereq_,module,exports){\n// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = _dereq_(33);\n\n$export($export.P, 'Array', { fill: _dereq_(9) });\n\n_dereq_(5)('fill');\n\n},{\"33\":33,\"5\":5,\"9\":9}],134:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $filter = _dereq_(12)(2);\n\n$export($export.P + $export.F * !_dereq_(105)([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n\n},{\"105\":105,\"12\":12,\"33\":33}],135:[function(_dereq_,module,exports){\n'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = _dereq_(33);\nvar $find = _dereq_(12)(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n_dereq_(5)(KEY);\n\n},{\"12\":12,\"33\":33,\"5\":5}],136:[function(_dereq_,module,exports){\n'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = _dereq_(33);\nvar $find = _dereq_(12)(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n_dereq_(5)(KEY);\n\n},{\"12\":12,\"33\":33,\"5\":5}],137:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $forEach = _dereq_(12)(0);\nvar STRICT = _dereq_(105)([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n\n},{\"105\":105,\"12\":12,\"33\":33}],138:[function(_dereq_,module,exports){\n'use strict';\nvar ctx = _dereq_(25);\nvar $export = _dereq_(33);\nvar toObject = _dereq_(119);\nvar call = _dereq_(53);\nvar isArrayIter = _dereq_(48);\nvar toLength = _dereq_(118);\nvar createProperty = _dereq_(24);\nvar getIterFn = _dereq_(129);\n\n$export($export.S + $export.F * !_dereq_(56)(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n},{\"118\":118,\"119\":119,\"129\":129,\"24\":24,\"25\":25,\"33\":33,\"48\":48,\"53\":53,\"56\":56}],139:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $indexOf = _dereq_(11)(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(105)($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n\n},{\"105\":105,\"11\":11,\"33\":33}],140:[function(_dereq_,module,exports){\n// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Array', { isArray: _dereq_(49) });\n\n},{\"33\":33,\"49\":49}],141:[function(_dereq_,module,exports){\n'use strict';\nvar addToUnscopables = _dereq_(5);\nvar step = _dereq_(57);\nvar Iterators = _dereq_(58);\nvar toIObject = _dereq_(117);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = _dereq_(55)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n},{\"117\":117,\"5\":5,\"55\":55,\"57\":57,\"58\":58}],142:[function(_dereq_,module,exports){\n'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = _dereq_(33);\nvar toIObject = _dereq_(117);\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (_dereq_(47) != Object || !_dereq_(105)(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n\n},{\"105\":105,\"117\":117,\"33\":33,\"47\":47}],143:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toIObject = _dereq_(117);\nvar toInteger = _dereq_(116);\nvar toLength = _dereq_(118);\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(105)($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n\n},{\"105\":105,\"116\":116,\"117\":117,\"118\":118,\"33\":33}],144:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $map = _dereq_(12)(1);\n\n$export($export.P + $export.F * !_dereq_(105)([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n\n},{\"105\":105,\"12\":12,\"33\":33}],145:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar createProperty = _dereq_(24);\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * _dereq_(35)(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n\n},{\"24\":24,\"33\":33,\"35\":35}],146:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $reduce = _dereq_(13);\n\n$export($export.P + $export.F * !_dereq_(105)([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n\n},{\"105\":105,\"13\":13,\"33\":33}],147:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $reduce = _dereq_(13);\n\n$export($export.P + $export.F * !_dereq_(105)([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n\n},{\"105\":105,\"13\":13,\"33\":33}],148:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar html = _dereq_(43);\nvar cof = _dereq_(18);\nvar toAbsoluteIndex = _dereq_(114);\nvar toLength = _dereq_(118);\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * _dereq_(35)(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n\n},{\"114\":114,\"118\":118,\"18\":18,\"33\":33,\"35\":35,\"43\":43}],149:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $some = _dereq_(12)(3);\n\n$export($export.P + $export.F * !_dereq_(105)([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n\n},{\"105\":105,\"12\":12,\"33\":33}],150:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar aFunction = _dereq_(3);\nvar toObject = _dereq_(119);\nvar fails = _dereq_(35);\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !_dereq_(105)($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n\n},{\"105\":105,\"119\":119,\"3\":3,\"33\":33,\"35\":35}],151:[function(_dereq_,module,exports){\n_dereq_(100)('Array');\n\n},{\"100\":100}],152:[function(_dereq_,module,exports){\n// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = _dereq_(33);\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n\n},{\"33\":33}],153:[function(_dereq_,module,exports){\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = _dereq_(33);\nvar toISOString = _dereq_(26);\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n\n},{\"26\":26,\"33\":33}],154:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toObject = _dereq_(119);\nvar toPrimitive = _dereq_(120);\n\n$export($export.P + $export.F * _dereq_(35)(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n\n},{\"119\":119,\"120\":120,\"33\":33,\"35\":35}],155:[function(_dereq_,module,exports){\nvar TO_PRIMITIVE = _dereq_(128)('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) _dereq_(42)(proto, TO_PRIMITIVE, _dereq_(27));\n\n},{\"128\":128,\"27\":27,\"42\":42}],156:[function(_dereq_,module,exports){\nvar DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n _dereq_(94)(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n\n},{\"94\":94}],157:[function(_dereq_,module,exports){\n// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = _dereq_(33);\n\n$export($export.P, 'Function', { bind: _dereq_(16) });\n\n},{\"16\":16,\"33\":33}],158:[function(_dereq_,module,exports){\n'use strict';\nvar isObject = _dereq_(51);\nvar getPrototypeOf = _dereq_(79);\nvar HAS_INSTANCE = _dereq_(128)('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) _dereq_(72).f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n\n},{\"128\":128,\"51\":51,\"72\":72,\"79\":79}],159:[function(_dereq_,module,exports){\nvar dP = _dereq_(72).f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || _dereq_(29) && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n\n},{\"29\":29,\"72\":72}],160:[function(_dereq_,module,exports){\n'use strict';\nvar strong = _dereq_(19);\nvar validate = _dereq_(125);\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = _dereq_(22)(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n\n},{\"125\":125,\"19\":19,\"22\":22}],161:[function(_dereq_,module,exports){\n// 20.2.2.3 Math.acosh(x)\nvar $export = _dereq_(33);\nvar log1p = _dereq_(63);\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n\n},{\"33\":33,\"63\":63}],162:[function(_dereq_,module,exports){\n// 20.2.2.5 Math.asinh(x)\nvar $export = _dereq_(33);\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n\n},{\"33\":33}],163:[function(_dereq_,module,exports){\n// 20.2.2.7 Math.atanh(x)\nvar $export = _dereq_(33);\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n\n},{\"33\":33}],164:[function(_dereq_,module,exports){\n// 20.2.2.9 Math.cbrt(x)\nvar $export = _dereq_(33);\nvar sign = _dereq_(65);\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n\n},{\"33\":33,\"65\":65}],165:[function(_dereq_,module,exports){\n// 20.2.2.11 Math.clz32(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n\n},{\"33\":33}],166:[function(_dereq_,module,exports){\n// 20.2.2.12 Math.cosh(x)\nvar $export = _dereq_(33);\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n\n},{\"33\":33}],167:[function(_dereq_,module,exports){\n// 20.2.2.14 Math.expm1(x)\nvar $export = _dereq_(33);\nvar $expm1 = _dereq_(61);\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n\n},{\"33\":33,\"61\":61}],168:[function(_dereq_,module,exports){\n// 20.2.2.16 Math.fround(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { fround: _dereq_(62) });\n\n},{\"33\":33,\"62\":62}],169:[function(_dereq_,module,exports){\n// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = _dereq_(33);\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n\n},{\"33\":33}],170:[function(_dereq_,module,exports){\n// 20.2.2.18 Math.imul(x, y)\nvar $export = _dereq_(33);\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * _dereq_(35)(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n\n},{\"33\":33,\"35\":35}],171:[function(_dereq_,module,exports){\n// 20.2.2.21 Math.log10(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n\n},{\"33\":33}],172:[function(_dereq_,module,exports){\n// 20.2.2.20 Math.log1p(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { log1p: _dereq_(63) });\n\n},{\"33\":33,\"63\":63}],173:[function(_dereq_,module,exports){\n// 20.2.2.22 Math.log2(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n\n},{\"33\":33}],174:[function(_dereq_,module,exports){\n// 20.2.2.28 Math.sign(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { sign: _dereq_(65) });\n\n},{\"33\":33,\"65\":65}],175:[function(_dereq_,module,exports){\n// 20.2.2.30 Math.sinh(x)\nvar $export = _dereq_(33);\nvar expm1 = _dereq_(61);\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * _dereq_(35)(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n\n},{\"33\":33,\"35\":35,\"61\":61}],176:[function(_dereq_,module,exports){\n// 20.2.2.33 Math.tanh(x)\nvar $export = _dereq_(33);\nvar expm1 = _dereq_(61);\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n\n},{\"33\":33,\"61\":61}],177:[function(_dereq_,module,exports){\n// 20.2.2.34 Math.trunc(x)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n\n},{\"33\":33}],178:[function(_dereq_,module,exports){\n'use strict';\nvar global = _dereq_(40);\nvar has = _dereq_(41);\nvar cof = _dereq_(18);\nvar inheritIfRequired = _dereq_(45);\nvar toPrimitive = _dereq_(120);\nvar fails = _dereq_(35);\nvar gOPN = _dereq_(77).f;\nvar gOPD = _dereq_(75).f;\nvar dP = _dereq_(72).f;\nvar $trim = _dereq_(111).trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(_dereq_(71)(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = _dereq_(29) ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n _dereq_(94)(global, NUMBER, $Number);\n}\n\n},{\"111\":111,\"120\":120,\"18\":18,\"29\":29,\"35\":35,\"40\":40,\"41\":41,\"45\":45,\"71\":71,\"72\":72,\"75\":75,\"77\":77,\"94\":94}],179:[function(_dereq_,module,exports){\n// 20.1.2.1 Number.EPSILON\nvar $export = _dereq_(33);\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n\n},{\"33\":33}],180:[function(_dereq_,module,exports){\n// 20.1.2.2 Number.isFinite(number)\nvar $export = _dereq_(33);\nvar _isFinite = _dereq_(40).isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n\n},{\"33\":33,\"40\":40}],181:[function(_dereq_,module,exports){\n// 20.1.2.3 Number.isInteger(number)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Number', { isInteger: _dereq_(50) });\n\n},{\"33\":33,\"50\":50}],182:[function(_dereq_,module,exports){\n// 20.1.2.4 Number.isNaN(number)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n\n},{\"33\":33}],183:[function(_dereq_,module,exports){\n// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = _dereq_(33);\nvar isInteger = _dereq_(50);\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n\n},{\"33\":33,\"50\":50}],184:[function(_dereq_,module,exports){\n// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = _dereq_(33);\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n\n},{\"33\":33}],185:[function(_dereq_,module,exports){\n// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = _dereq_(33);\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n\n},{\"33\":33}],186:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar $parseFloat = _dereq_(86);\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n\n},{\"33\":33,\"86\":86}],187:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar $parseInt = _dereq_(87);\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n\n},{\"33\":33,\"87\":87}],188:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toInteger = _dereq_(116);\nvar aNumberValue = _dereq_(4);\nvar repeat = _dereq_(110);\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !_dereq_(35)(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n\n},{\"110\":110,\"116\":116,\"33\":33,\"35\":35,\"4\":4}],189:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $fails = _dereq_(35);\nvar aNumberValue = _dereq_(4);\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n\n},{\"33\":33,\"35\":35,\"4\":4}],190:[function(_dereq_,module,exports){\n// 19.1.3.1 Object.assign(target, source)\nvar $export = _dereq_(33);\n\n$export($export.S + $export.F, 'Object', { assign: _dereq_(70) });\n\n},{\"33\":33,\"70\":70}],191:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: _dereq_(71) });\n\n},{\"33\":33,\"71\":71}],192:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !_dereq_(29), 'Object', { defineProperties: _dereq_(73) });\n\n},{\"29\":29,\"33\":33,\"73\":73}],193:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !_dereq_(29), 'Object', { defineProperty: _dereq_(72).f });\n\n},{\"29\":29,\"33\":33,\"72\":72}],194:[function(_dereq_,module,exports){\n// 19.1.2.5 Object.freeze(O)\nvar isObject = _dereq_(51);\nvar meta = _dereq_(66).onFreeze;\n\n_dereq_(83)('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n\n},{\"51\":51,\"66\":66,\"83\":83}],195:[function(_dereq_,module,exports){\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = _dereq_(117);\nvar $getOwnPropertyDescriptor = _dereq_(75).f;\n\n_dereq_(83)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n},{\"117\":117,\"75\":75,\"83\":83}],196:[function(_dereq_,module,exports){\n// 19.1.2.7 Object.getOwnPropertyNames(O)\n_dereq_(83)('getOwnPropertyNames', function () {\n return _dereq_(76).f;\n});\n\n},{\"76\":76,\"83\":83}],197:[function(_dereq_,module,exports){\n// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = _dereq_(119);\nvar $getPrototypeOf = _dereq_(79);\n\n_dereq_(83)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n},{\"119\":119,\"79\":79,\"83\":83}],198:[function(_dereq_,module,exports){\n// 19.1.2.11 Object.isExtensible(O)\nvar isObject = _dereq_(51);\n\n_dereq_(83)('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n\n},{\"51\":51,\"83\":83}],199:[function(_dereq_,module,exports){\n// 19.1.2.12 Object.isFrozen(O)\nvar isObject = _dereq_(51);\n\n_dereq_(83)('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n\n},{\"51\":51,\"83\":83}],200:[function(_dereq_,module,exports){\n// 19.1.2.13 Object.isSealed(O)\nvar isObject = _dereq_(51);\n\n_dereq_(83)('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n\n},{\"51\":51,\"83\":83}],201:[function(_dereq_,module,exports){\n// 19.1.3.10 Object.is(value1, value2)\nvar $export = _dereq_(33);\n$export($export.S, 'Object', { is: _dereq_(96) });\n\n},{\"33\":33,\"96\":96}],202:[function(_dereq_,module,exports){\n// 19.1.2.14 Object.keys(O)\nvar toObject = _dereq_(119);\nvar $keys = _dereq_(81);\n\n_dereq_(83)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n},{\"119\":119,\"81\":81,\"83\":83}],203:[function(_dereq_,module,exports){\n// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = _dereq_(51);\nvar meta = _dereq_(66).onFreeze;\n\n_dereq_(83)('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n\n},{\"51\":51,\"66\":66,\"83\":83}],204:[function(_dereq_,module,exports){\n// 19.1.2.17 Object.seal(O)\nvar isObject = _dereq_(51);\nvar meta = _dereq_(66).onFreeze;\n\n_dereq_(83)('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n\n},{\"51\":51,\"66\":66,\"83\":83}],205:[function(_dereq_,module,exports){\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = _dereq_(33);\n$export($export.S, 'Object', { setPrototypeOf: _dereq_(99).set });\n\n},{\"33\":33,\"99\":99}],206:[function(_dereq_,module,exports){\n'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = _dereq_(17);\nvar test = {};\ntest[_dereq_(128)('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n _dereq_(94)(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n\n},{\"128\":128,\"17\":17,\"94\":94}],207:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar $parseFloat = _dereq_(86);\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n\n},{\"33\":33,\"86\":86}],208:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar $parseInt = _dereq_(87);\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n\n},{\"33\":33,\"87\":87}],209:[function(_dereq_,module,exports){\n'use strict';\nvar LIBRARY = _dereq_(60);\nvar global = _dereq_(40);\nvar ctx = _dereq_(25);\nvar classof = _dereq_(17);\nvar $export = _dereq_(33);\nvar isObject = _dereq_(51);\nvar aFunction = _dereq_(3);\nvar anInstance = _dereq_(6);\nvar forOf = _dereq_(39);\nvar speciesConstructor = _dereq_(104);\nvar task = _dereq_(113).set;\nvar microtask = _dereq_(68)();\nvar newPromiseCapabilityModule = _dereq_(69);\nvar perform = _dereq_(90);\nvar promiseResolve = _dereq_(91);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[_dereq_(128)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar sameConstructor = LIBRARY ? function (a, b) {\n // with library wrapper special case\n return a === b || a === $Promise && b === Wrapper;\n} : function (a, b) {\n return a === b;\n};\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n if (promise._h == 1) return false;\n var chain = promise._a || promise._c;\n var i = 0;\n var reaction;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n } return true;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = _dereq_(93)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return sameConstructor($Promise, C)\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n_dereq_(101)($Promise, PROMISE);\n_dereq_(100)(PROMISE);\nWrapper = _dereq_(23)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n // instanceof instead of internal slot check because we should fix it without replacement native Promise core\n if (x instanceof $Promise && sameConstructor(x.constructor, this)) return x;\n return promiseResolve(this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && _dereq_(56)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n},{\"100\":100,\"101\":101,\"104\":104,\"113\":113,\"128\":128,\"17\":17,\"23\":23,\"25\":25,\"3\":3,\"33\":33,\"39\":39,\"40\":40,\"51\":51,\"56\":56,\"6\":6,\"60\":60,\"68\":68,\"69\":69,\"90\":90,\"91\":91,\"93\":93}],210:[function(_dereq_,module,exports){\n// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = _dereq_(33);\nvar aFunction = _dereq_(3);\nvar anObject = _dereq_(7);\nvar rApply = (_dereq_(40).Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !_dereq_(35)(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n\n},{\"3\":3,\"33\":33,\"35\":35,\"40\":40,\"7\":7}],211:[function(_dereq_,module,exports){\n// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = _dereq_(33);\nvar create = _dereq_(71);\nvar aFunction = _dereq_(3);\nvar anObject = _dereq_(7);\nvar isObject = _dereq_(51);\nvar fails = _dereq_(35);\nvar bind = _dereq_(16);\nvar rConstruct = (_dereq_(40).Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n},{\"16\":16,\"3\":3,\"33\":33,\"35\":35,\"40\":40,\"51\":51,\"7\":7,\"71\":71}],212:[function(_dereq_,module,exports){\n// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = _dereq_(72);\nvar $export = _dereq_(33);\nvar anObject = _dereq_(7);\nvar toPrimitive = _dereq_(120);\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * _dereq_(35)(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n\n},{\"120\":120,\"33\":33,\"35\":35,\"7\":7,\"72\":72}],213:[function(_dereq_,module,exports){\n// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = _dereq_(33);\nvar gOPD = _dereq_(75).f;\nvar anObject = _dereq_(7);\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n\n},{\"33\":33,\"7\":7,\"75\":75}],214:[function(_dereq_,module,exports){\n'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = _dereq_(33);\nvar anObject = _dereq_(7);\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\n_dereq_(54)(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n\n},{\"33\":33,\"54\":54,\"7\":7}],215:[function(_dereq_,module,exports){\n// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = _dereq_(75);\nvar $export = _dereq_(33);\nvar anObject = _dereq_(7);\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n\n},{\"33\":33,\"7\":7,\"75\":75}],216:[function(_dereq_,module,exports){\n// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = _dereq_(33);\nvar getProto = _dereq_(79);\nvar anObject = _dereq_(7);\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n\n},{\"33\":33,\"7\":7,\"79\":79}],217:[function(_dereq_,module,exports){\n// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = _dereq_(75);\nvar getPrototypeOf = _dereq_(79);\nvar has = _dereq_(41);\nvar $export = _dereq_(33);\nvar isObject = _dereq_(51);\nvar anObject = _dereq_(7);\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n\n},{\"33\":33,\"41\":41,\"51\":51,\"7\":7,\"75\":75,\"79\":79}],218:[function(_dereq_,module,exports){\n// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n\n},{\"33\":33}],219:[function(_dereq_,module,exports){\n// 26.1.10 Reflect.isExtensible(target)\nvar $export = _dereq_(33);\nvar anObject = _dereq_(7);\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n\n},{\"33\":33,\"7\":7}],220:[function(_dereq_,module,exports){\n// 26.1.11 Reflect.ownKeys(target)\nvar $export = _dereq_(33);\n\n$export($export.S, 'Reflect', { ownKeys: _dereq_(85) });\n\n},{\"33\":33,\"85\":85}],221:[function(_dereq_,module,exports){\n// 26.1.12 Reflect.preventExtensions(target)\nvar $export = _dereq_(33);\nvar anObject = _dereq_(7);\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n\n},{\"33\":33,\"7\":7}],222:[function(_dereq_,module,exports){\n// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = _dereq_(33);\nvar setProto = _dereq_(99);\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n\n},{\"33\":33,\"99\":99}],223:[function(_dereq_,module,exports){\n// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = _dereq_(72);\nvar gOPD = _dereq_(75);\nvar getPrototypeOf = _dereq_(79);\nvar has = _dereq_(41);\nvar $export = _dereq_(33);\nvar createDesc = _dereq_(92);\nvar anObject = _dereq_(7);\nvar isObject = _dereq_(51);\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n\n},{\"33\":33,\"41\":41,\"51\":51,\"7\":7,\"72\":72,\"75\":75,\"79\":79,\"92\":92}],224:[function(_dereq_,module,exports){\nvar global = _dereq_(40);\nvar inheritIfRequired = _dereq_(45);\nvar dP = _dereq_(72).f;\nvar gOPN = _dereq_(77).f;\nvar isRegExp = _dereq_(52);\nvar $flags = _dereq_(37);\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (_dereq_(29) && (!CORRECT_NEW || _dereq_(35)(function () {\n re2[_dereq_(128)('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n _dereq_(94)(global, 'RegExp', $RegExp);\n}\n\n_dereq_(100)('RegExp');\n\n},{\"100\":100,\"128\":128,\"29\":29,\"35\":35,\"37\":37,\"40\":40,\"45\":45,\"52\":52,\"72\":72,\"77\":77,\"94\":94}],225:[function(_dereq_,module,exports){\n// 21.2.5.3 get RegExp.prototype.flags()\nif (_dereq_(29) && /./g.flags != 'g') _dereq_(72).f(RegExp.prototype, 'flags', {\n configurable: true,\n get: _dereq_(37)\n});\n\n},{\"29\":29,\"37\":37,\"72\":72}],226:[function(_dereq_,module,exports){\n// @@match logic\n_dereq_(36)('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n\n},{\"36\":36}],227:[function(_dereq_,module,exports){\n// @@replace logic\n_dereq_(36)('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n\n},{\"36\":36}],228:[function(_dereq_,module,exports){\n// @@search logic\n_dereq_(36)('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n\n},{\"36\":36}],229:[function(_dereq_,module,exports){\n// @@split logic\n_dereq_(36)('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = _dereq_(52);\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n\n},{\"36\":36,\"52\":52}],230:[function(_dereq_,module,exports){\n'use strict';\n_dereq_(225);\nvar anObject = _dereq_(7);\nvar $flags = _dereq_(37);\nvar DESCRIPTORS = _dereq_(29);\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n _dereq_(94)(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (_dereq_(35)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n\n},{\"225\":225,\"29\":29,\"35\":35,\"37\":37,\"7\":7,\"94\":94}],231:[function(_dereq_,module,exports){\n'use strict';\nvar strong = _dereq_(19);\nvar validate = _dereq_(125);\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = _dereq_(22)(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n\n},{\"125\":125,\"19\":19,\"22\":22}],232:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.2 String.prototype.anchor(name)\n_dereq_(108)('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n\n},{\"108\":108}],233:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.3 String.prototype.big()\n_dereq_(108)('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n\n},{\"108\":108}],234:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.4 String.prototype.blink()\n_dereq_(108)('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n\n},{\"108\":108}],235:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.5 String.prototype.bold()\n_dereq_(108)('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n\n},{\"108\":108}],236:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $at = _dereq_(106)(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n\n},{\"106\":106,\"33\":33}],237:[function(_dereq_,module,exports){\n// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = _dereq_(33);\nvar toLength = _dereq_(118);\nvar context = _dereq_(107);\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * _dereq_(34)(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n\n},{\"107\":107,\"118\":118,\"33\":33,\"34\":34}],238:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.6 String.prototype.fixed()\n_dereq_(108)('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n\n},{\"108\":108}],239:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\n_dereq_(108)('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n\n},{\"108\":108}],240:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\n_dereq_(108)('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n\n},{\"108\":108}],241:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar toAbsoluteIndex = _dereq_(114);\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n\n},{\"114\":114,\"33\":33}],242:[function(_dereq_,module,exports){\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = _dereq_(33);\nvar context = _dereq_(107);\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * _dereq_(34)(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n},{\"107\":107,\"33\":33,\"34\":34}],243:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.9 String.prototype.italics()\n_dereq_(108)('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n\n},{\"108\":108}],244:[function(_dereq_,module,exports){\n'use strict';\nvar $at = _dereq_(106)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n_dereq_(55)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n},{\"106\":106,\"55\":55}],245:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.10 String.prototype.link(url)\n_dereq_(108)('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n\n},{\"108\":108}],246:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar toIObject = _dereq_(117);\nvar toLength = _dereq_(118);\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n\n},{\"117\":117,\"118\":118,\"33\":33}],247:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: _dereq_(110)\n});\n\n},{\"110\":110,\"33\":33}],248:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.11 String.prototype.small()\n_dereq_(108)('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n\n},{\"108\":108}],249:[function(_dereq_,module,exports){\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = _dereq_(33);\nvar toLength = _dereq_(118);\nvar context = _dereq_(107);\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * _dereq_(34)(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n},{\"107\":107,\"118\":118,\"33\":33,\"34\":34}],250:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.12 String.prototype.strike()\n_dereq_(108)('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n\n},{\"108\":108}],251:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.13 String.prototype.sub()\n_dereq_(108)('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n\n},{\"108\":108}],252:[function(_dereq_,module,exports){\n'use strict';\n// B.2.3.14 String.prototype.sup()\n_dereq_(108)('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n\n},{\"108\":108}],253:[function(_dereq_,module,exports){\n'use strict';\n// 21.1.3.25 String.prototype.trim()\n_dereq_(111)('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n\n},{\"111\":111}],254:[function(_dereq_,module,exports){\n'use strict';\n// ECMAScript 6 symbols shim\nvar global = _dereq_(40);\nvar has = _dereq_(41);\nvar DESCRIPTORS = _dereq_(29);\nvar $export = _dereq_(33);\nvar redefine = _dereq_(94);\nvar META = _dereq_(66).KEY;\nvar $fails = _dereq_(35);\nvar shared = _dereq_(103);\nvar setToStringTag = _dereq_(101);\nvar uid = _dereq_(124);\nvar wks = _dereq_(128);\nvar wksExt = _dereq_(127);\nvar wksDefine = _dereq_(126);\nvar keyOf = _dereq_(59);\nvar enumKeys = _dereq_(32);\nvar isArray = _dereq_(49);\nvar anObject = _dereq_(7);\nvar toIObject = _dereq_(117);\nvar toPrimitive = _dereq_(120);\nvar createDesc = _dereq_(92);\nvar _create = _dereq_(71);\nvar gOPNExt = _dereq_(76);\nvar $GOPD = _dereq_(75);\nvar $DP = _dereq_(72);\nvar $keys = _dereq_(81);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n _dereq_(77).f = gOPNExt.f = $getOwnPropertyNames;\n _dereq_(82).f = $propertyIsEnumerable;\n _dereq_(78).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_(60)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n if (isSymbol(key)) return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || _dereq_(42)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n},{\"101\":101,\"103\":103,\"117\":117,\"120\":120,\"124\":124,\"126\":126,\"127\":127,\"128\":128,\"29\":29,\"32\":32,\"33\":33,\"35\":35,\"40\":40,\"41\":41,\"42\":42,\"49\":49,\"59\":59,\"60\":60,\"66\":66,\"7\":7,\"71\":71,\"72\":72,\"75\":75,\"76\":76,\"77\":77,\"78\":78,\"81\":81,\"82\":82,\"92\":92,\"94\":94}],255:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar $typed = _dereq_(123);\nvar buffer = _dereq_(122);\nvar anObject = _dereq_(7);\nvar toAbsoluteIndex = _dereq_(114);\nvar toLength = _dereq_(118);\nvar isObject = _dereq_(51);\nvar ArrayBuffer = _dereq_(40).ArrayBuffer;\nvar speciesConstructor = _dereq_(104);\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * _dereq_(35)(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\n_dereq_(100)(ARRAY_BUFFER);\n\n},{\"100\":100,\"104\":104,\"114\":114,\"118\":118,\"122\":122,\"123\":123,\"33\":33,\"35\":35,\"40\":40,\"51\":51,\"7\":7}],256:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\n$export($export.G + $export.W + $export.F * !_dereq_(123).ABV, {\n DataView: _dereq_(122).DataView\n});\n\n},{\"122\":122,\"123\":123,\"33\":33}],257:[function(_dereq_,module,exports){\n_dereq_(121)('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],258:[function(_dereq_,module,exports){\n_dereq_(121)('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],259:[function(_dereq_,module,exports){\n_dereq_(121)('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],260:[function(_dereq_,module,exports){\n_dereq_(121)('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],261:[function(_dereq_,module,exports){\n_dereq_(121)('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],262:[function(_dereq_,module,exports){\n_dereq_(121)('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],263:[function(_dereq_,module,exports){\n_dereq_(121)('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],264:[function(_dereq_,module,exports){\n_dereq_(121)('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n},{\"121\":121}],265:[function(_dereq_,module,exports){\n_dereq_(121)('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n\n},{\"121\":121}],266:[function(_dereq_,module,exports){\n'use strict';\nvar each = _dereq_(12)(0);\nvar redefine = _dereq_(94);\nvar meta = _dereq_(66);\nvar assign = _dereq_(70);\nvar weak = _dereq_(21);\nvar isObject = _dereq_(51);\nvar fails = _dereq_(35);\nvar validate = _dereq_(125);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = _dereq_(22)(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n\n},{\"12\":12,\"125\":125,\"21\":21,\"22\":22,\"35\":35,\"51\":51,\"66\":66,\"70\":70,\"94\":94}],267:[function(_dereq_,module,exports){\n'use strict';\nvar weak = _dereq_(21);\nvar validate = _dereq_(125);\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\n_dereq_(22)(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n\n},{\"125\":125,\"21\":21,\"22\":22}],268:[function(_dereq_,module,exports){\n'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = _dereq_(33);\nvar flattenIntoArray = _dereq_(38);\nvar toObject = _dereq_(119);\nvar toLength = _dereq_(118);\nvar aFunction = _dereq_(3);\nvar arraySpeciesCreate = _dereq_(15);\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\n_dereq_(5)('flatMap');\n\n},{\"118\":118,\"119\":119,\"15\":15,\"3\":3,\"33\":33,\"38\":38,\"5\":5}],269:[function(_dereq_,module,exports){\n'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = _dereq_(33);\nvar flattenIntoArray = _dereq_(38);\nvar toObject = _dereq_(119);\nvar toLength = _dereq_(118);\nvar toInteger = _dereq_(116);\nvar arraySpeciesCreate = _dereq_(15);\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\n_dereq_(5)('flatten');\n\n},{\"116\":116,\"118\":118,\"119\":119,\"15\":15,\"33\":33,\"38\":38,\"5\":5}],270:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = _dereq_(33);\nvar $includes = _dereq_(11)(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n_dereq_(5)('includes');\n\n},{\"11\":11,\"33\":33,\"5\":5}],271:[function(_dereq_,module,exports){\n// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = _dereq_(33);\nvar microtask = _dereq_(68)();\nvar process = _dereq_(40).process;\nvar isNode = _dereq_(18)(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n\n},{\"18\":18,\"33\":33,\"40\":40,\"68\":68}],272:[function(_dereq_,module,exports){\n// https://github.com/ljharb/proposal-is-error\nvar $export = _dereq_(33);\nvar cof = _dereq_(18);\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n\n},{\"18\":18,\"33\":33}],273:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-global\nvar $export = _dereq_(33);\n\n$export($export.G, { global: _dereq_(40) });\n\n},{\"33\":33,\"40\":40}],274:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\n_dereq_(97)('Map');\n\n},{\"97\":97}],275:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\n_dereq_(98)('Map');\n\n},{\"98\":98}],276:[function(_dereq_,module,exports){\n// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = _dereq_(33);\n\n$export($export.P + $export.R, 'Map', { toJSON: _dereq_(20)('Map') });\n\n},{\"20\":20,\"33\":33}],277:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n\n},{\"33\":33}],278:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n\n},{\"33\":33}],279:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n\n},{\"33\":33}],280:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\nvar scale = _dereq_(64);\nvar fround = _dereq_(62);\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n\n},{\"33\":33,\"62\":62,\"64\":64}],281:[function(_dereq_,module,exports){\n// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n\n},{\"33\":33}],282:[function(_dereq_,module,exports){\n// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n\n},{\"33\":33}],283:[function(_dereq_,module,exports){\n// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n\n},{\"33\":33}],284:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n\n},{\"33\":33}],285:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n\n},{\"33\":33}],286:[function(_dereq_,module,exports){\n// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { scale: _dereq_(64) });\n\n},{\"33\":33,\"64\":64}],287:[function(_dereq_,module,exports){\n// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n\n},{\"33\":33}],288:[function(_dereq_,module,exports){\n// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = _dereq_(33);\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n\n},{\"33\":33}],289:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toObject = _dereq_(119);\nvar aFunction = _dereq_(3);\nvar $defineProperty = _dereq_(72);\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\n_dereq_(29) && $export($export.P + _dereq_(74), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n\n},{\"119\":119,\"29\":29,\"3\":3,\"33\":33,\"72\":72,\"74\":74}],290:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toObject = _dereq_(119);\nvar aFunction = _dereq_(3);\nvar $defineProperty = _dereq_(72);\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\n_dereq_(29) && $export($export.P + _dereq_(74), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n\n},{\"119\":119,\"29\":29,\"3\":3,\"33\":33,\"72\":72,\"74\":74}],291:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-object-values-entries\nvar $export = _dereq_(33);\nvar $entries = _dereq_(84)(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n\n},{\"33\":33,\"84\":84}],292:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = _dereq_(33);\nvar ownKeys = _dereq_(85);\nvar toIObject = _dereq_(117);\nvar gOPD = _dereq_(75);\nvar createProperty = _dereq_(24);\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n\n},{\"117\":117,\"24\":24,\"33\":33,\"75\":75,\"85\":85}],293:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toObject = _dereq_(119);\nvar toPrimitive = _dereq_(120);\nvar getPrototypeOf = _dereq_(79);\nvar getOwnPropertyDescriptor = _dereq_(75).f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\n_dereq_(29) && $export($export.P + _dereq_(74), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n\n},{\"119\":119,\"120\":120,\"29\":29,\"33\":33,\"74\":74,\"75\":75,\"79\":79}],294:[function(_dereq_,module,exports){\n'use strict';\nvar $export = _dereq_(33);\nvar toObject = _dereq_(119);\nvar toPrimitive = _dereq_(120);\nvar getPrototypeOf = _dereq_(79);\nvar getOwnPropertyDescriptor = _dereq_(75).f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\n_dereq_(29) && $export($export.P + _dereq_(74), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n\n},{\"119\":119,\"120\":120,\"29\":29,\"33\":33,\"74\":74,\"75\":75,\"79\":79}],295:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-object-values-entries\nvar $export = _dereq_(33);\nvar $values = _dereq_(84)(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n\n},{\"33\":33,\"84\":84}],296:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = _dereq_(33);\nvar global = _dereq_(40);\nvar core = _dereq_(23);\nvar microtask = _dereq_(68)();\nvar OBSERVABLE = _dereq_(128)('observable');\nvar aFunction = _dereq_(3);\nvar anObject = _dereq_(7);\nvar anInstance = _dereq_(6);\nvar redefineAll = _dereq_(93);\nvar hide = _dereq_(42);\nvar forOf = _dereq_(39);\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\n_dereq_(100)('Observable');\n\n},{\"100\":100,\"128\":128,\"23\":23,\"3\":3,\"33\":33,\"39\":39,\"40\":40,\"42\":42,\"6\":6,\"68\":68,\"7\":7,\"93\":93}],297:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = _dereq_(33);\nvar core = _dereq_(23);\nvar global = _dereq_(40);\nvar speciesConstructor = _dereq_(104);\nvar promiseResolve = _dereq_(91);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n},{\"104\":104,\"23\":23,\"33\":33,\"40\":40,\"91\":91}],298:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = _dereq_(33);\nvar newPromiseCapability = _dereq_(69);\nvar perform = _dereq_(90);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n},{\"33\":33,\"69\":69,\"90\":90}],299:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n\n},{\"67\":67,\"7\":7}],300:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n\n},{\"67\":67,\"7\":7}],301:[function(_dereq_,module,exports){\nvar Set = _dereq_(231);\nvar from = _dereq_(10);\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar getPrototypeOf = _dereq_(79);\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n\n},{\"10\":10,\"231\":231,\"67\":67,\"7\":7,\"79\":79}],302:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar getPrototypeOf = _dereq_(79);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n\n},{\"67\":67,\"7\":7,\"79\":79}],303:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n\n},{\"67\":67,\"7\":7}],304:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n\n},{\"67\":67,\"7\":7}],305:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar getPrototypeOf = _dereq_(79);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n\n},{\"67\":67,\"7\":7,\"79\":79}],306:[function(_dereq_,module,exports){\nvar metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n\n},{\"67\":67,\"7\":7}],307:[function(_dereq_,module,exports){\nvar $metadata = _dereq_(67);\nvar anObject = _dereq_(7);\nvar aFunction = _dereq_(3);\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n\n},{\"3\":3,\"67\":67,\"7\":7}],308:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\n_dereq_(97)('Set');\n\n},{\"97\":97}],309:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\n_dereq_(98)('Set');\n\n},{\"98\":98}],310:[function(_dereq_,module,exports){\n// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = _dereq_(33);\n\n$export($export.P + $export.R, 'Set', { toJSON: _dereq_(20)('Set') });\n\n},{\"20\":20,\"33\":33}],311:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = _dereq_(33);\nvar $at = _dereq_(106)(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n\n},{\"106\":106,\"33\":33}],312:[function(_dereq_,module,exports){\n'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = _dereq_(33);\nvar defined = _dereq_(28);\nvar toLength = _dereq_(118);\nvar isRegExp = _dereq_(52);\nvar getFlags = _dereq_(37);\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\n_dereq_(54)($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n\n},{\"118\":118,\"28\":28,\"33\":33,\"37\":37,\"52\":52,\"54\":54}],313:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = _dereq_(33);\nvar $pad = _dereq_(109);\n\n$export($export.P, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n\n},{\"109\":109,\"33\":33}],314:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = _dereq_(33);\nvar $pad = _dereq_(109);\n\n$export($export.P, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n\n},{\"109\":109,\"33\":33}],315:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n_dereq_(111)('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n\n},{\"111\":111}],316:[function(_dereq_,module,exports){\n'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n_dereq_(111)('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n\n},{\"111\":111}],317:[function(_dereq_,module,exports){\n_dereq_(126)('asyncIterator');\n\n},{\"126\":126}],318:[function(_dereq_,module,exports){\n_dereq_(126)('observable');\n\n},{\"126\":126}],319:[function(_dereq_,module,exports){\n// https://github.com/tc39/proposal-global\nvar $export = _dereq_(33);\n\n$export($export.S, 'System', { global: _dereq_(40) });\n\n},{\"33\":33,\"40\":40}],320:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\n_dereq_(97)('WeakMap');\n\n},{\"97\":97}],321:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\n_dereq_(98)('WeakMap');\n\n},{\"98\":98}],322:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\n_dereq_(97)('WeakSet');\n\n},{\"97\":97}],323:[function(_dereq_,module,exports){\n// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\n_dereq_(98)('WeakSet');\n\n},{\"98\":98}],324:[function(_dereq_,module,exports){\nvar $iterators = _dereq_(141);\nvar getKeys = _dereq_(81);\nvar redefine = _dereq_(94);\nvar global = _dereq_(40);\nvar hide = _dereq_(42);\nvar Iterators = _dereq_(58);\nvar wks = _dereq_(128);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n},{\"128\":128,\"141\":141,\"40\":40,\"42\":42,\"58\":58,\"81\":81,\"94\":94}],325:[function(_dereq_,module,exports){\nvar $export = _dereq_(33);\nvar $task = _dereq_(113);\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n\n},{\"113\":113,\"33\":33}],326:[function(_dereq_,module,exports){\n// ie9- setTimeout & setInterval additional parameters fix\nvar global = _dereq_(40);\nvar $export = _dereq_(33);\nvar invoke = _dereq_(46);\nvar partial = _dereq_(88);\nvar navigator = global.navigator;\nvar MSIE = !!navigator && /MSIE .\\./.test(navigator.userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return MSIE ? function (fn, time /* , ...args */) {\n return set(invoke(\n partial,\n [].slice.call(arguments, 2),\n // eslint-disable-next-line no-new-func\n typeof fn == 'function' ? fn : Function(fn)\n ), time);\n } : set;\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n\n},{\"33\":33,\"40\":40,\"46\":46,\"88\":88}],327:[function(_dereq_,module,exports){\n_dereq_(254);\n_dereq_(191);\n_dereq_(193);\n_dereq_(192);\n_dereq_(195);\n_dereq_(197);\n_dereq_(202);\n_dereq_(196);\n_dereq_(194);\n_dereq_(204);\n_dereq_(203);\n_dereq_(199);\n_dereq_(200);\n_dereq_(198);\n_dereq_(190);\n_dereq_(201);\n_dereq_(205);\n_dereq_(206);\n_dereq_(157);\n_dereq_(159);\n_dereq_(158);\n_dereq_(208);\n_dereq_(207);\n_dereq_(178);\n_dereq_(188);\n_dereq_(189);\n_dereq_(179);\n_dereq_(180);\n_dereq_(181);\n_dereq_(182);\n_dereq_(183);\n_dereq_(184);\n_dereq_(185);\n_dereq_(186);\n_dereq_(187);\n_dereq_(161);\n_dereq_(162);\n_dereq_(163);\n_dereq_(164);\n_dereq_(165);\n_dereq_(166);\n_dereq_(167);\n_dereq_(168);\n_dereq_(169);\n_dereq_(170);\n_dereq_(171);\n_dereq_(172);\n_dereq_(173);\n_dereq_(174);\n_dereq_(175);\n_dereq_(176);\n_dereq_(177);\n_dereq_(241);\n_dereq_(246);\n_dereq_(253);\n_dereq_(244);\n_dereq_(236);\n_dereq_(237);\n_dereq_(242);\n_dereq_(247);\n_dereq_(249);\n_dereq_(232);\n_dereq_(233);\n_dereq_(234);\n_dereq_(235);\n_dereq_(238);\n_dereq_(239);\n_dereq_(240);\n_dereq_(243);\n_dereq_(245);\n_dereq_(248);\n_dereq_(250);\n_dereq_(251);\n_dereq_(252);\n_dereq_(152);\n_dereq_(154);\n_dereq_(153);\n_dereq_(156);\n_dereq_(155);\n_dereq_(140);\n_dereq_(138);\n_dereq_(145);\n_dereq_(142);\n_dereq_(148);\n_dereq_(150);\n_dereq_(137);\n_dereq_(144);\n_dereq_(134);\n_dereq_(149);\n_dereq_(132);\n_dereq_(147);\n_dereq_(146);\n_dereq_(139);\n_dereq_(143);\n_dereq_(131);\n_dereq_(133);\n_dereq_(136);\n_dereq_(135);\n_dereq_(151);\n_dereq_(141);\n_dereq_(224);\n_dereq_(230);\n_dereq_(225);\n_dereq_(226);\n_dereq_(227);\n_dereq_(228);\n_dereq_(229);\n_dereq_(209);\n_dereq_(160);\n_dereq_(231);\n_dereq_(266);\n_dereq_(267);\n_dereq_(255);\n_dereq_(256);\n_dereq_(261);\n_dereq_(264);\n_dereq_(265);\n_dereq_(259);\n_dereq_(262);\n_dereq_(260);\n_dereq_(263);\n_dereq_(257);\n_dereq_(258);\n_dereq_(210);\n_dereq_(211);\n_dereq_(212);\n_dereq_(213);\n_dereq_(214);\n_dereq_(217);\n_dereq_(215);\n_dereq_(216);\n_dereq_(218);\n_dereq_(219);\n_dereq_(220);\n_dereq_(221);\n_dereq_(223);\n_dereq_(222);\n_dereq_(270);\n_dereq_(268);\n_dereq_(269);\n_dereq_(311);\n_dereq_(314);\n_dereq_(313);\n_dereq_(315);\n_dereq_(316);\n_dereq_(312);\n_dereq_(317);\n_dereq_(318);\n_dereq_(292);\n_dereq_(295);\n_dereq_(291);\n_dereq_(289);\n_dereq_(290);\n_dereq_(293);\n_dereq_(294);\n_dereq_(276);\n_dereq_(310);\n_dereq_(275);\n_dereq_(309);\n_dereq_(321);\n_dereq_(323);\n_dereq_(274);\n_dereq_(308);\n_dereq_(320);\n_dereq_(322);\n_dereq_(273);\n_dereq_(319);\n_dereq_(272);\n_dereq_(277);\n_dereq_(278);\n_dereq_(279);\n_dereq_(280);\n_dereq_(281);\n_dereq_(283);\n_dereq_(282);\n_dereq_(284);\n_dereq_(285);\n_dereq_(286);\n_dereq_(288);\n_dereq_(287);\n_dereq_(297);\n_dereq_(298);\n_dereq_(299);\n_dereq_(300);\n_dereq_(302);\n_dereq_(301);\n_dereq_(304);\n_dereq_(303);\n_dereq_(305);\n_dereq_(306);\n_dereq_(307);\n_dereq_(271);\n_dereq_(296);\n_dereq_(326);\n_dereq_(325);\n_dereq_(324);\nmodule.exports = _dereq_(23);\n\n},{\"131\":131,\"132\":132,\"133\":133,\"134\":134,\"135\":135,\"136\":136,\"137\":137,\"138\":138,\"139\":139,\"140\":140,\"141\":141,\"142\":142,\"143\":143,\"144\":144,\"145\":145,\"146\":146,\"147\":147,\"148\":148,\"149\":149,\"150\":150,\"151\":151,\"152\":152,\"153\":153,\"154\":154,\"155\":155,\"156\":156,\"157\":157,\"158\":158,\"159\":159,\"160\":160,\"161\":161,\"162\":162,\"163\":163,\"164\":164,\"165\":165,\"166\":166,\"167\":167,\"168\":168,\"169\":169,\"170\":170,\"171\":171,\"172\":172,\"173\":173,\"174\":174,\"175\":175,\"176\":176,\"177\":177,\"178\":178,\"179\":179,\"180\":180,\"181\":181,\"182\":182,\"183\":183,\"184\":184,\"185\":185,\"186\":186,\"187\":187,\"188\":188,\"189\":189,\"190\":190,\"191\":191,\"192\":192,\"193\":193,\"194\":194,\"195\":195,\"196\":196,\"197\":197,\"198\":198,\"199\":199,\"200\":200,\"201\":201,\"202\":202,\"203\":203,\"204\":204,\"205\":205,\"206\":206,\"207\":207,\"208\":208,\"209\":209,\"210\":210,\"211\":211,\"212\":212,\"213\":213,\"214\":214,\"215\":215,\"216\":216,\"217\":217,\"218\":218,\"219\":219,\"220\":220,\"221\":221,\"222\":222,\"223\":223,\"224\":224,\"225\":225,\"226\":226,\"227\":227,\"228\":228,\"229\":229,\"23\":23,\"230\":230,\"231\":231,\"232\":232,\"233\":233,\"234\":234,\"235\":235,\"236\":236,\"237\":237,\"238\":238,\"239\":239,\"240\":240,\"241\":241,\"242\":242,\"243\":243,\"244\":244,\"245\":245,\"246\":246,\"247\":247,\"248\":248,\"249\":249,\"250\":250,\"251\":251,\"252\":252,\"253\":253,\"254\":254,\"255\":255,\"256\":256,\"257\":257,\"258\":258,\"259\":259,\"260\":260,\"261\":261,\"262\":262,\"263\":263,\"264\":264,\"265\":265,\"266\":266,\"267\":267,\"268\":268,\"269\":269,\"270\":270,\"271\":271,\"272\":272,\"273\":273,\"274\":274,\"275\":275,\"276\":276,\"277\":277,\"278\":278,\"279\":279,\"280\":280,\"281\":281,\"282\":282,\"283\":283,\"284\":284,\"285\":285,\"286\":286,\"287\":287,\"288\":288,\"289\":289,\"290\":290,\"291\":291,\"292\":292,\"293\":293,\"294\":294,\"295\":295,\"296\":296,\"297\":297,\"298\":298,\"299\":299,\"300\":300,\"301\":301,\"302\":302,\"303\":303,\"304\":304,\"305\":305,\"306\":306,\"307\":307,\"308\":308,\"309\":309,\"310\":310,\"311\":311,\"312\":312,\"313\":313,\"314\":314,\"315\":315,\"316\":316,\"317\":317,\"318\":318,\"319\":319,\"320\":320,\"321\":321,\"322\":322,\"323\":323,\"324\":324,\"325\":325,\"326\":326}],328:[function(_dereq_,module,exports){\n(function (global){\n/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}]},{},[1]);\n\r\n/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2017 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.0\n * Features enabled: core\n * Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nAsync.prototype._drainQueue = function(queue) {\n while (queue.length() > 0) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n continue;\n }\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n};\n\nAsync.prototype._drainQueues = function () {\n this._drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":17,\"./schedule\":18,\"./util\":21}],2:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],3:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":15}],4:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":21}],5:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":10,\"./util\":21}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n async.invokeLater(this._notifyUnhandledRejection, this, undefined);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new CustomEvent(name.toLowerCase(), {\n detail: event,\n cancelable: true\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":9,\"./util\":21}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":10,\"./util\":21}],10:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":5,\"./util\":21}],12:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":21}],13:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":21}],14:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":9,\"./es5\":10,\"./util\":21}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.0\";\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./async\":1,\"./bind\":2,\"./cancel\":4,\"./catch_filter\":5,\"./context\":6,\"./debuggability\":7,\"./direct_resolve\":8,\"./errors\":9,\"./es5\":10,\"./finally\":11,\"./join\":12,\"./method\":13,\"./nodeback\":14,\"./promise_array\":16,\"./synchronous_inspection\":19,\"./thenables\":20,\"./util\":21}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":21}],17:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],18:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":21}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],20:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":21}],21:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var l = 8;\n while (l--) new FakeConstructor();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\";\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":10}]},{},[3])(3)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }\r\n(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\r\n/** vim: et:ts=4:sw=4:sts=4\n * @license RequireJS 2.3.5 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE\n */\n//Not using strict: uneven strict support in browsers, #392, and causes\n//problems with requirejs.exec()/transpiler plugins that may not be strict.\n/*jslint regexp: true, nomen: true, sloppy: true */\n/*global window, navigator, document, importScripts, setTimeout, opera */\n\nvar requirejs, require, define;\n(function (global, setTimeout) {\n var req, s, head, baseElement, dataMain, src,\n interactiveScript, currentlyAddingScript, mainScript, subPath,\n version = '2.3.5',\n commentRegExp = /\\/\\*[\\s\\S]*?\\*\\/|([^:\"'=]|^)\\/\\/.*$/mg,\n cjsRequireRegExp = /[^.]\\s*require\\s*\\(\\s*[\"']([^'\"\\s]+)[\"']\\s*\\)/g,\n jsSuffixRegExp = /\\.js$/,\n currDirRegExp = /^\\.\\//,\n op = Object.prototype,\n ostring = op.toString,\n hasOwn = op.hasOwnProperty,\n isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document),\n isWebWorker = !isBrowser && typeof importScripts !== 'undefined',\n //PS3 indicates loaded and complete, but need to wait for complete\n //specifically. Sequence is 'loading', 'loaded', execution,\n // then 'complete'. The UA check is unfortunate, but not sure how\n //to feature test w/o causing perf issues.\n readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?\n /^complete$/ : /^(complete|loaded)$/,\n defContextName = '_',\n //Oh the tragedy, detecting opera. See the usage of isOpera for reason.\n isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]',\n contexts = {},\n cfg = {},\n globalDefQueue = [],\n useInteractive = false;\n\n //Could match something like ')//comment', do not lose the prefix to comment.\n function commentReplace(match, singlePrefix) {\n return singlePrefix || '';\n }\n\n function isFunction(it) {\n return ostring.call(it) === '[object Function]';\n }\n\n function isArray(it) {\n return ostring.call(it) === '[object Array]';\n }\n\n /**\n * Helper function for iterating over an array. If the func returns\n * a true value, it will break out of the loop.\n */\n function each(ary, func) {\n if (ary) {\n var i;\n for (i = 0; i < ary.length; i += 1) {\n if (ary[i] && func(ary[i], i, ary)) {\n break;\n }\n }\n }\n }\n\n /**\n * Helper function for iterating over an array backwards. If the func\n * returns a true value, it will break out of the loop.\n */\n function eachReverse(ary, func) {\n if (ary) {\n var i;\n for (i = ary.length - 1; i > -1; i -= 1) {\n if (ary[i] && func(ary[i], i, ary)) {\n break;\n }\n }\n }\n }\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n return hasProp(obj, prop) && obj[prop];\n }\n\n /**\n * Cycles over properties in an object and calls a function for each\n * property value. If the function returns a truthy value, then the\n * iteration is stopped.\n */\n function eachProp(obj, func) {\n var prop;\n for (prop in obj) {\n if (hasProp(obj, prop)) {\n if (func(obj[prop], prop)) {\n break;\n }\n }\n }\n }\n\n /**\n * Simple function to mix in properties from source into target,\n * but only if target does not already have a property of the same name.\n */\n function mixin(target, source, force, deepStringMixin) {\n if (source) {\n eachProp(source, function (value, prop) {\n if (force || !hasProp(target, prop)) {\n if (deepStringMixin && typeof value === 'object' && value &&\n !isArray(value) && !isFunction(value) &&\n !(value instanceof RegExp)) {\n\n if (!target[prop]) {\n target[prop] = {};\n }\n mixin(target[prop], value, force, deepStringMixin);\n } else {\n target[prop] = value;\n }\n }\n });\n }\n return target;\n }\n\n //Similar to Function.prototype.bind, but the 'this' object is specified\n //first, since it is easier to read/figure out what 'this' will be.\n function bind(obj, fn) {\n return function () {\n return fn.apply(obj, arguments);\n };\n }\n\n function scripts() {\n return document.getElementsByTagName('script');\n }\n\n function defaultOnError(err) {\n throw err;\n }\n\n //Allow getting a global that is expressed in\n //dot notation, like 'a.b.c'.\n function getGlobal(value) {\n if (!value) {\n return value;\n }\n var g = global;\n each(value.split('.'), function (part) {\n g = g[part];\n });\n return g;\n }\n\n /**\n * Constructs an error with a pointer to an URL with more information.\n * @param {String} id the error ID that maps to an ID on a web page.\n * @param {String} message human readable error.\n * @param {Error} [err] the original error, if there is one.\n *\n * @returns {Error}\n */\n function makeError(id, msg, err, requireModules) {\n var e = new Error(msg + '\\nhttp://requirejs.org/docs/errors.html#' + id);\n e.requireType = id;\n e.requireModules = requireModules;\n if (err) {\n e.originalError = err;\n }\n return e;\n }\n\n if (typeof define !== 'undefined') {\n //If a define is already in play via another AMD loader,\n //do not overwrite.\n return;\n }\n\n if (typeof requirejs !== 'undefined') {\n if (isFunction(requirejs)) {\n //Do not overwrite an existing requirejs instance.\n return;\n }\n cfg = requirejs;\n requirejs = undefined;\n }\n\n //Allow for a require config object\n if (typeof require !== 'undefined' && !isFunction(require)) {\n //assume it is a config object.\n cfg = require;\n require = undefined;\n }\n\n function newContext(contextName) {\n var inCheckLoaded, Module, context, handlers,\n checkLoadedTimeoutId,\n config = {\n //Defaults. Do not set a default for map\n //config to speed up normalize(), which\n //will run faster if there is no default.\n waitSeconds: 7,\n baseUrl: './',\n paths: {},\n bundles: {},\n pkgs: {},\n shim: {},\n config: {}\n },\n registry = {},\n //registry of just enabled modules, to speed\n //cycle breaking code when lots of modules\n //are registered, but not activated.\n enabledRegistry = {},\n undefEvents = {},\n defQueue = [],\n defined = {},\n urlFetched = {},\n bundlesMap = {},\n requireCounter = 1,\n unnormalizedCounter = 1;\n\n /**\n * Trims the . and .. from an array of path segments.\n * It will keep a leading path segment if a .. will become\n * the first path segment, to help with module name lookups,\n * which act like paths, but can be remapped. But the end result,\n * all paths that use this function should look normalized.\n * NOTE: this method MODIFIES the input array.\n * @param {Array} ary the array of path segments.\n */\n function trimDots(ary) {\n var i, part;\n for (i = 0; i < ary.length; i++) {\n part = ary[i];\n if (part === '.') {\n ary.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && ary[2] === '..') || ary[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n ary.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @param {Boolean} applyMap apply the map config to the value. Should\n * only be done if this normalization is for a dependency ID.\n * @returns {String} normalized name\n */\n function normalize(name, baseName, applyMap) {\n var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex,\n foundMap, foundI, foundStarMap, starI, normalizedBaseParts,\n baseParts = (baseName && baseName.split('/')),\n map = config.map,\n starMap = map && map['*'];\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n trimDots(name);\n name = name.join('/');\n }\n\n //Apply map config if available.\n if (applyMap && map && (baseParts || starMap)) {\n nameParts = name.split('/');\n\n outerLoop: for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join('/');\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = getOwn(map, baseParts.slice(0, j).join('/'));\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = getOwn(mapValue, nameSegment);\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break outerLoop;\n }\n }\n }\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) {\n foundStarMap = getOwn(starMap, nameSegment);\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n // If the name points to a package's name, use\n // the package main instead.\n pkgMain = getOwn(config.pkgs, name);\n\n return pkgMain ? pkgMain : name;\n }\n\n function removeScript(name) {\n if (isBrowser) {\n each(scripts(), function (scriptNode) {\n if (scriptNode.getAttribute('data-requiremodule') === name &&\n scriptNode.getAttribute('data-requirecontext') === context.contextName) {\n scriptNode.parentNode.removeChild(scriptNode);\n return true;\n }\n });\n }\n }\n\n function hasPathFallback(id) {\n var pathConfig = getOwn(config.paths, id);\n if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) {\n //Pop off the first array value, since it failed, and\n //retry\n pathConfig.shift();\n context.require.undef(id);\n\n //Custom require that does not do map translation, since\n //ID is \"absolute\", already mapped/resolved.\n context.makeRequire(null, {\n skipMap: true\n })([id]);\n\n return true;\n }\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n /**\n * Creates a module mapping that includes plugin prefix, module\n * name, and path. If parentModuleMap is provided it will\n * also normalize the name via require.normalize()\n *\n * @param {String} name the module name\n * @param {String} [parentModuleMap] parent module map\n * for the module name, used to resolve relative names.\n * @param {Boolean} isNormalized: is the ID already normalized.\n * This is true if this call is done for a define() module ID.\n * @param {Boolean} applyMap: apply the map config to the ID.\n * Should only be true if this map is for a dependency.\n *\n * @returns {Object}\n */\n function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) {\n var url, pluginModule, suffix, nameParts,\n prefix = null,\n parentName = parentModuleMap ? parentModuleMap.name : null,\n originalName = name,\n isDefine = true,\n normalizedName = '';\n\n //If no name, then it means it is a require call, generate an\n //internal name.\n if (!name) {\n isDefine = false;\n name = '_@r' + (requireCounter += 1);\n }\n\n nameParts = splitPrefix(name);\n prefix = nameParts[0];\n name = nameParts[1];\n\n if (prefix) {\n prefix = normalize(prefix, parentName, applyMap);\n pluginModule = getOwn(defined, prefix);\n }\n\n //Account for relative paths if there is a base name.\n if (name) {\n if (prefix) {\n if (isNormalized) {\n normalizedName = name;\n } else if (pluginModule && pluginModule.normalize) {\n //Plugin is loaded, use its normalize method.\n normalizedName = pluginModule.normalize(name, function (name) {\n return normalize(name, parentName, applyMap);\n });\n } else {\n // If nested plugin references, then do not try to\n // normalize, as it will not normalize correctly. This\n // places a restriction on resourceIds, and the longer\n // term solution is not to normalize until plugins are\n // loaded and all normalizations to allow for async\n // loading of a loader plugin. But for now, fixes the\n // common uses. Details in #1131\n normalizedName = name.indexOf('!') === -1 ?\n normalize(name, parentName, applyMap) :\n name;\n }\n } else {\n //A regular module.\n normalizedName = normalize(name, parentName, applyMap);\n\n //Normalized name may be a plugin ID due to map config\n //application in normalize. The map config values must\n //already be normalized, so do not need to redo that part.\n nameParts = splitPrefix(normalizedName);\n prefix = nameParts[0];\n normalizedName = nameParts[1];\n isNormalized = true;\n\n url = context.nameToUrl(normalizedName);\n }\n }\n\n //If the id is a plugin id that cannot be determined if it needs\n //normalization, stamp it with a unique ID so two matching relative\n //ids that may conflict can be separate.\n suffix = prefix && !pluginModule && !isNormalized ?\n '_unnormalized' + (unnormalizedCounter += 1) :\n '';\n\n return {\n prefix: prefix,\n name: normalizedName,\n parentMap: parentModuleMap,\n unnormalized: !!suffix,\n url: url,\n originalName: originalName,\n isDefine: isDefine,\n id: (prefix ?\n prefix + '!' + normalizedName :\n normalizedName) + suffix\n };\n }\n\n function getModule(depMap) {\n var id = depMap.id,\n mod = getOwn(registry, id);\n\n if (!mod) {\n mod = registry[id] = new context.Module(depMap);\n }\n\n return mod;\n }\n\n function on(depMap, name, fn) {\n var id = depMap.id,\n mod = getOwn(registry, id);\n\n if (hasProp(defined, id) &&\n (!mod || mod.defineEmitComplete)) {\n if (name === 'defined') {\n fn(defined[id]);\n }\n } else {\n mod = getModule(depMap);\n if (mod.error && name === 'error') {\n fn(mod.error);\n } else {\n mod.on(name, fn);\n }\n }\n }\n\n function onError(err, errback) {\n var ids = err.requireModules,\n notified = false;\n\n if (errback) {\n errback(err);\n } else {\n each(ids, function (id) {\n var mod = getOwn(registry, id);\n if (mod) {\n //Set error on module, so it skips timeout checks.\n mod.error = err;\n if (mod.events.error) {\n notified = true;\n mod.emit('error', err);\n }\n }\n });\n\n if (!notified) {\n req.onError(err);\n }\n }\n }\n\n /**\n * Internal method to transfer globalQueue items to this context's\n * defQueue.\n */\n function takeGlobalQueue() {\n //Push all the globalDefQueue items into the context's defQueue\n if (globalDefQueue.length) {\n each(globalDefQueue, function(queueItem) {\n var id = queueItem[0];\n if (typeof id === 'string') {\n context.defQueueMap[id] = true;\n }\n defQueue.push(queueItem);\n });\n globalDefQueue = [];\n }\n }\n\n handlers = {\n 'require': function (mod) {\n if (mod.require) {\n return mod.require;\n } else {\n return (mod.require = context.makeRequire(mod.map));\n }\n },\n 'exports': function (mod) {\n mod.usingExports = true;\n if (mod.map.isDefine) {\n if (mod.exports) {\n return (defined[mod.map.id] = mod.exports);\n } else {\n return (mod.exports = defined[mod.map.id] = {});\n }\n }\n },\n 'module': function (mod) {\n if (mod.module) {\n return mod.module;\n } else {\n return (mod.module = {\n id: mod.map.id,\n uri: mod.map.url,\n config: function () {\n return getOwn(config.config, mod.map.id) || {};\n },\n exports: mod.exports || (mod.exports = {})\n });\n }\n }\n };\n\n function cleanRegistry(id) {\n //Clean up machinery used for waiting modules.\n delete registry[id];\n delete enabledRegistry[id];\n }\n\n function breakCycle(mod, traced, processed) {\n var id = mod.map.id;\n\n if (mod.error) {\n mod.emit('error', mod.error);\n } else {\n traced[id] = true;\n each(mod.depMaps, function (depMap, i) {\n var depId = depMap.id,\n dep = getOwn(registry, depId);\n\n //Only force things that have not completed\n //being defined, so still in the registry,\n //and only if it has not been matched up\n //in the module already.\n if (dep && !mod.depMatched[i] && !processed[depId]) {\n if (getOwn(traced, depId)) {\n mod.defineDep(i, defined[depId]);\n mod.check(); //pass false?\n } else {\n breakCycle(dep, traced, processed);\n }\n }\n });\n processed[id] = true;\n }\n }\n\n function checkLoaded() {\n var err, usingPathFallback,\n waitInterval = config.waitSeconds * 1000,\n //It is possible to disable the wait interval by using waitSeconds of 0.\n expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),\n noLoads = [],\n reqCalls = [],\n stillLoading = false,\n needCycleCheck = true;\n\n //Do not bother if this call was a result of a cycle break.\n if (inCheckLoaded) {\n return;\n }\n\n inCheckLoaded = true;\n\n //Figure out the state of all the modules.\n eachProp(enabledRegistry, function (mod) {\n var map = mod.map,\n modId = map.id;\n\n //Skip things that are not enabled or in error state.\n if (!mod.enabled) {\n return;\n }\n\n if (!map.isDefine) {\n reqCalls.push(mod);\n }\n\n if (!mod.error) {\n //If the module should be executed, and it has not\n //been inited and time is up, remember it.\n if (!mod.inited && expired) {\n if (hasPathFallback(modId)) {\n usingPathFallback = true;\n stillLoading = true;\n } else {\n noLoads.push(modId);\n removeScript(modId);\n }\n } else if (!mod.inited && mod.fetched && map.isDefine) {\n stillLoading = true;\n if (!map.prefix) {\n //No reason to keep looking for unfinished\n //loading. If the only stillLoading is a\n //plugin resource though, keep going,\n //because it may be that a plugin resource\n //is waiting on a non-plugin cycle.\n return (needCycleCheck = false);\n }\n }\n }\n });\n\n if (expired && noLoads.length) {\n //If wait time expired, throw error of unloaded modules.\n err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads);\n err.contextName = context.contextName;\n return onError(err);\n }\n\n //Not expired, check for a cycle.\n if (needCycleCheck) {\n each(reqCalls, function (mod) {\n breakCycle(mod, {}, {});\n });\n }\n\n //If still waiting on loads, and the waiting load is something\n //other than a plugin resource, or there are still outstanding\n //scripts, then just try back later.\n if ((!expired || usingPathFallback) && stillLoading) {\n //Something is still waiting to load. Wait for it, but only\n //if a timeout is not already in effect.\n if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) {\n checkLoadedTimeoutId = setTimeout(function () {\n checkLoadedTimeoutId = 0;\n checkLoaded();\n }, 50);\n }\n }\n\n inCheckLoaded = false;\n }\n\n Module = function (map) {\n this.events = getOwn(undefEvents, map.id) || {};\n this.map = map;\n this.shim = getOwn(config.shim, map.id);\n this.depExports = [];\n this.depMaps = [];\n this.depMatched = [];\n this.pluginMaps = {};\n this.depCount = 0;\n\n /* this.exports this.factory\n this.depMaps = [],\n this.enabled, this.fetched\n */\n };\n\n Module.prototype = {\n init: function (depMaps, factory, errback, options) {\n options = options || {};\n\n //Do not do more inits if already done. Can happen if there\n //are multiple define calls for the same module. That is not\n //a normal, common case, but it is also not unexpected.\n if (this.inited) {\n return;\n }\n\n this.factory = factory;\n\n if (errback) {\n //Register for errors on this module.\n this.on('error', errback);\n } else if (this.events.error) {\n //If no errback already, but there are error listeners\n //on this module, set up an errback to pass to the deps.\n errback = bind(this, function (err) {\n this.emit('error', err);\n });\n }\n\n //Do a copy of the dependency array, so that\n //source inputs are not modified. For example\n //\"shim\" deps are passed in here directly, and\n //doing a direct modification of the depMaps array\n //would affect that config.\n this.depMaps = depMaps && depMaps.slice(0);\n\n this.errback = errback;\n\n //Indicate this module has be initialized\n this.inited = true;\n\n this.ignore = options.ignore;\n\n //Could have option to init this module in enabled mode,\n //or could have been previously marked as enabled. However,\n //the dependencies are not known until init is called. So\n //if enabled previously, now trigger dependencies as enabled.\n if (options.enabled || this.enabled) {\n //Enable this module and dependencies.\n //Will call this.check()\n this.enable();\n } else {\n this.check();\n }\n },\n\n defineDep: function (i, depExports) {\n //Because of cycles, defined callback for a given\n //export can be called more than once.\n if (!this.depMatched[i]) {\n this.depMatched[i] = true;\n this.depCount -= 1;\n this.depExports[i] = depExports;\n }\n },\n\n fetch: function () {\n if (this.fetched) {\n return;\n }\n this.fetched = true;\n\n context.startTime = (new Date()).getTime();\n\n var map = this.map;\n\n //If the manager is for a plugin managed resource,\n //ask the plugin to load it now.\n if (this.shim) {\n context.makeRequire(this.map, {\n enableBuildCallback: true\n })(this.shim.deps || [], bind(this, function () {\n return map.prefix ? this.callPlugin() : this.load();\n }));\n } else {\n //Regular dependency.\n return map.prefix ? this.callPlugin() : this.load();\n }\n },\n\n load: function () {\n var url = this.map.url;\n\n //Regular dependency.\n if (!urlFetched[url]) {\n urlFetched[url] = true;\n context.load(this.map.id, url);\n }\n },\n\n /**\n * Checks if the module is ready to define itself, and if so,\n * define it.\n */\n check: function () {\n if (!this.enabled || this.enabling) {\n return;\n }\n\n var err, cjsModule,\n id = this.map.id,\n depExports = this.depExports,\n exports = this.exports,\n factory = this.factory;\n\n if (!this.inited) {\n // Only fetch if not already in the defQueue.\n if (!hasProp(context.defQueueMap, id)) {\n this.fetch();\n }\n } else if (this.error) {\n this.emit('error', this.error);\n } else if (!this.defining) {\n //The factory could trigger another require call\n //that would result in checking this module to\n //define itself again. If already in the process\n //of doing that, skip this work.\n this.defining = true;\n\n if (this.depCount < 1 && !this.defined) {\n if (isFunction(factory)) {\n //If there is an error listener, favor passing\n //to that instead of throwing an error. However,\n //only do it for define()'d modules. require\n //errbacks should not be called for failures in\n //their callbacks (#699). However if a global\n //onError is set, use that.\n if ((this.events.error && this.map.isDefine) ||\n req.onError !== defaultOnError) {\n try {\n exports = context.execCb(id, factory, depExports, exports);\n } catch (e) {\n err = e;\n }\n } else {\n exports = context.execCb(id, factory, depExports, exports);\n }\n\n // Favor return value over exports. If node/cjs in play,\n // then will not have a return value anyway. Favor\n // module.exports assignment over exports object.\n if (this.map.isDefine && exports === undefined) {\n cjsModule = this.module;\n if (cjsModule) {\n exports = cjsModule.exports;\n } else if (this.usingExports) {\n //exports already set the defined value.\n exports = this.exports;\n }\n }\n\n if (err) {\n err.requireMap = this.map;\n err.requireModules = this.map.isDefine ? [this.map.id] : null;\n err.requireType = this.map.isDefine ? 'define' : 'require';\n return onError((this.error = err));\n }\n\n } else {\n //Just a literal value\n exports = factory;\n }\n\n this.exports = exports;\n\n if (this.map.isDefine && !this.ignore) {\n defined[id] = exports;\n\n if (req.onResourceLoad) {\n var resLoadMaps = [];\n each(this.depMaps, function (depMap) {\n resLoadMaps.push(depMap.normalizedMap || depMap);\n });\n req.onResourceLoad(context, this.map, resLoadMaps);\n }\n }\n\n //Clean up\n cleanRegistry(id);\n\n this.defined = true;\n }\n\n //Finished the define stage. Allow calling check again\n //to allow define notifications below in the case of a\n //cycle.\n this.defining = false;\n\n if (this.defined && !this.defineEmitted) {\n this.defineEmitted = true;\n this.emit('defined', this.exports);\n this.defineEmitComplete = true;\n }\n\n }\n },\n\n callPlugin: function () {\n var map = this.map,\n id = map.id,\n //Map already normalized the prefix.\n pluginMap = makeModuleMap(map.prefix);\n\n //Mark this as a dependency for this plugin, so it\n //can be traced for cycles.\n this.depMaps.push(pluginMap);\n\n on(pluginMap, 'defined', bind(this, function (plugin) {\n var load, normalizedMap, normalizedMod,\n bundleId = getOwn(bundlesMap, this.map.id),\n name = this.map.name,\n parentName = this.map.parentMap ? this.map.parentMap.name : null,\n localRequire = context.makeRequire(map.parentMap, {\n enableBuildCallback: true\n });\n\n //If current map is not normalized, wait for that\n //normalized name to load instead of continuing.\n if (this.map.unnormalized) {\n //Normalize the ID if the plugin allows it.\n if (plugin.normalize) {\n name = plugin.normalize(name, function (name) {\n return normalize(name, parentName, true);\n }) || '';\n }\n\n //prefix and name should already be normalized, no need\n //for applying map config again either.\n normalizedMap = makeModuleMap(map.prefix + '!' + name,\n this.map.parentMap,\n true);\n on(normalizedMap,\n 'defined', bind(this, function (value) {\n this.map.normalizedMap = normalizedMap;\n this.init([], function () { return value; }, null, {\n enabled: true,\n ignore: true\n });\n }));\n\n normalizedMod = getOwn(registry, normalizedMap.id);\n if (normalizedMod) {\n //Mark this as a dependency for this plugin, so it\n //can be traced for cycles.\n this.depMaps.push(normalizedMap);\n\n if (this.events.error) {\n normalizedMod.on('error', bind(this, function (err) {\n this.emit('error', err);\n }));\n }\n normalizedMod.enable();\n }\n\n return;\n }\n\n //If a paths config, then just load that file instead to\n //resolve the plugin, as it is built into that paths layer.\n if (bundleId) {\n this.map.url = context.nameToUrl(bundleId);\n this.load();\n return;\n }\n\n load = bind(this, function (value) {\n this.init([], function () { return value; }, null, {\n enabled: true\n });\n });\n\n load.error = bind(this, function (err) {\n this.inited = true;\n this.error = err;\n err.requireModules = [id];\n\n //Remove temp unnormalized modules for this module,\n //since they will never be resolved otherwise now.\n eachProp(registry, function (mod) {\n if (mod.map.id.indexOf(id + '_unnormalized') === 0) {\n cleanRegistry(mod.map.id);\n }\n });\n\n onError(err);\n });\n\n //Allow plugins to load other code without having to know the\n //context or how to 'complete' the load.\n load.fromText = bind(this, function (text, textAlt) {\n /*jslint evil: true */\n var moduleName = map.name,\n moduleMap = makeModuleMap(moduleName),\n hasInteractive = useInteractive;\n\n //As of 2.1.0, support just passing the text, to reinforce\n //fromText only being called once per resource. Still\n //support old style of passing moduleName but discard\n //that moduleName in favor of the internal ref.\n if (textAlt) {\n text = textAlt;\n }\n\n //Turn off interactive script matching for IE for any define\n //calls in the text, then turn it back on at the end.\n if (hasInteractive) {\n useInteractive = false;\n }\n\n //Prime the system by creating a module instance for\n //it.\n getModule(moduleMap);\n\n //Transfer any config to this other module.\n if (hasProp(config.config, id)) {\n config.config[moduleName] = config.config[id];\n }\n\n try {\n req.exec(text);\n } catch (e) {\n return onError(makeError('fromtexteval',\n 'fromText eval for ' + id +\n ' failed: ' + e,\n e,\n [id]));\n }\n\n if (hasInteractive) {\n useInteractive = true;\n }\n\n //Mark this as a dependency for the plugin\n //resource\n this.depMaps.push(moduleMap);\n\n //Support anonymous modules.\n context.completeLoad(moduleName);\n\n //Bind the value of that module to the value for this\n //resource ID.\n localRequire([moduleName], load);\n });\n\n //Use parentName here since the plugin's name is not reliable,\n //could be some weird string with no path that actually wants to\n //reference the parentName's path.\n plugin.load(map.name, localRequire, load, config);\n }));\n\n context.enable(pluginMap, this);\n this.pluginMaps[pluginMap.id] = pluginMap;\n },\n\n enable: function () {\n enabledRegistry[this.map.id] = this;\n this.enabled = true;\n\n //Set flag mentioning that the module is enabling,\n //so that immediate calls to the defined callbacks\n //for dependencies do not trigger inadvertent load\n //with the depCount still being zero.\n this.enabling = true;\n\n //Enable each dependency\n each(this.depMaps, bind(this, function (depMap, i) {\n var id, mod, handler;\n\n if (typeof depMap === 'string') {\n //Dependency needs to be converted to a depMap\n //and wired up to this module.\n depMap = makeModuleMap(depMap,\n (this.map.isDefine ? this.map : this.map.parentMap),\n false,\n !this.skipMap);\n this.depMaps[i] = depMap;\n\n handler = getOwn(handlers, depMap.id);\n\n if (handler) {\n this.depExports[i] = handler(this);\n return;\n }\n\n this.depCount += 1;\n\n on(depMap, 'defined', bind(this, function (depExports) {\n if (this.undefed) {\n return;\n }\n this.defineDep(i, depExports);\n this.check();\n }));\n\n if (this.errback) {\n on(depMap, 'error', bind(this, this.errback));\n } else if (this.events.error) {\n // No direct errback on this module, but something\n // else is listening for errors, so be sure to\n // propagate the error correctly.\n on(depMap, 'error', bind(this, function(err) {\n this.emit('error', err);\n }));\n }\n }\n\n id = depMap.id;\n mod = registry[id];\n\n //Skip special modules like 'require', 'exports', 'module'\n //Also, don't call enable if it is already enabled,\n //important in circular dependency cases.\n if (!hasProp(handlers, id) && mod && !mod.enabled) {\n context.enable(depMap, this);\n }\n }));\n\n //Enable each plugin that is used in\n //a dependency\n eachProp(this.pluginMaps, bind(this, function (pluginMap) {\n var mod = getOwn(registry, pluginMap.id);\n if (mod && !mod.enabled) {\n context.enable(pluginMap, this);\n }\n }));\n\n this.enabling = false;\n\n this.check();\n },\n\n on: function (name, cb) {\n var cbs = this.events[name];\n if (!cbs) {\n cbs = this.events[name] = [];\n }\n cbs.push(cb);\n },\n\n emit: function (name, evt) {\n each(this.events[name], function (cb) {\n cb(evt);\n });\n if (name === 'error') {\n //Now that the error handler was triggered, remove\n //the listeners, since this broken Module instance\n //can stay around for a while in the registry.\n delete this.events[name];\n }\n }\n };\n\n function callGetModule(args) {\n //Skip modules already defined.\n if (!hasProp(defined, args[0])) {\n getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]);\n }\n }\n\n function removeListener(node, func, name, ieName) {\n //Favor detachEvent because of IE9\n //issue, see attachEvent/addEventListener comment elsewhere\n //in this file.\n if (node.detachEvent && !isOpera) {\n //Probably IE. If not it will throw an error, which will be\n //useful to know.\n if (ieName) {\n node.detachEvent(ieName, func);\n }\n } else {\n node.removeEventListener(name, func, false);\n }\n }\n\n /**\n * Given an event from a script node, get the requirejs info from it,\n * and then removes the event listeners on the node.\n * @param {Event} evt\n * @returns {Object}\n */\n function getScriptData(evt) {\n //Using currentTarget instead of target for Firefox 2.0's sake. Not\n //all old browsers will be supported, but this one was easy enough\n //to support and still makes sense.\n var node = evt.currentTarget || evt.srcElement;\n\n //Remove the listeners once here.\n removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange');\n removeListener(node, context.onScriptError, 'error');\n\n return {\n node: node,\n id: node && node.getAttribute('data-requiremodule')\n };\n }\n\n function intakeDefines() {\n var args;\n\n //Any defined modules in the global queue, intake them now.\n takeGlobalQueue();\n\n //Make sure any remaining defQueue items get properly processed.\n while (defQueue.length) {\n args = defQueue.shift();\n if (args[0] === null) {\n return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' +\n args[args.length - 1]));\n } else {\n //args are id, deps, factory. Should be normalized by the\n //define() function.\n callGetModule(args);\n }\n }\n context.defQueueMap = {};\n }\n\n context = {\n config: config,\n contextName: contextName,\n registry: registry,\n defined: defined,\n urlFetched: urlFetched,\n defQueue: defQueue,\n defQueueMap: {},\n Module: Module,\n makeModuleMap: makeModuleMap,\n nextTick: req.nextTick,\n onError: onError,\n\n /**\n * Set a configuration for the context.\n * @param {Object} cfg config object to integrate.\n */\n configure: function (cfg) {\n //Make sure the baseUrl ends in a slash.\n if (cfg.baseUrl) {\n if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') {\n cfg.baseUrl += '/';\n }\n }\n\n // Convert old style urlArgs string to a function.\n if (typeof cfg.urlArgs === 'string') {\n var urlArgs = cfg.urlArgs;\n cfg.urlArgs = function(id, url) {\n return (url.indexOf('?') === -1 ? '?' : '&') + urlArgs;\n };\n }\n\n //Save off the paths since they require special processing,\n //they are additive.\n var shim = config.shim,\n objs = {\n paths: true,\n bundles: true,\n config: true,\n map: true\n };\n\n eachProp(cfg, function (value, prop) {\n if (objs[prop]) {\n if (!config[prop]) {\n config[prop] = {};\n }\n mixin(config[prop], value, true, true);\n } else {\n config[prop] = value;\n }\n });\n\n //Reverse map the bundles\n if (cfg.bundles) {\n eachProp(cfg.bundles, function (value, prop) {\n each(value, function (v) {\n if (v !== prop) {\n bundlesMap[v] = prop;\n }\n });\n });\n }\n\n //Merge shim\n if (cfg.shim) {\n eachProp(cfg.shim, function (value, id) {\n //Normalize the structure\n if (isArray(value)) {\n value = {\n deps: value\n };\n }\n if ((value.exports || value.init) && !value.exportsFn) {\n value.exportsFn = context.makeShimExports(value);\n }\n shim[id] = value;\n });\n config.shim = shim;\n }\n\n //Adjust packages if necessary.\n if (cfg.packages) {\n each(cfg.packages, function (pkgObj) {\n var location, name;\n\n pkgObj = typeof pkgObj === 'string' ? {name: pkgObj} : pkgObj;\n\n name = pkgObj.name;\n location = pkgObj.location;\n if (location) {\n config.paths[name] = pkgObj.location;\n }\n\n //Save pointer to main module ID for pkg name.\n //Remove leading dot in main, so main paths are normalized,\n //and remove any trailing .js, since different package\n //envs have different conventions: some use a module name,\n //some use a file name.\n config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main')\n .replace(currDirRegExp, '')\n .replace(jsSuffixRegExp, '');\n });\n }\n\n //If there are any \"waiting to execute\" modules in the registry,\n //update the maps for them, since their info, like URLs to load,\n //may have changed.\n eachProp(registry, function (mod, id) {\n //If module already has init called, since it is too\n //late to modify them, and ignore unnormalized ones\n //since they are transient.\n if (!mod.inited && !mod.map.unnormalized) {\n mod.map = makeModuleMap(id, null, true);\n }\n });\n\n //If a deps array or a config callback is specified, then call\n //require with those args. This is useful when require is defined as a\n //config object before require.js is loaded.\n if (cfg.deps || cfg.callback) {\n context.require(cfg.deps || [], cfg.callback);\n }\n },\n\n makeShimExports: function (value) {\n function fn() {\n var ret;\n if (value.init) {\n ret = value.init.apply(global, arguments);\n }\n return ret || (value.exports && getGlobal(value.exports));\n }\n return fn;\n },\n\n makeRequire: function (relMap, options) {\n options = options || {};\n\n function localRequire(deps, callback, errback) {\n var id, map, requireMod;\n\n if (options.enableBuildCallback && callback && isFunction(callback)) {\n callback.__requireJsBuild = true;\n }\n\n if (typeof deps === 'string') {\n if (isFunction(callback)) {\n //Invalid call\n return onError(makeError('requireargs', 'Invalid require call'), errback);\n }\n\n //If require|exports|module are requested, get the\n //value for them from the special handlers. Caveat:\n //this only works while module is being defined.\n if (relMap && hasProp(handlers, deps)) {\n return handlers[deps](registry[relMap.id]);\n }\n\n //Synchronous access to one module. If require.get is\n //available (as in the Node adapter), prefer that.\n if (req.get) {\n return req.get(context, deps, relMap, localRequire);\n }\n\n //Normalize module name, if it contains . or ..\n map = makeModuleMap(deps, relMap, false, true);\n id = map.id;\n\n if (!hasProp(defined, id)) {\n return onError(makeError('notloaded', 'Module name \"' +\n id +\n '\" has not been loaded yet for context: ' +\n contextName +\n (relMap ? '' : '. Use require([])')));\n }\n return defined[id];\n }\n\n //Grab defines waiting in the global queue.\n intakeDefines();\n\n //Mark all the dependencies as needing to be loaded.\n context.nextTick(function () {\n //Some defines could have been added since the\n //require call, collect them.\n intakeDefines();\n\n requireMod = getModule(makeModuleMap(null, relMap));\n\n //Store if map config should be applied to this require\n //call for dependencies.\n requireMod.skipMap = options.skipMap;\n\n requireMod.init(deps, callback, errback, {\n enabled: true\n });\n\n checkLoaded();\n });\n\n return localRequire;\n }\n\n mixin(localRequire, {\n isBrowser: isBrowser,\n\n /**\n * Converts a module name + .extension into an URL path.\n * *Requires* the use of a module name. It does not support using\n * plain URLs like nameToUrl.\n */\n toUrl: function (moduleNamePlusExt) {\n var ext,\n index = moduleNamePlusExt.lastIndexOf('.'),\n segment = moduleNamePlusExt.split('/')[0],\n isRelative = segment === '.' || segment === '..';\n\n //Have a file extension alias, and it is not the\n //dots from a relative path.\n if (index !== -1 && (!isRelative || index > 1)) {\n ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);\n moduleNamePlusExt = moduleNamePlusExt.substring(0, index);\n }\n\n return context.nameToUrl(normalize(moduleNamePlusExt,\n relMap && relMap.id, true), ext, true);\n },\n\n defined: function (id) {\n return hasProp(defined, makeModuleMap(id, relMap, false, true).id);\n },\n\n specified: function (id) {\n id = makeModuleMap(id, relMap, false, true).id;\n return hasProp(defined, id) || hasProp(registry, id);\n }\n });\n\n //Only allow undef on top level require calls\n if (!relMap) {\n localRequire.undef = function (id) {\n //Bind any waiting define() calls to this context,\n //fix for #408\n takeGlobalQueue();\n\n var map = makeModuleMap(id, relMap, true),\n mod = getOwn(registry, id);\n\n mod.undefed = true;\n removeScript(id);\n\n delete defined[id];\n delete urlFetched[map.url];\n delete undefEvents[id];\n\n //Clean queued defines too. Go backwards\n //in array so that the splices do not\n //mess up the iteration.\n eachReverse(defQueue, function(args, i) {\n if (args[0] === id) {\n defQueue.splice(i, 1);\n }\n });\n delete context.defQueueMap[id];\n\n if (mod) {\n //Hold on to listeners in case the\n //module will be attempted to be reloaded\n //using a different config.\n if (mod.events.defined) {\n undefEvents[id] = mod.events;\n }\n\n cleanRegistry(id);\n }\n };\n }\n\n return localRequire;\n },\n\n /**\n * Called to enable a module if it is still in the registry\n * awaiting enablement. A second arg, parent, the parent module,\n * is passed in for context, when this method is overridden by\n * the optimizer. Not shown here to keep code compact.\n */\n enable: function (depMap) {\n var mod = getOwn(registry, depMap.id);\n if (mod) {\n getModule(depMap).enable();\n }\n },\n\n /**\n * Internal method used by environment adapters to complete a load event.\n * A load event could be a script load or just a load pass from a synchronous\n * load call.\n * @param {String} moduleName the name of the module to potentially complete.\n */\n completeLoad: function (moduleName) {\n var found, args, mod,\n shim = getOwn(config.shim, moduleName) || {},\n shExports = shim.exports;\n\n takeGlobalQueue();\n\n while (defQueue.length) {\n args = defQueue.shift();\n if (args[0] === null) {\n args[0] = moduleName;\n //If already found an anonymous module and bound it\n //to this name, then this is some other anon module\n //waiting for its completeLoad to fire.\n if (found) {\n break;\n }\n found = true;\n } else if (args[0] === moduleName) {\n //Found matching define call for this script!\n found = true;\n }\n\n callGetModule(args);\n }\n context.defQueueMap = {};\n\n //Do this after the cycle of callGetModule in case the result\n //of those calls/init calls changes the registry.\n mod = getOwn(registry, moduleName);\n\n if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) {\n if (config.enforceDefine && (!shExports || !getGlobal(shExports))) {\n if (hasPathFallback(moduleName)) {\n return;\n } else {\n return onError(makeError('nodefine',\n 'No define call for ' + moduleName,\n null,\n [moduleName]));\n }\n } else {\n //A script that does not call define(), so just simulate\n //the call for it.\n callGetModule([moduleName, (shim.deps || []), shim.exportsFn]);\n }\n }\n\n checkLoaded();\n },\n\n /**\n * Converts a module name to a file path. Supports cases where\n * moduleName may actually be just an URL.\n * Note that it **does not** call normalize on the moduleName,\n * it is assumed to have already been normalized. This is an\n * internal API, not a public one. Use toUrl for the public API.\n */\n nameToUrl: function (moduleName, ext, skipExt) {\n var paths, syms, i, parentModule, url,\n parentPath, bundleId,\n pkgMain = getOwn(config.pkgs, moduleName);\n\n if (pkgMain) {\n moduleName = pkgMain;\n }\n\n bundleId = getOwn(bundlesMap, moduleName);\n\n if (bundleId) {\n return context.nameToUrl(bundleId, ext, skipExt);\n }\n\n //If a colon is in the URL, it indicates a protocol is used and it is just\n //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?)\n //or ends with .js, then assume the user meant to use an url and not a module id.\n //The slash is important for protocol-less URLs as well as full paths.\n if (req.jsExtRegExp.test(moduleName)) {\n //Just a plain path, not module name lookup, so just return it.\n //Add extension if it is included. This is a bit wonky, only non-.js things pass\n //an extension, this method probably needs to be reworked.\n url = moduleName + (ext || '');\n } else {\n //A module that needs to be converted to a path.\n paths = config.paths;\n\n syms = moduleName.split('/');\n //For each module name segment, see if there is a path\n //registered for it. Start with most specific name\n //and work up from it.\n for (i = syms.length; i > 0; i -= 1) {\n parentModule = syms.slice(0, i).join('/');\n\n parentPath = getOwn(paths, parentModule);\n if (parentPath) {\n //If an array, it means there are a few choices,\n //Choose the one that is desired\n if (isArray(parentPath)) {\n parentPath = parentPath[0];\n }\n syms.splice(0, i, parentPath);\n break;\n }\n }\n\n //Join the path parts together, then figure out if baseUrl is needed.\n url = syms.join('/');\n url += (ext || (/^data\\:|^blob\\:|\\?/.test(url) || skipExt ? '' : '.js'));\n url = (url.charAt(0) === '/' || url.match(/^[\\w\\+\\.\\-]+:/) ? '' : config.baseUrl) + url;\n }\n\n return config.urlArgs && !/^blob\\:/.test(url) ?\n url + config.urlArgs(moduleName, url) : url;\n },\n\n //Delegates to req.load. Broken out as a separate function to\n //allow overriding in the optimizer.\n load: function (id, url) {\n req.load(context, id, url);\n },\n\n /**\n * Executes a module callback function. Broken out as a separate function\n * solely to allow the build system to sequence the files in the built\n * layer in the right sequence.\n *\n * @private\n */\n execCb: function (name, callback, args, exports) {\n return callback.apply(exports, args);\n },\n\n /**\n * callback for script loads, used to check status of loading.\n *\n * @param {Event} evt the event from the browser for the script\n * that was loaded.\n */\n onScriptLoad: function (evt) {\n //Using currentTarget instead of target for Firefox 2.0's sake. Not\n //all old browsers will be supported, but this one was easy enough\n //to support and still makes sense.\n if (evt.type === 'load' ||\n (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) {\n //Reset interactive script so a script node is not held onto for\n //to long.\n interactiveScript = null;\n\n //Pull out the name of the module and the context.\n var data = getScriptData(evt);\n context.completeLoad(data.id);\n }\n },\n\n /**\n * Callback for script errors.\n */\n onScriptError: function (evt) {\n var data = getScriptData(evt);\n if (!hasPathFallback(data.id)) {\n var parents = [];\n eachProp(registry, function(value, key) {\n if (key.indexOf('_@r') !== 0) {\n each(value.depMaps, function(depMap) {\n if (depMap.id === data.id) {\n parents.push(key);\n return true;\n }\n });\n }\n });\n return onError(makeError('scripterror', 'Script error for \"' + data.id +\n (parents.length ?\n '\", needed by: ' + parents.join(', ') :\n '\"'), evt, [data.id]));\n }\n }\n };\n\n context.require = context.makeRequire();\n return context;\n }\n\n /**\n * Main entry point.\n *\n * If the only argument to require is a string, then the module that\n * is represented by that string is fetched for the appropriate context.\n *\n * If the first argument is an array, then it will be treated as an array\n * of dependency string names to fetch. An optional function callback can\n * be specified to execute when all of those dependencies are available.\n *\n * Make a local req variable to help Caja compliance (it assumes things\n * on a require that are not standardized), and to give a short\n * name for minification/local scope use.\n */\n req = requirejs = function (deps, callback, errback, optional) {\n\n //Find the right context, use default\n var context, config,\n contextName = defContextName;\n\n // Determine if have config object in the call.\n if (!isArray(deps) && typeof deps !== 'string') {\n // deps is a config object\n config = deps;\n if (isArray(callback)) {\n // Adjust args if there are dependencies\n deps = callback;\n callback = errback;\n errback = optional;\n } else {\n deps = [];\n }\n }\n\n if (config && config.context) {\n contextName = config.context;\n }\n\n context = getOwn(contexts, contextName);\n if (!context) {\n context = contexts[contextName] = req.s.newContext(contextName);\n }\n\n if (config) {\n context.configure(config);\n }\n\n return context.require(deps, callback, errback);\n };\n\n /**\n * Support require.config() to make it easier to cooperate with other\n * AMD loaders on globally agreed names.\n */\n req.config = function (config) {\n return req(config);\n };\n\n /**\n * Execute something after the current tick\n * of the event loop. Override for other envs\n * that have a better solution than setTimeout.\n * @param {Function} fn function to execute later.\n */\n req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) {\n setTimeout(fn, 4);\n } : function (fn) { fn(); };\n\n /**\n * Export require as a global, but only if it does not already exist.\n */\n if (!require) {\n require = req;\n }\n\n req.version = version;\n\n //Used to filter out dependencies that are already paths.\n req.jsExtRegExp = /^\\/|:|\\?|\\.js$/;\n req.isBrowser = isBrowser;\n s = req.s = {\n contexts: contexts,\n newContext: newContext\n };\n\n //Create default context.\n req({});\n\n //Exports some context-sensitive methods on global require.\n each([\n 'toUrl',\n 'undef',\n 'defined',\n 'specified'\n ], function (prop) {\n //Reference from contexts instead of early binding to default context,\n //so that during builds, the latest instance of the default context\n //with its config gets used.\n req[prop] = function () {\n var ctx = contexts[defContextName];\n return ctx.require[prop].apply(ctx, arguments);\n };\n });\n\n if (isBrowser) {\n head = s.head = document.getElementsByTagName('head')[0];\n //If BASE tag is in play, using appendChild is a problem for IE6.\n //When that browser dies, this can be removed. Details in this jQuery bug:\n //http://dev.jquery.com/ticket/2709\n baseElement = document.getElementsByTagName('base')[0];\n if (baseElement) {\n head = s.head = baseElement.parentNode;\n }\n }\n\n /**\n * Any errors that require explicitly generates will be passed to this\n * function. Intercept/override it if you want custom error handling.\n * @param {Error} err the error object.\n */\n req.onError = defaultOnError;\n\n /**\n * Creates the node for the load command. Only used in browser envs.\n */\n req.createNode = function (config, moduleName, url) {\n var node = config.xhtml ?\n document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') :\n document.createElement('script');\n node.type = config.scriptType || 'text/javascript';\n node.charset = 'utf-8';\n node.async = true;\n return node;\n };\n\n /**\n * Does the request to load a module for the browser case.\n * Make this a separate function to allow other environments\n * to override it.\n *\n * @param {Object} context the require context to find state.\n * @param {String} moduleName the name of the module.\n * @param {Object} url the URL to the module.\n */\n req.load = function (context, moduleName, url) {\n var config = (context && context.config) || {},\n node;\n if (isBrowser) {\n //In the browser so use a script tag\n node = req.createNode(config, moduleName, url);\n\n node.setAttribute('data-requirecontext', context.contextName);\n node.setAttribute('data-requiremodule', moduleName);\n\n //Set up load listener. Test attachEvent first because IE9 has\n //a subtle issue in its addEventListener and script onload firings\n //that do not match the behavior of all other browsers with\n //addEventListener support, which fire the onload event for a\n //script right after the script execution. See:\n //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution\n //UNFORTUNATELY Opera implements attachEvent but does not follow the script\n //script execution mode.\n if (node.attachEvent &&\n //Check if node.attachEvent is artificially added by custom script or\n //natively supported by browser\n //read https://github.com/requirejs/requirejs/issues/187\n //if we can NOT find [native code] then it must NOT natively supported.\n //in IE8, node.attachEvent does not have toString()\n //Note the test for \"[native code\" with no closing brace, see:\n //https://github.com/requirejs/requirejs/issues/273\n !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) &&\n !isOpera) {\n //Probably IE. IE (at least 6-8) do not fire\n //script onload right after executing the script, so\n //we cannot tie the anonymous define call to a name.\n //However, IE reports the script as being in 'interactive'\n //readyState at the time of the define call.\n useInteractive = true;\n\n node.attachEvent('onreadystatechange', context.onScriptLoad);\n //It would be great to add an error handler here to catch\n //404s in IE9+. However, onreadystatechange will fire before\n //the error handler, so that does not help. If addEventListener\n //is used, then IE will fire error before load, but we cannot\n //use that pathway given the connect.microsoft.com issue\n //mentioned above about not doing the 'script execute,\n //then fire the script load event listener before execute\n //next script' that other browsers do.\n //Best hope: IE10 fixes the issues,\n //and then destroys all installs of IE 6-9.\n //node.attachEvent('onerror', context.onScriptError);\n } else {\n node.addEventListener('load', context.onScriptLoad, false);\n node.addEventListener('error', context.onScriptError, false);\n }\n node.src = url;\n\n //Calling onNodeCreated after all properties on the node have been\n //set, but before it is placed in the DOM.\n if (config.onNodeCreated) {\n config.onNodeCreated(node, config, moduleName, url);\n }\n\n //For some cache cases in IE 6-8, the script executes before the end\n //of the appendChild execution, so to tie an anonymous define\n //call to the module name (which is stored on the node), hold on\n //to a reference to this node, but clear after the DOM insertion.\n currentlyAddingScript = node;\n if (baseElement) {\n head.insertBefore(node, baseElement);\n } else {\n head.appendChild(node);\n }\n currentlyAddingScript = null;\n\n return node;\n } else if (isWebWorker) {\n try {\n //In a web worker, use importScripts. This is not a very\n //efficient use of importScripts, importScripts will block until\n //its script is downloaded and evaluated. However, if web workers\n //are in play, the expectation is that a build has been done so\n //that only one script needs to be loaded anyway. This may need\n //to be reevaluated if other use cases become common.\n\n // Post a task to the event loop to work around a bug in WebKit\n // where the worker gets garbage-collected after calling\n // importScripts(): https://webkit.org/b/153317\n setTimeout(function() {}, 0);\n importScripts(url);\n\n //Account for anonymous modules\n context.completeLoad(moduleName);\n } catch (e) {\n context.onError(makeError('importscripts',\n 'importScripts failed for ' +\n moduleName + ' at ' + url,\n e,\n [moduleName]));\n }\n }\n };\n\n function getInteractiveScript() {\n if (interactiveScript && interactiveScript.readyState === 'interactive') {\n return interactiveScript;\n }\n\n eachReverse(scripts(), function (script) {\n if (script.readyState === 'interactive') {\n return (interactiveScript = script);\n }\n });\n return interactiveScript;\n }\n\n //Look for a data-main script attribute, which could also adjust the baseUrl.\n if (isBrowser && !cfg.skipDataMain) {\n //Figure out baseUrl. Get it from the script tag with require.js in it.\n eachReverse(scripts(), function (script) {\n //Set the 'head' where we can append children by\n //using the script's parent.\n if (!head) {\n head = script.parentNode;\n }\n\n //Look for a data-main attribute to set main script for the page\n //to load. If it is there, the path to data main becomes the\n //baseUrl, if it is not already set.\n dataMain = script.getAttribute('data-main');\n if (dataMain) {\n //Preserve dataMain in case it is a path (i.e. contains '?')\n mainScript = dataMain;\n\n //Set final baseUrl if there is not already an explicit one,\n //but only do so if the data-main value is not a loader plugin\n //module ID.\n if (!cfg.baseUrl && mainScript.indexOf('!') === -1) {\n //Pull off the directory of data-main for use as the\n //baseUrl.\n src = mainScript.split('/');\n mainScript = src.pop();\n subPath = src.length ? src.join('/') + '/' : './';\n\n cfg.baseUrl = subPath;\n }\n\n //Strip off any trailing .js since mainScript is now\n //like a module name.\n mainScript = mainScript.replace(jsSuffixRegExp, '');\n\n //If mainScript is still a path, fall back to dataMain\n if (req.jsExtRegExp.test(mainScript)) {\n mainScript = dataMain;\n }\n\n //Put the data-main script in the files to load.\n cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript];\n\n return true;\n }\n });\n }\n\n /**\n * The function that handles definitions of modules. Differs from\n * require() in that a string for the module should be the first argument,\n * and the function to execute after dependencies are loaded should\n * return a value to define the module corresponding to the first argument's\n * name.\n */\n define = function (name, deps, callback) {\n var node, context;\n\n //Allow for anonymous modules\n if (typeof name !== 'string') {\n //Adjust args appropriately\n callback = deps;\n deps = name;\n name = null;\n }\n\n //This module may not have dependencies\n if (!isArray(deps)) {\n callback = deps;\n deps = null;\n }\n\n //If no name, and callback is a function, then figure out if it a\n //CommonJS thing with dependencies.\n if (!deps && isFunction(callback)) {\n deps = [];\n //Remove comments from the callback string,\n //look for require calls, and pull them into the dependencies,\n //but only if there are function args.\n if (callback.length) {\n callback\n .toString()\n .replace(commentRegExp, commentReplace)\n .replace(cjsRequireRegExp, function (match, dep) {\n deps.push(dep);\n });\n\n //May be a CommonJS thing even without require calls, but still\n //could use exports, and module. Avoid doing exports and module\n //work though if it just needs require.\n //REQUIRES the function to expect the CommonJS variables in the\n //order listed below.\n deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps);\n }\n }\n\n //If in IE 6-8 and hit an anonymous define() call, do the interactive\n //work.\n if (useInteractive) {\n node = currentlyAddingScript || getInteractiveScript();\n if (node) {\n if (!name) {\n name = node.getAttribute('data-requiremodule');\n }\n context = contexts[node.getAttribute('data-requirecontext')];\n }\n }\n\n //Always save off evaluating the def call until the script onload handler.\n //This allows multiple modules to be in a file without prematurely\n //tracing dependencies, and allows for anonymous module support,\n //where the module name is not known until the script onload event\n //occurs. If no context, use the global queue, and get it processed\n //in the onscript load callback.\n if (context) {\n context.defQueue.push([name, deps, callback]);\n context.defQueueMap[name] = true;\n } else {\n globalDefQueue.push([name, deps, callback]);\n }\n };\n\n define.amd = {\n jQuery: true\n };\n\n /**\n * Executes the text. Normally just uses eval, but can be modified\n * to use a better, environment-specific call. Only used for transpiling\n * loader plugins, not for plain JS modules.\n * @param {String} text the text to execute/evaluate.\n */\n req.exec = function (text) {\n /*jslint evil: true */\n return eval(text);\n };\n\n //Set up with config info.\n req(cfg);\n}(this, (typeof setTimeout === 'undefined' ? undefined : setTimeout)));\n\r\n_aureliaConfigureModuleLoader();\r\ndefine('text',{});\r\ndefine('aurelia-binding',['exports', 'aurelia-logging', 'aurelia-pal', 'aurelia-task-queue', 'aurelia-metadata'], function (exports, _aureliaLogging, _aureliaPal, _aureliaTaskQueue, _aureliaMetadata) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getSetObserver = exports.BindingEngine = exports.NameExpression = exports.Listener = exports.ListenerExpression = exports.BindingBehaviorResource = exports.ValueConverterResource = exports.Call = exports.CallExpression = exports.Binding = exports.BindingExpression = exports.ObjectObservationAdapter = exports.ObserverLocator = exports.SVGAnalyzer = exports.presentationAttributes = exports.presentationElements = exports.elements = exports.ComputedExpression = exports.ClassObserver = exports.SelectValueObserver = exports.CheckedObserver = exports.ValueAttributeObserver = exports.StyleObserver = exports.DataAttributeObserver = exports.dataAttributeAccessor = exports.XLinkAttributeObserver = exports.SetterObserver = exports.PrimitiveObserver = exports.propertyAccessor = exports.DirtyCheckProperty = exports.DirtyChecker = exports.EventManager = exports.delegationStrategy = exports.getMapObserver = exports.ParserImplementation = exports.Parser = exports.Scanner = exports.Lexer = exports.Token = exports.bindingMode = exports.ExpressionCloner = exports.Unparser = exports.LiteralObject = exports.LiteralArray = exports.LiteralString = exports.LiteralPrimitive = exports.PrefixNot = exports.Binary = exports.CallFunction = exports.CallMember = exports.CallScope = exports.AccessKeyed = exports.AccessMember = exports.AccessScope = exports.AccessThis = exports.Conditional = exports.Assign = exports.ValueConverter = exports.BindingBehavior = exports.Chain = exports.Expression = exports.getArrayObserver = exports.CollectionLengthObserver = exports.ModifyCollectionObserver = exports.ExpressionObserver = exports.sourceContext = undefined;\n exports.camelCase = camelCase;\n exports.createOverrideContext = createOverrideContext;\n exports.getContextFor = getContextFor;\n exports.createScopeForTest = createScopeForTest;\n exports.connectable = connectable;\n exports.enqueueBindingConnect = enqueueBindingConnect;\n exports.subscriberCollection = subscriberCollection;\n exports.calcSplices = calcSplices;\n exports.mergeSplice = mergeSplice;\n exports.projectArraySplices = projectArraySplices;\n exports.getChangeRecords = getChangeRecords;\n exports.cloneExpression = cloneExpression;\n exports.hasDeclaredDependencies = hasDeclaredDependencies;\n exports.declarePropertyDependencies = declarePropertyDependencies;\n exports.computedFrom = computedFrom;\n exports.createComputedObserver = createComputedObserver;\n exports.valueConverter = valueConverter;\n exports.bindingBehavior = bindingBehavior;\n exports.observable = observable;\n\n var LogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n \n\n var _dec, _dec2, _class, _dec3, _class2, _dec4, _class3, _dec5, _class5, _dec6, _class7, _dec7, _class8, _dec8, _class9, _dec9, _class10, _class12, _temp, _dec10, _class13, _class14, _temp2;\n\n var map = Object.create(null);\n\n function camelCase(name) {\n if (name in map) {\n return map[name];\n }\n var result = name.charAt(0).toLowerCase() + name.slice(1).replace(/[_.-](\\w|$)/g, function (_, x) {\n return x.toUpperCase();\n });\n map[name] = result;\n return result;\n }\n\n function createOverrideContext(bindingContext, parentOverrideContext) {\n return {\n bindingContext: bindingContext,\n parentOverrideContext: parentOverrideContext || null\n };\n }\n\n function getContextFor(name, scope, ancestor) {\n var oc = scope.overrideContext;\n\n if (ancestor) {\n while (ancestor && oc) {\n ancestor--;\n oc = oc.parentOverrideContext;\n }\n if (ancestor || !oc) {\n return undefined;\n }\n return name in oc ? oc : oc.bindingContext;\n }\n\n while (oc && !(name in oc) && !(oc.bindingContext && name in oc.bindingContext)) {\n oc = oc.parentOverrideContext;\n }\n if (oc) {\n return name in oc ? oc : oc.bindingContext;\n }\n\n return scope.bindingContext || scope.overrideContext;\n }\n\n function createScopeForTest(bindingContext, parentBindingContext) {\n if (parentBindingContext) {\n return {\n bindingContext: bindingContext,\n overrideContext: createOverrideContext(bindingContext, createOverrideContext(parentBindingContext))\n };\n }\n return {\n bindingContext: bindingContext,\n overrideContext: createOverrideContext(bindingContext)\n };\n }\n\n var sourceContext = exports.sourceContext = 'Binding:source';\n var slotNames = [];\n var versionSlotNames = [];\n\n for (var i = 0; i < 100; i++) {\n slotNames.push('_observer' + i);\n versionSlotNames.push('_observerVersion' + i);\n }\n\n function addObserver(observer) {\n var observerSlots = this._observerSlots === undefined ? 0 : this._observerSlots;\n var i = observerSlots;\n while (i-- && this[slotNames[i]] !== observer) {}\n\n if (i === -1) {\n i = 0;\n while (this[slotNames[i]]) {\n i++;\n }\n this[slotNames[i]] = observer;\n observer.subscribe(sourceContext, this);\n\n if (i === observerSlots) {\n this._observerSlots = i + 1;\n }\n }\n\n if (this._version === undefined) {\n this._version = 0;\n }\n this[versionSlotNames[i]] = this._version;\n }\n\n function observeProperty(obj, propertyName) {\n var observer = this.observerLocator.getObserver(obj, propertyName);\n addObserver.call(this, observer);\n }\n\n function observeArray(array) {\n var observer = this.observerLocator.getArrayObserver(array);\n addObserver.call(this, observer);\n }\n\n function unobserve(all) {\n var i = this._observerSlots;\n while (i--) {\n if (all || this[versionSlotNames[i]] !== this._version) {\n var observer = this[slotNames[i]];\n this[slotNames[i]] = null;\n if (observer) {\n observer.unsubscribe(sourceContext, this);\n }\n }\n }\n }\n\n function connectable() {\n return function (target) {\n target.prototype.observeProperty = observeProperty;\n target.prototype.observeArray = observeArray;\n target.prototype.unobserve = unobserve;\n target.prototype.addObserver = addObserver;\n };\n }\n\n var queue = [];\n var queued = {};\n var nextId = 0;\n var minimumImmediate = 100;\n var frameBudget = 15;\n\n var isFlushRequested = false;\n var immediate = 0;\n\n function flush(animationFrameStart) {\n var length = queue.length;\n var i = 0;\n while (i < length) {\n var binding = queue[i];\n queued[binding.__connectQueueId] = false;\n binding.connect(true);\n i++;\n\n if (i % 100 === 0 && _aureliaPal.PLATFORM.performance.now() - animationFrameStart > frameBudget) {\n break;\n }\n }\n queue.splice(0, i);\n\n if (queue.length) {\n _aureliaPal.PLATFORM.requestAnimationFrame(flush);\n } else {\n isFlushRequested = false;\n immediate = 0;\n }\n }\n\n function enqueueBindingConnect(binding) {\n if (immediate < minimumImmediate) {\n immediate++;\n binding.connect(false);\n } else {\n var id = binding.__connectQueueId;\n if (id === undefined) {\n id = nextId;\n nextId++;\n binding.__connectQueueId = id;\n }\n\n if (!queued[id]) {\n queue.push(binding);\n queued[id] = true;\n }\n }\n if (!isFlushRequested) {\n isFlushRequested = true;\n _aureliaPal.PLATFORM.requestAnimationFrame(flush);\n }\n }\n\n function addSubscriber(context, callable) {\n if (this.hasSubscriber(context, callable)) {\n return false;\n }\n if (!this._context0) {\n this._context0 = context;\n this._callable0 = callable;\n return true;\n }\n if (!this._context1) {\n this._context1 = context;\n this._callable1 = callable;\n return true;\n }\n if (!this._context2) {\n this._context2 = context;\n this._callable2 = callable;\n return true;\n }\n if (!this._contextsRest) {\n this._contextsRest = [context];\n this._callablesRest = [callable];\n return true;\n }\n this._contextsRest.push(context);\n this._callablesRest.push(callable);\n return true;\n }\n\n function removeSubscriber(context, callable) {\n if (this._context0 === context && this._callable0 === callable) {\n this._context0 = null;\n this._callable0 = null;\n return true;\n }\n if (this._context1 === context && this._callable1 === callable) {\n this._context1 = null;\n this._callable1 = null;\n return true;\n }\n if (this._context2 === context && this._callable2 === callable) {\n this._context2 = null;\n this._callable2 = null;\n return true;\n }\n var rest = this._contextsRest;\n var index = void 0;\n if (!rest || !rest.length || (index = rest.indexOf(context)) === -1 || this._callablesRest[index] !== callable) {\n return false;\n }\n rest.splice(index, 1);\n this._callablesRest.splice(index, 1);\n return true;\n }\n\n var arrayPool1 = [];\n var arrayPool2 = [];\n var poolUtilization = [];\n\n function callSubscribers(newValue, oldValue) {\n var context0 = this._context0;\n var callable0 = this._callable0;\n var context1 = this._context1;\n var callable1 = this._callable1;\n var context2 = this._context2;\n var callable2 = this._callable2;\n var length = this._contextsRest ? this._contextsRest.length : 0;\n var contextsRest = void 0;\n var callablesRest = void 0;\n var poolIndex = void 0;\n var i = void 0;\n if (length) {\n poolIndex = poolUtilization.length;\n while (poolIndex-- && poolUtilization[poolIndex]) {}\n if (poolIndex < 0) {\n poolIndex = poolUtilization.length;\n contextsRest = [];\n callablesRest = [];\n poolUtilization.push(true);\n arrayPool1.push(contextsRest);\n arrayPool2.push(callablesRest);\n } else {\n poolUtilization[poolIndex] = true;\n contextsRest = arrayPool1[poolIndex];\n callablesRest = arrayPool2[poolIndex];\n }\n\n i = length;\n while (i--) {\n contextsRest[i] = this._contextsRest[i];\n callablesRest[i] = this._callablesRest[i];\n }\n }\n\n if (context0) {\n if (callable0) {\n callable0.call(context0, newValue, oldValue);\n } else {\n context0(newValue, oldValue);\n }\n }\n if (context1) {\n if (callable1) {\n callable1.call(context1, newValue, oldValue);\n } else {\n context1(newValue, oldValue);\n }\n }\n if (context2) {\n if (callable2) {\n callable2.call(context2, newValue, oldValue);\n } else {\n context2(newValue, oldValue);\n }\n }\n if (length) {\n for (i = 0; i < length; i++) {\n var callable = callablesRest[i];\n var context = contextsRest[i];\n if (callable) {\n callable.call(context, newValue, oldValue);\n } else {\n context(newValue, oldValue);\n }\n contextsRest[i] = null;\n callablesRest[i] = null;\n }\n poolUtilization[poolIndex] = false;\n }\n }\n\n function hasSubscribers() {\n return !!(this._context0 || this._context1 || this._context2 || this._contextsRest && this._contextsRest.length);\n }\n\n function hasSubscriber(context, callable) {\n var has = this._context0 === context && this._callable0 === callable || this._context1 === context && this._callable1 === callable || this._context2 === context && this._callable2 === callable;\n if (has) {\n return true;\n }\n var index = void 0;\n var contexts = this._contextsRest;\n if (!contexts || (index = contexts.length) === 0) {\n return false;\n }\n var callables = this._callablesRest;\n while (index--) {\n if (contexts[index] === context && callables[index] === callable) {\n return true;\n }\n }\n return false;\n }\n\n function subscriberCollection() {\n return function (target) {\n target.prototype.addSubscriber = addSubscriber;\n target.prototype.removeSubscriber = removeSubscriber;\n target.prototype.callSubscribers = callSubscribers;\n target.prototype.hasSubscribers = hasSubscribers;\n target.prototype.hasSubscriber = hasSubscriber;\n };\n }\n\n var ExpressionObserver = exports.ExpressionObserver = (_dec = connectable(), _dec2 = subscriberCollection(), _dec(_class = _dec2(_class = function () {\n function ExpressionObserver(scope, expression, observerLocator, lookupFunctions) {\n \n\n this.scope = scope;\n this.expression = expression;\n this.observerLocator = observerLocator;\n this.lookupFunctions = lookupFunctions;\n }\n\n ExpressionObserver.prototype.getValue = function getValue() {\n return this.expression.evaluate(this.scope, this.lookupFunctions);\n };\n\n ExpressionObserver.prototype.setValue = function setValue(newValue) {\n this.expression.assign(this.scope, newValue);\n };\n\n ExpressionObserver.prototype.subscribe = function subscribe(context, callable) {\n var _this = this;\n\n if (!this.hasSubscribers()) {\n this.oldValue = this.expression.evaluate(this.scope, this.lookupFunctions);\n this.expression.connect(this, this.scope);\n }\n this.addSubscriber(context, callable);\n if (arguments.length === 1 && context instanceof Function) {\n return {\n dispose: function dispose() {\n _this.unsubscribe(context, callable);\n }\n };\n }\n };\n\n ExpressionObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.unobserve(true);\n this.oldValue = undefined;\n }\n };\n\n ExpressionObserver.prototype.call = function call() {\n var newValue = this.expression.evaluate(this.scope, this.lookupFunctions);\n var oldValue = this.oldValue;\n if (newValue !== oldValue) {\n this.oldValue = newValue;\n this.callSubscribers(newValue, oldValue);\n }\n this._version++;\n this.expression.connect(this, this.scope);\n this.unobserve(false);\n };\n\n return ExpressionObserver;\n }()) || _class) || _class);\n\n\n function isIndex(s) {\n return +s === s >>> 0;\n }\n\n function toNumber(s) {\n return +s;\n }\n\n function newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDIT_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DELETE = 3;\n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n calcEditDistances: function calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n var rowCount = oldEnd - oldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n var distances = new Array(rowCount);\n var north = void 0;\n var west = void 0;\n\n for (var _i = 0; _i < rowCount; ++_i) {\n distances[_i] = new Array(columnCount);\n distances[_i][0] = _i;\n }\n\n for (var j = 0; j < columnCount; ++j) {\n distances[0][j] = j;\n }\n\n for (var _i2 = 1; _i2 < rowCount; ++_i2) {\n for (var _j = 1; _j < columnCount; ++_j) {\n if (this.equals(current[currentStart + _j - 1], old[oldStart + _i2 - 1])) {\n distances[_i2][_j] = distances[_i2 - 1][_j - 1];\n } else {\n north = distances[_i2 - 1][_j] + 1;\n west = distances[_i2][_j - 1] + 1;\n distances[_i2][_j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n },\n\n spliceOperationsFromEditDistances: function spliceOperationsFromEditDistances(distances) {\n var i = distances.length - 1;\n var j = distances[0].length - 1;\n var current = distances[i][j];\n var edits = [];\n while (i > 0 || j > 0) {\n if (i === 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j === 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n var northWest = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n var north = distances[i][j - 1];\n\n var min = void 0;\n if (west < north) {\n min = west < northWest ? west : northWest;\n } else {\n min = north < northWest ? north : northWest;\n }\n\n if (min === northWest) {\n if (northWest === current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min === west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n },\n\n calcSplices: function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCount = 0;\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart === 0 && oldStart === 0) {\n prefixCount = this.sharedPrefix(current, old, minLength);\n }\n\n if (currentEnd === current.length && oldEnd === old.length) {\n suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);\n }\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart === 0 && oldEnd - oldStart === 0) {\n return [];\n }\n\n if (currentStart === currentEnd) {\n var _splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd) {\n _splice.removed.push(old[oldStart++]);\n }\n\n return [_splice];\n } else if (oldStart === oldEnd) {\n return [newSplice(currentStart, [], currentEnd - currentStart)];\n }\n\n var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd));\n\n var splice = undefined;\n var splices = [];\n var index = currentStart;\n var oldIndex = oldStart;\n for (var _i3 = 0; _i3 < ops.length; ++_i3) {\n switch (ops[_i3]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice) {\n splice = newSplice(index, [], 0);\n }\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice) {\n splice = newSplice(index, [], 0);\n }\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice) {\n splice = newSplice(index, [], 0);\n }\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n },\n\n sharedPrefix: function sharedPrefix(current, old, searchLength) {\n for (var _i4 = 0; _i4 < searchLength; ++_i4) {\n if (!this.equals(current[_i4], old[_i4])) {\n return _i4;\n }\n }\n\n return searchLength;\n },\n\n sharedSuffix: function sharedSuffix(current, old, searchLength) {\n var index1 = current.length;\n var index2 = old.length;\n var count = 0;\n while (count < searchLength && this.equals(current[--index1], old[--index2])) {\n count++;\n }\n\n return count;\n },\n\n calculateSplices: function calculateSplices(current, previous) {\n return this.calcSplices(current, 0, current.length, previous, 0, previous.length);\n },\n\n equals: function equals(currentValue, previousValue) {\n return currentValue === previousValue;\n }\n };\n\n var arraySplice = new ArraySplice();\n\n function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n return arraySplice.calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd);\n }\n\n function intersect(start1, end1, start2, end2) {\n if (end1 < start2 || end2 < start1) {\n return -1;\n }\n\n if (end1 === start2 || end2 === start1) {\n return 0;\n }\n\n if (start1 < start2) {\n if (end1 < end2) {\n return end1 - start2;\n }\n\n return end2 - start2;\n }\n\n if (end2 < end1) {\n return end2 - start1;\n }\n\n return end1 - start1;\n }\n\n function mergeSplice(splices, index, removed, addedCount) {\n var splice = newSplice(index, removed, addedCount);\n\n var inserted = false;\n var insertionOffset = 0;\n\n for (var _i5 = 0; _i5 < splices.length; _i5++) {\n var current = splices[_i5];\n current.index += insertionOffset;\n\n if (inserted) {\n continue;\n }\n\n var intersectCount = intersect(splice.index, splice.index + splice.removed.length, current.index, current.index + current.addedCount);\n\n if (intersectCount >= 0) {\n\n splices.splice(_i5, 1);\n _i5--;\n\n insertionOffset -= current.addedCount - current.removed.length;\n\n splice.addedCount += current.addedCount - intersectCount;\n var deleteCount = splice.removed.length + current.removed.length - intersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n inserted = true;\n } else {\n var currentRemoved = current.removed;\n\n if (splice.index < current.index) {\n var prepend = splice.removed.slice(0, current.index - splice.index);\n Array.prototype.push.apply(prepend, currentRemoved);\n currentRemoved = prepend;\n }\n\n if (splice.index + splice.removed.length > current.index + current.addedCount) {\n var append = splice.removed.slice(current.index + current.addedCount - splice.index);\n Array.prototype.push.apply(currentRemoved, append);\n }\n\n splice.removed = currentRemoved;\n if (current.index < splice.index) {\n splice.index = current.index;\n }\n }\n } else if (splice.index < current.index) {\n\n inserted = true;\n\n splices.splice(_i5, 0, splice);\n _i5++;\n\n var offset = splice.addedCount - splice.removed.length;\n current.index += offset;\n insertionOffset += offset;\n }\n }\n\n if (!inserted) {\n splices.push(splice);\n }\n }\n\n function createInitialSplices(array, changeRecords) {\n var splices = [];\n\n for (var _i6 = 0; _i6 < changeRecords.length; _i6++) {\n var record = changeRecords[_i6];\n switch (record.type) {\n case 'splice':\n mergeSplice(splices, record.index, record.removed.slice(), record.addedCount);\n break;\n case 'add':\n case 'update':\n case 'delete':\n if (!isIndex(record.name)) {\n continue;\n }\n\n var index = toNumber(record.name);\n if (index < 0) {\n continue;\n }\n\n mergeSplice(splices, index, [record.oldValue], record.type === 'delete' ? 0 : 1);\n break;\n default:\n console.error('Unexpected record type: ' + JSON.stringify(record));\n break;\n }\n }\n\n return splices;\n }\n\n function projectArraySplices(array, changeRecords) {\n var splices = [];\n\n createInitialSplices(array, changeRecords).forEach(function (splice) {\n if (splice.addedCount === 1 && splice.removed.length === 1) {\n if (splice.removed[0] !== array[splice.index]) {\n splices.push(splice);\n }\n\n return;\n }\n\n splices = splices.concat(calcSplices(array, splice.index, splice.index + splice.addedCount, splice.removed, 0, splice.removed.length));\n });\n\n return splices;\n }\n\n function newRecord(type, object, key, oldValue) {\n return {\n type: type,\n object: object,\n key: key,\n oldValue: oldValue\n };\n }\n\n function getChangeRecords(map) {\n var entries = new Array(map.size);\n var keys = map.keys();\n var i = 0;\n var item = void 0;\n\n while (item = keys.next()) {\n if (item.done) {\n break;\n }\n\n entries[i] = newRecord('added', map, item.value);\n i++;\n }\n\n return entries;\n }\n\n var ModifyCollectionObserver = exports.ModifyCollectionObserver = (_dec3 = subscriberCollection(), _dec3(_class2 = function () {\n function ModifyCollectionObserver(taskQueue, collection) {\n \n\n this.taskQueue = taskQueue;\n this.queued = false;\n this.changeRecords = null;\n this.oldCollection = null;\n this.collection = collection;\n this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length';\n }\n\n ModifyCollectionObserver.prototype.subscribe = function subscribe(context, callable) {\n this.addSubscriber(context, callable);\n };\n\n ModifyCollectionObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n ModifyCollectionObserver.prototype.addChangeRecord = function addChangeRecord(changeRecord) {\n if (!this.hasSubscribers() && !this.lengthObserver) {\n return;\n }\n\n if (changeRecord.type === 'splice') {\n var index = changeRecord.index;\n var arrayLength = changeRecord.object.length;\n if (index > arrayLength) {\n index = arrayLength - changeRecord.addedCount;\n } else if (index < 0) {\n index = arrayLength + changeRecord.removed.length + index - changeRecord.addedCount;\n }\n if (index < 0) {\n index = 0;\n }\n changeRecord.index = index;\n }\n\n if (this.changeRecords === null) {\n this.changeRecords = [changeRecord];\n } else {\n this.changeRecords.push(changeRecord);\n }\n\n if (!this.queued) {\n this.queued = true;\n this.taskQueue.queueMicroTask(this);\n }\n };\n\n ModifyCollectionObserver.prototype.flushChangeRecords = function flushChangeRecords() {\n if (this.changeRecords && this.changeRecords.length || this.oldCollection) {\n this.call();\n }\n };\n\n ModifyCollectionObserver.prototype.reset = function reset(oldCollection) {\n this.oldCollection = oldCollection;\n\n if (this.hasSubscribers() && !this.queued) {\n this.queued = true;\n this.taskQueue.queueMicroTask(this);\n }\n };\n\n ModifyCollectionObserver.prototype.getLengthObserver = function getLengthObserver() {\n return this.lengthObserver || (this.lengthObserver = new CollectionLengthObserver(this.collection));\n };\n\n ModifyCollectionObserver.prototype.call = function call() {\n var changeRecords = this.changeRecords;\n var oldCollection = this.oldCollection;\n var records = void 0;\n\n this.queued = false;\n this.changeRecords = [];\n this.oldCollection = null;\n\n if (this.hasSubscribers()) {\n if (oldCollection) {\n if (this.collection instanceof Map || this.collection instanceof Set) {\n records = getChangeRecords(oldCollection);\n } else {\n records = calcSplices(this.collection, 0, this.collection.length, oldCollection, 0, oldCollection.length);\n }\n } else {\n if (this.collection instanceof Map || this.collection instanceof Set) {\n records = changeRecords;\n } else {\n records = projectArraySplices(this.collection, changeRecords);\n }\n }\n\n this.callSubscribers(records);\n }\n\n if (this.lengthObserver) {\n this.lengthObserver.call(this.collection[this.lengthPropertyName]);\n }\n };\n\n return ModifyCollectionObserver;\n }()) || _class2);\n var CollectionLengthObserver = exports.CollectionLengthObserver = (_dec4 = subscriberCollection(), _dec4(_class3 = function () {\n function CollectionLengthObserver(collection) {\n \n\n this.collection = collection;\n this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length';\n this.currentValue = collection[this.lengthPropertyName];\n }\n\n CollectionLengthObserver.prototype.getValue = function getValue() {\n return this.collection[this.lengthPropertyName];\n };\n\n CollectionLengthObserver.prototype.setValue = function setValue(newValue) {\n this.collection[this.lengthPropertyName] = newValue;\n };\n\n CollectionLengthObserver.prototype.subscribe = function subscribe(context, callable) {\n this.addSubscriber(context, callable);\n };\n\n CollectionLengthObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n CollectionLengthObserver.prototype.call = function call(newValue) {\n var oldValue = this.currentValue;\n this.callSubscribers(newValue, oldValue);\n this.currentValue = newValue;\n };\n\n return CollectionLengthObserver;\n }()) || _class3);\n\n var pop = Array.prototype.pop;\n var push = Array.prototype.push;\n var reverse = Array.prototype.reverse;\n var shift = Array.prototype.shift;\n var sort = Array.prototype.sort;\n var splice = Array.prototype.splice;\n var unshift = Array.prototype.unshift;\n\n Array.prototype.pop = function () {\n var notEmpty = this.length > 0;\n var methodCallResult = pop.apply(this, arguments);\n if (notEmpty && this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'delete',\n object: this,\n name: this.length,\n oldValue: methodCallResult\n });\n }\n return methodCallResult;\n };\n\n Array.prototype.push = function () {\n var methodCallResult = push.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'splice',\n object: this,\n index: this.length - arguments.length,\n removed: [],\n addedCount: arguments.length\n });\n }\n return methodCallResult;\n };\n\n Array.prototype.reverse = function () {\n var oldArray = void 0;\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.flushChangeRecords();\n oldArray = this.slice();\n }\n var methodCallResult = reverse.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.reset(oldArray);\n }\n return methodCallResult;\n };\n\n Array.prototype.shift = function () {\n var notEmpty = this.length > 0;\n var methodCallResult = shift.apply(this, arguments);\n if (notEmpty && this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'delete',\n object: this,\n name: 0,\n oldValue: methodCallResult\n });\n }\n return methodCallResult;\n };\n\n Array.prototype.sort = function () {\n var oldArray = void 0;\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.flushChangeRecords();\n oldArray = this.slice();\n }\n var methodCallResult = sort.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.reset(oldArray);\n }\n return methodCallResult;\n };\n\n Array.prototype.splice = function () {\n var methodCallResult = splice.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'splice',\n object: this,\n index: +arguments[0],\n removed: methodCallResult,\n addedCount: arguments.length > 2 ? arguments.length - 2 : 0\n });\n }\n return methodCallResult;\n };\n\n Array.prototype.unshift = function () {\n var methodCallResult = unshift.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'splice',\n object: this,\n index: 0,\n removed: [],\n addedCount: arguments.length\n });\n }\n return methodCallResult;\n };\n\n function _getArrayObserver(taskQueue, array) {\n return ModifyArrayObserver.for(taskQueue, array);\n }\n\n exports.getArrayObserver = _getArrayObserver;\n\n var ModifyArrayObserver = function (_ModifyCollectionObse) {\n _inherits(ModifyArrayObserver, _ModifyCollectionObse);\n\n function ModifyArrayObserver(taskQueue, array) {\n \n\n return _possibleConstructorReturn(this, _ModifyCollectionObse.call(this, taskQueue, array));\n }\n\n ModifyArrayObserver.for = function _for(taskQueue, array) {\n if (!('__array_observer__' in array)) {\n Reflect.defineProperty(array, '__array_observer__', {\n value: ModifyArrayObserver.create(taskQueue, array),\n enumerable: false, configurable: false\n });\n }\n return array.__array_observer__;\n };\n\n ModifyArrayObserver.create = function create(taskQueue, array) {\n return new ModifyArrayObserver(taskQueue, array);\n };\n\n return ModifyArrayObserver;\n }(ModifyCollectionObserver);\n\n var Expression = exports.Expression = function () {\n function Expression() {\n \n\n this.isChain = false;\n this.isAssignable = false;\n }\n\n Expression.prototype.evaluate = function evaluate(scope, lookupFunctions, args) {\n throw new Error('Binding expression \"' + this + '\" cannot be evaluated.');\n };\n\n Expression.prototype.assign = function assign(scope, value, lookupFunctions) {\n throw new Error('Binding expression \"' + this + '\" cannot be assigned to.');\n };\n\n Expression.prototype.toString = function toString() {\n return typeof FEATURE_NO_UNPARSER === 'undefined' ? _Unparser.unparse(this) : Function.prototype.toString.call(this);\n };\n\n return Expression;\n }();\n\n var Chain = exports.Chain = function (_Expression) {\n _inherits(Chain, _Expression);\n\n function Chain(expressions) {\n \n\n var _this3 = _possibleConstructorReturn(this, _Expression.call(this));\n\n _this3.expressions = expressions;\n _this3.isChain = true;\n return _this3;\n }\n\n Chain.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var result = void 0;\n var expressions = this.expressions;\n var last = void 0;\n\n for (var _i7 = 0, length = expressions.length; _i7 < length; ++_i7) {\n last = expressions[_i7].evaluate(scope, lookupFunctions);\n\n if (last !== null) {\n result = last;\n }\n }\n\n return result;\n };\n\n Chain.prototype.accept = function accept(visitor) {\n return visitor.visitChain(this);\n };\n\n return Chain;\n }(Expression);\n\n var BindingBehavior = exports.BindingBehavior = function (_Expression2) {\n _inherits(BindingBehavior, _Expression2);\n\n function BindingBehavior(expression, name, args) {\n \n\n var _this4 = _possibleConstructorReturn(this, _Expression2.call(this));\n\n _this4.expression = expression;\n _this4.name = name;\n _this4.args = args;\n return _this4;\n }\n\n BindingBehavior.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.expression.evaluate(scope, lookupFunctions);\n };\n\n BindingBehavior.prototype.assign = function assign(scope, value, lookupFunctions) {\n return this.expression.assign(scope, value, lookupFunctions);\n };\n\n BindingBehavior.prototype.accept = function accept(visitor) {\n return visitor.visitBindingBehavior(this);\n };\n\n BindingBehavior.prototype.connect = function connect(binding, scope) {\n this.expression.connect(binding, scope);\n };\n\n BindingBehavior.prototype.bind = function bind(binding, scope, lookupFunctions) {\n if (this.expression.expression && this.expression.bind) {\n this.expression.bind(binding, scope, lookupFunctions);\n }\n var behavior = lookupFunctions.bindingBehaviors(this.name);\n if (!behavior) {\n throw new Error('No BindingBehavior named \"' + this.name + '\" was found!');\n }\n var behaviorKey = 'behavior-' + this.name;\n if (binding[behaviorKey]) {\n throw new Error('A binding behavior named \"' + this.name + '\" has already been applied to \"' + this.expression + '\"');\n }\n binding[behaviorKey] = behavior;\n behavior.bind.apply(behavior, [binding, scope].concat(evalList(scope, this.args, binding.lookupFunctions)));\n };\n\n BindingBehavior.prototype.unbind = function unbind(binding, scope) {\n var behaviorKey = 'behavior-' + this.name;\n binding[behaviorKey].unbind(binding, scope);\n binding[behaviorKey] = null;\n if (this.expression.expression && this.expression.unbind) {\n this.expression.unbind(binding, scope);\n }\n };\n\n return BindingBehavior;\n }(Expression);\n\n var ValueConverter = exports.ValueConverter = function (_Expression3) {\n _inherits(ValueConverter, _Expression3);\n\n function ValueConverter(expression, name, args, allArgs) {\n \n\n var _this5 = _possibleConstructorReturn(this, _Expression3.call(this));\n\n _this5.expression = expression;\n _this5.name = name;\n _this5.args = args;\n _this5.allArgs = allArgs;\n return _this5;\n }\n\n ValueConverter.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var converter = lookupFunctions.valueConverters(this.name);\n if (!converter) {\n throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n }\n\n if ('toView' in converter) {\n return converter.toView.apply(converter, evalList(scope, this.allArgs, lookupFunctions));\n }\n\n return this.allArgs[0].evaluate(scope, lookupFunctions);\n };\n\n ValueConverter.prototype.assign = function assign(scope, value, lookupFunctions) {\n var converter = lookupFunctions.valueConverters(this.name);\n if (!converter) {\n throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n }\n\n if ('fromView' in converter) {\n value = converter.fromView.apply(converter, [value].concat(evalList(scope, this.args, lookupFunctions)));\n }\n\n return this.allArgs[0].assign(scope, value, lookupFunctions);\n };\n\n ValueConverter.prototype.accept = function accept(visitor) {\n return visitor.visitValueConverter(this);\n };\n\n ValueConverter.prototype.connect = function connect(binding, scope) {\n var expressions = this.allArgs;\n var i = expressions.length;\n while (i--) {\n expressions[i].connect(binding, scope);\n }\n };\n\n return ValueConverter;\n }(Expression);\n\n var Assign = exports.Assign = function (_Expression4) {\n _inherits(Assign, _Expression4);\n\n function Assign(target, value) {\n \n\n var _this6 = _possibleConstructorReturn(this, _Expression4.call(this));\n\n _this6.target = target;\n _this6.value = value;\n _this6.isAssignable = true;\n return _this6;\n }\n\n Assign.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.target.assign(scope, this.value.evaluate(scope, lookupFunctions));\n };\n\n Assign.prototype.accept = function accept(vistor) {\n vistor.visitAssign(this);\n };\n\n Assign.prototype.connect = function connect(binding, scope) {};\n\n Assign.prototype.assign = function assign(scope, value) {\n this.value.assign(scope, value);\n this.target.assign(scope, value);\n };\n\n return Assign;\n }(Expression);\n\n var Conditional = exports.Conditional = function (_Expression5) {\n _inherits(Conditional, _Expression5);\n\n function Conditional(condition, yes, no) {\n \n\n var _this7 = _possibleConstructorReturn(this, _Expression5.call(this));\n\n _this7.condition = condition;\n _this7.yes = yes;\n _this7.no = no;\n return _this7;\n }\n\n Conditional.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return !!this.condition.evaluate(scope, lookupFunctions) ? this.yes.evaluate(scope, lookupFunctions) : this.no.evaluate(scope, lookupFunctions);\n };\n\n Conditional.prototype.accept = function accept(visitor) {\n return visitor.visitConditional(this);\n };\n\n Conditional.prototype.connect = function connect(binding, scope) {\n this.condition.connect(binding, scope);\n if (this.condition.evaluate(scope)) {\n this.yes.connect(binding, scope);\n } else {\n this.no.connect(binding, scope);\n }\n };\n\n return Conditional;\n }(Expression);\n\n var AccessThis = exports.AccessThis = function (_Expression6) {\n _inherits(AccessThis, _Expression6);\n\n function AccessThis(ancestor) {\n \n\n var _this8 = _possibleConstructorReturn(this, _Expression6.call(this));\n\n _this8.ancestor = ancestor;\n return _this8;\n }\n\n AccessThis.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var oc = scope.overrideContext;\n var i = this.ancestor;\n while (i-- && oc) {\n oc = oc.parentOverrideContext;\n }\n return i < 1 && oc ? oc.bindingContext : undefined;\n };\n\n AccessThis.prototype.accept = function accept(visitor) {\n return visitor.visitAccessThis(this);\n };\n\n AccessThis.prototype.connect = function connect(binding, scope) {};\n\n return AccessThis;\n }(Expression);\n\n var AccessScope = exports.AccessScope = function (_Expression7) {\n _inherits(AccessScope, _Expression7);\n\n function AccessScope(name, ancestor) {\n \n\n var _this9 = _possibleConstructorReturn(this, _Expression7.call(this));\n\n _this9.name = name;\n _this9.ancestor = ancestor;\n _this9.isAssignable = true;\n return _this9;\n }\n\n AccessScope.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var context = getContextFor(this.name, scope, this.ancestor);\n return context[this.name];\n };\n\n AccessScope.prototype.assign = function assign(scope, value) {\n var context = getContextFor(this.name, scope, this.ancestor);\n return context ? context[this.name] = value : undefined;\n };\n\n AccessScope.prototype.accept = function accept(visitor) {\n return visitor.visitAccessScope(this);\n };\n\n AccessScope.prototype.connect = function connect(binding, scope) {\n var context = getContextFor(this.name, scope, this.ancestor);\n binding.observeProperty(context, this.name);\n };\n\n return AccessScope;\n }(Expression);\n\n var AccessMember = exports.AccessMember = function (_Expression8) {\n _inherits(AccessMember, _Expression8);\n\n function AccessMember(object, name) {\n \n\n var _this10 = _possibleConstructorReturn(this, _Expression8.call(this));\n\n _this10.object = object;\n _this10.name = name;\n _this10.isAssignable = true;\n return _this10;\n }\n\n AccessMember.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var instance = this.object.evaluate(scope, lookupFunctions);\n return instance === null || instance === undefined ? instance : instance[this.name];\n };\n\n AccessMember.prototype.assign = function assign(scope, value) {\n var instance = this.object.evaluate(scope);\n\n if (instance === null || instance === undefined) {\n instance = {};\n this.object.assign(scope, instance);\n }\n\n instance[this.name] = value;\n return value;\n };\n\n AccessMember.prototype.accept = function accept(visitor) {\n return visitor.visitAccessMember(this);\n };\n\n AccessMember.prototype.connect = function connect(binding, scope) {\n this.object.connect(binding, scope);\n var obj = this.object.evaluate(scope);\n if (obj) {\n binding.observeProperty(obj, this.name);\n }\n };\n\n return AccessMember;\n }(Expression);\n\n var AccessKeyed = exports.AccessKeyed = function (_Expression9) {\n _inherits(AccessKeyed, _Expression9);\n\n function AccessKeyed(object, key) {\n \n\n var _this11 = _possibleConstructorReturn(this, _Expression9.call(this));\n\n _this11.object = object;\n _this11.key = key;\n _this11.isAssignable = true;\n return _this11;\n }\n\n AccessKeyed.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var instance = this.object.evaluate(scope, lookupFunctions);\n var lookup = this.key.evaluate(scope, lookupFunctions);\n return getKeyed(instance, lookup);\n };\n\n AccessKeyed.prototype.assign = function assign(scope, value) {\n var instance = this.object.evaluate(scope);\n var lookup = this.key.evaluate(scope);\n return setKeyed(instance, lookup, value);\n };\n\n AccessKeyed.prototype.accept = function accept(visitor) {\n return visitor.visitAccessKeyed(this);\n };\n\n AccessKeyed.prototype.connect = function connect(binding, scope) {\n this.object.connect(binding, scope);\n var obj = this.object.evaluate(scope);\n if (obj instanceof Object) {\n this.key.connect(binding, scope);\n var key = this.key.evaluate(scope);\n\n if (key !== null && key !== undefined && !(Array.isArray(obj) && typeof key === 'number')) {\n binding.observeProperty(obj, key);\n }\n }\n };\n\n return AccessKeyed;\n }(Expression);\n\n var CallScope = exports.CallScope = function (_Expression10) {\n _inherits(CallScope, _Expression10);\n\n function CallScope(name, args, ancestor) {\n \n\n var _this12 = _possibleConstructorReturn(this, _Expression10.call(this));\n\n _this12.name = name;\n _this12.args = args;\n _this12.ancestor = ancestor;\n return _this12;\n }\n\n CallScope.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var args = evalList(scope, this.args, lookupFunctions);\n var context = getContextFor(this.name, scope, this.ancestor);\n var func = getFunction(context, this.name, mustEvaluate);\n if (func) {\n return func.apply(context, args);\n }\n return undefined;\n };\n\n CallScope.prototype.accept = function accept(visitor) {\n return visitor.visitCallScope(this);\n };\n\n CallScope.prototype.connect = function connect(binding, scope) {\n var args = this.args;\n var i = args.length;\n while (i--) {\n args[i].connect(binding, scope);\n }\n };\n\n return CallScope;\n }(Expression);\n\n var CallMember = exports.CallMember = function (_Expression11) {\n _inherits(CallMember, _Expression11);\n\n function CallMember(object, name, args) {\n \n\n var _this13 = _possibleConstructorReturn(this, _Expression11.call(this));\n\n _this13.object = object;\n _this13.name = name;\n _this13.args = args;\n return _this13;\n }\n\n CallMember.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var instance = this.object.evaluate(scope, lookupFunctions);\n var args = evalList(scope, this.args, lookupFunctions);\n var func = getFunction(instance, this.name, mustEvaluate);\n if (func) {\n return func.apply(instance, args);\n }\n return undefined;\n };\n\n CallMember.prototype.accept = function accept(visitor) {\n return visitor.visitCallMember(this);\n };\n\n CallMember.prototype.connect = function connect(binding, scope) {\n this.object.connect(binding, scope);\n var obj = this.object.evaluate(scope);\n if (getFunction(obj, this.name, false)) {\n var args = this.args;\n var _i8 = args.length;\n while (_i8--) {\n args[_i8].connect(binding, scope);\n }\n }\n };\n\n return CallMember;\n }(Expression);\n\n var CallFunction = exports.CallFunction = function (_Expression12) {\n _inherits(CallFunction, _Expression12);\n\n function CallFunction(func, args) {\n \n\n var _this14 = _possibleConstructorReturn(this, _Expression12.call(this));\n\n _this14.func = func;\n _this14.args = args;\n return _this14;\n }\n\n CallFunction.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var func = this.func.evaluate(scope, lookupFunctions);\n if (typeof func === 'function') {\n return func.apply(null, evalList(scope, this.args, lookupFunctions));\n }\n if (!mustEvaluate && (func === null || func === undefined)) {\n return undefined;\n }\n throw new Error(this.func + ' is not a function');\n };\n\n CallFunction.prototype.accept = function accept(visitor) {\n return visitor.visitCallFunction(this);\n };\n\n CallFunction.prototype.connect = function connect(binding, scope) {\n this.func.connect(binding, scope);\n var func = this.func.evaluate(scope);\n if (typeof func === 'function') {\n var args = this.args;\n var _i9 = args.length;\n while (_i9--) {\n args[_i9].connect(binding, scope);\n }\n }\n };\n\n return CallFunction;\n }(Expression);\n\n var Binary = exports.Binary = function (_Expression13) {\n _inherits(Binary, _Expression13);\n\n function Binary(operation, left, right) {\n \n\n var _this15 = _possibleConstructorReturn(this, _Expression13.call(this));\n\n _this15.operation = operation;\n _this15.left = left;\n _this15.right = right;\n return _this15;\n }\n\n Binary.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var left = this.left.evaluate(scope, lookupFunctions);\n\n switch (this.operation) {\n case '&&':\n return left && this.right.evaluate(scope, lookupFunctions);\n case '||':\n return left || this.right.evaluate(scope, lookupFunctions);\n }\n\n var right = this.right.evaluate(scope, lookupFunctions);\n\n switch (this.operation) {\n case '==':\n return left == right;\n case '===':\n return left === right;\n case '!=':\n return left != right;\n case '!==':\n return left !== right;\n }\n\n if (left === null || right === null || left === undefined || right === undefined) {\n switch (this.operation) {\n case '+':\n if (left !== null && left !== undefined) return left;\n if (right !== null && right !== undefined) return right;\n return 0;\n case '-':\n if (left !== null && left !== undefined) return left;\n if (right !== null && right !== undefined) return 0 - right;\n return 0;\n }\n\n return null;\n }\n\n switch (this.operation) {\n case '+':\n return autoConvertAdd(left, right);\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n case '<':\n return left < right;\n case '>':\n return left > right;\n case '<=':\n return left <= right;\n case '>=':\n return left >= right;\n case '^':\n return left ^ right;\n }\n\n throw new Error('Internal error [' + this.operation + '] not handled');\n };\n\n Binary.prototype.accept = function accept(visitor) {\n return visitor.visitBinary(this);\n };\n\n Binary.prototype.connect = function connect(binding, scope) {\n this.left.connect(binding, scope);\n var left = this.left.evaluate(scope);\n if (this.operation === '&&' && !left || this.operation === '||' && left) {\n return;\n }\n this.right.connect(binding, scope);\n };\n\n return Binary;\n }(Expression);\n\n var PrefixNot = exports.PrefixNot = function (_Expression14) {\n _inherits(PrefixNot, _Expression14);\n\n function PrefixNot(operation, expression) {\n \n\n var _this16 = _possibleConstructorReturn(this, _Expression14.call(this));\n\n _this16.operation = operation;\n _this16.expression = expression;\n return _this16;\n }\n\n PrefixNot.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return !this.expression.evaluate(scope, lookupFunctions);\n };\n\n PrefixNot.prototype.accept = function accept(visitor) {\n return visitor.visitPrefix(this);\n };\n\n PrefixNot.prototype.connect = function connect(binding, scope) {\n this.expression.connect(binding, scope);\n };\n\n return PrefixNot;\n }(Expression);\n\n var LiteralPrimitive = exports.LiteralPrimitive = function (_Expression15) {\n _inherits(LiteralPrimitive, _Expression15);\n\n function LiteralPrimitive(value) {\n \n\n var _this17 = _possibleConstructorReturn(this, _Expression15.call(this));\n\n _this17.value = value;\n return _this17;\n }\n\n LiteralPrimitive.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.value;\n };\n\n LiteralPrimitive.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralPrimitive(this);\n };\n\n LiteralPrimitive.prototype.connect = function connect(binding, scope) {};\n\n return LiteralPrimitive;\n }(Expression);\n\n var LiteralString = exports.LiteralString = function (_Expression16) {\n _inherits(LiteralString, _Expression16);\n\n function LiteralString(value) {\n \n\n var _this18 = _possibleConstructorReturn(this, _Expression16.call(this));\n\n _this18.value = value;\n return _this18;\n }\n\n LiteralString.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.value;\n };\n\n LiteralString.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralString(this);\n };\n\n LiteralString.prototype.connect = function connect(binding, scope) {};\n\n return LiteralString;\n }(Expression);\n\n var LiteralArray = exports.LiteralArray = function (_Expression17) {\n _inherits(LiteralArray, _Expression17);\n\n function LiteralArray(elements) {\n \n\n var _this19 = _possibleConstructorReturn(this, _Expression17.call(this));\n\n _this19.elements = elements;\n return _this19;\n }\n\n LiteralArray.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var elements = this.elements;\n var result = [];\n\n for (var _i10 = 0, length = elements.length; _i10 < length; ++_i10) {\n result[_i10] = elements[_i10].evaluate(scope, lookupFunctions);\n }\n\n return result;\n };\n\n LiteralArray.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralArray(this);\n };\n\n LiteralArray.prototype.connect = function connect(binding, scope) {\n var length = this.elements.length;\n for (var _i11 = 0; _i11 < length; _i11++) {\n this.elements[_i11].connect(binding, scope);\n }\n };\n\n return LiteralArray;\n }(Expression);\n\n var LiteralObject = exports.LiteralObject = function (_Expression18) {\n _inherits(LiteralObject, _Expression18);\n\n function LiteralObject(keys, values) {\n \n\n var _this20 = _possibleConstructorReturn(this, _Expression18.call(this));\n\n _this20.keys = keys;\n _this20.values = values;\n return _this20;\n }\n\n LiteralObject.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var instance = {};\n var keys = this.keys;\n var values = this.values;\n\n for (var _i12 = 0, length = keys.length; _i12 < length; ++_i12) {\n instance[keys[_i12]] = values[_i12].evaluate(scope, lookupFunctions);\n }\n\n return instance;\n };\n\n LiteralObject.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralObject(this);\n };\n\n LiteralObject.prototype.connect = function connect(binding, scope) {\n var length = this.keys.length;\n for (var _i13 = 0; _i13 < length; _i13++) {\n this.values[_i13].connect(binding, scope);\n }\n };\n\n return LiteralObject;\n }(Expression);\n\n function evalList(scope, list, lookupFunctions) {\n var length = list.length;\n var result = [];\n for (var _i14 = 0; _i14 < length; _i14++) {\n result[_i14] = list[_i14].evaluate(scope, lookupFunctions);\n }\n return result;\n }\n\n function autoConvertAdd(a, b) {\n if (a !== null && b !== null) {\n if (typeof a === 'string' && typeof b !== 'string') {\n return a + b.toString();\n }\n\n if (typeof a !== 'string' && typeof b === 'string') {\n return a.toString() + b;\n }\n\n return a + b;\n }\n\n if (a !== null) {\n return a;\n }\n\n if (b !== null) {\n return b;\n }\n\n return 0;\n }\n\n function getFunction(obj, name, mustExist) {\n var func = obj === null || obj === undefined ? null : obj[name];\n if (typeof func === 'function') {\n return func;\n }\n if (!mustExist && (func === null || func === undefined)) {\n return null;\n }\n throw new Error(name + ' is not a function');\n }\n\n function getKeyed(obj, key) {\n if (Array.isArray(obj)) {\n return obj[parseInt(key, 10)];\n } else if (obj) {\n return obj[key];\n } else if (obj === null || obj === undefined) {\n return undefined;\n }\n\n return obj[key];\n }\n\n function setKeyed(obj, key, value) {\n if (Array.isArray(obj)) {\n var index = parseInt(key, 10);\n\n if (obj.length <= index) {\n obj.length = index + 1;\n }\n\n obj[index] = value;\n } else {\n obj[key] = value;\n }\n\n return value;\n }\n\n var _Unparser = null;\n\n exports.Unparser = _Unparser;\n if (typeof FEATURE_NO_UNPARSER === 'undefined') {\n exports.Unparser = _Unparser = function () {\n function Unparser(buffer) {\n \n\n this.buffer = buffer;\n }\n\n Unparser.unparse = function unparse(expression) {\n var buffer = [];\n var visitor = new _Unparser(buffer);\n\n expression.accept(visitor);\n\n return buffer.join('');\n };\n\n Unparser.prototype.write = function write(text) {\n this.buffer.push(text);\n };\n\n Unparser.prototype.writeArgs = function writeArgs(args) {\n this.write('(');\n\n for (var _i15 = 0, length = args.length; _i15 < length; ++_i15) {\n if (_i15 !== 0) {\n this.write(',');\n }\n\n args[_i15].accept(this);\n }\n\n this.write(')');\n };\n\n Unparser.prototype.visitChain = function visitChain(chain) {\n var expressions = chain.expressions;\n\n for (var _i16 = 0, length = expression.length; _i16 < length; ++_i16) {\n if (_i16 !== 0) {\n this.write(';');\n }\n\n expressions[_i16].accept(this);\n }\n };\n\n Unparser.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) {\n var args = behavior.args;\n\n behavior.expression.accept(this);\n this.write('&' + behavior.name);\n\n for (var _i17 = 0, length = args.length; _i17 < length; ++_i17) {\n this.write(':');\n args[_i17].accept(this);\n }\n };\n\n Unparser.prototype.visitValueConverter = function visitValueConverter(converter) {\n var args = converter.args;\n\n converter.expression.accept(this);\n this.write('|' + converter.name);\n\n for (var _i18 = 0, length = args.length; _i18 < length; ++_i18) {\n this.write(':');\n args[_i18].accept(this);\n }\n };\n\n Unparser.prototype.visitAssign = function visitAssign(assign) {\n assign.target.accept(this);\n this.write('=');\n assign.value.accept(this);\n };\n\n Unparser.prototype.visitConditional = function visitConditional(conditional) {\n conditional.condition.accept(this);\n this.write('?');\n conditional.yes.accept(this);\n this.write(':');\n conditional.no.accept(this);\n };\n\n Unparser.prototype.visitAccessThis = function visitAccessThis(access) {\n if (access.ancestor === 0) {\n this.write('$this');\n return;\n }\n this.write('$parent');\n var i = access.ancestor - 1;\n while (i--) {\n this.write('.$parent');\n }\n };\n\n Unparser.prototype.visitAccessScope = function visitAccessScope(access) {\n var i = access.ancestor;\n while (i--) {\n this.write('$parent.');\n }\n this.write(access.name);\n };\n\n Unparser.prototype.visitAccessMember = function visitAccessMember(access) {\n access.object.accept(this);\n this.write('.' + access.name);\n };\n\n Unparser.prototype.visitAccessKeyed = function visitAccessKeyed(access) {\n access.object.accept(this);\n this.write('[');\n access.key.accept(this);\n this.write(']');\n };\n\n Unparser.prototype.visitCallScope = function visitCallScope(call) {\n var i = call.ancestor;\n while (i--) {\n this.write('$parent.');\n }\n this.write(call.name);\n this.writeArgs(call.args);\n };\n\n Unparser.prototype.visitCallFunction = function visitCallFunction(call) {\n call.func.accept(this);\n this.writeArgs(call.args);\n };\n\n Unparser.prototype.visitCallMember = function visitCallMember(call) {\n call.object.accept(this);\n this.write('.' + call.name);\n this.writeArgs(call.args);\n };\n\n Unparser.prototype.visitPrefix = function visitPrefix(prefix) {\n this.write('(' + prefix.operation);\n prefix.expression.accept(this);\n this.write(')');\n };\n\n Unparser.prototype.visitBinary = function visitBinary(binary) {\n binary.left.accept(this);\n this.write(binary.operation);\n binary.right.accept(this);\n };\n\n Unparser.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) {\n this.write('' + literal.value);\n };\n\n Unparser.prototype.visitLiteralArray = function visitLiteralArray(literal) {\n var elements = literal.elements;\n\n this.write('[');\n\n for (var _i19 = 0, length = elements.length; _i19 < length; ++_i19) {\n if (_i19 !== 0) {\n this.write(',');\n }\n\n elements[_i19].accept(this);\n }\n\n this.write(']');\n };\n\n Unparser.prototype.visitLiteralObject = function visitLiteralObject(literal) {\n var keys = literal.keys;\n var values = literal.values;\n\n this.write('{');\n\n for (var _i20 = 0, length = keys.length; _i20 < length; ++_i20) {\n if (_i20 !== 0) {\n this.write(',');\n }\n\n this.write('\\'' + keys[_i20] + '\\':');\n values[_i20].accept(this);\n }\n\n this.write('}');\n };\n\n Unparser.prototype.visitLiteralString = function visitLiteralString(literal) {\n var escaped = literal.value.replace(/'/g, \"\\'\");\n this.write('\\'' + escaped + '\\'');\n };\n\n return Unparser;\n }();\n }\n\n var ExpressionCloner = exports.ExpressionCloner = function () {\n function ExpressionCloner() {\n \n }\n\n ExpressionCloner.prototype.cloneExpressionArray = function cloneExpressionArray(array) {\n var clonedArray = [];\n var i = array.length;\n while (i--) {\n clonedArray[i] = array[i].accept(this);\n }\n return clonedArray;\n };\n\n ExpressionCloner.prototype.visitChain = function visitChain(chain) {\n return new Chain(this.cloneExpressionArray(chain.expressions));\n };\n\n ExpressionCloner.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) {\n return new BindingBehavior(behavior.expression.accept(this), behavior.name, this.cloneExpressionArray(behavior.args));\n };\n\n ExpressionCloner.prototype.visitValueConverter = function visitValueConverter(converter) {\n return new ValueConverter(converter.expression.accept(this), converter.name, this.cloneExpressionArray(converter.args));\n };\n\n ExpressionCloner.prototype.visitAssign = function visitAssign(assign) {\n return new Assign(assign.target.accept(this), assign.value.accept(this));\n };\n\n ExpressionCloner.prototype.visitConditional = function visitConditional(conditional) {\n return new Conditional(conditional.condition.accept(this), conditional.yes.accept(this), conditional.no.accept(this));\n };\n\n ExpressionCloner.prototype.visitAccessThis = function visitAccessThis(access) {\n return new AccessThis(access.ancestor);\n };\n\n ExpressionCloner.prototype.visitAccessScope = function visitAccessScope(access) {\n return new AccessScope(access.name, access.ancestor);\n };\n\n ExpressionCloner.prototype.visitAccessMember = function visitAccessMember(access) {\n return new AccessMember(access.object.accept(this), access.name);\n };\n\n ExpressionCloner.prototype.visitAccessKeyed = function visitAccessKeyed(access) {\n return new AccessKeyed(access.object.accept(this), access.key.accept(this));\n };\n\n ExpressionCloner.prototype.visitCallScope = function visitCallScope(call) {\n return new CallScope(call.name, this.cloneExpressionArray(call.args), call.ancestor);\n };\n\n ExpressionCloner.prototype.visitCallFunction = function visitCallFunction(call) {\n return new CallFunction(call.func.accept(this), this.cloneExpressionArray(call.args));\n };\n\n ExpressionCloner.prototype.visitCallMember = function visitCallMember(call) {\n return new CallMember(call.object.accept(this), call.name, this.cloneExpressionArray(call.args));\n };\n\n ExpressionCloner.prototype.visitPrefix = function visitPrefix(prefix) {\n return new PrefixNot(prefix.operation, prefix.expression.accept(this));\n };\n\n ExpressionCloner.prototype.visitBinary = function visitBinary(binary) {\n return new Binary(binary.operation, binary.left.accept(this), binary.right.accept(this));\n };\n\n ExpressionCloner.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) {\n return new LiteralPrimitive(literal);\n };\n\n ExpressionCloner.prototype.visitLiteralArray = function visitLiteralArray(literal) {\n return new LiteralArray(this.cloneExpressionArray(literal.elements));\n };\n\n ExpressionCloner.prototype.visitLiteralObject = function visitLiteralObject(literal) {\n return new LiteralObject(literal.keys, this.cloneExpressionArray(literal.values));\n };\n\n ExpressionCloner.prototype.visitLiteralString = function visitLiteralString(literal) {\n return new LiteralString(literal.value);\n };\n\n return ExpressionCloner;\n }();\n\n function cloneExpression(expression) {\n var visitor = new ExpressionCloner();\n return expression.accept(visitor);\n }\n\n var bindingMode = exports.bindingMode = {\n oneTime: 0,\n oneWay: 1,\n twoWay: 2\n };\n\n var Token = exports.Token = function () {\n function Token(index, text) {\n \n\n this.index = index;\n this.text = text;\n }\n\n Token.prototype.withOp = function withOp(op) {\n this.opKey = op;\n return this;\n };\n\n Token.prototype.withGetterSetter = function withGetterSetter(key) {\n this.key = key;\n return this;\n };\n\n Token.prototype.withValue = function withValue(value) {\n this.value = value;\n return this;\n };\n\n Token.prototype.toString = function toString() {\n return 'Token(' + this.text + ')';\n };\n\n return Token;\n }();\n\n var Lexer = exports.Lexer = function () {\n function Lexer() {\n \n }\n\n Lexer.prototype.lex = function lex(text) {\n var scanner = new Scanner(text);\n var tokens = [];\n var token = scanner.scanToken();\n\n while (token) {\n tokens.push(token);\n token = scanner.scanToken();\n }\n\n return tokens;\n };\n\n return Lexer;\n }();\n\n var Scanner = exports.Scanner = function () {\n function Scanner(input) {\n \n\n this.input = input;\n this.length = input.length;\n this.peek = 0;\n this.index = -1;\n\n this.advance();\n }\n\n Scanner.prototype.scanToken = function scanToken() {\n while (this.peek <= $SPACE) {\n if (++this.index >= this.length) {\n this.peek = $EOF;\n return null;\n }\n\n this.peek = this.input.charCodeAt(this.index);\n }\n\n if (isIdentifierStart(this.peek)) {\n return this.scanIdentifier();\n }\n\n if (isDigit(this.peek)) {\n return this.scanNumber(this.index);\n }\n\n var start = this.index;\n\n switch (this.peek) {\n case $PERIOD:\n this.advance();\n return isDigit(this.peek) ? this.scanNumber(start) : new Token(start, '.');\n case $LPAREN:\n case $RPAREN:\n case $LBRACE:\n case $RBRACE:\n case $LBRACKET:\n case $RBRACKET:\n case $COMMA:\n case $COLON:\n case $SEMICOLON:\n return this.scanCharacter(start, String.fromCharCode(this.peek));\n case $SQ:\n case $DQ:\n return this.scanString();\n case $PLUS:\n case $MINUS:\n case $STAR:\n case $SLASH:\n case $PERCENT:\n case $CARET:\n case $QUESTION:\n return this.scanOperator(start, String.fromCharCode(this.peek));\n case $LT:\n case $GT:\n case $BANG:\n case $EQ:\n return this.scanComplexOperator(start, $EQ, String.fromCharCode(this.peek), '=');\n case $AMPERSAND:\n return this.scanComplexOperator(start, $AMPERSAND, '&', '&');\n case $BAR:\n return this.scanComplexOperator(start, $BAR, '|', '|');\n case $NBSP:\n while (isWhitespace(this.peek)) {\n this.advance();\n }\n\n return this.scanToken();\n }\n\n var character = String.fromCharCode(this.peek);\n this.error('Unexpected character [' + character + ']');\n return null;\n };\n\n Scanner.prototype.scanCharacter = function scanCharacter(start, text) {\n assert(this.peek === text.charCodeAt(0));\n this.advance();\n return new Token(start, text);\n };\n\n Scanner.prototype.scanOperator = function scanOperator(start, text) {\n assert(this.peek === text.charCodeAt(0));\n assert(OPERATORS.indexOf(text) !== -1);\n this.advance();\n return new Token(start, text).withOp(text);\n };\n\n Scanner.prototype.scanComplexOperator = function scanComplexOperator(start, code, one, two) {\n assert(this.peek === one.charCodeAt(0));\n this.advance();\n\n var text = one;\n\n if (this.peek === code) {\n this.advance();\n text += two;\n }\n\n if (this.peek === code) {\n this.advance();\n text += two;\n }\n\n assert(OPERATORS.indexOf(text) !== -1);\n\n return new Token(start, text).withOp(text);\n };\n\n Scanner.prototype.scanIdentifier = function scanIdentifier() {\n assert(isIdentifierStart(this.peek));\n var start = this.index;\n\n this.advance();\n\n while (isIdentifierPart(this.peek)) {\n this.advance();\n }\n\n var text = this.input.substring(start, this.index);\n var result = new Token(start, text);\n\n if (OPERATORS.indexOf(text) !== -1) {\n result.withOp(text);\n } else {\n result.withGetterSetter(text);\n }\n\n return result;\n };\n\n Scanner.prototype.scanNumber = function scanNumber(start) {\n assert(isDigit(this.peek));\n var simple = this.index === start;\n this.advance();\n\n while (true) {\n if (!isDigit(this.peek)) {\n if (this.peek === $PERIOD) {\n simple = false;\n } else if (isExponentStart(this.peek)) {\n this.advance();\n\n if (isExponentSign(this.peek)) {\n this.advance();\n }\n\n if (!isDigit(this.peek)) {\n this.error('Invalid exponent', -1);\n }\n\n simple = false;\n } else {\n break;\n }\n }\n\n this.advance();\n }\n\n var text = this.input.substring(start, this.index);\n var value = simple ? parseInt(text, 10) : parseFloat(text);\n return new Token(start, text).withValue(value);\n };\n\n Scanner.prototype.scanString = function scanString() {\n assert(this.peek === $SQ || this.peek === $DQ);\n\n var start = this.index;\n var quote = this.peek;\n\n this.advance();\n\n var buffer = void 0;\n var marker = this.index;\n\n while (this.peek !== quote) {\n if (this.peek === $BACKSLASH) {\n if (!buffer) {\n buffer = [];\n }\n\n buffer.push(this.input.substring(marker, this.index));\n this.advance();\n\n var _unescaped = void 0;\n\n if (this.peek === $u) {\n var hex = this.input.substring(this.index + 1, this.index + 5);\n\n if (!/[A-Z0-9]{4}/.test(hex)) {\n this.error('Invalid unicode escape [\\\\u' + hex + ']');\n }\n\n _unescaped = parseInt(hex, 16);\n\n for (var _i21 = 0; _i21 < 5; ++_i21) {\n this.advance();\n }\n } else {\n _unescaped = unescape(this.peek);\n this.advance();\n }\n\n buffer.push(String.fromCharCode(_unescaped));\n marker = this.index;\n } else if (this.peek === $EOF) {\n this.error('Unterminated quote');\n } else {\n this.advance();\n }\n }\n\n var last = this.input.substring(marker, this.index);\n this.advance();\n var text = this.input.substring(start, this.index);\n\n var unescaped = last;\n\n if (buffer !== null && buffer !== undefined) {\n buffer.push(last);\n unescaped = buffer.join('');\n }\n\n return new Token(start, text).withValue(unescaped);\n };\n\n Scanner.prototype.advance = function advance() {\n if (++this.index >= this.length) {\n this.peek = $EOF;\n } else {\n this.peek = this.input.charCodeAt(this.index);\n }\n };\n\n Scanner.prototype.error = function error(message) {\n var offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n\n var position = this.index + offset;\n throw new Error('Lexer Error: ' + message + ' at column ' + position + ' in expression [' + this.input + ']');\n };\n\n return Scanner;\n }();\n\n var OPERATORS = ['undefined', 'null', 'true', 'false', '+', '-', '*', '/', '%', '^', '=', '==', '===', '!=', '!==', '<', '>', '<=', '>=', '&&', '||', '&', '|', '!', '?'];\n\n var $EOF = 0;\n var $TAB = 9;\n var $LF = 10;\n var $VTAB = 11;\n var $FF = 12;\n var $CR = 13;\n var $SPACE = 32;\n var $BANG = 33;\n var $DQ = 34;\n var $$ = 36;\n var $PERCENT = 37;\n var $AMPERSAND = 38;\n var $SQ = 39;\n var $LPAREN = 40;\n var $RPAREN = 41;\n var $STAR = 42;\n var $PLUS = 43;\n var $COMMA = 44;\n var $MINUS = 45;\n var $PERIOD = 46;\n var $SLASH = 47;\n var $COLON = 58;\n var $SEMICOLON = 59;\n var $LT = 60;\n var $EQ = 61;\n var $GT = 62;\n var $QUESTION = 63;\n\n var $0 = 48;\n var $9 = 57;\n\n var $A = 65;\n var $E = 69;\n var $Z = 90;\n\n var $LBRACKET = 91;\n var $BACKSLASH = 92;\n var $RBRACKET = 93;\n var $CARET = 94;\n var $_ = 95;\n\n var $a = 97;\n var $e = 101;\n var $f = 102;\n var $n = 110;\n var $r = 114;\n var $t = 116;\n var $u = 117;\n var $v = 118;\n var $z = 122;\n\n var $LBRACE = 123;\n var $BAR = 124;\n var $RBRACE = 125;\n var $NBSP = 160;\n\n function isWhitespace(code) {\n return code >= $TAB && code <= $SPACE || code === $NBSP;\n }\n\n function isIdentifierStart(code) {\n return $a <= code && code <= $z || $A <= code && code <= $Z || code === $_ || code === $$;\n }\n\n function isIdentifierPart(code) {\n return $a <= code && code <= $z || $A <= code && code <= $Z || $0 <= code && code <= $9 || code === $_ || code === $$;\n }\n\n function isDigit(code) {\n return $0 <= code && code <= $9;\n }\n\n function isExponentStart(code) {\n return code === $e || code === $E;\n }\n\n function isExponentSign(code) {\n return code === $MINUS || code === $PLUS;\n }\n\n function unescape(code) {\n switch (code) {\n case $n:\n return $LF;\n case $f:\n return $FF;\n case $r:\n return $CR;\n case $t:\n return $TAB;\n case $v:\n return $VTAB;\n default:\n return code;\n }\n }\n\n function assert(condition, message) {\n if (!condition) {\n throw message || 'Assertion failed';\n }\n }\n\n var EOF = new Token(-1, null);\n\n var Parser = exports.Parser = function () {\n function Parser() {\n \n\n this.cache = {};\n this.lexer = new Lexer();\n }\n\n Parser.prototype.parse = function parse(input) {\n input = input || '';\n\n return this.cache[input] || (this.cache[input] = new ParserImplementation(this.lexer, input).parseChain());\n };\n\n return Parser;\n }();\n\n var ParserImplementation = exports.ParserImplementation = function () {\n function ParserImplementation(lexer, input) {\n \n\n this.index = 0;\n this.input = input;\n this.tokens = lexer.lex(input);\n }\n\n ParserImplementation.prototype.parseChain = function parseChain() {\n var isChain = false;\n var expressions = [];\n\n while (this.optional(';')) {\n isChain = true;\n }\n\n while (this.index < this.tokens.length) {\n if (this.peek.text === ')' || this.peek.text === '}' || this.peek.text === ']') {\n this.error('Unconsumed token ' + this.peek.text);\n }\n\n var expr = this.parseBindingBehavior();\n expressions.push(expr);\n\n while (this.optional(';')) {\n isChain = true;\n }\n\n if (isChain) {\n this.error('Multiple expressions are not allowed.');\n }\n }\n\n return expressions.length === 1 ? expressions[0] : new Chain(expressions);\n };\n\n ParserImplementation.prototype.parseBindingBehavior = function parseBindingBehavior() {\n var result = this.parseValueConverter();\n\n while (this.optional('&')) {\n var name = this.peek.text;\n var args = [];\n\n this.advance();\n\n while (this.optional(':')) {\n args.push(this.parseExpression());\n }\n\n result = new BindingBehavior(result, name, args);\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseValueConverter = function parseValueConverter() {\n var result = this.parseExpression();\n\n while (this.optional('|')) {\n var name = this.peek.text;\n var args = [];\n\n this.advance();\n\n while (this.optional(':')) {\n args.push(this.parseExpression());\n }\n\n result = new ValueConverter(result, name, args, [result].concat(args));\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseExpression = function parseExpression() {\n var start = this.peek.index;\n var result = this.parseConditional();\n\n while (this.peek.text === '=') {\n if (!result.isAssignable) {\n var end = this.index < this.tokens.length ? this.peek.index : this.input.length;\n var _expression = this.input.substring(start, end);\n\n this.error('Expression ' + _expression + ' is not assignable');\n }\n\n this.expect('=');\n result = new Assign(result, this.parseConditional());\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseConditional = function parseConditional() {\n var start = this.peek.index;\n var result = this.parseLogicalOr();\n\n if (this.optional('?')) {\n var yes = this.parseExpression();\n\n if (!this.optional(':')) {\n var end = this.index < this.tokens.length ? this.peek.index : this.input.length;\n var _expression2 = this.input.substring(start, end);\n\n this.error('Conditional expression ' + _expression2 + ' requires all 3 expressions');\n }\n\n var no = this.parseExpression();\n result = new Conditional(result, yes, no);\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseLogicalOr = function parseLogicalOr() {\n var result = this.parseLogicalAnd();\n\n while (this.optional('||')) {\n result = new Binary('||', result, this.parseLogicalAnd());\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseLogicalAnd = function parseLogicalAnd() {\n var result = this.parseEquality();\n\n while (this.optional('&&')) {\n result = new Binary('&&', result, this.parseEquality());\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseEquality = function parseEquality() {\n var result = this.parseRelational();\n\n while (true) {\n if (this.optional('==')) {\n result = new Binary('==', result, this.parseRelational());\n } else if (this.optional('!=')) {\n result = new Binary('!=', result, this.parseRelational());\n } else if (this.optional('===')) {\n result = new Binary('===', result, this.parseRelational());\n } else if (this.optional('!==')) {\n result = new Binary('!==', result, this.parseRelational());\n } else {\n return result;\n }\n }\n };\n\n ParserImplementation.prototype.parseRelational = function parseRelational() {\n var result = this.parseAdditive();\n\n while (true) {\n if (this.optional('<')) {\n result = new Binary('<', result, this.parseAdditive());\n } else if (this.optional('>')) {\n result = new Binary('>', result, this.parseAdditive());\n } else if (this.optional('<=')) {\n result = new Binary('<=', result, this.parseAdditive());\n } else if (this.optional('>=')) {\n result = new Binary('>=', result, this.parseAdditive());\n } else {\n return result;\n }\n }\n };\n\n ParserImplementation.prototype.parseAdditive = function parseAdditive() {\n var result = this.parseMultiplicative();\n\n while (true) {\n if (this.optional('+')) {\n result = new Binary('+', result, this.parseMultiplicative());\n } else if (this.optional('-')) {\n result = new Binary('-', result, this.parseMultiplicative());\n } else {\n return result;\n }\n }\n };\n\n ParserImplementation.prototype.parseMultiplicative = function parseMultiplicative() {\n var result = this.parsePrefix();\n\n while (true) {\n if (this.optional('*')) {\n result = new Binary('*', result, this.parsePrefix());\n } else if (this.optional('%')) {\n result = new Binary('%', result, this.parsePrefix());\n } else if (this.optional('/')) {\n result = new Binary('/', result, this.parsePrefix());\n } else {\n return result;\n }\n }\n };\n\n ParserImplementation.prototype.parsePrefix = function parsePrefix() {\n if (this.optional('+')) {\n return this.parsePrefix();\n } else if (this.optional('-')) {\n return new Binary('-', new LiteralPrimitive(0), this.parsePrefix());\n } else if (this.optional('!')) {\n return new PrefixNot('!', this.parsePrefix());\n }\n\n return this.parseAccessOrCallMember();\n };\n\n ParserImplementation.prototype.parseAccessOrCallMember = function parseAccessOrCallMember() {\n var result = this.parsePrimary();\n\n while (true) {\n if (this.optional('.')) {\n var name = this.peek.text;\n\n this.advance();\n\n if (this.optional('(')) {\n var args = this.parseExpressionList(')');\n this.expect(')');\n if (result instanceof AccessThis) {\n result = new CallScope(name, args, result.ancestor);\n } else {\n result = new CallMember(result, name, args);\n }\n } else {\n if (result instanceof AccessThis) {\n result = new AccessScope(name, result.ancestor);\n } else {\n result = new AccessMember(result, name);\n }\n }\n } else if (this.optional('[')) {\n var key = this.parseExpression();\n this.expect(']');\n result = new AccessKeyed(result, key);\n } else if (this.optional('(')) {\n var _args = this.parseExpressionList(')');\n this.expect(')');\n result = new CallFunction(result, _args);\n } else {\n return result;\n }\n }\n };\n\n ParserImplementation.prototype.parsePrimary = function parsePrimary() {\n if (this.optional('(')) {\n var result = this.parseExpression();\n this.expect(')');\n return result;\n } else if (this.optional('null')) {\n return new LiteralPrimitive(null);\n } else if (this.optional('undefined')) {\n return new LiteralPrimitive(undefined);\n } else if (this.optional('true')) {\n return new LiteralPrimitive(true);\n } else if (this.optional('false')) {\n return new LiteralPrimitive(false);\n } else if (this.optional('[')) {\n var elements = this.parseExpressionList(']');\n this.expect(']');\n return new LiteralArray(elements);\n } else if (this.peek.text === '{') {\n return this.parseObject();\n } else if (this.peek.key !== null && this.peek.key !== undefined) {\n return this.parseAccessOrCallScope();\n } else if (this.peek.value !== null && this.peek.value !== undefined) {\n var value = this.peek.value;\n this.advance();\n return value instanceof String || typeof value === 'string' ? new LiteralString(value) : new LiteralPrimitive(value);\n } else if (this.index >= this.tokens.length) {\n throw new Error('Unexpected end of expression: ' + this.input);\n } else {\n this.error('Unexpected token ' + this.peek.text);\n }\n };\n\n ParserImplementation.prototype.parseAccessOrCallScope = function parseAccessOrCallScope() {\n var name = this.peek.key;\n\n this.advance();\n\n if (name === '$this') {\n return new AccessThis(0);\n }\n\n var ancestor = 0;\n while (name === '$parent') {\n ancestor++;\n if (this.optional('.')) {\n name = this.peek.key;\n this.advance();\n } else if (this.peek === EOF || this.peek.text === '(' || this.peek.text === ')' || this.peek.text === '[' || this.peek.text === '}' || this.peek.text === ',') {\n return new AccessThis(ancestor);\n } else {\n this.error('Unexpected token ' + this.peek.text);\n }\n }\n\n if (this.optional('(')) {\n var args = this.parseExpressionList(')');\n this.expect(')');\n return new CallScope(name, args, ancestor);\n }\n\n return new AccessScope(name, ancestor);\n };\n\n ParserImplementation.prototype.parseObject = function parseObject() {\n var keys = [];\n var values = [];\n\n this.expect('{');\n\n if (this.peek.text !== '}') {\n do {\n var peek = this.peek;\n var value = peek.value;\n keys.push(typeof value === 'string' ? value : peek.text);\n\n this.advance();\n if (peek.key && (this.peek.text === ',' || this.peek.text === '}')) {\n --this.index;\n values.push(this.parseAccessOrCallScope());\n } else {\n this.expect(':');\n values.push(this.parseExpression());\n }\n } while (this.optional(','));\n }\n\n this.expect('}');\n\n return new LiteralObject(keys, values);\n };\n\n ParserImplementation.prototype.parseExpressionList = function parseExpressionList(terminator) {\n var result = [];\n\n if (this.peek.text !== terminator) {\n do {\n result.push(this.parseExpression());\n } while (this.optional(','));\n }\n\n return result;\n };\n\n ParserImplementation.prototype.optional = function optional(text) {\n if (this.peek.text === text) {\n this.advance();\n return true;\n }\n\n return false;\n };\n\n ParserImplementation.prototype.expect = function expect(text) {\n if (this.peek.text === text) {\n this.advance();\n } else {\n this.error('Missing expected ' + text);\n }\n };\n\n ParserImplementation.prototype.advance = function advance() {\n this.index++;\n };\n\n ParserImplementation.prototype.error = function error(message) {\n var location = this.index < this.tokens.length ? 'at column ' + (this.tokens[this.index].index + 1) + ' in' : 'at the end of the expression';\n\n throw new Error('Parser Error: ' + message + ' ' + location + ' [' + this.input + ']');\n };\n\n _createClass(ParserImplementation, [{\n key: 'peek',\n get: function get() {\n return this.index < this.tokens.length ? this.tokens[this.index] : EOF;\n }\n }]);\n\n return ParserImplementation;\n }();\n\n var mapProto = Map.prototype;\n\n function _getMapObserver(taskQueue, map) {\n return ModifyMapObserver.for(taskQueue, map);\n }\n\n exports.getMapObserver = _getMapObserver;\n\n var ModifyMapObserver = function (_ModifyCollectionObse2) {\n _inherits(ModifyMapObserver, _ModifyCollectionObse2);\n\n function ModifyMapObserver(taskQueue, map) {\n \n\n return _possibleConstructorReturn(this, _ModifyCollectionObse2.call(this, taskQueue, map));\n }\n\n ModifyMapObserver.for = function _for(taskQueue, map) {\n if (!('__map_observer__' in map)) {\n Reflect.defineProperty(map, '__map_observer__', {\n value: ModifyMapObserver.create(taskQueue, map),\n enumerable: false, configurable: false\n });\n }\n return map.__map_observer__;\n };\n\n ModifyMapObserver.create = function create(taskQueue, map) {\n var observer = new ModifyMapObserver(taskQueue, map);\n\n var proto = mapProto;\n if (proto.set !== map.set || proto.delete !== map.delete || proto.clear !== map.clear) {\n proto = {\n set: map.set,\n delete: map.delete,\n clear: map.clear\n };\n }\n\n map.set = function () {\n var hasValue = map.has(arguments[0]);\n var type = hasValue ? 'update' : 'add';\n var oldValue = map.get(arguments[0]);\n var methodCallResult = proto.set.apply(map, arguments);\n if (!hasValue || oldValue !== map.get(arguments[0])) {\n observer.addChangeRecord({\n type: type,\n object: map,\n key: arguments[0],\n oldValue: oldValue\n });\n }\n return methodCallResult;\n };\n\n map.delete = function () {\n var hasValue = map.has(arguments[0]);\n var oldValue = map.get(arguments[0]);\n var methodCallResult = proto.delete.apply(map, arguments);\n if (hasValue) {\n observer.addChangeRecord({\n type: 'delete',\n object: map,\n key: arguments[0],\n oldValue: oldValue\n });\n }\n return methodCallResult;\n };\n\n map.clear = function () {\n var methodCallResult = proto.clear.apply(map, arguments);\n observer.addChangeRecord({\n type: 'clear',\n object: map\n });\n return methodCallResult;\n };\n\n return observer;\n };\n\n return ModifyMapObserver;\n }(ModifyCollectionObserver);\n\n function findOriginalEventTarget(event) {\n return event.path && event.path[0] || event.deepPath && event.deepPath[0] || event.target;\n }\n\n function stopPropagation() {\n this.standardStopPropagation();\n this.propagationStopped = true;\n }\n\n function interceptStopPropagation(event) {\n event.standardStopPropagation = event.stopPropagation;\n event.stopPropagation = stopPropagation;\n }\n\n function handleCapturedEvent(event) {\n var interceptInstalled = false;\n event.propagationStopped = false;\n var target = findOriginalEventTarget(event);\n\n var orderedCallbacks = [];\n\n while (target) {\n if (target.capturedCallbacks) {\n var callback = target.capturedCallbacks[event.type];\n if (callback) {\n if (!interceptInstalled) {\n interceptStopPropagation(event);\n interceptInstalled = true;\n }\n orderedCallbacks.push(callback);\n }\n }\n target = target.parentNode;\n }\n for (var _i22 = orderedCallbacks.length - 1; _i22 >= 0; _i22--) {\n var orderedCallback = orderedCallbacks[_i22];\n orderedCallback(event);\n if (event.propagationStopped) {\n break;\n }\n }\n }\n\n var CapturedHandlerEntry = function () {\n function CapturedHandlerEntry(eventName) {\n \n\n this.eventName = eventName;\n this.count = 0;\n }\n\n CapturedHandlerEntry.prototype.increment = function increment() {\n this.count++;\n\n if (this.count === 1) {\n _aureliaPal.DOM.addEventListener(this.eventName, handleCapturedEvent, true);\n }\n };\n\n CapturedHandlerEntry.prototype.decrement = function decrement() {\n this.count--;\n\n if (this.count === 0) {\n _aureliaPal.DOM.removeEventListener(this.eventName, handleCapturedEvent, true);\n }\n };\n\n return CapturedHandlerEntry;\n }();\n\n function handleDelegatedEvent(event) {\n var interceptInstalled = false;\n event.propagationStopped = false;\n var target = findOriginalEventTarget(event);\n\n while (target && !event.propagationStopped) {\n if (target.delegatedCallbacks) {\n var callback = target.delegatedCallbacks[event.type];\n if (callback) {\n if (!interceptInstalled) {\n interceptStopPropagation(event);\n interceptInstalled = true;\n }\n callback(event);\n }\n }\n\n target = target.parentNode;\n }\n }\n\n var DelegateHandlerEntry = function () {\n function DelegateHandlerEntry(eventName) {\n \n\n this.eventName = eventName;\n this.count = 0;\n }\n\n DelegateHandlerEntry.prototype.increment = function increment() {\n this.count++;\n\n if (this.count === 1) {\n _aureliaPal.DOM.addEventListener(this.eventName, handleDelegatedEvent, false);\n }\n };\n\n DelegateHandlerEntry.prototype.decrement = function decrement() {\n this.count--;\n\n if (this.count === 0) {\n _aureliaPal.DOM.removeEventListener(this.eventName, handleDelegatedEvent);\n }\n };\n\n return DelegateHandlerEntry;\n }();\n\n var DefaultEventStrategy = function () {\n function DefaultEventStrategy() {\n \n\n this.delegatedHandlers = {};\n this.capturedHandlers = {};\n }\n\n DefaultEventStrategy.prototype.subscribe = function subscribe(target, targetEvent, callback, strategy) {\n var _this22 = this;\n\n var delegatedHandlers = void 0;\n var capturedHandlers = void 0;\n var handlerEntry = void 0;\n\n if (strategy === delegationStrategy.bubbling) {\n var _ret = function () {\n delegatedHandlers = _this22.delegatedHandlers;\n handlerEntry = delegatedHandlers[targetEvent] || (delegatedHandlers[targetEvent] = new DelegateHandlerEntry(targetEvent));\n var delegatedCallbacks = target.delegatedCallbacks || (target.delegatedCallbacks = {});\n\n handlerEntry.increment();\n delegatedCallbacks[targetEvent] = callback;\n\n return {\n v: function v() {\n handlerEntry.decrement();\n delegatedCallbacks[targetEvent] = null;\n }\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n if (strategy === delegationStrategy.capturing) {\n var _ret2 = function () {\n capturedHandlers = _this22.capturedHandlers;\n handlerEntry = capturedHandlers[targetEvent] || (capturedHandlers[targetEvent] = new CapturedHandlerEntry(targetEvent));\n var capturedCallbacks = target.capturedCallbacks || (target.capturedCallbacks = {});\n\n handlerEntry.increment();\n capturedCallbacks[targetEvent] = callback;\n\n return {\n v: function v() {\n handlerEntry.decrement();\n capturedCallbacks[targetEvent] = null;\n }\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n }\n\n target.addEventListener(targetEvent, callback, false);\n\n return function () {\n target.removeEventListener(targetEvent, callback);\n };\n };\n\n return DefaultEventStrategy;\n }();\n\n var delegationStrategy = exports.delegationStrategy = {\n none: 0,\n capturing: 1,\n bubbling: 2\n };\n\n var EventManager = exports.EventManager = function () {\n function EventManager() {\n \n\n this.elementHandlerLookup = {};\n this.eventStrategyLookup = {};\n\n this.registerElementConfig({\n tagName: 'input',\n properties: {\n value: ['change', 'input'],\n checked: ['change', 'input'],\n files: ['change', 'input']\n }\n });\n\n this.registerElementConfig({\n tagName: 'textarea',\n properties: {\n value: ['change', 'input']\n }\n });\n\n this.registerElementConfig({\n tagName: 'select',\n properties: {\n value: ['change']\n }\n });\n\n this.registerElementConfig({\n tagName: 'content editable',\n properties: {\n value: ['change', 'input', 'blur', 'keyup', 'paste']\n }\n });\n\n this.registerElementConfig({\n tagName: 'scrollable element',\n properties: {\n scrollTop: ['scroll'],\n scrollLeft: ['scroll']\n }\n });\n\n this.defaultEventStrategy = new DefaultEventStrategy();\n }\n\n EventManager.prototype.registerElementConfig = function registerElementConfig(config) {\n var tagName = config.tagName.toLowerCase();\n var properties = config.properties;\n var propertyName = void 0;\n\n this.elementHandlerLookup[tagName] = {};\n\n for (propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this.registerElementPropertyConfig(tagName, propertyName, properties[propertyName]);\n }\n }\n };\n\n EventManager.prototype.registerElementPropertyConfig = function registerElementPropertyConfig(tagName, propertyName, events) {\n this.elementHandlerLookup[tagName][propertyName] = this.createElementHandler(events);\n };\n\n EventManager.prototype.createElementHandler = function createElementHandler(events) {\n return {\n subscribe: function subscribe(target, callback) {\n events.forEach(function (changeEvent) {\n target.addEventListener(changeEvent, callback, false);\n });\n\n return function () {\n events.forEach(function (changeEvent) {\n target.removeEventListener(changeEvent, callback);\n });\n };\n }\n };\n };\n\n EventManager.prototype.registerElementHandler = function registerElementHandler(tagName, handler) {\n this.elementHandlerLookup[tagName.toLowerCase()] = handler;\n };\n\n EventManager.prototype.registerEventStrategy = function registerEventStrategy(eventName, strategy) {\n this.eventStrategyLookup[eventName] = strategy;\n };\n\n EventManager.prototype.getElementHandler = function getElementHandler(target, propertyName) {\n var tagName = void 0;\n var lookup = this.elementHandlerLookup;\n\n if (target.tagName) {\n tagName = target.tagName.toLowerCase();\n\n if (lookup[tagName] && lookup[tagName][propertyName]) {\n return lookup[tagName][propertyName];\n }\n\n if (propertyName === 'textContent' || propertyName === 'innerHTML') {\n return lookup['content editable'].value;\n }\n\n if (propertyName === 'scrollTop' || propertyName === 'scrollLeft') {\n return lookup['scrollable element'][propertyName];\n }\n }\n\n return null;\n };\n\n EventManager.prototype.addEventListener = function addEventListener(target, targetEvent, callback, delegate) {\n return (this.eventStrategyLookup[targetEvent] || this.defaultEventStrategy).subscribe(target, targetEvent, callback, delegate);\n };\n\n return EventManager;\n }();\n\n var DirtyChecker = exports.DirtyChecker = function () {\n function DirtyChecker() {\n \n\n this.tracked = [];\n this.checkDelay = 120;\n }\n\n DirtyChecker.prototype.addProperty = function addProperty(property) {\n var tracked = this.tracked;\n\n tracked.push(property);\n\n if (tracked.length === 1) {\n this.scheduleDirtyCheck();\n }\n };\n\n DirtyChecker.prototype.removeProperty = function removeProperty(property) {\n var tracked = this.tracked;\n tracked.splice(tracked.indexOf(property), 1);\n };\n\n DirtyChecker.prototype.scheduleDirtyCheck = function scheduleDirtyCheck() {\n var _this23 = this;\n\n setTimeout(function () {\n return _this23.check();\n }, this.checkDelay);\n };\n\n DirtyChecker.prototype.check = function check() {\n var tracked = this.tracked;\n var i = tracked.length;\n\n while (i--) {\n var current = tracked[i];\n\n if (current.isDirty()) {\n current.call();\n }\n }\n\n if (tracked.length) {\n this.scheduleDirtyCheck();\n }\n };\n\n return DirtyChecker;\n }();\n\n var DirtyCheckProperty = exports.DirtyCheckProperty = (_dec5 = subscriberCollection(), _dec5(_class5 = function () {\n function DirtyCheckProperty(dirtyChecker, obj, propertyName) {\n \n\n this.dirtyChecker = dirtyChecker;\n this.obj = obj;\n this.propertyName = propertyName;\n }\n\n DirtyCheckProperty.prototype.getValue = function getValue() {\n return this.obj[this.propertyName];\n };\n\n DirtyCheckProperty.prototype.setValue = function setValue(newValue) {\n this.obj[this.propertyName] = newValue;\n };\n\n DirtyCheckProperty.prototype.call = function call() {\n var oldValue = this.oldValue;\n var newValue = this.getValue();\n\n this.callSubscribers(newValue, oldValue);\n\n this.oldValue = newValue;\n };\n\n DirtyCheckProperty.prototype.isDirty = function isDirty() {\n return this.oldValue !== this.obj[this.propertyName];\n };\n\n DirtyCheckProperty.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.oldValue = this.getValue();\n this.dirtyChecker.addProperty(this);\n }\n this.addSubscriber(context, callable);\n };\n\n DirtyCheckProperty.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.dirtyChecker.removeProperty(this);\n }\n };\n\n return DirtyCheckProperty;\n }()) || _class5);\n\n\n var logger = LogManager.getLogger('property-observation');\n\n var propertyAccessor = exports.propertyAccessor = {\n getValue: function getValue(obj, propertyName) {\n return obj[propertyName];\n },\n setValue: function setValue(value, obj, propertyName) {\n obj[propertyName] = value;\n }\n };\n\n var PrimitiveObserver = exports.PrimitiveObserver = function () {\n function PrimitiveObserver(primitive, propertyName) {\n \n\n this.doNotCache = true;\n\n this.primitive = primitive;\n this.propertyName = propertyName;\n }\n\n PrimitiveObserver.prototype.getValue = function getValue() {\n return this.primitive[this.propertyName];\n };\n\n PrimitiveObserver.prototype.setValue = function setValue() {\n var type = _typeof(this.primitive);\n throw new Error('The ' + this.propertyName + ' property of a ' + type + ' (' + this.primitive + ') cannot be assigned.');\n };\n\n PrimitiveObserver.prototype.subscribe = function subscribe() {};\n\n PrimitiveObserver.prototype.unsubscribe = function unsubscribe() {};\n\n return PrimitiveObserver;\n }();\n\n var SetterObserver = exports.SetterObserver = (_dec6 = subscriberCollection(), _dec6(_class7 = function () {\n function SetterObserver(taskQueue, obj, propertyName) {\n \n\n this.taskQueue = taskQueue;\n this.obj = obj;\n this.propertyName = propertyName;\n this.queued = false;\n this.observing = false;\n }\n\n SetterObserver.prototype.getValue = function getValue() {\n return this.obj[this.propertyName];\n };\n\n SetterObserver.prototype.setValue = function setValue(newValue) {\n this.obj[this.propertyName] = newValue;\n };\n\n SetterObserver.prototype.getterValue = function getterValue() {\n return this.currentValue;\n };\n\n SetterObserver.prototype.setterValue = function setterValue(newValue) {\n var oldValue = this.currentValue;\n\n if (oldValue !== newValue) {\n if (!this.queued) {\n this.oldValue = oldValue;\n this.queued = true;\n this.taskQueue.queueMicroTask(this);\n }\n\n this.currentValue = newValue;\n }\n };\n\n SetterObserver.prototype.call = function call() {\n var oldValue = this.oldValue;\n var newValue = this.currentValue;\n\n this.queued = false;\n\n this.callSubscribers(newValue, oldValue);\n };\n\n SetterObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.observing) {\n this.convertProperty();\n }\n this.addSubscriber(context, callable);\n };\n\n SetterObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n SetterObserver.prototype.convertProperty = function convertProperty() {\n this.observing = true;\n this.currentValue = this.obj[this.propertyName];\n this.setValue = this.setterValue;\n this.getValue = this.getterValue;\n\n if (!Reflect.defineProperty(this.obj, this.propertyName, {\n configurable: true,\n enumerable: this.propertyName in this.obj ? this.obj.propertyIsEnumerable(this.propertyName) : true,\n get: this.getValue.bind(this),\n set: this.setValue.bind(this)\n })) {\n logger.warn('Cannot observe property \\'' + this.propertyName + '\\' of object', this.obj);\n }\n };\n\n return SetterObserver;\n }()) || _class7);\n\n var XLinkAttributeObserver = exports.XLinkAttributeObserver = function () {\n function XLinkAttributeObserver(element, propertyName, attributeName) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n this.attributeName = attributeName;\n }\n\n XLinkAttributeObserver.prototype.getValue = function getValue() {\n return this.element.getAttributeNS('http://www.w3.org/1999/xlink', this.attributeName);\n };\n\n XLinkAttributeObserver.prototype.setValue = function setValue(newValue) {\n return this.element.setAttributeNS('http://www.w3.org/1999/xlink', this.attributeName, newValue);\n };\n\n XLinkAttributeObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n };\n\n return XLinkAttributeObserver;\n }();\n\n var dataAttributeAccessor = exports.dataAttributeAccessor = {\n getValue: function getValue(obj, propertyName) {\n return obj.getAttribute(propertyName);\n },\n setValue: function setValue(value, obj, propertyName) {\n return obj.setAttribute(propertyName, value);\n }\n };\n\n var DataAttributeObserver = exports.DataAttributeObserver = function () {\n function DataAttributeObserver(element, propertyName) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n }\n\n DataAttributeObserver.prototype.getValue = function getValue() {\n return this.element.getAttribute(this.propertyName);\n };\n\n DataAttributeObserver.prototype.setValue = function setValue(newValue) {\n return this.element.setAttribute(this.propertyName, newValue);\n };\n\n DataAttributeObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n };\n\n return DataAttributeObserver;\n }();\n\n var StyleObserver = exports.StyleObserver = function () {\n function StyleObserver(element, propertyName) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n\n this.styles = null;\n this.version = 0;\n }\n\n StyleObserver.prototype.getValue = function getValue() {\n return this.element.style.cssText;\n };\n\n StyleObserver.prototype._setProperty = function _setProperty(style, value) {\n var priority = '';\n\n if (value !== null && value !== undefined && typeof value.indexOf === 'function' && value.indexOf('!important') !== -1) {\n priority = 'important';\n value = value.replace('!important', '');\n }\n this.element.style.setProperty(style, value, priority);\n };\n\n StyleObserver.prototype.setValue = function setValue(newValue) {\n var styles = this.styles || {};\n var style = void 0;\n var version = this.version;\n\n if (newValue !== null && newValue !== undefined) {\n if (newValue instanceof Object) {\n var value = void 0;\n for (style in newValue) {\n if (newValue.hasOwnProperty(style)) {\n value = newValue[style];\n style = style.replace(/([A-Z])/g, function (m) {\n return '-' + m.toLowerCase();\n });\n styles[style] = version;\n this._setProperty(style, value);\n }\n }\n } else if (newValue.length) {\n var rx = /\\s*([\\w\\-]+)\\s*:\\s*((?:(?:[\\w\\-]+\\(\\s*(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[\\w\\-]+\\(\\s*(?:^\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^\\)]*)\\),?|[^\\)]*)\\),?|\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^;]*),?\\s*)+);?/g;\n var pair = void 0;\n while ((pair = rx.exec(newValue)) !== null) {\n style = pair[1];\n if (!style) {\n continue;\n }\n\n styles[style] = version;\n this._setProperty(style, pair[2]);\n }\n }\n }\n\n this.styles = styles;\n this.version += 1;\n\n if (version === 0) {\n return;\n }\n\n version -= 1;\n for (style in styles) {\n if (!styles.hasOwnProperty(style) || styles[style] !== version) {\n continue;\n }\n\n this.element.style.removeProperty(style);\n }\n };\n\n StyleObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n };\n\n return StyleObserver;\n }();\n\n var ValueAttributeObserver = exports.ValueAttributeObserver = (_dec7 = subscriberCollection(), _dec7(_class8 = function () {\n function ValueAttributeObserver(element, propertyName, handler) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n this.handler = handler;\n if (propertyName === 'files') {\n this.setValue = function () {};\n }\n }\n\n ValueAttributeObserver.prototype.getValue = function getValue() {\n return this.element[this.propertyName];\n };\n\n ValueAttributeObserver.prototype.setValue = function setValue(newValue) {\n newValue = newValue === undefined || newValue === null ? '' : newValue;\n if (this.element[this.propertyName] !== newValue) {\n this.element[this.propertyName] = newValue;\n this.notify();\n }\n };\n\n ValueAttributeObserver.prototype.notify = function notify() {\n var oldValue = this.oldValue;\n var newValue = this.getValue();\n\n this.callSubscribers(newValue, oldValue);\n\n this.oldValue = newValue;\n };\n\n ValueAttributeObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.oldValue = this.getValue();\n this.disposeHandler = this.handler.subscribe(this.element, this.notify.bind(this));\n }\n\n this.addSubscriber(context, callable);\n };\n\n ValueAttributeObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.disposeHandler();\n this.disposeHandler = null;\n }\n };\n\n return ValueAttributeObserver;\n }()) || _class8);\n\n\n var checkedArrayContext = 'CheckedObserver:array';\n var checkedValueContext = 'CheckedObserver:value';\n\n var CheckedObserver = exports.CheckedObserver = (_dec8 = subscriberCollection(), _dec8(_class9 = function () {\n function CheckedObserver(element, handler, observerLocator) {\n \n\n this.element = element;\n this.handler = handler;\n this.observerLocator = observerLocator;\n }\n\n CheckedObserver.prototype.getValue = function getValue() {\n return this.value;\n };\n\n CheckedObserver.prototype.setValue = function setValue(newValue) {\n if (this.initialSync && this.value === newValue) {\n return;\n }\n\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(checkedArrayContext, this);\n this.arrayObserver = null;\n }\n\n if (this.element.type === 'checkbox' && Array.isArray(newValue)) {\n this.arrayObserver = this.observerLocator.getArrayObserver(newValue);\n this.arrayObserver.subscribe(checkedArrayContext, this);\n }\n\n this.oldValue = this.value;\n this.value = newValue;\n this.synchronizeElement();\n this.notify();\n\n if (!this.initialSync) {\n this.initialSync = true;\n this.observerLocator.taskQueue.queueMicroTask(this);\n }\n };\n\n CheckedObserver.prototype.call = function call(context, splices) {\n this.synchronizeElement();\n\n if (!this.valueObserver) {\n this.valueObserver = this.element.__observers__.model || this.element.__observers__.value;\n if (this.valueObserver) {\n this.valueObserver.subscribe(checkedValueContext, this);\n }\n }\n };\n\n CheckedObserver.prototype.synchronizeElement = function synchronizeElement() {\n var value = this.value;\n var element = this.element;\n var elementValue = element.hasOwnProperty('model') ? element.model : element.value;\n var isRadio = element.type === 'radio';\n var matcher = element.matcher || function (a, b) {\n return a === b;\n };\n\n element.checked = isRadio && !!matcher(value, elementValue) || !isRadio && value === true || !isRadio && Array.isArray(value) && value.findIndex(function (item) {\n return !!matcher(item, elementValue);\n }) !== -1;\n };\n\n CheckedObserver.prototype.synchronizeValue = function synchronizeValue() {\n var value = this.value;\n var element = this.element;\n var elementValue = element.hasOwnProperty('model') ? element.model : element.value;\n var index = void 0;\n var matcher = element.matcher || function (a, b) {\n return a === b;\n };\n\n if (element.type === 'checkbox') {\n if (Array.isArray(value)) {\n index = value.findIndex(function (item) {\n return !!matcher(item, elementValue);\n });\n if (element.checked && index === -1) {\n value.push(elementValue);\n } else if (!element.checked && index !== -1) {\n value.splice(index, 1);\n }\n\n return;\n }\n\n value = element.checked;\n } else if (element.checked) {\n value = elementValue;\n } else {\n return;\n }\n\n this.oldValue = this.value;\n this.value = value;\n this.notify();\n };\n\n CheckedObserver.prototype.notify = function notify() {\n var oldValue = this.oldValue;\n var newValue = this.value;\n\n if (newValue === oldValue) {\n return;\n }\n\n this.callSubscribers(newValue, oldValue);\n };\n\n CheckedObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.disposeHandler = this.handler.subscribe(this.element, this.synchronizeValue.bind(this, false));\n }\n this.addSubscriber(context, callable);\n };\n\n CheckedObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.disposeHandler();\n this.disposeHandler = null;\n }\n };\n\n CheckedObserver.prototype.unbind = function unbind() {\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(checkedArrayContext, this);\n this.arrayObserver = null;\n }\n if (this.valueObserver) {\n this.valueObserver.unsubscribe(checkedValueContext, this);\n }\n };\n\n return CheckedObserver;\n }()) || _class9);\n\n\n var selectArrayContext = 'SelectValueObserver:array';\n\n var SelectValueObserver = exports.SelectValueObserver = (_dec9 = subscriberCollection(), _dec9(_class10 = function () {\n function SelectValueObserver(element, handler, observerLocator) {\n \n\n this.element = element;\n this.handler = handler;\n this.observerLocator = observerLocator;\n }\n\n SelectValueObserver.prototype.getValue = function getValue() {\n return this.value;\n };\n\n SelectValueObserver.prototype.setValue = function setValue(newValue) {\n if (newValue !== null && newValue !== undefined && this.element.multiple && !Array.isArray(newValue)) {\n throw new Error('Only null or Array instances can be bound to a multi-select.');\n }\n if (this.value === newValue) {\n return;\n }\n\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(selectArrayContext, this);\n this.arrayObserver = null;\n }\n\n if (Array.isArray(newValue)) {\n this.arrayObserver = this.observerLocator.getArrayObserver(newValue);\n this.arrayObserver.subscribe(selectArrayContext, this);\n }\n\n this.oldValue = this.value;\n this.value = newValue;\n this.synchronizeOptions();\n this.notify();\n\n if (!this.initialSync) {\n this.initialSync = true;\n this.observerLocator.taskQueue.queueMicroTask(this);\n }\n };\n\n SelectValueObserver.prototype.call = function call(context, splices) {\n this.synchronizeOptions();\n };\n\n SelectValueObserver.prototype.synchronizeOptions = function synchronizeOptions() {\n var value = this.value;\n var isArray = void 0;\n\n if (Array.isArray(value)) {\n isArray = true;\n }\n\n var options = this.element.options;\n var i = options.length;\n var matcher = this.element.matcher || function (a, b) {\n return a === b;\n };\n\n var _loop = function _loop() {\n var option = options.item(i);\n var optionValue = option.hasOwnProperty('model') ? option.model : option.value;\n if (isArray) {\n option.selected = value.findIndex(function (item) {\n return !!matcher(optionValue, item);\n }) !== -1;\n return 'continue';\n }\n option.selected = !!matcher(optionValue, value);\n };\n\n while (i--) {\n var _ret3 = _loop();\n\n if (_ret3 === 'continue') continue;\n }\n };\n\n SelectValueObserver.prototype.synchronizeValue = function synchronizeValue() {\n var _this24 = this;\n\n var options = this.element.options;\n var count = 0;\n var value = [];\n\n for (var _i23 = 0, ii = options.length; _i23 < ii; _i23++) {\n var _option = options.item(_i23);\n if (!_option.selected) {\n continue;\n }\n value.push(_option.hasOwnProperty('model') ? _option.model : _option.value);\n count++;\n }\n\n if (this.element.multiple) {\n if (Array.isArray(this.value)) {\n var _ret4 = function () {\n var matcher = _this24.element.matcher || function (a, b) {\n return a === b;\n };\n\n var i = 0;\n\n var _loop2 = function _loop2() {\n var a = _this24.value[i];\n if (value.findIndex(function (b) {\n return matcher(a, b);\n }) === -1) {\n _this24.value.splice(i, 1);\n } else {\n i++;\n }\n };\n\n while (i < _this24.value.length) {\n _loop2();\n }\n\n i = 0;\n\n var _loop3 = function _loop3() {\n var a = value[i];\n if (_this24.value.findIndex(function (b) {\n return matcher(a, b);\n }) === -1) {\n _this24.value.push(a);\n }\n i++;\n };\n\n while (i < value.length) {\n _loop3();\n }\n return {\n v: void 0\n };\n }();\n\n if ((typeof _ret4 === 'undefined' ? 'undefined' : _typeof(_ret4)) === \"object\") return _ret4.v;\n }\n } else {\n if (count === 0) {\n value = null;\n } else {\n value = value[0];\n }\n }\n\n if (value !== this.value) {\n this.oldValue = this.value;\n this.value = value;\n this.notify();\n }\n };\n\n SelectValueObserver.prototype.notify = function notify() {\n var oldValue = this.oldValue;\n var newValue = this.value;\n\n this.callSubscribers(newValue, oldValue);\n };\n\n SelectValueObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.disposeHandler = this.handler.subscribe(this.element, this.synchronizeValue.bind(this, false));\n }\n this.addSubscriber(context, callable);\n };\n\n SelectValueObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.disposeHandler();\n this.disposeHandler = null;\n }\n };\n\n SelectValueObserver.prototype.bind = function bind() {\n var _this25 = this;\n\n this.domObserver = _aureliaPal.DOM.createMutationObserver(function () {\n _this25.synchronizeOptions();\n _this25.synchronizeValue();\n });\n this.domObserver.observe(this.element, { childList: true, subtree: true });\n };\n\n SelectValueObserver.prototype.unbind = function unbind() {\n this.domObserver.disconnect();\n this.domObserver = null;\n\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(selectArrayContext, this);\n this.arrayObserver = null;\n }\n };\n\n return SelectValueObserver;\n }()) || _class10);\n\n var ClassObserver = exports.ClassObserver = function () {\n function ClassObserver(element) {\n \n\n this.element = element;\n this.doNotCache = true;\n this.value = '';\n this.version = 0;\n }\n\n ClassObserver.prototype.getValue = function getValue() {\n return this.value;\n };\n\n ClassObserver.prototype.setValue = function setValue(newValue) {\n var nameIndex = this.nameIndex || {};\n var version = this.version;\n var names = void 0;\n var name = void 0;\n\n if (newValue !== null && newValue !== undefined && newValue.length) {\n names = newValue.split(/\\s+/);\n for (var _i24 = 0, length = names.length; _i24 < length; _i24++) {\n name = names[_i24];\n if (name === '') {\n continue;\n }\n nameIndex[name] = version;\n this.element.classList.add(name);\n }\n }\n\n this.value = newValue;\n this.nameIndex = nameIndex;\n this.version += 1;\n\n if (version === 0) {\n return;\n }\n\n version -= 1;\n for (name in nameIndex) {\n if (!nameIndex.hasOwnProperty(name) || nameIndex[name] !== version) {\n continue;\n }\n this.element.classList.remove(name);\n }\n };\n\n ClassObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"class\" property is not supported.');\n };\n\n return ClassObserver;\n }();\n\n function hasDeclaredDependencies(descriptor) {\n return !!(descriptor && descriptor.get && descriptor.get.dependencies);\n }\n\n function declarePropertyDependencies(ctor, propertyName, dependencies) {\n var descriptor = Object.getOwnPropertyDescriptor(ctor.prototype, propertyName);\n descriptor.get.dependencies = dependencies;\n }\n\n function computedFrom() {\n for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n\n return function (target, key, descriptor) {\n descriptor.get.dependencies = rest;\n return descriptor;\n };\n }\n\n var ComputedExpression = exports.ComputedExpression = function (_Expression19) {\n _inherits(ComputedExpression, _Expression19);\n\n function ComputedExpression(name, dependencies) {\n \n\n var _this26 = _possibleConstructorReturn(this, _Expression19.call(this));\n\n _this26.name = name;\n _this26.dependencies = dependencies;\n _this26.isAssignable = true;\n return _this26;\n }\n\n ComputedExpression.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return scope.bindingContext[this.name];\n };\n\n ComputedExpression.prototype.assign = function assign(scope, value) {\n scope.bindingContext[this.name] = value;\n };\n\n ComputedExpression.prototype.accept = function accept(visitor) {\n throw new Error('not implemented');\n };\n\n ComputedExpression.prototype.connect = function connect(binding, scope) {\n var dependencies = this.dependencies;\n var i = dependencies.length;\n while (i--) {\n dependencies[i].connect(binding, scope);\n }\n };\n\n return ComputedExpression;\n }(Expression);\n\n function createComputedObserver(obj, propertyName, descriptor, observerLocator) {\n var dependencies = descriptor.get.dependencies;\n if (!(dependencies instanceof ComputedExpression)) {\n var _i25 = dependencies.length;\n while (_i25--) {\n dependencies[_i25] = observerLocator.parser.parse(dependencies[_i25]);\n }\n dependencies = descriptor.get.dependencies = new ComputedExpression(propertyName, dependencies);\n }\n\n var scope = { bindingContext: obj, overrideContext: createOverrideContext(obj) };\n return new ExpressionObserver(scope, dependencies, observerLocator);\n }\n\n var svgElements = void 0;\n var svgPresentationElements = void 0;\n var svgPresentationAttributes = void 0;\n var svgAnalyzer = void 0;\n\n if (typeof FEATURE_NO_SVG === 'undefined') {\n (function () {\n svgElements = {\n a: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'target', 'transform', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n altGlyph: ['class', 'dx', 'dy', 'externalResourcesRequired', 'format', 'glyphRef', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n altGlyphDef: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n altGlyphItem: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n animate: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n animateColor: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n animateMotion: ['accumulate', 'additive', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keyPoints', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'origin', 'path', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'rotate', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n animateTransform: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'type', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n circle: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'r', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n clipPath: ['class', 'clipPathUnits', 'externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n 'color-profile': ['id', 'local', 'name', 'rendering-intent', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n cursor: ['externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n defs: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n desc: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n ellipse: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n feBlend: ['class', 'height', 'id', 'in', 'in2', 'mode', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feColorMatrix: ['class', 'height', 'id', 'in', 'result', 'style', 'type', 'values', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feComponentTransfer: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feComposite: ['class', 'height', 'id', 'in', 'in2', 'k1', 'k2', 'k3', 'k4', 'operator', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feConvolveMatrix: ['bias', 'class', 'divisor', 'edgeMode', 'height', 'id', 'in', 'kernelMatrix', 'kernelUnitLength', 'order', 'preserveAlpha', 'result', 'style', 'targetX', 'targetY', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feDiffuseLighting: ['class', 'diffuseConstant', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feDisplacementMap: ['class', 'height', 'id', 'in', 'in2', 'result', 'scale', 'style', 'width', 'x', 'xChannelSelector', 'xml:base', 'xml:lang', 'xml:space', 'y', 'yChannelSelector'],\n feDistantLight: ['azimuth', 'elevation', 'id', 'xml:base', 'xml:lang', 'xml:space'],\n feFlood: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feFuncA: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feFuncB: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feFuncG: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feFuncR: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feGaussianBlur: ['class', 'height', 'id', 'in', 'result', 'stdDeviation', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feImage: ['class', 'externalResourcesRequired', 'height', 'id', 'preserveAspectRatio', 'result', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feMerge: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feMergeNode: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n feMorphology: ['class', 'height', 'id', 'in', 'operator', 'radius', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feOffset: ['class', 'dx', 'dy', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n fePointLight: ['id', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'],\n feSpecularLighting: ['class', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'specularConstant', 'specularExponent', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feSpotLight: ['id', 'limitingConeAngle', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'specularExponent', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'],\n feTile: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feTurbulence: ['baseFrequency', 'class', 'height', 'id', 'numOctaves', 'result', 'seed', 'stitchTiles', 'style', 'type', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n filter: ['class', 'externalResourcesRequired', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n font: ['class', 'externalResourcesRequired', 'horiz-adv-x', 'horiz-origin-x', 'horiz-origin-y', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face': ['accent-height', 'alphabetic', 'ascent', 'bbox', 'cap-height', 'descent', 'font-family', 'font-size', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'hanging', 'id', 'ideographic', 'mathematical', 'overline-position', 'overline-thickness', 'panose-1', 'slope', 'stemh', 'stemv', 'strikethrough-position', 'strikethrough-thickness', 'underline-position', 'underline-thickness', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'widths', 'x-height', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-format': ['id', 'string', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-name': ['id', 'name', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-src': ['id', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-uri': ['id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n foreignObject: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n g: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n glyph: ['arabic-form', 'class', 'd', 'glyph-name', 'horiz-adv-x', 'id', 'lang', 'orientation', 'style', 'unicode', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n glyphRef: ['class', 'dx', 'dy', 'format', 'glyphRef', 'id', 'style', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n hkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space'],\n image: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n line: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'],\n linearGradient: ['class', 'externalResourcesRequired', 'gradientTransform', 'gradientUnits', 'id', 'spreadMethod', 'style', 'x1', 'x2', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'],\n marker: ['class', 'externalResourcesRequired', 'id', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'],\n mask: ['class', 'externalResourcesRequired', 'height', 'id', 'maskContentUnits', 'maskUnits', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n metadata: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n 'missing-glyph': ['class', 'd', 'horiz-adv-x', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n mpath: ['externalResourcesRequired', 'id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n path: ['class', 'd', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'pathLength', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n pattern: ['class', 'externalResourcesRequired', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n polygon: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n polyline: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n radialGradient: ['class', 'cx', 'cy', 'externalResourcesRequired', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'spreadMethod', 'style', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n rect: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n script: ['externalResourcesRequired', 'id', 'type', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n set: ['attributeName', 'attributeType', 'begin', 'dur', 'end', 'externalResourcesRequired', 'fill', 'id', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n stop: ['class', 'id', 'offset', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n style: ['id', 'media', 'title', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n svg: ['baseProfile', 'class', 'contentScriptType', 'contentStyleType', 'externalResourcesRequired', 'height', 'id', 'onabort', 'onactivate', 'onclick', 'onerror', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onresize', 'onscroll', 'onunload', 'onzoom', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'version', 'viewBox', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'zoomAndPan'],\n switch: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n symbol: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'],\n text: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'transform', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n textPath: ['class', 'externalResourcesRequired', 'id', 'lengthAdjust', 'method', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'textLength', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n title: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n tref: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n tspan: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n use: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n view: ['externalResourcesRequired', 'id', 'preserveAspectRatio', 'viewBox', 'viewTarget', 'xml:base', 'xml:lang', 'xml:space', 'zoomAndPan'],\n vkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space']\n };\n\n\n svgPresentationElements = {\n 'a': true,\n 'altGlyph': true,\n 'animate': true,\n 'animateColor': true,\n 'circle': true,\n 'clipPath': true,\n 'defs': true,\n 'ellipse': true,\n 'feBlend': true,\n 'feColorMatrix': true,\n 'feComponentTransfer': true,\n 'feComposite': true,\n 'feConvolveMatrix': true,\n 'feDiffuseLighting': true,\n 'feDisplacementMap': true,\n 'feFlood': true,\n 'feGaussianBlur': true,\n 'feImage': true,\n 'feMerge': true,\n 'feMorphology': true,\n 'feOffset': true,\n 'feSpecularLighting': true,\n 'feTile': true,\n 'feTurbulence': true,\n 'filter': true,\n 'font': true,\n 'foreignObject': true,\n 'g': true,\n 'glyph': true,\n 'glyphRef': true,\n 'image': true,\n 'line': true,\n 'linearGradient': true,\n 'marker': true,\n 'mask': true,\n 'missing-glyph': true,\n 'path': true,\n 'pattern': true,\n 'polygon': true,\n 'polyline': true,\n 'radialGradient': true,\n 'rect': true,\n 'stop': true,\n 'svg': true,\n 'switch': true,\n 'symbol': true,\n 'text': true,\n 'textPath': true,\n 'tref': true,\n 'tspan': true,\n 'use': true\n };\n\n svgPresentationAttributes = {\n 'alignment-baseline': true,\n 'baseline-shift': true,\n 'clip-path': true,\n 'clip-rule': true,\n 'clip': true,\n 'color-interpolation-filters': true,\n 'color-interpolation': true,\n 'color-profile': true,\n 'color-rendering': true,\n 'color': true,\n 'cursor': true,\n 'direction': true,\n 'display': true,\n 'dominant-baseline': true,\n 'enable-background': true,\n 'fill-opacity': true,\n 'fill-rule': true,\n 'fill': true,\n 'filter': true,\n 'flood-color': true,\n 'flood-opacity': true,\n 'font-family': true,\n 'font-size-adjust': true,\n 'font-size': true,\n 'font-stretch': true,\n 'font-style': true,\n 'font-variant': true,\n 'font-weight': true,\n 'glyph-orientation-horizontal': true,\n 'glyph-orientation-vertical': true,\n 'image-rendering': true,\n 'kerning': true,\n 'letter-spacing': true,\n 'lighting-color': true,\n 'marker-end': true,\n 'marker-mid': true,\n 'marker-start': true,\n 'mask': true,\n 'opacity': true,\n 'overflow': true,\n 'pointer-events': true,\n 'shape-rendering': true,\n 'stop-color': true,\n 'stop-opacity': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'stroke-linecap': true,\n 'stroke-linejoin': true,\n 'stroke-miterlimit': true,\n 'stroke-opacity': true,\n 'stroke-width': true,\n 'stroke': true,\n 'text-anchor': true,\n 'text-decoration': true,\n 'text-rendering': true,\n 'unicode-bidi': true,\n 'visibility': true,\n 'word-spacing': true,\n 'writing-mode': true\n };\n\n var createElement = function createElement(html) {\n var div = _aureliaPal.DOM.createElement('div');\n div.innerHTML = html;\n return div.firstChild;\n };\n\n svgAnalyzer = function () {\n function SVGAnalyzer() {\n \n\n if (createElement('<svg><altGlyph /></svg>').firstElementChild.nodeName === 'altglyph' && elements.altGlyph) {\n elements.altglyph = elements.altGlyph;\n delete elements.altGlyph;\n elements.altglyphdef = elements.altGlyphDef;\n delete elements.altGlyphDef;\n elements.altglyphitem = elements.altGlyphItem;\n delete elements.altGlyphItem;\n elements.glyphref = elements.glyphRef;\n delete elements.glyphRef;\n }\n }\n\n SVGAnalyzer.prototype.isStandardSvgAttribute = function isStandardSvgAttribute(nodeName, attributeName) {\n return presentationElements[nodeName] && presentationAttributes[attributeName] || elements[nodeName] && elements[nodeName].indexOf(attributeName) !== -1;\n };\n\n return SVGAnalyzer;\n }();\n })();\n }\n\n var elements = exports.elements = svgElements;\n var presentationElements = exports.presentationElements = svgPresentationElements;\n var presentationAttributes = exports.presentationAttributes = svgPresentationAttributes;\n var SVGAnalyzer = exports.SVGAnalyzer = svgAnalyzer || function () {\n function _class11() {\n \n }\n\n _class11.prototype.isStandardSvgAttribute = function isStandardSvgAttribute() {\n return false;\n };\n\n return _class11;\n }();\n\n var ObserverLocator = exports.ObserverLocator = (_temp = _class12 = function () {\n function ObserverLocator(taskQueue, eventManager, dirtyChecker, svgAnalyzer, parser) {\n \n\n this.taskQueue = taskQueue;\n this.eventManager = eventManager;\n this.dirtyChecker = dirtyChecker;\n this.svgAnalyzer = svgAnalyzer;\n this.parser = parser;\n this.adapters = [];\n this.logger = LogManager.getLogger('observer-locator');\n }\n\n ObserverLocator.prototype.getObserver = function getObserver(obj, propertyName) {\n var observersLookup = obj.__observers__;\n var observer = void 0;\n\n if (observersLookup && propertyName in observersLookup) {\n return observersLookup[propertyName];\n }\n\n observer = this.createPropertyObserver(obj, propertyName);\n\n if (!observer.doNotCache) {\n if (observersLookup === undefined) {\n observersLookup = this.getOrCreateObserversLookup(obj);\n }\n\n observersLookup[propertyName] = observer;\n }\n\n return observer;\n };\n\n ObserverLocator.prototype.getOrCreateObserversLookup = function getOrCreateObserversLookup(obj) {\n return obj.__observers__ || this.createObserversLookup(obj);\n };\n\n ObserverLocator.prototype.createObserversLookup = function createObserversLookup(obj) {\n var value = {};\n\n if (!Reflect.defineProperty(obj, '__observers__', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: value\n })) {\n this.logger.warn('Cannot add observers to object', obj);\n }\n\n return value;\n };\n\n ObserverLocator.prototype.addAdapter = function addAdapter(adapter) {\n this.adapters.push(adapter);\n };\n\n ObserverLocator.prototype.getAdapterObserver = function getAdapterObserver(obj, propertyName, descriptor) {\n for (var _i26 = 0, ii = this.adapters.length; _i26 < ii; _i26++) {\n var adapter = this.adapters[_i26];\n var observer = adapter.getObserver(obj, propertyName, descriptor);\n if (observer) {\n return observer;\n }\n }\n return null;\n };\n\n ObserverLocator.prototype.createPropertyObserver = function createPropertyObserver(obj, propertyName) {\n var descriptor = void 0;\n var handler = void 0;\n var xlinkResult = void 0;\n\n if (!(obj instanceof Object)) {\n return new PrimitiveObserver(obj, propertyName);\n }\n\n if (obj instanceof _aureliaPal.DOM.Element) {\n if (propertyName === 'class') {\n return new ClassObserver(obj);\n }\n if (propertyName === 'style' || propertyName === 'css') {\n return new StyleObserver(obj, propertyName);\n }\n handler = this.eventManager.getElementHandler(obj, propertyName);\n if (propertyName === 'value' && obj.tagName.toLowerCase() === 'select') {\n return new SelectValueObserver(obj, handler, this);\n }\n if (propertyName === 'checked' && obj.tagName.toLowerCase() === 'input') {\n return new CheckedObserver(obj, handler, this);\n }\n if (handler) {\n return new ValueAttributeObserver(obj, propertyName, handler);\n }\n xlinkResult = /^xlink:(.+)$/.exec(propertyName);\n if (xlinkResult) {\n return new XLinkAttributeObserver(obj, propertyName, xlinkResult[1]);\n }\n if (propertyName === 'role' && (obj instanceof _aureliaPal.DOM.Element || obj instanceof _aureliaPal.DOM.SVGElement) || /^\\w+:|^data-|^aria-/.test(propertyName) || obj instanceof _aureliaPal.DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName)) {\n return new DataAttributeObserver(obj, propertyName);\n }\n }\n\n descriptor = Object.getPropertyDescriptor(obj, propertyName);\n\n if (hasDeclaredDependencies(descriptor)) {\n return createComputedObserver(obj, propertyName, descriptor, this);\n }\n\n if (descriptor) {\n var existingGetterOrSetter = descriptor.get || descriptor.set;\n if (existingGetterOrSetter) {\n if (existingGetterOrSetter.getObserver) {\n return existingGetterOrSetter.getObserver(obj);\n }\n\n var adapterObserver = this.getAdapterObserver(obj, propertyName, descriptor);\n if (adapterObserver) {\n return adapterObserver;\n }\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n }\n }\n\n if (obj instanceof Array) {\n if (propertyName === 'length') {\n return this.getArrayObserver(obj).getLengthObserver();\n }\n\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n } else if (obj instanceof Map) {\n if (propertyName === 'size') {\n return this.getMapObserver(obj).getLengthObserver();\n }\n\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n } else if (obj instanceof Set) {\n if (propertyName === 'size') {\n return this.getSetObserver(obj).getLengthObserver();\n }\n\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n }\n\n return new SetterObserver(this.taskQueue, obj, propertyName);\n };\n\n ObserverLocator.prototype.getAccessor = function getAccessor(obj, propertyName) {\n if (obj instanceof _aureliaPal.DOM.Element) {\n if (propertyName === 'class' || propertyName === 'style' || propertyName === 'css' || propertyName === 'value' && (obj.tagName.toLowerCase() === 'input' || obj.tagName.toLowerCase() === 'select') || propertyName === 'checked' && obj.tagName.toLowerCase() === 'input' || propertyName === 'model' && obj.tagName.toLowerCase() === 'input' || /^xlink:.+$/.exec(propertyName)) {\n return this.getObserver(obj, propertyName);\n }\n if (/^\\w+:|^data-|^aria-/.test(propertyName) || obj instanceof _aureliaPal.DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName)) {\n return dataAttributeAccessor;\n }\n }\n return propertyAccessor;\n };\n\n ObserverLocator.prototype.getArrayObserver = function getArrayObserver(array) {\n return _getArrayObserver(this.taskQueue, array);\n };\n\n ObserverLocator.prototype.getMapObserver = function getMapObserver(map) {\n return _getMapObserver(this.taskQueue, map);\n };\n\n ObserverLocator.prototype.getSetObserver = function getSetObserver(set) {\n return _getSetObserver(this.taskQueue, set);\n };\n\n return ObserverLocator;\n }(), _class12.inject = [_aureliaTaskQueue.TaskQueue, EventManager, DirtyChecker, SVGAnalyzer, Parser], _temp);\n\n var ObjectObservationAdapter = exports.ObjectObservationAdapter = function () {\n function ObjectObservationAdapter() {\n \n }\n\n ObjectObservationAdapter.prototype.getObserver = function getObserver(object, propertyName, descriptor) {\n throw new Error('BindingAdapters must implement getObserver(object, propertyName).');\n };\n\n return ObjectObservationAdapter;\n }();\n\n var BindingExpression = exports.BindingExpression = function () {\n function BindingExpression(observerLocator, targetProperty, sourceExpression, mode, lookupFunctions, attribute) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.sourceExpression = sourceExpression;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n this.attribute = attribute;\n this.discrete = false;\n }\n\n BindingExpression.prototype.createBinding = function createBinding(target) {\n return new Binding(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.mode, this.lookupFunctions);\n };\n\n return BindingExpression;\n }();\n\n var targetContext = 'Binding:target';\n\n var Binding = exports.Binding = (_dec10 = connectable(), _dec10(_class13 = function () {\n function Binding(observerLocator, sourceExpression, target, targetProperty, mode, lookupFunctions) {\n \n\n this.observerLocator = observerLocator;\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.targetProperty = targetProperty;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n }\n\n Binding.prototype.updateTarget = function updateTarget(value) {\n this.targetObserver.setValue(value, this.target, this.targetProperty);\n };\n\n Binding.prototype.updateSource = function updateSource(value) {\n this.sourceExpression.assign(this.source, value, this.lookupFunctions);\n };\n\n Binding.prototype.call = function call(context, newValue, oldValue) {\n if (!this.isBound) {\n return;\n }\n if (context === sourceContext) {\n oldValue = this.targetObserver.getValue(this.target, this.targetProperty);\n newValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n if (newValue !== oldValue) {\n this.updateTarget(newValue);\n }\n if (this.mode !== bindingMode.oneTime) {\n this._version++;\n this.sourceExpression.connect(this, this.source);\n this.unobserve(false);\n }\n return;\n }\n if (context === targetContext) {\n if (newValue !== this.sourceExpression.evaluate(this.source, this.lookupFunctions)) {\n this.updateSource(newValue);\n }\n return;\n }\n throw new Error('Unexpected call context ' + context);\n };\n\n Binding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n\n var mode = this.mode;\n if (!this.targetObserver) {\n var method = mode === bindingMode.twoWay ? 'getObserver' : 'getAccessor';\n this.targetObserver = this.observerLocator[method](this.target, this.targetProperty);\n }\n\n if ('bind' in this.targetObserver) {\n this.targetObserver.bind();\n }\n var value = this.sourceExpression.evaluate(source, this.lookupFunctions);\n this.updateTarget(value);\n\n if (mode === bindingMode.oneWay) {\n enqueueBindingConnect(this);\n } else if (mode === bindingMode.twoWay) {\n this.sourceExpression.connect(this, source);\n this.targetObserver.subscribe(targetContext, this);\n }\n };\n\n Binding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n if ('unbind' in this.targetObserver) {\n this.targetObserver.unbind();\n }\n if (this.targetObserver.unsubscribe) {\n this.targetObserver.unsubscribe(targetContext, this);\n }\n this.unobserve(true);\n };\n\n Binding.prototype.connect = function connect(evaluate) {\n if (!this.isBound) {\n return;\n }\n if (evaluate) {\n var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.updateTarget(value);\n }\n this.sourceExpression.connect(this, this.source);\n };\n\n return Binding;\n }()) || _class13);\n\n var CallExpression = exports.CallExpression = function () {\n function CallExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.sourceExpression = sourceExpression;\n this.lookupFunctions = lookupFunctions;\n }\n\n CallExpression.prototype.createBinding = function createBinding(target) {\n return new Call(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.lookupFunctions);\n };\n\n return CallExpression;\n }();\n\n var Call = exports.Call = function () {\n function Call(observerLocator, sourceExpression, target, targetProperty, lookupFunctions) {\n \n\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.targetProperty = observerLocator.getObserver(target, targetProperty);\n this.lookupFunctions = lookupFunctions;\n }\n\n Call.prototype.callSource = function callSource($event) {\n var overrideContext = this.source.overrideContext;\n Object.assign(overrideContext, $event);\n overrideContext.$event = $event;\n var mustEvaluate = true;\n var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate);\n delete overrideContext.$event;\n for (var prop in $event) {\n delete overrideContext[prop];\n }\n return result;\n };\n\n Call.prototype.bind = function bind(source) {\n var _this27 = this;\n\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n this.targetProperty.setValue(function ($event) {\n return _this27.callSource($event);\n });\n };\n\n Call.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this.targetProperty.setValue(null);\n };\n\n return Call;\n }();\n\n var ValueConverterResource = exports.ValueConverterResource = function () {\n function ValueConverterResource(name) {\n \n\n this.name = name;\n }\n\n ValueConverterResource.convention = function convention(name) {\n if (name.endsWith('ValueConverter')) {\n return new ValueConverterResource(camelCase(name.substring(0, name.length - 14)));\n }\n };\n\n ValueConverterResource.prototype.initialize = function initialize(container, target) {\n this.instance = container.get(target);\n };\n\n ValueConverterResource.prototype.register = function register(registry, name) {\n registry.registerValueConverter(name || this.name, this.instance);\n };\n\n ValueConverterResource.prototype.load = function load(container, target) {};\n\n return ValueConverterResource;\n }();\n\n function valueConverter(nameOrTarget) {\n if (nameOrTarget === undefined || typeof nameOrTarget === 'string') {\n return function (target) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new ValueConverterResource(nameOrTarget), target);\n };\n }\n\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new ValueConverterResource(), nameOrTarget);\n }\n\n var BindingBehaviorResource = exports.BindingBehaviorResource = function () {\n function BindingBehaviorResource(name) {\n \n\n this.name = name;\n }\n\n BindingBehaviorResource.convention = function convention(name) {\n if (name.endsWith('BindingBehavior')) {\n return new BindingBehaviorResource(camelCase(name.substring(0, name.length - 15)));\n }\n };\n\n BindingBehaviorResource.prototype.initialize = function initialize(container, target) {\n this.instance = container.get(target);\n };\n\n BindingBehaviorResource.prototype.register = function register(registry, name) {\n registry.registerBindingBehavior(name || this.name, this.instance);\n };\n\n BindingBehaviorResource.prototype.load = function load(container, target) {};\n\n return BindingBehaviorResource;\n }();\n\n function bindingBehavior(nameOrTarget) {\n if (nameOrTarget === undefined || typeof nameOrTarget === 'string') {\n return function (target) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new BindingBehaviorResource(nameOrTarget), target);\n };\n }\n\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new BindingBehaviorResource(), nameOrTarget);\n }\n\n var ListenerExpression = exports.ListenerExpression = function () {\n function ListenerExpression(eventManager, targetEvent, sourceExpression, delegationStrategy, preventDefault, lookupFunctions) {\n \n\n this.eventManager = eventManager;\n this.targetEvent = targetEvent;\n this.sourceExpression = sourceExpression;\n this.delegationStrategy = delegationStrategy;\n this.discrete = true;\n this.preventDefault = preventDefault;\n this.lookupFunctions = lookupFunctions;\n }\n\n ListenerExpression.prototype.createBinding = function createBinding(target) {\n return new Listener(this.eventManager, this.targetEvent, this.delegationStrategy, this.sourceExpression, target, this.preventDefault, this.lookupFunctions);\n };\n\n return ListenerExpression;\n }();\n\n var Listener = exports.Listener = function () {\n function Listener(eventManager, targetEvent, delegationStrategy, sourceExpression, target, preventDefault, lookupFunctions) {\n \n\n this.eventManager = eventManager;\n this.targetEvent = targetEvent;\n this.delegationStrategy = delegationStrategy;\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.preventDefault = preventDefault;\n this.lookupFunctions = lookupFunctions;\n }\n\n Listener.prototype.callSource = function callSource(event) {\n var overrideContext = this.source.overrideContext;\n overrideContext.$event = event;\n var mustEvaluate = true;\n var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate);\n delete overrideContext.$event;\n if (result !== true && this.preventDefault) {\n event.preventDefault();\n }\n return result;\n };\n\n Listener.prototype.bind = function bind(source) {\n var _this28 = this;\n\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n this._disposeListener = this.eventManager.addEventListener(this.target, this.targetEvent, function (event) {\n return _this28.callSource(event);\n }, this.delegationStrategy);\n };\n\n Listener.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this._disposeListener();\n this._disposeListener = null;\n };\n\n return Listener;\n }();\n\n function getAU(element) {\n var au = element.au;\n\n if (au === undefined) {\n throw new Error('No Aurelia APIs are defined for the element: \"' + element.tagName + '\".');\n }\n\n return au;\n }\n\n var NameExpression = exports.NameExpression = function () {\n function NameExpression(sourceExpression, apiName, lookupFunctions) {\n \n\n this.sourceExpression = sourceExpression;\n this.apiName = apiName;\n this.lookupFunctions = lookupFunctions;\n this.discrete = true;\n }\n\n NameExpression.prototype.createBinding = function createBinding(target) {\n return new NameBinder(this.sourceExpression, NameExpression.locateAPI(target, this.apiName), this.lookupFunctions);\n };\n\n NameExpression.locateAPI = function locateAPI(element, apiName) {\n switch (apiName) {\n case 'element':\n return element;\n case 'controller':\n return getAU(element).controller;\n case 'view-model':\n return getAU(element).controller.viewModel;\n case 'view':\n return getAU(element).controller.view;\n default:\n var target = getAU(element)[apiName];\n\n if (target === undefined) {\n throw new Error('Attempted to reference \"' + apiName + '\", but it was not found amongst the target\\'s API.');\n }\n\n return target.viewModel;\n }\n };\n\n return NameExpression;\n }();\n\n var NameBinder = function () {\n function NameBinder(sourceExpression, target, lookupFunctions) {\n \n\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.lookupFunctions = lookupFunctions;\n }\n\n NameBinder.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n this.sourceExpression.assign(this.source, this.target, this.lookupFunctions);\n };\n\n NameBinder.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.evaluate(this.source, this.lookupFunctions) === this.target) {\n this.sourceExpression.assign(this.source, null, this.lookupFunctions);\n }\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n };\n\n return NameBinder;\n }();\n\n var LookupFunctions = {\n bindingBehaviors: function bindingBehaviors(name) {\n return null;\n },\n valueConverters: function valueConverters(name) {\n return null;\n }\n };\n\n var BindingEngine = exports.BindingEngine = (_temp2 = _class14 = function () {\n function BindingEngine(observerLocator, parser) {\n \n\n this.observerLocator = observerLocator;\n this.parser = parser;\n }\n\n BindingEngine.prototype.createBindingExpression = function createBindingExpression(targetProperty, sourceExpression) {\n var mode = arguments.length <= 2 || arguments[2] === undefined ? bindingMode.oneWay : arguments[2];\n var lookupFunctions = arguments.length <= 3 || arguments[3] === undefined ? LookupFunctions : arguments[3];\n\n return new BindingExpression(this.observerLocator, targetProperty, this.parser.parse(sourceExpression), mode, lookupFunctions);\n };\n\n BindingEngine.prototype.propertyObserver = function propertyObserver(obj, propertyName) {\n var _this29 = this;\n\n return {\n subscribe: function subscribe(callback) {\n var observer = _this29.observerLocator.getObserver(obj, propertyName);\n observer.subscribe(callback);\n return {\n dispose: function dispose() {\n return observer.unsubscribe(callback);\n }\n };\n }\n };\n };\n\n BindingEngine.prototype.collectionObserver = function collectionObserver(collection) {\n var _this30 = this;\n\n return {\n subscribe: function subscribe(callback) {\n var observer = void 0;\n if (collection instanceof Array) {\n observer = _this30.observerLocator.getArrayObserver(collection);\n } else if (collection instanceof Map) {\n observer = _this30.observerLocator.getMapObserver(collection);\n } else if (collection instanceof Set) {\n observer = _this30.observerLocator.getSetObserver(collection);\n } else {\n throw new Error('collection must be an instance of Array, Map or Set.');\n }\n observer.subscribe(callback);\n return {\n dispose: function dispose() {\n return observer.unsubscribe(callback);\n }\n };\n }\n };\n };\n\n BindingEngine.prototype.expressionObserver = function expressionObserver(bindingContext, expression) {\n var scope = { bindingContext: bindingContext, overrideContext: createOverrideContext(bindingContext) };\n return new ExpressionObserver(scope, this.parser.parse(expression), this.observerLocator, LookupFunctions);\n };\n\n BindingEngine.prototype.parseExpression = function parseExpression(expression) {\n return this.parser.parse(expression);\n };\n\n BindingEngine.prototype.registerAdapter = function registerAdapter(adapter) {\n this.observerLocator.addAdapter(adapter);\n };\n\n return BindingEngine;\n }(), _class14.inject = [ObserverLocator, Parser], _temp2);\n\n\n var setProto = Set.prototype;\n\n function _getSetObserver(taskQueue, set) {\n return ModifySetObserver.for(taskQueue, set);\n }\n\n exports.getSetObserver = _getSetObserver;\n\n var ModifySetObserver = function (_ModifyCollectionObse3) {\n _inherits(ModifySetObserver, _ModifyCollectionObse3);\n\n function ModifySetObserver(taskQueue, set) {\n \n\n return _possibleConstructorReturn(this, _ModifyCollectionObse3.call(this, taskQueue, set));\n }\n\n ModifySetObserver.for = function _for(taskQueue, set) {\n if (!('__set_observer__' in set)) {\n Reflect.defineProperty(set, '__set_observer__', {\n value: ModifySetObserver.create(taskQueue, set),\n enumerable: false, configurable: false\n });\n }\n return set.__set_observer__;\n };\n\n ModifySetObserver.create = function create(taskQueue, set) {\n var observer = new ModifySetObserver(taskQueue, set);\n\n var proto = setProto;\n if (proto.add !== set.add || proto.delete !== set.delete || proto.clear !== set.clear) {\n proto = {\n add: set.add,\n delete: set.delete,\n clear: set.clear\n };\n }\n\n set.add = function () {\n var type = 'add';\n var oldSize = set.size;\n var methodCallResult = proto.add.apply(set, arguments);\n var hasValue = set.size === oldSize;\n if (!hasValue) {\n observer.addChangeRecord({\n type: type,\n object: set,\n value: Array.from(set).pop()\n });\n }\n return methodCallResult;\n };\n\n set.delete = function () {\n var hasValue = set.has(arguments[0]);\n var methodCallResult = proto.delete.apply(set, arguments);\n if (hasValue) {\n observer.addChangeRecord({\n type: 'delete',\n object: set,\n value: arguments[0]\n });\n }\n return methodCallResult;\n };\n\n set.clear = function () {\n var methodCallResult = proto.clear.apply(set, arguments);\n observer.addChangeRecord({\n type: 'clear',\n object: set\n });\n return methodCallResult;\n };\n\n return observer;\n };\n\n return ModifySetObserver;\n }(ModifyCollectionObserver);\n\n function observable(targetOrConfig, key, descriptor) {\n function deco(target, key, descriptor, config) {\n var isClassDecorator = key === undefined;\n if (isClassDecorator) {\n target = target.prototype;\n key = typeof config === 'string' ? config : config.name;\n }\n\n var innerPropertyName = '_' + key;\n var innerPropertyDescriptor = {\n configurable: true,\n enumerable: false,\n writable: true\n };\n\n var callbackName = config && config.changeHandler || key + 'Changed';\n\n if (descriptor) {\n if (typeof descriptor.initializer === 'function') {\n innerPropertyDescriptor.value = descriptor.initializer();\n }\n } else {\n descriptor = {};\n }\n\n if (!('enumerable' in descriptor)) {\n descriptor.enumerable = true;\n }\n\n delete descriptor.value;\n delete descriptor.writable;\n delete descriptor.initializer;\n\n Reflect.defineProperty(target, innerPropertyName, innerPropertyDescriptor);\n\n descriptor.get = function () {\n return this[innerPropertyName];\n };\n descriptor.set = function (newValue) {\n var oldValue = this[innerPropertyName];\n if (newValue === oldValue) {\n return;\n }\n\n this[innerPropertyName] = newValue;\n Reflect.defineProperty(this, innerPropertyName, { enumerable: false });\n\n if (this[callbackName]) {\n this[callbackName](newValue, oldValue, key);\n }\n };\n\n descriptor.get.dependencies = [innerPropertyName];\n\n if (isClassDecorator) {\n Reflect.defineProperty(target, key, descriptor);\n } else {\n return descriptor;\n }\n }\n\n if (key === undefined) {\n return function (t, k, d) {\n return deco(t, k, d, targetOrConfig);\n };\n }\n return deco(targetOrConfig, key, descriptor);\n }\n});\r\ndefine('aurelia-bootstrapper',['module', 'exports', 'aurelia-pal', 'aurelia-polyfills'], function (module, exports, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.starting = undefined;\n exports.bootstrap = bootstrap;\n\n\n var bootstrapPromises = [];\n var startResolve = void 0;\n\n var startPromise = new Promise(function (resolve) {\n return startResolve = resolve;\n });\n var host = _aureliaPal.PLATFORM.global;\n var isNodeLike = typeof process !== 'undefined' && !process.browser;\n\n function ready() {\n if (!host.document || host.document.readyState === 'complete') {\n return Promise.resolve();\n }\n\n return new Promise(function (resolve) {\n host.document.addEventListener('DOMContentLoaded', completed);\n host.addEventListener('load', completed);\n\n function completed() {\n host.document.removeEventListener('DOMContentLoaded', completed);\n host.removeEventListener('load', completed);\n resolve();\n }\n });\n }\n\n function createLoader() {\n if (_aureliaPal.PLATFORM.Loader) {\n return Promise.resolve(new _aureliaPal.PLATFORM.Loader());\n }\n\n if (typeof AURELIA_WEBPACK_2_0 === 'undefined') {\n if (typeof __webpack_require__ !== 'undefined') {\n var m = __webpack_require__(require.resolve('aurelia-loader-webpack'));\n return Promise.resolve(new m.WebpackLoader());\n }\n\n if (host.System && typeof host.System.config === 'function') {\n return host.System.normalize('aurelia-bootstrapper').then(function (bsn) {\n return host.System.normalize('aurelia-loader-default', bsn);\n }).then(function (loaderName) {\n return host.System.import(loaderName).then(function (m) {\n return new m.DefaultLoader();\n });\n });\n }\n\n if (typeof host.require === 'function' && typeof host.require.version === 'string') {\n return new Promise(function (resolve, reject) {\n return host.require(['aurelia-loader-default'], function (m) {\n return resolve(new m.DefaultLoader());\n }, reject);\n });\n }\n\n if (isNodeLike && typeof module !== 'undefined' && typeof module.require !== 'undefined') {\n var _m = module.require('aurelia-loader-nodejs');\n return Promise.resolve(new _m.NodeJsLoader());\n }\n }\n\n return Promise.reject('No PLATFORM.Loader is defined and there is neither a System API (ES6) or a Require API (AMD) globally available to load your app.');\n }\n\n function initializePal(loader) {\n var type = void 0;\n\n var isRenderer = isNodeLike && (process.type === 'renderer' || process.versions['node-webkit']);\n\n if (isNodeLike && !isRenderer) {\n type = 'nodejs';\n } else if (typeof window !== 'undefined') {\n type = 'browser';\n } else if (typeof self !== 'undefined') {\n type = 'worker';\n } else {\n throw new Error('Could not determine platform implementation to load.');\n }\n\n return loader.loadModule('aurelia-pal-' + type).then(function (palModule) {\n return type === 'nodejs' && !_aureliaPal.isInitialized && palModule.globalize() || palModule.initialize();\n });\n }\n\n function preparePlatform(loader) {\n var map = function map(moduleId, relativeTo) {\n return loader.normalize(moduleId, relativeTo).then(function (normalized) {\n loader.map(moduleId, normalized);\n return normalized;\n });\n };\n\n return initializePal(loader).then(function () {\n return loader.normalize('aurelia-bootstrapper');\n }).then(function (bootstrapperName) {\n var frameworkPromise = map(_aureliaPal.PLATFORM.moduleName('aurelia-framework', { exports: ['Aurelia'] }), bootstrapperName);\n\n return Promise.all([frameworkPromise, frameworkPromise.then(function (frameworkName) {\n return map('aurelia-dependency-injection', frameworkName);\n }), map('aurelia-router', bootstrapperName), map('aurelia-logging-console', bootstrapperName)]);\n }).then(function (_ref) {\n var frameworkName = _ref[0];\n return loader.loadModule(frameworkName);\n }).then(function (fx) {\n return startResolve(function () {\n return new fx.Aurelia(loader);\n });\n });\n }\n\n function config(appHost, configModuleId, aurelia) {\n aurelia.host = appHost;\n aurelia.configModuleId = configModuleId || null;\n\n if (configModuleId) {\n return aurelia.loader.loadModule(configModuleId).then(function (customConfig) {\n if (!customConfig.configure) {\n throw new Error('Cannot initialize module \\'' + configModuleId + '\\' without a configure function.');\n }\n\n return customConfig.configure(aurelia);\n });\n }\n\n aurelia.use.standardConfiguration().developmentLogging();\n\n return aurelia.start().then(function () {\n return aurelia.setRoot();\n });\n }\n\n function run() {\n return ready().then(createLoader).then(preparePlatform).then(function () {\n var appHosts = host.document.querySelectorAll('[aurelia-app],[data-aurelia-app]');\n for (var i = 0, ii = appHosts.length; i < ii; ++i) {\n var appHost = appHosts[i];\n var moduleId = appHost.getAttribute('aurelia-app') || appHost.getAttribute('data-aurelia-app');\n bootstrap(config.bind(null, appHost, moduleId));\n }\n\n var toConsole = console.error.bind(console);\n var bootstraps = bootstrapPromises.map(function (p) {\n return p.catch(toConsole);\n });\n bootstrapPromises = null;\n return Promise.all(bootstraps);\n });\n }\n\n function bootstrap(configure) {\n var p = startPromise.then(function (factory) {\n return configure(factory());\n });\n if (bootstrapPromises) bootstrapPromises.push(p);\n return p;\n }\n\n var starting = exports.starting = run();\n});\r\ndefine('aurelia-dependency-injection',['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aureliaMetadata, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Container = exports.InvocationHandler = exports._emptyParameters = exports.SingletonRegistration = exports.TransientRegistration = exports.FactoryInvoker = exports.NewInstance = exports.Factory = exports.StrategyResolver = exports.Parent = exports.Optional = exports.All = exports.Lazy = exports.resolver = undefined;\n exports.getDecoratorDependencies = getDecoratorDependencies;\n exports.lazy = lazy;\n exports.all = all;\n exports.optional = optional;\n exports.parent = parent;\n exports.factory = factory;\n exports.newInstance = newInstance;\n exports.invoker = invoker;\n exports.invokeAsFactory = invokeAsFactory;\n exports.registration = registration;\n exports.transient = transient;\n exports.singleton = singleton;\n exports.autoinject = autoinject;\n exports.inject = inject;\n\n \n\n var _dec, _class, _dec2, _class3, _dec3, _class5, _dec4, _class7, _dec5, _class9, _dec6, _class11, _dec7, _class13, _classInvokers;\n\n var resolver = exports.resolver = _aureliaMetadata.protocol.create('aurelia:resolver', function (target) {\n if (!(typeof target.get === 'function')) {\n return 'Resolvers must implement: get(container: Container, key: any): any';\n }\n\n return true;\n });\n\n var Lazy = exports.Lazy = (_dec = resolver(), _dec(_class = function () {\n function Lazy(key) {\n \n\n this._key = key;\n }\n\n Lazy.prototype.get = function get(container) {\n var _this = this;\n\n return function () {\n return container.get(_this._key);\n };\n };\n\n Lazy.of = function of(key) {\n return new Lazy(key);\n };\n\n return Lazy;\n }()) || _class);\n var All = exports.All = (_dec2 = resolver(), _dec2(_class3 = function () {\n function All(key) {\n \n\n this._key = key;\n }\n\n All.prototype.get = function get(container) {\n return container.getAll(this._key);\n };\n\n All.of = function of(key) {\n return new All(key);\n };\n\n return All;\n }()) || _class3);\n var Optional = exports.Optional = (_dec3 = resolver(), _dec3(_class5 = function () {\n function Optional(key) {\n var checkParent = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n \n\n this._key = key;\n this._checkParent = checkParent;\n }\n\n Optional.prototype.get = function get(container) {\n if (container.hasResolver(this._key, this._checkParent)) {\n return container.get(this._key);\n }\n\n return null;\n };\n\n Optional.of = function of(key) {\n var checkParent = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n return new Optional(key, checkParent);\n };\n\n return Optional;\n }()) || _class5);\n var Parent = exports.Parent = (_dec4 = resolver(), _dec4(_class7 = function () {\n function Parent(key) {\n \n\n this._key = key;\n }\n\n Parent.prototype.get = function get(container) {\n return container.parent ? container.parent.get(this._key) : null;\n };\n\n Parent.of = function of(key) {\n return new Parent(key);\n };\n\n return Parent;\n }()) || _class7);\n var StrategyResolver = exports.StrategyResolver = (_dec5 = resolver(), _dec5(_class9 = function () {\n function StrategyResolver(strategy, state) {\n \n\n this.strategy = strategy;\n this.state = state;\n }\n\n StrategyResolver.prototype.get = function get(container, key) {\n switch (this.strategy) {\n case 0:\n return this.state;\n case 1:\n var singleton = container.invoke(this.state);\n this.state = singleton;\n this.strategy = 0;\n return singleton;\n case 2:\n return container.invoke(this.state);\n case 3:\n return this.state(container, key, this);\n case 4:\n return this.state[0].get(container, key);\n case 5:\n return container.get(this.state);\n default:\n throw new Error('Invalid strategy: ' + this.strategy);\n }\n };\n\n return StrategyResolver;\n }()) || _class9);\n var Factory = exports.Factory = (_dec6 = resolver(), _dec6(_class11 = function () {\n function Factory(key) {\n \n\n this._key = key;\n }\n\n Factory.prototype.get = function get(container) {\n var _this2 = this;\n\n return function () {\n for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n\n return container.invoke(_this2._key, rest);\n };\n };\n\n Factory.of = function of(key) {\n return new Factory(key);\n };\n\n return Factory;\n }()) || _class11);\n var NewInstance = exports.NewInstance = (_dec7 = resolver(), _dec7(_class13 = function () {\n function NewInstance(key) {\n \n\n this.key = key;\n this.asKey = key;\n\n for (var _len2 = arguments.length, dynamicDependencies = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n dynamicDependencies[_key2 - 1] = arguments[_key2];\n }\n\n this.dynamicDependencies = dynamicDependencies;\n }\n\n NewInstance.prototype.get = function get(container) {\n var dynamicDependencies = this.dynamicDependencies.length > 0 ? this.dynamicDependencies.map(function (dependency) {\n return dependency['protocol:aurelia:resolver'] ? dependency.get(container) : container.get(dependency);\n }) : undefined;\n var instance = container.invoke(this.key, dynamicDependencies);\n container.registerInstance(this.asKey, instance);\n return instance;\n };\n\n NewInstance.prototype.as = function as(key) {\n this.asKey = key;\n return this;\n };\n\n NewInstance.of = function of(key) {\n for (var _len3 = arguments.length, dynamicDependencies = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n dynamicDependencies[_key3 - 1] = arguments[_key3];\n }\n\n return new (Function.prototype.bind.apply(NewInstance, [null].concat([key], dynamicDependencies)))();\n };\n\n return NewInstance;\n }()) || _class13);\n function getDecoratorDependencies(target, name) {\n var dependencies = target.inject;\n if (typeof dependencies === 'function') {\n throw new Error('Decorator ' + name + ' cannot be used with \"inject()\". Please use an array instead.');\n }\n if (!dependencies) {\n dependencies = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target).slice();\n target.inject = dependencies;\n }\n\n return dependencies;\n }\n\n function lazy(keyValue) {\n return function (target, key, index) {\n var params = getDecoratorDependencies(target, 'lazy');\n params[index] = Lazy.of(keyValue);\n };\n }\n\n function all(keyValue) {\n return function (target, key, index) {\n var params = getDecoratorDependencies(target, 'all');\n params[index] = All.of(keyValue);\n };\n }\n\n function optional() {\n var checkParentOrTarget = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n var deco = function deco(checkParent) {\n return function (target, key, index) {\n var params = getDecoratorDependencies(target, 'optional');\n params[index] = Optional.of(params[index], checkParent);\n };\n };\n if (typeof checkParentOrTarget === 'boolean') {\n return deco(checkParentOrTarget);\n }\n return deco(true);\n }\n\n function parent(target, key, index) {\n var params = getDecoratorDependencies(target, 'parent');\n params[index] = Parent.of(params[index]);\n }\n\n function factory(keyValue, asValue) {\n return function (target, key, index) {\n var params = getDecoratorDependencies(target, 'factory');\n var factory = Factory.of(keyValue);\n params[index] = asValue ? factory.as(asValue) : factory;\n };\n }\n\n function newInstance(asKeyOrTarget) {\n for (var _len4 = arguments.length, dynamicDependencies = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n dynamicDependencies[_key4 - 1] = arguments[_key4];\n }\n\n var deco = function deco(asKey) {\n return function (target, key, index) {\n var params = getDecoratorDependencies(target, 'newInstance');\n params[index] = NewInstance.of.apply(NewInstance, [params[index]].concat(dynamicDependencies));\n if (!!asKey) {\n params[index].as(asKey);\n }\n };\n };\n if (arguments.length >= 1) {\n return deco(asKeyOrTarget);\n }\n return deco();\n }\n\n function invoker(value) {\n return function (target) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.invoker, value, target);\n };\n }\n\n function invokeAsFactory(potentialTarget) {\n var deco = function deco(target) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);\n };\n\n return potentialTarget ? deco(potentialTarget) : deco;\n }\n\n var FactoryInvoker = exports.FactoryInvoker = function () {\n function FactoryInvoker() {\n \n }\n\n FactoryInvoker.prototype.invoke = function invoke(container, fn, dependencies) {\n var i = dependencies.length;\n var args = new Array(i);\n\n while (i--) {\n args[i] = container.get(dependencies[i]);\n }\n\n return fn.apply(undefined, args);\n };\n\n FactoryInvoker.prototype.invokeWithDynamicDependencies = function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n var i = staticDependencies.length;\n var args = new Array(i);\n\n while (i--) {\n args[i] = container.get(staticDependencies[i]);\n }\n\n if (dynamicDependencies !== undefined) {\n args = args.concat(dynamicDependencies);\n }\n\n return fn.apply(undefined, args);\n };\n\n return FactoryInvoker;\n }();\n\n FactoryInvoker.instance = new FactoryInvoker();\n\n function registration(value) {\n return function (target) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.registration, value, target);\n };\n }\n\n function transient(key) {\n return registration(new TransientRegistration(key));\n }\n\n function singleton(keyOrRegisterInChild) {\n var registerInChild = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));\n }\n\n var TransientRegistration = exports.TransientRegistration = function () {\n function TransientRegistration(key) {\n \n\n this._key = key;\n }\n\n TransientRegistration.prototype.registerResolver = function registerResolver(container, key, fn) {\n var existingResolver = container.getResolver(this._key || key);\n return existingResolver === undefined ? container.registerTransient(this._key || key, fn) : existingResolver;\n };\n\n return TransientRegistration;\n }();\n\n var SingletonRegistration = exports.SingletonRegistration = function () {\n function SingletonRegistration(keyOrRegisterInChild) {\n var registerInChild = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n \n\n if (typeof keyOrRegisterInChild === 'boolean') {\n this._registerInChild = keyOrRegisterInChild;\n } else {\n this._key = keyOrRegisterInChild;\n this._registerInChild = registerInChild;\n }\n }\n\n SingletonRegistration.prototype.registerResolver = function registerResolver(container, key, fn) {\n var targetContainer = this._registerInChild ? container : container.root;\n var existingResolver = targetContainer.getResolver(this._key || key);\n return existingResolver === undefined ? targetContainer.registerSingleton(this._key || key, fn) : existingResolver;\n };\n\n return SingletonRegistration;\n }();\n\n function validateKey(key) {\n if (key === null || key === undefined) {\n throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n }\n }\n var _emptyParameters = exports._emptyParameters = Object.freeze([]);\n\n _aureliaMetadata.metadata.registration = 'aurelia:registration';\n _aureliaMetadata.metadata.invoker = 'aurelia:invoker';\n\n var resolverDecorates = resolver.decorates;\n\n var InvocationHandler = exports.InvocationHandler = function () {\n function InvocationHandler(fn, invoker, dependencies) {\n \n\n this.fn = fn;\n this.invoker = invoker;\n this.dependencies = dependencies;\n }\n\n InvocationHandler.prototype.invoke = function invoke(container, dynamicDependencies) {\n return dynamicDependencies !== undefined ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies) : this.invoker.invoke(container, this.fn, this.dependencies);\n };\n\n return InvocationHandler;\n }();\n\n function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n var i = staticDependencies.length;\n var args = new Array(i);\n\n while (i--) {\n args[i] = container.get(staticDependencies[i]);\n }\n\n if (dynamicDependencies !== undefined) {\n args = args.concat(dynamicDependencies);\n }\n\n return Reflect.construct(fn, args);\n }\n\n var classInvokers = (_classInvokers = {}, _classInvokers[0] = {\n invoke: function invoke(container, Type) {\n return new Type();\n },\n\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers[1] = {\n invoke: function invoke(container, Type, deps) {\n return new Type(container.get(deps[0]));\n },\n\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers[2] = {\n invoke: function invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]));\n },\n\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers[3] = {\n invoke: function invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]));\n },\n\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers[4] = {\n invoke: function invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]));\n },\n\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers[5] = {\n invoke: function invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]), container.get(deps[4]));\n },\n\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers.fallback = {\n invoke: invokeWithDynamicDependencies,\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }, _classInvokers);\n\n function getDependencies(f) {\n if (!f.hasOwnProperty('inject')) {\n return [];\n }\n\n if (typeof f.inject === 'function') {\n return f.inject();\n }\n\n return f.inject;\n }\n\n var Container = exports.Container = function () {\n function Container(configuration) {\n \n\n if (configuration === undefined) {\n configuration = {};\n }\n\n this._configuration = configuration;\n this._onHandlerCreated = configuration.onHandlerCreated;\n this._handlers = configuration.handlers || (configuration.handlers = new Map());\n this._resolvers = new Map();\n this.root = this;\n this.parent = null;\n }\n\n Container.prototype.makeGlobal = function makeGlobal() {\n Container.instance = this;\n return this;\n };\n\n Container.prototype.setHandlerCreatedCallback = function setHandlerCreatedCallback(onHandlerCreated) {\n this._onHandlerCreated = onHandlerCreated;\n this._configuration.onHandlerCreated = onHandlerCreated;\n };\n\n Container.prototype.registerInstance = function registerInstance(key, instance) {\n return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));\n };\n\n Container.prototype.registerSingleton = function registerSingleton(key, fn) {\n return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));\n };\n\n Container.prototype.registerTransient = function registerTransient(key, fn) {\n return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));\n };\n\n Container.prototype.registerHandler = function registerHandler(key, handler) {\n return this.registerResolver(key, new StrategyResolver(3, handler));\n };\n\n Container.prototype.registerAlias = function registerAlias(originalKey, aliasKey) {\n return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));\n };\n\n Container.prototype.registerResolver = function registerResolver(key, resolver) {\n validateKey(key);\n\n var allResolvers = this._resolvers;\n var result = allResolvers.get(key);\n\n if (result === undefined) {\n allResolvers.set(key, resolver);\n } else if (result.strategy === 4) {\n result.state.push(resolver);\n } else {\n allResolvers.set(key, new StrategyResolver(4, [result, resolver]));\n }\n\n return resolver;\n };\n\n Container.prototype.autoRegister = function autoRegister(key, fn) {\n fn = fn === undefined ? key : fn;\n\n if (typeof fn === 'function') {\n var _registration = _aureliaMetadata.metadata.get(_aureliaMetadata.metadata.registration, fn);\n\n if (_registration === undefined) {\n return this.registerResolver(key, new StrategyResolver(1, fn));\n }\n\n return _registration.registerResolver(this, key, fn);\n }\n\n return this.registerResolver(key, new StrategyResolver(0, fn));\n };\n\n Container.prototype.autoRegisterAll = function autoRegisterAll(fns) {\n var i = fns.length;\n while (i--) {\n this.autoRegister(fns[i]);\n }\n };\n\n Container.prototype.unregister = function unregister(key) {\n this._resolvers.delete(key);\n };\n\n Container.prototype.hasResolver = function hasResolver(key) {\n var checkParent = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n validateKey(key);\n\n return this._resolvers.has(key) || checkParent && this.parent !== null && this.parent.hasResolver(key, checkParent);\n };\n\n Container.prototype.getResolver = function getResolver(key) {\n return this._resolvers.get(key);\n };\n\n Container.prototype.get = function get(key) {\n validateKey(key);\n\n if (key === Container) {\n return this;\n }\n\n if (resolverDecorates(key)) {\n return key.get(this, key);\n }\n\n var resolver = this._resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return this.autoRegister(key).get(this, key);\n }\n\n var _registration2 = _aureliaMetadata.metadata.get(_aureliaMetadata.metadata.registration, key);\n\n if (_registration2 === undefined) {\n return this.parent._get(key);\n }\n\n return _registration2.registerResolver(this, key, key).get(this, key);\n }\n\n return resolver.get(this, key);\n };\n\n Container.prototype._get = function _get(key) {\n var resolver = this._resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return this.autoRegister(key).get(this, key);\n }\n\n return this.parent._get(key);\n }\n\n return resolver.get(this, key);\n };\n\n Container.prototype.getAll = function getAll(key) {\n validateKey(key);\n\n var resolver = this._resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return _emptyParameters;\n }\n\n return this.parent.getAll(key);\n }\n\n if (resolver.strategy === 4) {\n var state = resolver.state;\n var i = state.length;\n var results = new Array(i);\n\n while (i--) {\n results[i] = state[i].get(this, key);\n }\n\n return results;\n }\n\n return [resolver.get(this, key)];\n };\n\n Container.prototype.createChild = function createChild() {\n var child = new Container(this._configuration);\n child.root = this.root;\n child.parent = this;\n return child;\n };\n\n Container.prototype.invoke = function invoke(fn, dynamicDependencies) {\n try {\n var _handler = this._handlers.get(fn);\n\n if (_handler === undefined) {\n _handler = this._createInvocationHandler(fn);\n this._handlers.set(fn, _handler);\n }\n\n return _handler.invoke(this, dynamicDependencies);\n } catch (e) {\n throw new _aureliaPal.AggregateError('Error invoking ' + fn.name + '. Check the inner error for details.', e, true);\n }\n };\n\n Container.prototype._createInvocationHandler = function _createInvocationHandler(fn) {\n var dependencies = void 0;\n\n if (fn.inject === undefined) {\n dependencies = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;\n } else {\n dependencies = [];\n var ctor = fn;\n while (typeof ctor === 'function') {\n var _dependencies;\n\n (_dependencies = dependencies).push.apply(_dependencies, getDependencies(ctor));\n ctor = Object.getPrototypeOf(ctor);\n }\n }\n\n var invoker = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.invoker, fn) || classInvokers[dependencies.length] || classInvokers.fallback;\n\n var handler = new InvocationHandler(fn, invoker, dependencies);\n return this._onHandlerCreated !== undefined ? this._onHandlerCreated(handler) : handler;\n };\n\n return Container;\n }();\n\n function autoinject(potentialTarget) {\n var deco = function deco(target) {\n var previousInject = target.inject ? target.inject.slice() : null;\n var autoInject = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target) || _emptyParameters;\n if (!previousInject) {\n target.inject = autoInject;\n } else {\n for (var i = 0; i < autoInject.length; i++) {\n if (previousInject[i] && previousInject[i] !== autoInject[i]) {\n var prevIndex = previousInject.indexOf(autoInject[i]);\n if (prevIndex > -1) {\n previousInject.splice(prevIndex, 1);\n }\n previousInject.splice(prevIndex > -1 && prevIndex < i ? i - 1 : i, 0, autoInject[i]);\n } else if (!previousInject[i]) {\n previousInject[i] = autoInject[i];\n }\n }\n target.inject = previousInject;\n }\n };\n\n return potentialTarget ? deco(potentialTarget) : deco;\n }\n\n function inject() {\n for (var _len5 = arguments.length, rest = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n rest[_key5] = arguments[_key5];\n }\n\n return function (target, key, descriptor) {\n if (typeof descriptor === 'number' && rest.length === 1) {\n var params = target.inject;\n if (typeof params === 'function') {\n throw new Error('Decorator inject cannot be used with \"inject()\". Please use an array instead.');\n }\n if (!params) {\n params = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target).slice();\n target.inject = params;\n }\n params[descriptor] = rest[0];\n return;\n }\n\n if (descriptor) {\n var _fn = descriptor.value;\n _fn.inject = rest;\n } else {\n target.inject = rest;\n }\n };\n }\n});\r\ndefine('aurelia-event-aggregator',['exports', 'aurelia-logging'], function (exports, _aureliaLogging) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EventAggregator = undefined;\n exports.includeEventsIn = includeEventsIn;\n exports.configure = configure;\n\n var LogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n \n\n var logger = LogManager.getLogger('event-aggregator');\n\n var Handler = function () {\n function Handler(messageType, callback) {\n \n\n this.messageType = messageType;\n this.callback = callback;\n }\n\n Handler.prototype.handle = function handle(message) {\n if (message instanceof this.messageType) {\n this.callback.call(null, message);\n }\n };\n\n return Handler;\n }();\n\n function invokeCallback(callback, data, event) {\n try {\n callback(data, event);\n } catch (e) {\n logger.error(e);\n }\n }\n\n function invokeHandler(handler, data) {\n try {\n handler.handle(data);\n } catch (e) {\n logger.error(e);\n }\n }\n\n var EventAggregator = exports.EventAggregator = function () {\n function EventAggregator() {\n \n\n this.eventLookup = {};\n this.messageHandlers = [];\n }\n\n EventAggregator.prototype.publish = function publish(event, data) {\n var subscribers = void 0;\n var i = void 0;\n\n if (!event) {\n throw new Error('Event was invalid.');\n }\n\n if (typeof event === 'string') {\n subscribers = this.eventLookup[event];\n if (subscribers) {\n subscribers = subscribers.slice();\n i = subscribers.length;\n\n while (i--) {\n invokeCallback(subscribers[i], data, event);\n }\n }\n } else {\n subscribers = this.messageHandlers.slice();\n i = subscribers.length;\n\n while (i--) {\n invokeHandler(subscribers[i], event);\n }\n }\n };\n\n EventAggregator.prototype.subscribe = function subscribe(event, callback) {\n var handler = void 0;\n var subscribers = void 0;\n\n if (!event) {\n throw new Error('Event channel/type was invalid.');\n }\n\n if (typeof event === 'string') {\n handler = callback;\n subscribers = this.eventLookup[event] || (this.eventLookup[event] = []);\n } else {\n handler = new Handler(event, callback);\n subscribers = this.messageHandlers;\n }\n\n subscribers.push(handler);\n\n return {\n dispose: function dispose() {\n var idx = subscribers.indexOf(handler);\n if (idx !== -1) {\n subscribers.splice(idx, 1);\n }\n }\n };\n };\n\n EventAggregator.prototype.subscribeOnce = function subscribeOnce(event, callback) {\n var sub = this.subscribe(event, function (a, b) {\n sub.dispose();\n return callback(a, b);\n });\n\n return sub;\n };\n\n return EventAggregator;\n }();\n\n function includeEventsIn(obj) {\n var ea = new EventAggregator();\n\n obj.subscribeOnce = function (event, callback) {\n return ea.subscribeOnce(event, callback);\n };\n\n obj.subscribe = function (event, callback) {\n return ea.subscribe(event, callback);\n };\n\n obj.publish = function (event, data) {\n ea.publish(event, data);\n };\n\n return ea;\n }\n\n function configure(config) {\n config.instance(EventAggregator, includeEventsIn(config.aurelia));\n }\n});\r\ndefine('aurelia-fetch-client',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.json = json;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n \n\n function json(body) {\n return new Blob([JSON.stringify(body !== undefined ? body : {})], { type: 'application/json' });\n }\n\n var HttpClientConfiguration = exports.HttpClientConfiguration = function () {\n function HttpClientConfiguration() {\n \n\n this.baseUrl = '';\n this.defaults = {};\n this.interceptors = [];\n }\n\n HttpClientConfiguration.prototype.withBaseUrl = function withBaseUrl(baseUrl) {\n this.baseUrl = baseUrl;\n return this;\n };\n\n HttpClientConfiguration.prototype.withDefaults = function withDefaults(defaults) {\n this.defaults = defaults;\n return this;\n };\n\n HttpClientConfiguration.prototype.withInterceptor = function withInterceptor(interceptor) {\n this.interceptors.push(interceptor);\n return this;\n };\n\n HttpClientConfiguration.prototype.useStandardConfiguration = function useStandardConfiguration() {\n var standardConfig = { credentials: 'same-origin' };\n Object.assign(this.defaults, standardConfig, this.defaults);\n return this.rejectErrorResponses();\n };\n\n HttpClientConfiguration.prototype.rejectErrorResponses = function rejectErrorResponses() {\n return this.withInterceptor({ response: rejectOnError });\n };\n\n return HttpClientConfiguration;\n }();\n\n function rejectOnError(response) {\n if (!response.ok) {\n throw response;\n }\n\n return response;\n }\n\n var HttpClient = exports.HttpClient = function () {\n function HttpClient() {\n \n\n this.activeRequestCount = 0;\n this.isRequesting = false;\n this.isConfigured = false;\n this.baseUrl = '';\n this.defaults = null;\n this.interceptors = [];\n\n if (typeof fetch === 'undefined') {\n throw new Error('HttpClient requires a Fetch API implementation, but the current environment doesn\\'t support it. You may need to load a polyfill such as https://github.com/github/fetch');\n }\n }\n\n HttpClient.prototype.configure = function configure(config) {\n var normalizedConfig = void 0;\n\n if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n normalizedConfig = { defaults: config };\n } else if (typeof config === 'function') {\n normalizedConfig = new HttpClientConfiguration();\n normalizedConfig.baseUrl = this.baseUrl;\n normalizedConfig.defaults = Object.assign({}, this.defaults);\n normalizedConfig.interceptors = this.interceptors;\n\n var c = config(normalizedConfig);\n if (HttpClientConfiguration.prototype.isPrototypeOf(c)) {\n normalizedConfig = c;\n }\n } else {\n throw new Error('invalid config');\n }\n\n var defaults = normalizedConfig.defaults;\n if (defaults && Headers.prototype.isPrototypeOf(defaults.headers)) {\n throw new Error('Default headers must be a plain object.');\n }\n\n this.baseUrl = normalizedConfig.baseUrl;\n this.defaults = defaults;\n this.interceptors = normalizedConfig.interceptors || [];\n this.isConfigured = true;\n\n return this;\n };\n\n HttpClient.prototype.fetch = function (_fetch) {\n function fetch(_x, _x2) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function (input, init) {\n var _this = this;\n\n trackRequestStart.call(this);\n\n var request = Promise.resolve().then(function () {\n return buildRequest.call(_this, input, init, _this.defaults);\n });\n var promise = processRequest(request, this.interceptors).then(function (result) {\n var response = null;\n\n if (Response.prototype.isPrototypeOf(result)) {\n response = result;\n } else if (Request.prototype.isPrototypeOf(result)) {\n request = Promise.resolve(result);\n response = fetch(result);\n } else {\n throw new Error('An invalid result was returned by the interceptor chain. Expected a Request or Response instance, but got [' + result + ']');\n }\n\n return request.then(function (_request) {\n return processResponse(response, _this.interceptors, _request);\n });\n });\n\n return trackRequestEndWith.call(this, promise);\n });\n\n return HttpClient;\n }();\n\n var absoluteUrlRegexp = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\n function trackRequestStart() {\n this.isRequesting = !! ++this.activeRequestCount;\n }\n\n function trackRequestEnd() {\n this.isRequesting = !! --this.activeRequestCount;\n }\n\n function trackRequestEndWith(promise) {\n var handle = trackRequestEnd.bind(this);\n promise.then(handle, handle);\n return promise;\n }\n\n function parseHeaderValues(headers) {\n var parsedHeaders = {};\n for (var name in headers || {}) {\n if (headers.hasOwnProperty(name)) {\n parsedHeaders[name] = typeof headers[name] === 'function' ? headers[name]() : headers[name];\n }\n }\n return parsedHeaders;\n }\n\n function buildRequest(input, init) {\n var defaults = this.defaults || {};\n var request = void 0;\n var body = void 0;\n var requestContentType = void 0;\n\n var parsedDefaultHeaders = parseHeaderValues(defaults.headers);\n if (Request.prototype.isPrototypeOf(input)) {\n request = input;\n requestContentType = new Headers(request.headers).get('Content-Type');\n } else {\n init || (init = {});\n body = init.body;\n var bodyObj = body ? { body: body } : null;\n var requestInit = Object.assign({}, defaults, { headers: {} }, init, bodyObj);\n requestContentType = new Headers(requestInit.headers).get('Content-Type');\n request = new Request(getRequestUrl(this.baseUrl, input), requestInit);\n }\n if (!requestContentType && new Headers(parsedDefaultHeaders).has('content-type')) {\n request.headers.set('Content-Type', new Headers(parsedDefaultHeaders).get('content-type'));\n }\n setDefaultHeaders(request.headers, parsedDefaultHeaders);\n if (body && Blob.prototype.isPrototypeOf(body) && body.type) {\n request.headers.set('Content-Type', body.type);\n }\n return request;\n }\n\n function getRequestUrl(baseUrl, url) {\n if (absoluteUrlRegexp.test(url)) {\n return url;\n }\n\n return (baseUrl || '') + url;\n }\n\n function setDefaultHeaders(headers, defaultHeaders) {\n for (var name in defaultHeaders || {}) {\n if (defaultHeaders.hasOwnProperty(name) && !headers.has(name)) {\n headers.set(name, defaultHeaders[name]);\n }\n }\n }\n\n function processRequest(request, interceptors) {\n return applyInterceptors(request, interceptors, 'request', 'requestError');\n }\n\n function processResponse(response, interceptors, request) {\n return applyInterceptors(response, interceptors, 'response', 'responseError', request);\n }\n\n function applyInterceptors(input, interceptors, successName, errorName) {\n for (var _len = arguments.length, interceptorArgs = Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) {\n interceptorArgs[_key - 4] = arguments[_key];\n }\n\n return (interceptors || []).reduce(function (chain, interceptor) {\n var successHandler = interceptor[successName];\n var errorHandler = interceptor[errorName];\n\n return chain.then(successHandler && function (value) {\n return successHandler.call.apply(successHandler, [interceptor, value].concat(interceptorArgs));\n } || identity, errorHandler && function (reason) {\n return errorHandler.call.apply(errorHandler, [interceptor, reason].concat(interceptorArgs));\n } || thrower);\n }, Promise.resolve(input));\n }\n\n function identity(x) {\n return x;\n }\n\n function thrower(x) {\n throw x;\n }\n});\r\ndefine('aurelia-framework',['exports', 'aurelia-dependency-injection', 'aurelia-binding', 'aurelia-metadata', 'aurelia-templating', 'aurelia-loader', 'aurelia-task-queue', 'aurelia-path', 'aurelia-pal', 'aurelia-logging'], function (exports, _aureliaDependencyInjection, _aureliaBinding, _aureliaMetadata, _aureliaTemplating, _aureliaLoader, _aureliaTaskQueue, _aureliaPath, _aureliaPal, _aureliaLogging) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LogManager = exports.FrameworkConfiguration = exports.Aurelia = undefined;\n Object.keys(_aureliaDependencyInjection).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaDependencyInjection[key];\n }\n });\n });\n Object.keys(_aureliaBinding).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaBinding[key];\n }\n });\n });\n Object.keys(_aureliaMetadata).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaMetadata[key];\n }\n });\n });\n Object.keys(_aureliaTemplating).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaTemplating[key];\n }\n });\n });\n Object.keys(_aureliaLoader).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaLoader[key];\n }\n });\n });\n Object.keys(_aureliaTaskQueue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaTaskQueue[key];\n }\n });\n });\n Object.keys(_aureliaPath).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaPath[key];\n }\n });\n });\n Object.keys(_aureliaPal).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _aureliaPal[key];\n }\n });\n });\n\n var TheLogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n \n\n function preventActionlessFormSubmit() {\n _aureliaPal.DOM.addEventListener('submit', function (evt) {\n var target = evt.target;\n var action = target.action;\n\n if (target.tagName.toLowerCase() === 'form' && !action) {\n evt.preventDefault();\n }\n });\n }\n\n var Aurelia = exports.Aurelia = function () {\n function Aurelia(loader, container, resources) {\n \n\n this.loader = loader || new _aureliaPal.PLATFORM.Loader();\n this.container = container || new _aureliaDependencyInjection.Container().makeGlobal();\n this.resources = resources || new _aureliaTemplating.ViewResources();\n this.use = new FrameworkConfiguration(this);\n this.logger = TheLogManager.getLogger('aurelia');\n this.hostConfigured = false;\n this.host = null;\n\n this.use.instance(Aurelia, this);\n this.use.instance(_aureliaLoader.Loader, this.loader);\n this.use.instance(_aureliaTemplating.ViewResources, this.resources);\n }\n\n Aurelia.prototype.start = function start() {\n var _this = this;\n\n if (this._started) {\n return this._started;\n }\n\n this.logger.info('Aurelia Starting');\n return this._started = this.use.apply().then(function () {\n preventActionlessFormSubmit();\n\n if (!_this.container.hasResolver(_aureliaTemplating.BindingLanguage)) {\n var message = 'You must configure Aurelia with a BindingLanguage implementation.';\n _this.logger.error(message);\n throw new Error(message);\n }\n\n _this.logger.info('Aurelia Started');\n var evt = _aureliaPal.DOM.createCustomEvent('aurelia-started', { bubbles: true, cancelable: true });\n _aureliaPal.DOM.dispatchEvent(evt);\n return _this;\n });\n };\n\n Aurelia.prototype.enhance = function enhance() {\n var _this2 = this;\n\n var bindingContext = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var applicationHost = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n this._configureHost(applicationHost || _aureliaPal.DOM.querySelectorAll('body')[0]);\n\n return new Promise(function (resolve) {\n var engine = _this2.container.get(_aureliaTemplating.TemplatingEngine);\n _this2.root = engine.enhance({ container: _this2.container, element: _this2.host, resources: _this2.resources, bindingContext: bindingContext });\n _this2.root.attached();\n _this2._onAureliaComposed();\n resolve(_this2);\n });\n };\n\n Aurelia.prototype.setRoot = function setRoot() {\n var _this3 = this;\n\n var root = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];\n var applicationHost = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n var instruction = {};\n\n if (this.root && this.root.viewModel && this.root.viewModel.router) {\n this.root.viewModel.router.deactivate();\n this.root.viewModel.router.reset();\n }\n\n this._configureHost(applicationHost);\n\n var engine = this.container.get(_aureliaTemplating.TemplatingEngine);\n var transaction = this.container.get(_aureliaTemplating.CompositionTransaction);\n delete transaction.initialComposition;\n\n if (!root) {\n if (this.configModuleId) {\n root = (0, _aureliaPath.relativeToFile)('./app', this.configModuleId);\n } else {\n root = 'app';\n }\n }\n\n instruction.viewModel = root;\n instruction.container = instruction.childContainer = this.container;\n instruction.viewSlot = this.hostSlot;\n instruction.host = this.host;\n\n return engine.compose(instruction).then(function (r) {\n _this3.root = r;\n instruction.viewSlot.attached();\n _this3._onAureliaComposed();\n return _this3;\n });\n };\n\n Aurelia.prototype._configureHost = function _configureHost(applicationHost) {\n if (this.hostConfigured) {\n return;\n }\n applicationHost = applicationHost || this.host;\n\n if (!applicationHost || typeof applicationHost === 'string') {\n this.host = _aureliaPal.DOM.getElementById(applicationHost || 'applicationHost');\n } else {\n this.host = applicationHost;\n }\n\n if (!this.host) {\n throw new Error('No applicationHost was specified.');\n }\n\n this.hostConfigured = true;\n this.host.aurelia = this;\n this.hostSlot = new _aureliaTemplating.ViewSlot(this.host, true);\n this.hostSlot.transformChildNodesIntoView();\n this.container.registerInstance(_aureliaPal.DOM.boundary, this.host);\n };\n\n Aurelia.prototype._onAureliaComposed = function _onAureliaComposed() {\n var evt = _aureliaPal.DOM.createCustomEvent('aurelia-composed', { bubbles: true, cancelable: true });\n setTimeout(function () {\n return _aureliaPal.DOM.dispatchEvent(evt);\n }, 1);\n };\n\n return Aurelia;\n }();\n\n var logger = TheLogManager.getLogger('aurelia');\n var extPattern = /\\.[^/.]+$/;\n\n function runTasks(config, tasks) {\n var current = void 0;\n var next = function next() {\n current = tasks.shift();\n if (current) {\n return Promise.resolve(current(config)).then(next);\n }\n\n return Promise.resolve();\n };\n\n return next();\n }\n\n function loadPlugin(config, loader, info) {\n logger.debug('Loading plugin ' + info.moduleId + '.');\n config.resourcesRelativeTo = info.resourcesRelativeTo;\n\n var id = info.moduleId;\n\n if (info.resourcesRelativeTo.length > 1) {\n return loader.normalize(info.moduleId, info.resourcesRelativeTo[1]).then(function (normalizedId) {\n return _loadPlugin(normalizedId);\n });\n }\n\n return _loadPlugin(id);\n\n function _loadPlugin(moduleId) {\n return loader.loadModule(moduleId).then(function (m) {\n if ('configure' in m) {\n return Promise.resolve(m.configure(config, info.config || {})).then(function () {\n config.resourcesRelativeTo = null;\n logger.debug('Configured plugin ' + info.moduleId + '.');\n });\n }\n\n config.resourcesRelativeTo = null;\n logger.debug('Loaded plugin ' + info.moduleId + '.');\n });\n }\n }\n\n function loadResources(aurelia, resourcesToLoad, appResources) {\n var viewEngine = aurelia.container.get(_aureliaTemplating.ViewEngine);\n\n return Promise.all(Object.keys(resourcesToLoad).map(function (n) {\n return _normalize(resourcesToLoad[n]);\n })).then(function (loads) {\n var names = [];\n var importIds = [];\n\n loads.forEach(function (l) {\n names.push(undefined);\n importIds.push(l.importId);\n });\n\n return viewEngine.importViewResources(importIds, names, appResources);\n });\n\n function _normalize(load) {\n var moduleId = load.moduleId;\n var ext = getExt(moduleId);\n\n if (isOtherResource(moduleId)) {\n moduleId = removeExt(moduleId);\n }\n\n return aurelia.loader.normalize(moduleId, load.relativeTo).then(function (normalized) {\n return {\n name: load.moduleId,\n importId: isOtherResource(load.moduleId) ? addOriginalExt(normalized, ext) : normalized\n };\n });\n }\n\n function isOtherResource(name) {\n var ext = getExt(name);\n if (!ext) return false;\n if (ext === '') return false;\n if (ext === '.js' || ext === '.ts') return false;\n return true;\n }\n\n function removeExt(name) {\n return name.replace(extPattern, '');\n }\n\n function addOriginalExt(normalized, ext) {\n return removeExt(normalized) + '.' + ext;\n }\n }\n\n function getExt(name) {\n var match = name.match(extPattern);\n if (match && match.length > 0) {\n return match[0].split('.')[1];\n }\n }\n\n function assertProcessed(plugins) {\n if (plugins.processed) {\n throw new Error('This config instance has already been applied. To load more plugins or global resources, create a new FrameworkConfiguration instance.');\n }\n }\n\n var FrameworkConfiguration = function () {\n function FrameworkConfiguration(aurelia) {\n var _this4 = this;\n\n \n\n this.aurelia = aurelia;\n this.container = aurelia.container;\n this.info = [];\n this.processed = false;\n this.preTasks = [];\n this.postTasks = [];\n this.resourcesToLoad = {};\n this.preTask(function () {\n return aurelia.loader.normalize('aurelia-bootstrapper').then(function (name) {\n return _this4.bootstrapperName = name;\n });\n });\n this.postTask(function () {\n return loadResources(aurelia, _this4.resourcesToLoad, aurelia.resources);\n });\n }\n\n FrameworkConfiguration.prototype.instance = function instance(type, _instance) {\n this.container.registerInstance(type, _instance);\n return this;\n };\n\n FrameworkConfiguration.prototype.singleton = function singleton(type, implementation) {\n this.container.registerSingleton(type, implementation);\n return this;\n };\n\n FrameworkConfiguration.prototype.transient = function transient(type, implementation) {\n this.container.registerTransient(type, implementation);\n return this;\n };\n\n FrameworkConfiguration.prototype.preTask = function preTask(task) {\n assertProcessed(this);\n this.preTasks.push(task);\n return this;\n };\n\n FrameworkConfiguration.prototype.postTask = function postTask(task) {\n assertProcessed(this);\n this.postTasks.push(task);\n return this;\n };\n\n FrameworkConfiguration.prototype.feature = function feature(plugin) {\n var config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var hasIndex = /\\/index$/i.test(plugin);\n var moduleId = hasIndex || getExt(plugin) ? plugin : plugin + '/index';\n var root = hasIndex ? plugin.substr(0, plugin.length - 6) : plugin;\n return this.plugin({ moduleId: moduleId, resourcesRelativeTo: [root, ''], config: config });\n };\n\n FrameworkConfiguration.prototype.globalResources = function globalResources(resources) {\n assertProcessed(this);\n\n var toAdd = Array.isArray(resources) ? resources : arguments;\n var resource = void 0;\n var resourcesRelativeTo = this.resourcesRelativeTo || ['', ''];\n\n for (var i = 0, ii = toAdd.length; i < ii; ++i) {\n resource = toAdd[i];\n if (typeof resource !== 'string') {\n throw new Error('Invalid resource path [' + resource + ']. Resources must be specified as relative module IDs.');\n }\n\n var parent = resourcesRelativeTo[0];\n var grandParent = resourcesRelativeTo[1];\n var name = resource;\n\n if ((resource.startsWith('./') || resource.startsWith('../')) && parent !== '') {\n name = (0, _aureliaPath.join)(parent, resource);\n }\n\n this.resourcesToLoad[name] = { moduleId: name, relativeTo: grandParent };\n }\n\n return this;\n };\n\n FrameworkConfiguration.prototype.globalName = function globalName(resourcePath, newName) {\n assertProcessed(this);\n this.resourcesToLoad[resourcePath] = { moduleId: newName, relativeTo: '' };\n return this;\n };\n\n FrameworkConfiguration.prototype.plugin = function plugin(_plugin, config) {\n assertProcessed(this);\n\n if (typeof _plugin === 'string') {\n return this.plugin({ moduleId: _plugin, resourcesRelativeTo: [_plugin, ''], config: config || {} });\n }\n\n this.info.push(_plugin);\n return this;\n };\n\n FrameworkConfiguration.prototype._addNormalizedPlugin = function _addNormalizedPlugin(name, config) {\n var _this5 = this;\n\n var plugin = { moduleId: name, resourcesRelativeTo: [name, ''], config: config || {} };\n this.plugin(plugin);\n\n this.preTask(function () {\n var relativeTo = [name, _this5.bootstrapperName];\n plugin.moduleId = name;\n plugin.resourcesRelativeTo = relativeTo;\n return Promise.resolve();\n });\n\n return this;\n };\n\n FrameworkConfiguration.prototype.defaultBindingLanguage = function defaultBindingLanguage() {\n return this._addNormalizedPlugin('aurelia-templating-binding');\n };\n\n FrameworkConfiguration.prototype.router = function router() {\n return this._addNormalizedPlugin('aurelia-templating-router');\n };\n\n FrameworkConfiguration.prototype.history = function history() {\n return this._addNormalizedPlugin('aurelia-history-browser');\n };\n\n FrameworkConfiguration.prototype.defaultResources = function defaultResources() {\n return this._addNormalizedPlugin('aurelia-templating-resources');\n };\n\n FrameworkConfiguration.prototype.eventAggregator = function eventAggregator() {\n return this._addNormalizedPlugin('aurelia-event-aggregator');\n };\n\n FrameworkConfiguration.prototype.basicConfiguration = function basicConfiguration() {\n return this.defaultBindingLanguage().defaultResources().eventAggregator();\n };\n\n FrameworkConfiguration.prototype.standardConfiguration = function standardConfiguration() {\n return this.basicConfiguration().history().router();\n };\n\n FrameworkConfiguration.prototype.developmentLogging = function developmentLogging() {\n var _this6 = this;\n\n this.preTask(function () {\n return _this6.aurelia.loader.normalize('aurelia-logging-console', _this6.bootstrapperName).then(function (name) {\n return _this6.aurelia.loader.loadModule(name).then(function (m) {\n TheLogManager.addAppender(new m.ConsoleAppender());\n TheLogManager.setLevel(TheLogManager.logLevel.debug);\n });\n });\n });\n\n return this;\n };\n\n FrameworkConfiguration.prototype.apply = function apply() {\n var _this7 = this;\n\n if (this.processed) {\n return Promise.resolve();\n }\n\n return runTasks(this, this.preTasks).then(function () {\n var loader = _this7.aurelia.loader;\n var info = _this7.info;\n var current = void 0;\n\n var next = function next() {\n current = info.shift();\n if (current) {\n return loadPlugin(_this7, loader, current).then(next);\n }\n\n _this7.processed = true;\n return Promise.resolve();\n };\n\n return next().then(function () {\n return runTasks(_this7, _this7.postTasks);\n });\n });\n };\n\n return FrameworkConfiguration;\n }();\n\n exports.FrameworkConfiguration = FrameworkConfiguration;\n var LogManager = exports.LogManager = TheLogManager;\n});\r\ndefine('aurelia-loader',['exports', 'aurelia-path', 'aurelia-metadata'], function (exports, _aureliaPath, _aureliaMetadata) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Loader = exports.TemplateRegistryEntry = exports.TemplateDependency = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n \n\n var TemplateDependency = exports.TemplateDependency = function TemplateDependency(src, name) {\n \n\n this.src = src;\n this.name = name;\n };\n\n var TemplateRegistryEntry = exports.TemplateRegistryEntry = function () {\n function TemplateRegistryEntry(address) {\n \n\n this.templateIsLoaded = false;\n this.factoryIsReady = false;\n this.resources = null;\n this.dependencies = null;\n\n this.address = address;\n this.onReady = null;\n this._template = null;\n this._factory = null;\n }\n\n TemplateRegistryEntry.prototype.addDependency = function addDependency(src, name) {\n var finalSrc = typeof src === 'string' ? (0, _aureliaPath.relativeToFile)(src, this.address) : _aureliaMetadata.Origin.get(src).moduleId;\n\n this.dependencies.push(new TemplateDependency(finalSrc, name));\n };\n\n _createClass(TemplateRegistryEntry, [{\n key: 'template',\n get: function get() {\n return this._template;\n },\n set: function set(value) {\n var address = this.address;\n var requires = void 0;\n var current = void 0;\n var src = void 0;\n var dependencies = void 0;\n\n this._template = value;\n this.templateIsLoaded = true;\n\n requires = value.content.querySelectorAll('require');\n dependencies = this.dependencies = new Array(requires.length);\n\n for (var i = 0, ii = requires.length; i < ii; ++i) {\n current = requires[i];\n src = current.getAttribute('from');\n\n if (!src) {\n throw new Error('<require> element in ' + address + ' has no \"from\" attribute.');\n }\n\n dependencies[i] = new TemplateDependency((0, _aureliaPath.relativeToFile)(src, address), current.getAttribute('as'));\n\n if (current.parentNode) {\n current.parentNode.removeChild(current);\n }\n }\n }\n }, {\n key: 'factory',\n get: function get() {\n return this._factory;\n },\n set: function set(value) {\n this._factory = value;\n this.factoryIsReady = true;\n }\n }]);\n\n return TemplateRegistryEntry;\n }();\n\n var Loader = exports.Loader = function () {\n function Loader() {\n \n\n this.templateRegistry = {};\n }\n\n Loader.prototype.map = function map(id, source) {\n throw new Error('Loaders must implement map(id, source).');\n };\n\n Loader.prototype.normalizeSync = function normalizeSync(moduleId, relativeTo) {\n throw new Error('Loaders must implement normalizeSync(moduleId, relativeTo).');\n };\n\n Loader.prototype.normalize = function normalize(moduleId, relativeTo) {\n throw new Error('Loaders must implement normalize(moduleId: string, relativeTo: string): Promise<string>.');\n };\n\n Loader.prototype.loadModule = function loadModule(id) {\n throw new Error('Loaders must implement loadModule(id).');\n };\n\n Loader.prototype.loadAllModules = function loadAllModules(ids) {\n throw new Error('Loader must implement loadAllModules(ids).');\n };\n\n Loader.prototype.loadTemplate = function loadTemplate(url) {\n throw new Error('Loader must implement loadTemplate(url).');\n };\n\n Loader.prototype.loadText = function loadText(url) {\n throw new Error('Loader must implement loadText(url).');\n };\n\n Loader.prototype.applyPluginToUrl = function applyPluginToUrl(url, pluginName) {\n throw new Error('Loader must implement applyPluginToUrl(url, pluginName).');\n };\n\n Loader.prototype.addPlugin = function addPlugin(pluginName, implementation) {\n throw new Error('Loader must implement addPlugin(pluginName, implementation).');\n };\n\n Loader.prototype.getOrCreateTemplateRegistryEntry = function getOrCreateTemplateRegistryEntry(address) {\n return this.templateRegistry[address] || (this.templateRegistry[address] = new TemplateRegistryEntry(address));\n };\n\n return Loader;\n }();\n});\r\ndefine('aurelia-loader-default',['exports', 'aurelia-loader', 'aurelia-pal', 'aurelia-metadata'], function (exports, _aureliaLoader, _aureliaPal, _aureliaMetadata) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DefaultLoader = exports.TextTemplateLoader = undefined;\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n \n\n var TextTemplateLoader = exports.TextTemplateLoader = function () {\n function TextTemplateLoader() {\n \n }\n\n TextTemplateLoader.prototype.loadTemplate = function loadTemplate(loader, entry) {\n return loader.loadText(entry.address).then(function (text) {\n entry.template = _aureliaPal.DOM.createTemplateFromMarkup(text);\n });\n };\n\n return TextTemplateLoader;\n }();\n\n function ensureOriginOnExports(executed, name) {\n var target = executed;\n var key = void 0;\n var exportedValue = void 0;\n\n if (target.__useDefault) {\n target = target['default'];\n }\n\n _aureliaMetadata.Origin.set(target, new _aureliaMetadata.Origin(name, 'default'));\n\n for (key in target) {\n exportedValue = target[key];\n\n if (typeof exportedValue === 'function') {\n _aureliaMetadata.Origin.set(exportedValue, new _aureliaMetadata.Origin(name, key));\n }\n }\n\n return executed;\n }\n\n var DefaultLoader = exports.DefaultLoader = function (_Loader) {\n _inherits(DefaultLoader, _Loader);\n\n function DefaultLoader() {\n \n\n var _this = _possibleConstructorReturn(this, _Loader.call(this));\n\n _this.textPluginName = 'text';\n\n\n _this.moduleRegistry = Object.create(null);\n _this.useTemplateLoader(new TextTemplateLoader());\n\n var that = _this;\n\n _this.addPlugin('template-registry-entry', {\n 'fetch': function fetch(address) {\n var entry = that.getOrCreateTemplateRegistryEntry(address);\n return entry.templateIsLoaded ? entry : that.templateLoader.loadTemplate(that, entry).then(function (x) {\n return entry;\n });\n }\n });\n return _this;\n }\n\n DefaultLoader.prototype.useTemplateLoader = function useTemplateLoader(templateLoader) {\n this.templateLoader = templateLoader;\n };\n\n DefaultLoader.prototype.loadAllModules = function loadAllModules(ids) {\n var loads = [];\n\n for (var i = 0, ii = ids.length; i < ii; ++i) {\n loads.push(this.loadModule(ids[i]));\n }\n\n return Promise.all(loads);\n };\n\n DefaultLoader.prototype.loadTemplate = function loadTemplate(url) {\n return this._import(this.applyPluginToUrl(url, 'template-registry-entry'));\n };\n\n DefaultLoader.prototype.loadText = function loadText(url) {\n return this._import(this.applyPluginToUrl(url, this.textPluginName)).then(function (textOrModule) {\n if (typeof textOrModule === 'string') {\n return textOrModule;\n }\n\n return textOrModule['default'];\n });\n };\n\n return DefaultLoader;\n }(_aureliaLoader.Loader);\n\n _aureliaPal.PLATFORM.Loader = DefaultLoader;\n\n if (!_aureliaPal.PLATFORM.global.System || !_aureliaPal.PLATFORM.global.System.import) {\n if (_aureliaPal.PLATFORM.global.requirejs && requirejs.s && requirejs.s.contexts && requirejs.s.contexts._ && requirejs.s.contexts._.defined) {\n _aureliaPal.PLATFORM.eachModule = function (callback) {\n var defined = requirejs.s.contexts._.defined;\n for (var key in defined) {\n try {\n if (callback(key, defined[key])) return;\n } catch (e) {}\n }\n };\n } else {\n _aureliaPal.PLATFORM.eachModule = function (callback) {};\n }\n\n DefaultLoader.prototype._import = function (moduleId) {\n return new Promise(function (resolve, reject) {\n require([moduleId], resolve, reject);\n });\n };\n\n DefaultLoader.prototype.loadModule = function (id) {\n var _this2 = this;\n\n var existing = this.moduleRegistry[id];\n if (existing !== undefined) {\n return Promise.resolve(existing);\n }\n\n return new Promise(function (resolve, reject) {\n require([id], function (m) {\n _this2.moduleRegistry[id] = m;\n resolve(ensureOriginOnExports(m, id));\n }, reject);\n });\n };\n\n DefaultLoader.prototype.map = function (id, source) {};\n\n DefaultLoader.prototype.normalize = function (moduleId, relativeTo) {\n return Promise.resolve(moduleId);\n };\n\n DefaultLoader.prototype.normalizeSync = function (moduleId, relativeTo) {\n return moduleId;\n };\n\n DefaultLoader.prototype.applyPluginToUrl = function (url, pluginName) {\n return pluginName + '!' + url;\n };\n\n DefaultLoader.prototype.addPlugin = function (pluginName, implementation) {\n var nonAnonDefine = define;\n nonAnonDefine(pluginName, [], {\n 'load': function load(name, req, onload) {\n var result = implementation.fetch(name);\n Promise.resolve(result).then(onload);\n }\n });\n };\n } else {\n _aureliaPal.PLATFORM.eachModule = function (callback) {\n if (System.registry) {\n for (var _iterator = System.registry.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var _ref2 = _ref;\n var k = _ref2[0];\n var m = _ref2[1];\n\n try {\n if (callback(k, m)) return;\n } catch (e) {}\n }\n return;\n }\n\n var modules = System._loader.modules;\n\n for (var key in modules) {\n try {\n if (callback(key, modules[key].module)) return;\n } catch (e) {}\n }\n };\n\n System.set('text', System.newModule({\n 'translate': function translate(load) {\n return 'module.exports = \"' + load.source.replace(/([\"\\\\])/g, '\\\\$1').replace(/[\\f]/g, '\\\\f').replace(/[\\b]/g, '\\\\b').replace(/[\\n]/g, '\\\\n').replace(/[\\t]/g, '\\\\t').replace(/[\\r]/g, '\\\\r').replace(/[\\u2028]/g, '\\\\u2028').replace(/[\\u2029]/g, '\\\\u2029') + '\";';\n }\n }));\n\n DefaultLoader.prototype._import = function (moduleId) {\n return System.import(moduleId);\n };\n\n DefaultLoader.prototype.loadModule = function (id) {\n var _this3 = this;\n\n return System.normalize(id).then(function (newId) {\n var existing = _this3.moduleRegistry[newId];\n if (existing !== undefined) {\n return Promise.resolve(existing);\n }\n\n return System.import(newId).then(function (m) {\n _this3.moduleRegistry[newId] = m;\n return ensureOriginOnExports(m, newId);\n });\n });\n };\n\n DefaultLoader.prototype.map = function (id, source) {\n var _map;\n\n System.config({ map: (_map = {}, _map[id] = source, _map) });\n };\n\n DefaultLoader.prototype.normalizeSync = function (moduleId, relativeTo) {\n return System.normalizeSync(moduleId, relativeTo);\n };\n\n DefaultLoader.prototype.normalize = function (moduleId, relativeTo) {\n return System.normalize(moduleId, relativeTo);\n };\n\n DefaultLoader.prototype.applyPluginToUrl = function (url, pluginName) {\n return url + '!' + pluginName;\n };\n\n DefaultLoader.prototype.addPlugin = function (pluginName, implementation) {\n System.set(pluginName, System.newModule({\n 'fetch': function fetch(load, _fetch) {\n var result = implementation.fetch(load.address);\n return Promise.resolve(result).then(function (x) {\n load.metadata.result = x;\n return '';\n });\n },\n 'instantiate': function instantiate(load) {\n return load.metadata.result;\n }\n }));\n };\n }\n});\r\ndefine('aurelia-logging',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getLogger = getLogger;\n exports.addAppender = addAppender;\n exports.removeAppender = removeAppender;\n exports.setLevel = setLevel;\n exports.getLevel = getLevel;\n\n \n\n var logLevel = exports.logLevel = {\n none: 0,\n error: 1,\n warn: 2,\n info: 3,\n debug: 4\n };\n\n var loggers = {};\n var appenders = [];\n var globalDefaultLevel = logLevel.none;\n\n function appendArgs() {\n return [this].concat(Array.prototype.slice.call(arguments));\n }\n\n function logFactory(level) {\n var threshold = logLevel[level];\n return function () {\n if (this.level < threshold) {\n return;\n }\n\n var args = appendArgs.apply(this, arguments);\n var i = appenders.length;\n while (i--) {\n var _appenders$i;\n\n (_appenders$i = appenders[i])[level].apply(_appenders$i, args);\n }\n };\n }\n\n function connectLoggers() {\n var proto = Logger.prototype;\n proto.debug = logFactory('debug');\n proto.info = logFactory('info');\n proto.warn = logFactory('warn');\n proto.error = logFactory('error');\n }\n\n function getLogger(id) {\n return loggers[id] || new Logger(id);\n }\n\n function addAppender(appender) {\n if (appenders.push(appender) === 1) {\n connectLoggers();\n }\n }\n\n function removeAppender(appender) {\n appenders = appenders.filter(function (a) {\n return a !== appender;\n });\n }\n\n function setLevel(level) {\n globalDefaultLevel = level;\n for (var key in loggers) {\n loggers[key].setLevel(level);\n }\n }\n\n function getLevel() {\n return globalDefaultLevel;\n }\n\n var Logger = exports.Logger = function () {\n function Logger(id) {\n \n\n var cached = loggers[id];\n if (cached) {\n return cached;\n }\n\n loggers[id] = this;\n this.id = id;\n this.level = globalDefaultLevel;\n }\n\n Logger.prototype.debug = function debug(message) {};\n\n Logger.prototype.info = function info(message) {};\n\n Logger.prototype.warn = function warn(message) {};\n\n Logger.prototype.error = function error(message) {};\n\n Logger.prototype.setLevel = function setLevel(level) {\n this.level = level;\n };\n\n return Logger;\n }();\n});\r\ndefine('aurelia-logging-console',['exports', 'aurelia-logging'], function (exports, _aureliaLogging) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConsoleAppender = undefined;\n\n \n\n var ConsoleAppender = exports.ConsoleAppender = function () {\n function ConsoleAppender() {\n \n }\n\n ConsoleAppender.prototype.debug = function debug(logger) {\n var _console;\n\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n (_console = console).debug.apply(_console, ['DEBUG [' + logger.id + ']'].concat(rest));\n };\n\n ConsoleAppender.prototype.info = function info(logger) {\n var _console2;\n\n for (var _len2 = arguments.length, rest = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n\n (_console2 = console).info.apply(_console2, ['INFO [' + logger.id + ']'].concat(rest));\n };\n\n ConsoleAppender.prototype.warn = function warn(logger) {\n var _console3;\n\n for (var _len3 = arguments.length, rest = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n rest[_key3 - 1] = arguments[_key3];\n }\n\n (_console3 = console).warn.apply(_console3, ['WARN [' + logger.id + ']'].concat(rest));\n };\n\n ConsoleAppender.prototype.error = function error(logger) {\n var _console4;\n\n for (var _len4 = arguments.length, rest = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n (_console4 = console).error.apply(_console4, ['ERROR [' + logger.id + ']'].concat(rest));\n };\n\n return ConsoleAppender;\n }();\n});\r\ndefine('aurelia-metadata',['exports', 'aurelia-pal'], function (exports, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Origin = exports.metadata = undefined;\n exports.decorators = decorators;\n exports.deprecated = deprecated;\n exports.mixin = mixin;\n exports.protocol = protocol;\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n \n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n function isObject(val) {\n return val && (typeof val === 'function' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object');\n }\n\n var metadata = exports.metadata = {\n resource: 'aurelia:resource',\n paramTypes: 'design:paramtypes',\n propertyType: 'design:type',\n properties: 'design:properties',\n get: function get(metadataKey, target, targetKey) {\n if (!isObject(target)) {\n return undefined;\n }\n var result = metadata.getOwn(metadataKey, target, targetKey);\n return result === undefined ? metadata.get(metadataKey, Object.getPrototypeOf(target), targetKey) : result;\n },\n getOwn: function getOwn(metadataKey, target, targetKey) {\n if (!isObject(target)) {\n return undefined;\n }\n return Reflect.getOwnMetadata(metadataKey, target, targetKey);\n },\n define: function define(metadataKey, metadataValue, target, targetKey) {\n Reflect.defineMetadata(metadataKey, metadataValue, target, targetKey);\n },\n getOrCreateOwn: function getOrCreateOwn(metadataKey, Type, target, targetKey) {\n var result = metadata.getOwn(metadataKey, target, targetKey);\n\n if (result === undefined) {\n result = new Type();\n Reflect.defineMetadata(metadataKey, result, target, targetKey);\n }\n\n return result;\n }\n };\n\n var originStorage = new Map();\n var unknownOrigin = Object.freeze({ moduleId: undefined, moduleMember: undefined });\n\n var Origin = exports.Origin = function () {\n function Origin(moduleId, moduleMember) {\n \n\n this.moduleId = moduleId;\n this.moduleMember = moduleMember;\n }\n\n Origin.get = function get(fn) {\n var origin = originStorage.get(fn);\n\n if (origin === undefined) {\n _aureliaPal.PLATFORM.eachModule(function (key, value) {\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n for (var name in value) {\n var exp = value[name];\n if (exp === fn) {\n originStorage.set(fn, origin = new Origin(key, name));\n return true;\n }\n }\n }\n\n if (value === fn) {\n originStorage.set(fn, origin = new Origin(key, 'default'));\n return true;\n }\n\n return false;\n });\n }\n\n return origin || unknownOrigin;\n };\n\n Origin.set = function set(fn, origin) {\n originStorage.set(fn, origin);\n };\n\n return Origin;\n }();\n\n function decorators() {\n for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n\n var applicator = function applicator(target, key, descriptor) {\n var i = rest.length;\n\n if (key) {\n descriptor = descriptor || {\n value: target[key],\n writable: true,\n configurable: true,\n enumerable: true\n };\n\n while (i--) {\n descriptor = rest[i](target, key, descriptor) || descriptor;\n }\n\n Object.defineProperty(target, key, descriptor);\n } else {\n while (i--) {\n target = rest[i](target) || target;\n }\n }\n\n return target;\n };\n\n applicator.on = applicator;\n return applicator;\n }\n\n function deprecated(optionsOrTarget, maybeKey, maybeDescriptor) {\n function decorator(target, key, descriptor) {\n var methodSignature = target.constructor.name + '#' + key;\n var options = maybeKey ? {} : optionsOrTarget || {};\n var message = 'DEPRECATION - ' + methodSignature;\n\n if (typeof descriptor.value !== 'function') {\n throw new SyntaxError('Only methods can be marked as deprecated.');\n }\n\n if (options.message) {\n message += ' - ' + options.message;\n }\n\n return _extends({}, descriptor, {\n value: function deprecationWrapper() {\n if (options.error) {\n throw new Error(message);\n } else {\n console.warn(message);\n }\n\n return descriptor.value.apply(this, arguments);\n }\n });\n }\n\n return maybeKey ? decorator(optionsOrTarget, maybeKey, maybeDescriptor) : decorator;\n }\n\n function mixin(behavior) {\n var instanceKeys = Object.keys(behavior);\n\n function _mixin(possible) {\n var decorator = function decorator(target) {\n var resolvedTarget = typeof target === 'function' ? target.prototype : target;\n\n var i = instanceKeys.length;\n while (i--) {\n var property = instanceKeys[i];\n Object.defineProperty(resolvedTarget, property, {\n value: behavior[property],\n writable: true\n });\n }\n };\n\n return possible ? decorator(possible) : decorator;\n }\n\n return _mixin;\n }\n\n function alwaysValid() {\n return true;\n }\n function noCompose() {}\n\n function ensureProtocolOptions(options) {\n if (options === undefined) {\n options = {};\n } else if (typeof options === 'function') {\n options = {\n validate: options\n };\n }\n\n if (!options.validate) {\n options.validate = alwaysValid;\n }\n\n if (!options.compose) {\n options.compose = noCompose;\n }\n\n return options;\n }\n\n function createProtocolValidator(validate) {\n return function (target) {\n var result = validate(target);\n return result === true;\n };\n }\n\n function createProtocolAsserter(name, validate) {\n return function (target) {\n var result = validate(target);\n if (result !== true) {\n throw new Error(result || name + ' was not correctly implemented.');\n }\n };\n }\n\n function protocol(name, options) {\n options = ensureProtocolOptions(options);\n\n var result = function result(target) {\n var resolvedTarget = typeof target === 'function' ? target.prototype : target;\n\n options.compose(resolvedTarget);\n result.assert(resolvedTarget);\n\n Object.defineProperty(resolvedTarget, 'protocol:' + name, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: true\n });\n };\n\n result.validate = createProtocolValidator(options.validate);\n result.assert = createProtocolAsserter(name, options.validate);\n\n return result;\n }\n\n protocol.create = function (name, options) {\n options = ensureProtocolOptions(options);\n var hidden = 'protocol:' + name;\n var result = function result(target) {\n var decorator = protocol(name, options);\n return target ? decorator(target) : decorator;\n };\n\n result.decorates = function (obj) {\n return obj[hidden] === true;\n };\n result.validate = createProtocolValidator(options.validate);\n result.assert = createProtocolAsserter(name, options.validate);\n\n return result;\n };\n});\r\ndefine('aurelia-pal',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AggregateError = AggregateError;\n exports.initializePAL = initializePAL;\n exports.reset = reset;\n function AggregateError(message, innerError, skipIfAlreadyAggregate) {\n if (innerError) {\n if (innerError.innerError && skipIfAlreadyAggregate) {\n return innerError;\n }\n\n var separator = '\\n------------------------------------------------\\n';\n\n message += separator + 'Inner Error:\\n';\n\n if (typeof innerError === 'string') {\n message += 'Message: ' + innerError;\n } else {\n if (innerError.message) {\n message += 'Message: ' + innerError.message;\n } else {\n message += 'Unknown Inner Error Type. Displaying Inner Error as JSON:\\n ' + JSON.stringify(innerError, null, ' ');\n }\n\n if (innerError.stack) {\n message += '\\nInner Error Stack:\\n' + innerError.stack;\n message += '\\nEnd Inner Error Stack';\n }\n }\n\n message += separator;\n }\n\n var e = new Error(message);\n if (innerError) {\n e.innerError = innerError;\n }\n\n return e;\n }\n\n var FEATURE = exports.FEATURE = {};\n\n var PLATFORM = exports.PLATFORM = {\n noop: function noop() {},\n eachModule: function eachModule() {},\n moduleName: function (_moduleName) {\n function moduleName(_x) {\n return _moduleName.apply(this, arguments);\n }\n\n moduleName.toString = function () {\n return _moduleName.toString();\n };\n\n return moduleName;\n }(function (moduleName) {\n return moduleName;\n })\n };\n\n PLATFORM.global = function () {\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n return new Function('return this')();\n }();\n\n var DOM = exports.DOM = {};\n var isInitialized = exports.isInitialized = false;\n function initializePAL(callback) {\n if (isInitialized) {\n return;\n }\n exports.isInitialized = isInitialized = true;\n if (typeof Object.getPropertyDescriptor !== 'function') {\n Object.getPropertyDescriptor = function (subject, name) {\n var pd = Object.getOwnPropertyDescriptor(subject, name);\n var proto = Object.getPrototypeOf(subject);\n while (typeof pd === 'undefined' && proto !== null) {\n pd = Object.getOwnPropertyDescriptor(proto, name);\n proto = Object.getPrototypeOf(proto);\n }\n return pd;\n };\n }\n\n callback(PLATFORM, FEATURE, DOM);\n }\n function reset() {\n exports.isInitialized = isInitialized = false;\n }\n});\r\ndefine('aurelia-pal-browser',['exports', 'aurelia-pal'], function (exports, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports._DOM = exports._FEATURE = exports._PLATFORM = undefined;\n exports.initialize = initialize;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var _PLATFORM = exports._PLATFORM = {\n location: window.location,\n history: window.history,\n addEventListener: function addEventListener(eventName, callback, capture) {\n this.global.addEventListener(eventName, callback, capture);\n },\n removeEventListener: function removeEventListener(eventName, callback, capture) {\n this.global.removeEventListener(eventName, callback, capture);\n },\n\n performance: window.performance,\n requestAnimationFrame: function requestAnimationFrame(callback) {\n return this.global.requestAnimationFrame(callback);\n }\n };\n\n if (typeof FEATURE_NO_IE === 'undefined') {\n var test = function test() {};\n\n if (test.name === undefined) {\n Object.defineProperty(Function.prototype, 'name', {\n get: function get() {\n var name = this.toString().match(/^\\s*function\\s*(\\S*)\\s*\\(/)[1];\n\n Object.defineProperty(this, 'name', { value: name });\n return name;\n }\n });\n }\n }\n\n if (typeof FEATURE_NO_IE === 'undefined') {\n if (!('classList' in document.createElement('_')) || document.createElementNS && !('classList' in document.createElementNS('http://www.w3.org/2000/svg', 'g'))) {\n (function () {\n var protoProp = 'prototype';\n var strTrim = String.prototype.trim;\n var arrIndexOf = Array.prototype.indexOf;\n var emptyArray = [];\n\n var DOMEx = function DOMEx(type, message) {\n this.name = type;\n this.code = DOMException[type];\n this.message = message;\n };\n\n var checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {\n if (token === '') {\n throw new DOMEx('SYNTAX_ERR', 'An invalid or illegal string was specified');\n }\n\n if (/\\s/.test(token)) {\n throw new DOMEx('INVALID_CHARACTER_ERR', 'String contains an invalid character');\n }\n\n return arrIndexOf.call(classList, token);\n };\n\n var ClassList = function ClassList(elem) {\n var trimmedClasses = strTrim.call(elem.getAttribute('class') || '');\n var classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : emptyArray;\n\n for (var i = 0, ii = classes.length; i < ii; ++i) {\n this.push(classes[i]);\n }\n\n this._updateClassName = function () {\n elem.setAttribute('class', this.toString());\n };\n };\n\n var classListProto = ClassList[protoProp] = [];\n\n DOMEx[protoProp] = Error[protoProp];\n\n classListProto.item = function (i) {\n return this[i] || null;\n };\n\n classListProto.contains = function (token) {\n token += '';\n return checkTokenAndGetIndex(this, token) !== -1;\n };\n\n classListProto.add = function () {\n var tokens = arguments;\n var i = 0;\n var ii = tokens.length;\n var token = void 0;\n var updated = false;\n\n do {\n token = tokens[i] + '';\n if (checkTokenAndGetIndex(this, token) === -1) {\n this.push(token);\n updated = true;\n }\n } while (++i < ii);\n\n if (updated) {\n this._updateClassName();\n }\n };\n\n classListProto.remove = function () {\n var tokens = arguments;\n var i = 0;\n var ii = tokens.length;\n var token = void 0;\n var updated = false;\n var index = void 0;\n\n do {\n token = tokens[i] + '';\n index = checkTokenAndGetIndex(this, token);\n while (index !== -1) {\n this.splice(index, 1);\n updated = true;\n index = checkTokenAndGetIndex(this, token);\n }\n } while (++i < ii);\n\n if (updated) {\n this._updateClassName();\n }\n };\n\n classListProto.toggle = function (token, force) {\n token += '';\n\n var result = this.contains(token);\n var method = result ? force !== true && 'remove' : force !== false && 'add';\n\n if (method) {\n this[method](token);\n }\n\n if (force === true || force === false) {\n return force;\n }\n\n return !result;\n };\n\n classListProto.toString = function () {\n return this.join(' ');\n };\n\n Object.defineProperty(Element.prototype, 'classList', {\n get: function get() {\n return new ClassList(this);\n },\n enumerable: true,\n configurable: true\n });\n })();\n } else {\n var testElement = document.createElement('_');\n testElement.classList.add('c1', 'c2');\n\n if (!testElement.classList.contains('c2')) {\n var createMethod = function createMethod(method) {\n var original = DOMTokenList.prototype[method];\n\n DOMTokenList.prototype[method] = function (token) {\n for (var i = 0, ii = arguments.length; i < ii; ++i) {\n token = arguments[i];\n original.call(this, token);\n }\n };\n };\n\n createMethod('add');\n createMethod('remove');\n }\n\n testElement.classList.toggle('c3', false);\n\n if (testElement.classList.contains('c3')) {\n (function () {\n var _toggle = DOMTokenList.prototype.toggle;\n\n DOMTokenList.prototype.toggle = function (token, force) {\n if (1 in arguments && !this.contains(token) === !force) {\n return force;\n }\n\n return _toggle.call(this, token);\n };\n })();\n }\n\n testElement = null;\n }\n }\n\n if (typeof FEATURE_NO_IE === 'undefined') {\n // @license http://opensource.org/licenses/MIT\n if ('performance' in window === false) {\n window.performance = {};\n }\n\n if ('now' in window.performance === false) {\n (function () {\n var nowOffset = Date.now();\n\n if (performance.timing && performance.timing.navigationStart) {\n nowOffset = performance.timing.navigationStart;\n }\n\n window.performance.now = function now() {\n return Date.now() - nowOffset;\n };\n })();\n }\n\n _PLATFORM.performance = window.performance;\n }\n\n if (typeof FEATURE_NO_IE === 'undefined') {\n (function () {\n var con = window.console = window.console || {};\n var nop = function nop() {};\n\n if (!con.memory) con.memory = {};\n ('assert,clear,count,debug,dir,dirxml,error,exception,group,' + 'groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,' + 'show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn').split(',').forEach(function (m) {\n if (!con[m]) con[m] = nop;\n });\n\n if (_typeof(con.log) === 'object') {\n 'log,info,warn,error,assert,dir,clear,profile,profileEnd'.split(',').forEach(function (method) {\n console[method] = this.bind(console[method], console);\n }, Function.prototype.call);\n }\n })();\n }\n\n if (typeof FEATURE_NO_IE === 'undefined') {\n if (!window.CustomEvent || typeof window.CustomEvent !== 'function') {\n var _CustomEvent = function _CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n _CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = _CustomEvent;\n }\n }\n\n if (Element && !Element.prototype.matches) {\n var proto = Element.prototype;\n proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n }\n\n var _FEATURE = exports._FEATURE = {\n shadowDOM: !!HTMLElement.prototype.attachShadow,\n scopedCSS: 'scoped' in document.createElement('style'),\n htmlTemplateElement: 'content' in document.createElement('template'),\n mutationObserver: !!(window.MutationObserver || window.WebKitMutationObserver),\n ensureHTMLTemplateElement: function ensureHTMLTemplateElement(t) {\n return t;\n }\n };\n\n if (typeof FEATURE_NO_IE === 'undefined') {\n (function () {\n var isSVGTemplate = function isSVGTemplate(el) {\n return el.tagName === 'template' && el.namespaceURI === 'http://www.w3.org/2000/svg';\n };\n\n var fixSVGTemplateElement = function fixSVGTemplateElement(el) {\n var template = el.ownerDocument.createElement('template');\n var attrs = el.attributes;\n var length = attrs.length;\n var attr = void 0;\n\n el.parentNode.insertBefore(template, el);\n\n while (length-- > 0) {\n attr = attrs[length];\n template.setAttribute(attr.name, attr.value);\n el.removeAttribute(attr.name);\n }\n\n el.parentNode.removeChild(el);\n\n return fixHTMLTemplateElement(template);\n };\n\n var fixHTMLTemplateElement = function fixHTMLTemplateElement(template) {\n var content = template.content = document.createDocumentFragment();\n var child = void 0;\n\n while (child = template.firstChild) {\n content.appendChild(child);\n }\n\n return template;\n };\n\n var fixHTMLTemplateElementRoot = function fixHTMLTemplateElementRoot(template) {\n var content = fixHTMLTemplateElement(template).content;\n var childTemplates = content.querySelectorAll('template');\n\n for (var i = 0, ii = childTemplates.length; i < ii; ++i) {\n var child = childTemplates[i];\n\n if (isSVGTemplate(child)) {\n fixSVGTemplateElement(child);\n } else {\n fixHTMLTemplateElement(child);\n }\n }\n\n return template;\n };\n\n if (!_FEATURE.htmlTemplateElement) {\n _FEATURE.ensureHTMLTemplateElement = fixHTMLTemplateElementRoot;\n }\n })();\n }\n\n var shadowPoly = window.ShadowDOMPolyfill || null;\n\n var _DOM = exports._DOM = {\n Element: Element,\n SVGElement: SVGElement,\n boundary: 'aurelia-dom-boundary',\n addEventListener: function addEventListener(eventName, callback, capture) {\n document.addEventListener(eventName, callback, capture);\n },\n removeEventListener: function removeEventListener(eventName, callback, capture) {\n document.removeEventListener(eventName, callback, capture);\n },\n adoptNode: function adoptNode(node) {\n return document.adoptNode(node, true);\n },\n createAttribute: function createAttribute(name) {\n return document.createAttribute(name);\n },\n createElement: function createElement(tagName) {\n return document.createElement(tagName);\n },\n createTextNode: function createTextNode(text) {\n return document.createTextNode(text);\n },\n createComment: function createComment(text) {\n return document.createComment(text);\n },\n createDocumentFragment: function createDocumentFragment() {\n return document.createDocumentFragment();\n },\n createTemplateElement: function createTemplateElement() {\n var template = document.createElement('template');\n return _FEATURE.ensureHTMLTemplateElement(template);\n },\n createMutationObserver: function createMutationObserver(callback) {\n return new (window.MutationObserver || window.WebKitMutationObserver)(callback);\n },\n createCustomEvent: function createCustomEvent(eventType, options) {\n return new window.CustomEvent(eventType, options);\n },\n dispatchEvent: function dispatchEvent(evt) {\n document.dispatchEvent(evt);\n },\n getComputedStyle: function getComputedStyle(element) {\n return window.getComputedStyle(element);\n },\n getElementById: function getElementById(id) {\n return document.getElementById(id);\n },\n querySelectorAll: function querySelectorAll(query) {\n return document.querySelectorAll(query);\n },\n nextElementSibling: function nextElementSibling(element) {\n if (element.nextElementSibling) {\n return element.nextElementSibling;\n }\n do {\n element = element.nextSibling;\n } while (element && element.nodeType !== 1);\n return element;\n },\n createTemplateFromMarkup: function createTemplateFromMarkup(markup) {\n var parser = document.createElement('div');\n parser.innerHTML = markup;\n\n var temp = parser.firstElementChild;\n if (!temp || temp.nodeName !== 'TEMPLATE') {\n throw new Error('Template markup must be wrapped in a <template> element e.g. <template> <!-- markup here --> </template>');\n }\n\n return _FEATURE.ensureHTMLTemplateElement(temp);\n },\n appendNode: function appendNode(newNode, parentNode) {\n (parentNode || document.body).appendChild(newNode);\n },\n replaceNode: function replaceNode(newNode, node, parentNode) {\n if (node.parentNode) {\n node.parentNode.replaceChild(newNode, node);\n } else if (shadowPoly !== null) {\n shadowPoly.unwrap(parentNode).replaceChild(shadowPoly.unwrap(newNode), shadowPoly.unwrap(node));\n } else {\n parentNode.replaceChild(newNode, node);\n }\n },\n removeNode: function removeNode(node, parentNode) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n } else if (parentNode) {\n if (shadowPoly !== null) {\n shadowPoly.unwrap(parentNode).removeChild(shadowPoly.unwrap(node));\n } else {\n parentNode.removeChild(node);\n }\n }\n },\n injectStyles: function injectStyles(styles, destination, prepend) {\n var node = document.createElement('style');\n node.innerHTML = styles;\n node.type = 'text/css';\n\n destination = destination || document.head;\n\n if (prepend && destination.childNodes.length > 0) {\n destination.insertBefore(node, destination.childNodes[0]);\n } else {\n destination.appendChild(node);\n }\n\n return node;\n }\n };\n\n function initialize() {\n if (_aureliaPal.isInitialized) {\n return;\n }\n\n (0, _aureliaPal.initializePAL)(function (platform, feature, dom) {\n Object.assign(platform, _PLATFORM);\n Object.assign(feature, _FEATURE);\n Object.assign(dom, _DOM);\n\n Object.defineProperty(dom, 'title', {\n get: function get() {\n return document.title;\n },\n set: function set(value) {\n document.title = value;\n }\n });\n\n Object.defineProperty(dom, 'activeElement', {\n get: function get() {\n return document.activeElement;\n }\n });\n\n Object.defineProperty(platform, 'XMLHttpRequest', {\n get: function get() {\n return platform.global.XMLHttpRequest;\n }\n });\n });\n }\n});\r\ndefine('aurelia-path',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.relativeToFile = relativeToFile;\n exports.join = join;\n exports.buildQueryString = buildQueryString;\n exports.parseQueryString = parseQueryString;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n function trimDots(ary) {\n for (var i = 0; i < ary.length; ++i) {\n var part = ary[i];\n if (part === '.') {\n ary.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n if (i === 0 || i === 1 && ary[2] === '..' || ary[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n ary.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n }\n\n function relativeToFile(name, file) {\n var fileParts = file && file.split('/');\n var nameParts = name.trim().split('/');\n\n if (nameParts[0].charAt(0) === '.' && fileParts) {\n var normalizedBaseParts = fileParts.slice(0, fileParts.length - 1);\n nameParts.unshift.apply(nameParts, normalizedBaseParts);\n }\n\n trimDots(nameParts);\n\n return nameParts.join('/');\n }\n\n function join(path1, path2) {\n if (!path1) {\n return path2;\n }\n\n if (!path2) {\n return path1;\n }\n\n var schemeMatch = path1.match(/^([^/]*?:)\\//);\n var scheme = schemeMatch && schemeMatch.length > 0 ? schemeMatch[1] : '';\n path1 = path1.substr(scheme.length);\n\n var urlPrefix = void 0;\n if (path1.indexOf('///') === 0 && scheme === 'file:') {\n urlPrefix = '///';\n } else if (path1.indexOf('//') === 0) {\n urlPrefix = '//';\n } else if (path1.indexOf('/') === 0) {\n urlPrefix = '/';\n } else {\n urlPrefix = '';\n }\n\n var trailingSlash = path2.slice(-1) === '/' ? '/' : '';\n\n var url1 = path1.split('/');\n var url2 = path2.split('/');\n var url3 = [];\n\n for (var i = 0, ii = url1.length; i < ii; ++i) {\n if (url1[i] === '..') {\n url3.pop();\n } else if (url1[i] === '.' || url1[i] === '') {\n continue;\n } else {\n url3.push(url1[i]);\n }\n }\n\n for (var _i = 0, _ii = url2.length; _i < _ii; ++_i) {\n if (url2[_i] === '..') {\n url3.pop();\n } else if (url2[_i] === '.' || url2[_i] === '') {\n continue;\n } else {\n url3.push(url2[_i]);\n }\n }\n\n return scheme + urlPrefix + url3.join('/') + trailingSlash;\n }\n\n var encode = encodeURIComponent;\n var encodeKey = function encodeKey(k) {\n return encode(k).replace('%24', '$');\n };\n\n function buildParam(key, value, traditional) {\n var result = [];\n if (value === null || value === undefined) {\n return result;\n }\n if (Array.isArray(value)) {\n for (var i = 0, l = value.length; i < l; i++) {\n if (traditional) {\n result.push(encodeKey(key) + '=' + encode(value[i]));\n } else {\n var arrayKey = key + '[' + (_typeof(value[i]) === 'object' && value[i] !== null ? i : '') + ']';\n result = result.concat(buildParam(arrayKey, value[i]));\n }\n }\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !traditional) {\n for (var propertyName in value) {\n result = result.concat(buildParam(key + '[' + propertyName + ']', value[propertyName]));\n }\n } else {\n result.push(encodeKey(key) + '=' + encode(value));\n }\n return result;\n }\n\n function buildQueryString(params, traditional) {\n var pairs = [];\n var keys = Object.keys(params || {}).sort();\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n pairs = pairs.concat(buildParam(key, params[key], traditional));\n }\n\n if (pairs.length === 0) {\n return '';\n }\n\n return pairs.join('&');\n }\n\n function processScalarParam(existedParam, value) {\n if (Array.isArray(existedParam)) {\n existedParam.push(value);\n return existedParam;\n }\n if (existedParam !== undefined) {\n return [existedParam, value];\n }\n\n return value;\n }\n\n function parseComplexParam(queryParams, keys, value) {\n var currentParams = queryParams;\n var keysLastIndex = keys.length - 1;\n for (var j = 0; j <= keysLastIndex; j++) {\n var key = keys[j] === '' ? currentParams.length : keys[j];\n if (j < keysLastIndex) {\n var prevValue = !currentParams[key] || _typeof(currentParams[key]) === 'object' ? currentParams[key] : [currentParams[key]];\n currentParams = currentParams[key] = prevValue || (isNaN(keys[j + 1]) ? {} : []);\n } else {\n currentParams = currentParams[key] = value;\n }\n }\n }\n\n function parseQueryString(queryString) {\n var queryParams = {};\n if (!queryString || typeof queryString !== 'string') {\n return queryParams;\n }\n\n var query = queryString;\n if (query.charAt(0) === '?') {\n query = query.substr(1);\n }\n\n var pairs = query.replace(/\\+/g, ' ').split('&');\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n var key = decodeURIComponent(pair[0]);\n if (!key) {\n continue;\n }\n\n var keys = key.split('][');\n var keysLastIndex = keys.length - 1;\n\n if (/\\[/.test(keys[0]) && /\\]$/.test(keys[keysLastIndex])) {\n keys[keysLastIndex] = keys[keysLastIndex].replace(/\\]$/, '');\n keys = keys.shift().split('[').concat(keys);\n keysLastIndex = keys.length - 1;\n } else {\n keysLastIndex = 0;\n }\n\n if (pair.length >= 2) {\n var value = pair[1] ? decodeURIComponent(pair[1]) : '';\n if (keysLastIndex) {\n parseComplexParam(queryParams, keys, value);\n } else {\n queryParams[key] = processScalarParam(queryParams[key], value);\n }\n } else {\n queryParams[key] = true;\n }\n }\n return queryParams;\n }\n});\r\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define('redux',[\"exports\"],e):e(t.Redux=t.Redux||{})}(this,function(t){\"use strict\";function e(t){var e=h.call(t,g),n=t[g];try{t[g]=void 0;var r=!0}catch(t){}var o=v.call(t);return r&&(e?t[g]=n:delete t[g]),o}function n(t){return j.call(t)}function r(t){return null==t?void 0===t?m:w:O&&O in Object(t)?e(t):n(t)}function o(t){return null!=t&&\"object\"==typeof t}function i(t){if(!o(t)||r(t)!=E)return!1;var e=x(t);if(null===e)return!0;var n=N.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&S.call(n)==A}function u(t,e,n){function r(){p===l&&(p=l.slice())}function o(){return s}function c(t){if(\"function\"!=typeof t)throw Error(\"Expected listener to be a function.\");var e=!0;return r(),p.push(t),function(){if(e){e=!1,r();var n=p.indexOf(t);p.splice(n,1)}}}function a(t){if(!i(t))throw Error(\"Actions must be plain objects. Use custom middleware for async actions.\");if(void 0===t.type)throw Error('Actions may not have an undefined \"type\" property. Have you misspelled a constant?');if(y)throw Error(\"Reducers may not dispatch actions.\");try{y=!0,s=d(s,t)}finally{y=!1}for(var e=l=p,n=0;e.length>n;n++)(0,e[n])();return t}var f;if(\"function\"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if(\"function\"!=typeof n)throw Error(\"Expected the enhancer to be a function.\");return n(u)(t,e)}if(\"function\"!=typeof t)throw Error(\"Expected the reducer to be a function.\");var d=t,s=e,l=[],p=l,y=!1;return a({type:P.INIT}),f={dispatch:a,subscribe:c,getState:o,replaceReducer:function(t){if(\"function\"!=typeof t)throw Error(\"Expected the nextReducer to be a function.\");d=t,a({type:P.INIT})}},f[R]=function(){var t,e=c;return t={subscribe:function(t){function n(){t.next&&t.next(o())}if(\"object\"!=typeof t)throw new TypeError(\"Expected the observer to be an object.\");return n(),{unsubscribe:e(n)}}},t[R]=function(){return this},t},f}function c(t,e){var n=e&&e.type;return\"Given action \"+(n&&'\"'+n+'\"'||\"an action\")+', reducer \"'+t+'\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function a(t){Object.keys(t).forEach(function(e){var n=t[e];if(void 0===n(void 0,{type:P.INIT}))throw Error('Reducer \"'+e+\"\\\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.\");if(void 0===n(void 0,{type:\"@@redux/PROBE_UNKNOWN_ACTION_\"+Math.random().toString(36).substring(7).split(\"\").join(\".\")}))throw Error('Reducer \"'+e+\"\\\" returned undefined when probed with a random type. Don't try to handle \"+P.INIT+' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}function f(t,e){return function(){return e(t.apply(void 0,arguments))}}function d(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return 0===e.length?function(t){return t}:1===e.length?e[0]:e.reduce(function(t,e){return function(){return t(e.apply(void 0,arguments))}})}var s,l=\"object\"==typeof global&&global&&global.Object===Object&&global,p=\"object\"==typeof self&&self&&self.Object===Object&&self,y=(l||p||Function(\"return this\")()).Symbol,b=Object.prototype,h=b.hasOwnProperty,v=b.toString,g=y?y.toStringTag:void 0,j=Object.prototype.toString,w=\"[object Null]\",m=\"[object Undefined]\",O=y?y.toStringTag:void 0,x=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),E=\"[object Object]\",I=Function.prototype,T=Object.prototype,S=I.toString,N=T.hasOwnProperty,A=S.call(Object),R=function(t){var e,n=t.Symbol;return\"function\"==typeof n?n.observable?e=n.observable:(e=n(\"observable\"),n.observable=e):e=\"@@observable\",e}(s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof module?module:Function(\"return this\")()),P={INIT:\"@@redux/INIT\"},k=Object.assign||function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};t.createStore=u,t.combineReducers=function(t){for(var e=Object.keys(t),n={},r=0;e.length>r;r++){var o=e[r];\"function\"==typeof t[o]&&(n[o]=t[o])}var i=Object.keys(n),u=void 0;try{a(n)}catch(t){u=t}return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];if(u)throw u;for(var r=!1,o={},a=0;i.length>a;a++){var f=i[a],d=n[f],s=t[f],l=d(s,e);if(void 0===l){var p=c(f,e);throw Error(p)}o[f]=l,r=r||l!==s}return r?o:t}},t.bindActionCreators=function(t,e){if(\"function\"==typeof t)return f(t,e);if(\"object\"!=typeof t||null===t)throw Error(\"bindActionCreators expected an object or a function, instead received \"+(null===t?\"null\":typeof t)+'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');for(var n=Object.keys(t),r={},o=0;n.length>o;o++){var i=n[o],u=t[i];\"function\"==typeof u&&(r[i]=f(u,e))}return r},t.applyMiddleware=function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return function(t){return function(n,r,o){var i=t(n,r,o),u=i.dispatch,c=[],a={getState:i.getState,dispatch:function(t){return u(t)}};return c=e.map(function(t){return t(a)}),u=d.apply(void 0,c)(i.dispatch),k({},i,{dispatch:u})}}},t.compose=d,Object.defineProperty(t,\"__esModule\",{value:!0})});\n\r\ndefine('aurelia-task-queue',['exports', 'aurelia-pal'], function (exports, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskQueue = undefined;\n\n \n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n var hasSetImmediate = typeof setImmediate === 'function';\n var stackSeparator = '\\nEnqueued in TaskQueue by:\\n';\n var microStackSeparator = '\\nEnqueued in MicroTaskQueue by:\\n';\n\n function makeRequestFlushFromMutationObserver(flush) {\n var toggle = 1;\n var observer = _aureliaPal.DOM.createMutationObserver(flush);\n var node = _aureliaPal.DOM.createTextNode('');\n observer.observe(node, { characterData: true });\n return function requestFlush() {\n toggle = -toggle;\n node.data = toggle;\n };\n }\n\n function makeRequestFlushFromTimer(flush) {\n return function requestFlush() {\n var timeoutHandle = setTimeout(handleFlushTimer, 0);\n\n var intervalHandle = setInterval(handleFlushTimer, 50);\n function handleFlushTimer() {\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n flush();\n }\n };\n }\n\n function onError(error, task, longStacks) {\n if (longStacks && task.stack && (typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object' && error !== null) {\n error.stack = filterFlushStack(error.stack) + task.stack;\n }\n\n if ('onError' in task) {\n task.onError(error);\n } else if (hasSetImmediate) {\n setImmediate(function () {\n throw error;\n });\n } else {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n }\n\n var TaskQueue = exports.TaskQueue = function () {\n function TaskQueue() {\n var _this = this;\n\n \n\n this.flushing = false;\n this.longStacks = false;\n\n this.microTaskQueue = [];\n this.microTaskQueueCapacity = 1024;\n this.taskQueue = [];\n\n if (_aureliaPal.FEATURE.mutationObserver) {\n this.requestFlushMicroTaskQueue = makeRequestFlushFromMutationObserver(function () {\n return _this.flushMicroTaskQueue();\n });\n } else {\n this.requestFlushMicroTaskQueue = makeRequestFlushFromTimer(function () {\n return _this.flushMicroTaskQueue();\n });\n }\n\n this.requestFlushTaskQueue = makeRequestFlushFromTimer(function () {\n return _this.flushTaskQueue();\n });\n }\n\n TaskQueue.prototype.queueMicroTask = function queueMicroTask(task) {\n if (this.microTaskQueue.length < 1) {\n this.requestFlushMicroTaskQueue();\n }\n\n if (this.longStacks) {\n task.stack = this.prepareQueueStack(microStackSeparator);\n }\n this.microTaskQueue.push(task);\n };\n\n TaskQueue.prototype.queueTask = function queueTask(task) {\n if (this.taskQueue.length < 1) {\n this.requestFlushTaskQueue();\n }\n\n if (this.longStacks) {\n task.stack = this.prepareQueueStack(stackSeparator);\n }\n this.taskQueue.push(task);\n };\n\n TaskQueue.prototype.flushTaskQueue = function flushTaskQueue() {\n var queue = this.taskQueue;\n var index = 0;\n var task = void 0;\n\n this.taskQueue = [];\n\n try {\n this.flushing = true;\n while (index < queue.length) {\n task = queue[index];\n if (this.longStacks) {\n this.stack = typeof task.stack === 'string' ? task.stack : undefined;\n }\n task.call();\n index++;\n }\n } catch (error) {\n onError(error, task, this.longStacks);\n } finally {\n this.flushing = false;\n }\n };\n\n TaskQueue.prototype.flushMicroTaskQueue = function flushMicroTaskQueue() {\n var queue = this.microTaskQueue;\n var capacity = this.microTaskQueueCapacity;\n var index = 0;\n var task = void 0;\n\n try {\n this.flushing = true;\n while (index < queue.length) {\n task = queue[index];\n if (this.longStacks) {\n this.stack = typeof task.stack === 'string' ? task.stack : undefined;\n }\n task.call();\n index++;\n\n if (index > capacity) {\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n\n queue.length -= index;\n index = 0;\n }\n }\n } catch (error) {\n onError(error, task, this.longStacks);\n } finally {\n this.flushing = false;\n }\n\n queue.length = 0;\n };\n\n TaskQueue.prototype.prepareQueueStack = function prepareQueueStack(separator) {\n var stack = separator + filterQueueStack(captureStack());\n if (typeof this.stack === 'string') {\n stack = filterFlushStack(stack) + this.stack;\n }\n return stack;\n };\n\n return TaskQueue;\n }();\n\n function captureStack() {\n var error = new Error();\n\n if (error.stack) {\n return error.stack;\n }\n\n try {\n throw error;\n } catch (e) {\n return e.stack;\n }\n }\n\n function filterQueueStack(stack) {\n return stack.replace(/^[\\s\\S]*?\\bqueue(Micro)?Task\\b[^\\n]*\\n/, '');\n }\n\n function filterFlushStack(stack) {\n var index = stack.lastIndexOf('flushMicroTaskQueue');\n if (index < 0) {\n index = stack.lastIndexOf('flushTaskQueue');\n if (index < 0) {\n return stack;\n }\n }\n index = stack.lastIndexOf('\\n', index);\n return index < 0 ? stack : stack.substr(0, index);\n }\n});\r\ndefine('aurelia-templating',['exports', 'aurelia-logging', 'aurelia-metadata', 'aurelia-pal', 'aurelia-path', 'aurelia-loader', 'aurelia-dependency-injection', 'aurelia-binding', 'aurelia-task-queue'], function (exports, _aureliaLogging, _aureliaMetadata, _aureliaPal, _aureliaPath, _aureliaLoader, _aureliaDependencyInjection, _aureliaBinding, _aureliaTaskQueue) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TemplatingEngine = exports.ElementConfigResource = exports.CompositionEngine = exports.SwapStrategies = exports.HtmlBehaviorResource = exports.BindableProperty = exports.BehaviorPropertyObserver = exports.Controller = exports.ViewEngine = exports.ModuleAnalyzer = exports.ResourceDescription = exports.ResourceModule = exports.ViewCompiler = exports.ViewFactory = exports.BoundViewFactory = exports.ViewSlot = exports.View = exports.ViewResources = exports.ShadowDOM = exports.ShadowSlot = exports.PassThroughSlot = exports.SlotCustomAttribute = exports.BindingLanguage = exports.ViewLocator = exports.InlineViewStrategy = exports.TemplateRegistryViewStrategy = exports.NoViewStrategy = exports.ConventionalViewStrategy = exports.RelativeViewStrategy = exports.viewStrategy = exports.TargetInstruction = exports.BehaviorInstruction = exports.ViewCompileInstruction = exports.ResourceLoadContext = exports.ElementEvents = exports.ViewEngineHooksResource = exports.CompositionTransaction = exports.CompositionTransactionOwnershipToken = exports.CompositionTransactionNotifier = exports.Animator = exports.animationEvent = undefined;\n exports._hyphenate = _hyphenate;\n exports._isAllWhitespace = _isAllWhitespace;\n exports.viewEngineHooks = viewEngineHooks;\n exports.children = children;\n exports.child = child;\n exports.resource = resource;\n exports.behavior = behavior;\n exports.customElement = customElement;\n exports.customAttribute = customAttribute;\n exports.templateController = templateController;\n exports.bindable = bindable;\n exports.dynamicOptions = dynamicOptions;\n exports.useShadowDOM = useShadowDOM;\n exports.processAttributes = processAttributes;\n exports.processContent = processContent;\n exports.containerless = containerless;\n exports.useViewStrategy = useViewStrategy;\n exports.useView = useView;\n exports.inlineView = inlineView;\n exports.noView = noView;\n exports.elementConfig = elementConfig;\n exports.viewResources = viewResources;\n\n var LogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _class, _temp, _dec, _class2, _dec2, _class3, _dec3, _class4, _dec4, _class5, _dec5, _class6, _class7, _temp2, _dec6, _class8, _class9, _temp3, _class11, _dec7, _class13, _dec8, _class14, _class15, _temp4, _dec9, _class16, _dec10, _class17, _dec11, _class18;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n \n\n var animationEvent = exports.animationEvent = {\n enterBegin: 'animation:enter:begin',\n enterActive: 'animation:enter:active',\n enterDone: 'animation:enter:done',\n enterTimeout: 'animation:enter:timeout',\n\n leaveBegin: 'animation:leave:begin',\n leaveActive: 'animation:leave:active',\n leaveDone: 'animation:leave:done',\n leaveTimeout: 'animation:leave:timeout',\n\n staggerNext: 'animation:stagger:next',\n\n removeClassBegin: 'animation:remove-class:begin',\n removeClassActive: 'animation:remove-class:active',\n removeClassDone: 'animation:remove-class:done',\n removeClassTimeout: 'animation:remove-class:timeout',\n\n addClassBegin: 'animation:add-class:begin',\n addClassActive: 'animation:add-class:active',\n addClassDone: 'animation:add-class:done',\n addClassTimeout: 'animation:add-class:timeout',\n\n animateBegin: 'animation:animate:begin',\n animateActive: 'animation:animate:active',\n animateDone: 'animation:animate:done',\n animateTimeout: 'animation:animate:timeout',\n\n sequenceBegin: 'animation:sequence:begin',\n sequenceDone: 'animation:sequence:done'\n };\n\n var Animator = exports.Animator = function () {\n function Animator() {\n \n }\n\n Animator.prototype.enter = function enter(element) {\n return Promise.resolve(false);\n };\n\n Animator.prototype.leave = function leave(element) {\n return Promise.resolve(false);\n };\n\n Animator.prototype.removeClass = function removeClass(element, className) {\n element.classList.remove(className);\n return Promise.resolve(false);\n };\n\n Animator.prototype.addClass = function addClass(element, className) {\n element.classList.add(className);\n return Promise.resolve(false);\n };\n\n Animator.prototype.animate = function animate(element, className) {\n return Promise.resolve(false);\n };\n\n Animator.prototype.runSequence = function runSequence(animations) {};\n\n Animator.prototype.registerEffect = function registerEffect(effectName, properties) {};\n\n Animator.prototype.unregisterEffect = function unregisterEffect(effectName) {};\n\n return Animator;\n }();\n\n var CompositionTransactionNotifier = exports.CompositionTransactionNotifier = function () {\n function CompositionTransactionNotifier(owner) {\n \n\n this.owner = owner;\n this.owner._compositionCount++;\n }\n\n CompositionTransactionNotifier.prototype.done = function done() {\n this.owner._compositionCount--;\n this.owner._tryCompleteTransaction();\n };\n\n return CompositionTransactionNotifier;\n }();\n\n var CompositionTransactionOwnershipToken = exports.CompositionTransactionOwnershipToken = function () {\n function CompositionTransactionOwnershipToken(owner) {\n \n\n this.owner = owner;\n this.owner._ownershipToken = this;\n this.thenable = this._createThenable();\n }\n\n CompositionTransactionOwnershipToken.prototype.waitForCompositionComplete = function waitForCompositionComplete() {\n this.owner._tryCompleteTransaction();\n return this.thenable;\n };\n\n CompositionTransactionOwnershipToken.prototype.resolve = function resolve() {\n this._resolveCallback();\n };\n\n CompositionTransactionOwnershipToken.prototype._createThenable = function _createThenable() {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n _this._resolveCallback = resolve;\n });\n };\n\n return CompositionTransactionOwnershipToken;\n }();\n\n var CompositionTransaction = exports.CompositionTransaction = function () {\n function CompositionTransaction() {\n \n\n this._ownershipToken = null;\n this._compositionCount = 0;\n }\n\n CompositionTransaction.prototype.tryCapture = function tryCapture() {\n return this._ownershipToken === null ? new CompositionTransactionOwnershipToken(this) : null;\n };\n\n CompositionTransaction.prototype.enlist = function enlist() {\n return new CompositionTransactionNotifier(this);\n };\n\n CompositionTransaction.prototype._tryCompleteTransaction = function _tryCompleteTransaction() {\n if (this._compositionCount <= 0) {\n this._compositionCount = 0;\n\n if (this._ownershipToken !== null) {\n var token = this._ownershipToken;\n this._ownershipToken = null;\n token.resolve();\n }\n }\n };\n\n return CompositionTransaction;\n }();\n\n var capitalMatcher = /([A-Z])/g;\n\n function addHyphenAndLower(char) {\n return '-' + char.toLowerCase();\n }\n\n function _hyphenate(name) {\n return (name.charAt(0).toLowerCase() + name.slice(1)).replace(capitalMatcher, addHyphenAndLower);\n }\n\n function _isAllWhitespace(node) {\n return !(node.auInterpolationTarget || /[^\\t\\n\\r ]/.test(node.textContent));\n }\n\n var ViewEngineHooksResource = exports.ViewEngineHooksResource = function () {\n function ViewEngineHooksResource() {\n \n }\n\n ViewEngineHooksResource.prototype.initialize = function initialize(container, target) {\n this.instance = container.get(target);\n };\n\n ViewEngineHooksResource.prototype.register = function register(registry, name) {\n registry.registerViewEngineHooks(this.instance);\n };\n\n ViewEngineHooksResource.prototype.load = function load(container, target) {};\n\n ViewEngineHooksResource.convention = function convention(name) {\n if (name.endsWith('ViewEngineHooks')) {\n return new ViewEngineHooksResource();\n }\n };\n\n return ViewEngineHooksResource;\n }();\n\n function viewEngineHooks(target) {\n var deco = function deco(t) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new ViewEngineHooksResource(), t);\n };\n\n return target ? deco(target) : deco;\n }\n\n var ElementEvents = exports.ElementEvents = function () {\n function ElementEvents(element) {\n \n\n this.element = element;\n this.subscriptions = {};\n }\n\n ElementEvents.prototype._enqueueHandler = function _enqueueHandler(handler) {\n this.subscriptions[handler.eventName] = this.subscriptions[handler.eventName] || [];\n this.subscriptions[handler.eventName].push(handler);\n };\n\n ElementEvents.prototype._dequeueHandler = function _dequeueHandler(handler) {\n var index = void 0;\n var subscriptions = this.subscriptions[handler.eventName];\n if (subscriptions) {\n index = subscriptions.indexOf(handler);\n if (index > -1) {\n subscriptions.splice(index, 1);\n }\n }\n return handler;\n };\n\n ElementEvents.prototype.publish = function publish(eventName) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var cancelable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n var event = _aureliaPal.DOM.createCustomEvent(eventName, { cancelable: cancelable, bubbles: bubbles, detail: detail });\n this.element.dispatchEvent(event);\n };\n\n ElementEvents.prototype.subscribe = function subscribe(eventName, handler) {\n var _this2 = this;\n\n var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (handler && typeof handler === 'function') {\n handler.eventName = eventName;\n handler.handler = handler;\n handler.bubbles = bubbles;\n handler.dispose = function () {\n _this2.element.removeEventListener(eventName, handler, bubbles);\n _this2._dequeueHandler(handler);\n };\n this.element.addEventListener(eventName, handler, bubbles);\n this._enqueueHandler(handler);\n return handler;\n }\n\n return undefined;\n };\n\n ElementEvents.prototype.subscribeOnce = function subscribeOnce(eventName, handler) {\n var _this3 = this;\n\n var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (handler && typeof handler === 'function') {\n var _ret = function () {\n var _handler = function _handler(event) {\n handler(event);\n _handler.dispose();\n };\n return {\n v: _this3.subscribe(eventName, _handler, bubbles)\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n\n return undefined;\n };\n\n ElementEvents.prototype.dispose = function dispose(eventName) {\n if (eventName && typeof eventName === 'string') {\n var subscriptions = this.subscriptions[eventName];\n if (subscriptions) {\n while (subscriptions.length) {\n var subscription = subscriptions.pop();\n if (subscription) {\n subscription.dispose();\n }\n }\n }\n } else {\n this.disposeAll();\n }\n };\n\n ElementEvents.prototype.disposeAll = function disposeAll() {\n for (var key in this.subscriptions) {\n this.dispose(key);\n }\n };\n\n return ElementEvents;\n }();\n\n var ResourceLoadContext = exports.ResourceLoadContext = function () {\n function ResourceLoadContext() {\n \n\n this.dependencies = {};\n }\n\n ResourceLoadContext.prototype.addDependency = function addDependency(url) {\n this.dependencies[url] = true;\n };\n\n ResourceLoadContext.prototype.hasDependency = function hasDependency(url) {\n return url in this.dependencies;\n };\n\n return ResourceLoadContext;\n }();\n\n var ViewCompileInstruction = exports.ViewCompileInstruction = function ViewCompileInstruction() {\n var targetShadowDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var compileSurrogate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n \n\n this.targetShadowDOM = targetShadowDOM;\n this.compileSurrogate = compileSurrogate;\n this.associatedModuleId = null;\n };\n\n ViewCompileInstruction.normal = new ViewCompileInstruction();\n\n var BehaviorInstruction = exports.BehaviorInstruction = function () {\n BehaviorInstruction.enhance = function enhance() {\n var instruction = new BehaviorInstruction();\n instruction.enhance = true;\n return instruction;\n };\n\n BehaviorInstruction.unitTest = function unitTest(type, attributes) {\n var instruction = new BehaviorInstruction();\n instruction.type = type;\n instruction.attributes = attributes || {};\n return instruction;\n };\n\n BehaviorInstruction.element = function element(node, type) {\n var instruction = new BehaviorInstruction();\n instruction.type = type;\n instruction.attributes = {};\n instruction.anchorIsContainer = !(node.hasAttribute('containerless') || type.containerless);\n instruction.initiatedByBehavior = true;\n return instruction;\n };\n\n BehaviorInstruction.attribute = function attribute(attrName, type) {\n var instruction = new BehaviorInstruction();\n instruction.attrName = attrName;\n instruction.type = type || null;\n instruction.attributes = {};\n return instruction;\n };\n\n BehaviorInstruction.dynamic = function dynamic(host, viewModel, viewFactory) {\n var instruction = new BehaviorInstruction();\n instruction.host = host;\n instruction.viewModel = viewModel;\n instruction.viewFactory = viewFactory;\n instruction.inheritBindingContext = true;\n return instruction;\n };\n\n function BehaviorInstruction() {\n \n\n this.initiatedByBehavior = false;\n this.enhance = false;\n this.partReplacements = null;\n this.viewFactory = null;\n this.originalAttrName = null;\n this.skipContentProcessing = false;\n this.contentFactory = null;\n this.viewModel = null;\n this.anchorIsContainer = false;\n this.host = null;\n this.attributes = null;\n this.type = null;\n this.attrName = null;\n this.inheritBindingContext = false;\n }\n\n return BehaviorInstruction;\n }();\n\n BehaviorInstruction.normal = new BehaviorInstruction();\n\n var TargetInstruction = exports.TargetInstruction = (_temp = _class = function () {\n TargetInstruction.shadowSlot = function shadowSlot(parentInjectorId) {\n var instruction = new TargetInstruction();\n instruction.parentInjectorId = parentInjectorId;\n instruction.shadowSlot = true;\n return instruction;\n };\n\n TargetInstruction.contentExpression = function contentExpression(expression) {\n var instruction = new TargetInstruction();\n instruction.contentExpression = expression;\n return instruction;\n };\n\n TargetInstruction.lifting = function lifting(parentInjectorId, liftingInstruction) {\n var instruction = new TargetInstruction();\n instruction.parentInjectorId = parentInjectorId;\n instruction.expressions = TargetInstruction.noExpressions;\n instruction.behaviorInstructions = [liftingInstruction];\n instruction.viewFactory = liftingInstruction.viewFactory;\n instruction.providers = [liftingInstruction.type.target];\n instruction.lifting = true;\n return instruction;\n };\n\n TargetInstruction.normal = function normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction) {\n var instruction = new TargetInstruction();\n instruction.injectorId = injectorId;\n instruction.parentInjectorId = parentInjectorId;\n instruction.providers = providers;\n instruction.behaviorInstructions = behaviorInstructions;\n instruction.expressions = expressions;\n instruction.anchorIsContainer = elementInstruction ? elementInstruction.anchorIsContainer : true;\n instruction.elementInstruction = elementInstruction;\n return instruction;\n };\n\n TargetInstruction.surrogate = function surrogate(providers, behaviorInstructions, expressions, values) {\n var instruction = new TargetInstruction();\n instruction.expressions = expressions;\n instruction.behaviorInstructions = behaviorInstructions;\n instruction.providers = providers;\n instruction.values = values;\n return instruction;\n };\n\n function TargetInstruction() {\n \n\n this.injectorId = null;\n this.parentInjectorId = null;\n\n this.shadowSlot = false;\n this.slotName = null;\n this.slotFallbackFactory = null;\n\n this.contentExpression = null;\n\n this.expressions = null;\n this.behaviorInstructions = null;\n this.providers = null;\n\n this.viewFactory = null;\n\n this.anchorIsContainer = false;\n this.elementInstruction = null;\n this.lifting = false;\n\n this.values = null;\n }\n\n return TargetInstruction;\n }(), _class.noExpressions = Object.freeze([]), _temp);\n var viewStrategy = exports.viewStrategy = _aureliaMetadata.protocol.create('aurelia:view-strategy', {\n validate: function validate(target) {\n if (!(typeof target.loadViewFactory === 'function')) {\n return 'View strategies must implement: loadViewFactory(viewEngine: ViewEngine, compileInstruction: ViewCompileInstruction, loadContext?: ResourceLoadContext): Promise<ViewFactory>';\n }\n\n return true;\n },\n compose: function compose(target) {\n if (!(typeof target.makeRelativeTo === 'function')) {\n target.makeRelativeTo = _aureliaPal.PLATFORM.noop;\n }\n }\n });\n\n var RelativeViewStrategy = exports.RelativeViewStrategy = (_dec = viewStrategy(), _dec(_class2 = function () {\n function RelativeViewStrategy(path) {\n \n\n this.path = path;\n this.absolutePath = null;\n }\n\n RelativeViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n if (this.absolutePath === null && this.moduleId) {\n this.absolutePath = (0, _aureliaPath.relativeToFile)(this.path, this.moduleId);\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(this.absolutePath || this.path, compileInstruction, loadContext, target);\n };\n\n RelativeViewStrategy.prototype.makeRelativeTo = function makeRelativeTo(file) {\n if (this.absolutePath === null) {\n this.absolutePath = (0, _aureliaPath.relativeToFile)(this.path, file);\n }\n };\n\n return RelativeViewStrategy;\n }()) || _class2);\n var ConventionalViewStrategy = exports.ConventionalViewStrategy = (_dec2 = viewStrategy(), _dec2(_class3 = function () {\n function ConventionalViewStrategy(viewLocator, origin) {\n \n\n this.moduleId = origin.moduleId;\n this.viewUrl = viewLocator.convertOriginToViewUrl(origin);\n }\n\n ConventionalViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(this.viewUrl, compileInstruction, loadContext, target);\n };\n\n return ConventionalViewStrategy;\n }()) || _class3);\n var NoViewStrategy = exports.NoViewStrategy = (_dec3 = viewStrategy(), _dec3(_class4 = function () {\n function NoViewStrategy(dependencies, dependencyBaseUrl) {\n \n\n this.dependencies = dependencies || null;\n this.dependencyBaseUrl = dependencyBaseUrl || '';\n }\n\n NoViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var entry = this.entry;\n var dependencies = this.dependencies;\n\n if (entry && entry.factoryIsReady) {\n return Promise.resolve(null);\n }\n\n this.entry = entry = new _aureliaLoader.TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\n\n entry.dependencies = [];\n entry.templateIsLoaded = true;\n\n if (dependencies !== null) {\n for (var i = 0, ii = dependencies.length; i < ii; ++i) {\n var current = dependencies[i];\n\n if (typeof current === 'string' || typeof current === 'function') {\n entry.addDependency(current);\n } else {\n entry.addDependency(current.from, current.as);\n }\n }\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n\n return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n };\n\n return NoViewStrategy;\n }()) || _class4);\n var TemplateRegistryViewStrategy = exports.TemplateRegistryViewStrategy = (_dec4 = viewStrategy(), _dec4(_class5 = function () {\n function TemplateRegistryViewStrategy(moduleId, entry) {\n \n\n this.moduleId = moduleId;\n this.entry = entry;\n }\n\n TemplateRegistryViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var entry = this.entry;\n\n if (entry.factoryIsReady) {\n return Promise.resolve(entry.factory);\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n };\n\n return TemplateRegistryViewStrategy;\n }()) || _class5);\n var InlineViewStrategy = exports.InlineViewStrategy = (_dec5 = viewStrategy(), _dec5(_class6 = function () {\n function InlineViewStrategy(markup, dependencies, dependencyBaseUrl) {\n \n\n this.markup = markup;\n this.dependencies = dependencies || null;\n this.dependencyBaseUrl = dependencyBaseUrl || '';\n }\n\n InlineViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var entry = this.entry;\n var dependencies = this.dependencies;\n\n if (entry && entry.factoryIsReady) {\n return Promise.resolve(entry.factory);\n }\n\n this.entry = entry = new _aureliaLoader.TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\n entry.template = _aureliaPal.DOM.createTemplateFromMarkup(this.markup);\n\n if (dependencies !== null) {\n for (var i = 0, ii = dependencies.length; i < ii; ++i) {\n var current = dependencies[i];\n\n if (typeof current === 'string' || typeof current === 'function') {\n entry.addDependency(current);\n } else {\n entry.addDependency(current.from, current.as);\n }\n }\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n };\n\n return InlineViewStrategy;\n }()) || _class6);\n var ViewLocator = exports.ViewLocator = (_temp2 = _class7 = function () {\n function ViewLocator() {\n \n }\n\n ViewLocator.prototype.getViewStrategy = function getViewStrategy(value) {\n if (!value) {\n return null;\n }\n\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && 'getViewStrategy' in value) {\n var _origin = _aureliaMetadata.Origin.get(value.constructor);\n\n value = value.getViewStrategy();\n\n if (typeof value === 'string') {\n value = new RelativeViewStrategy(value);\n }\n\n viewStrategy.assert(value);\n\n if (_origin.moduleId) {\n value.makeRelativeTo(_origin.moduleId);\n }\n\n return value;\n }\n\n if (typeof value === 'string') {\n value = new RelativeViewStrategy(value);\n }\n\n if (viewStrategy.validate(value)) {\n return value;\n }\n\n if (typeof value !== 'function') {\n value = value.constructor;\n }\n\n var origin = _aureliaMetadata.Origin.get(value);\n var strategy = _aureliaMetadata.metadata.get(ViewLocator.viewStrategyMetadataKey, value);\n\n if (!strategy) {\n if (!origin.moduleId) {\n throw new Error('Cannot determine default view strategy for object.', value);\n }\n\n strategy = this.createFallbackViewStrategy(origin);\n } else if (origin.moduleId) {\n strategy.moduleId = origin.moduleId;\n }\n\n return strategy;\n };\n\n ViewLocator.prototype.createFallbackViewStrategy = function createFallbackViewStrategy(origin) {\n return new ConventionalViewStrategy(this, origin);\n };\n\n ViewLocator.prototype.convertOriginToViewUrl = function convertOriginToViewUrl(origin) {\n var moduleId = origin.moduleId;\n var id = moduleId.endsWith('.js') || moduleId.endsWith('.ts') ? moduleId.substring(0, moduleId.length - 3) : moduleId;\n return id + '.html';\n };\n\n return ViewLocator;\n }(), _class7.viewStrategyMetadataKey = 'aurelia:view-strategy', _temp2);\n\n\n function mi(name) {\n throw new Error('BindingLanguage must implement ' + name + '().');\n }\n\n var BindingLanguage = exports.BindingLanguage = function () {\n function BindingLanguage() {\n \n }\n\n BindingLanguage.prototype.inspectAttribute = function inspectAttribute(resources, elementName, attrName, attrValue) {\n mi('inspectAttribute');\n };\n\n BindingLanguage.prototype.createAttributeInstruction = function createAttributeInstruction(resources, element, info, existingInstruction) {\n mi('createAttributeInstruction');\n };\n\n BindingLanguage.prototype.inspectTextContent = function inspectTextContent(resources, value) {\n mi('inspectTextContent');\n };\n\n return BindingLanguage;\n }();\n\n var noNodes = Object.freeze([]);\n\n var SlotCustomAttribute = exports.SlotCustomAttribute = (_dec6 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element), _dec6(_class8 = function () {\n function SlotCustomAttribute(element) {\n \n\n this.element = element;\n this.element.auSlotAttribute = this;\n }\n\n SlotCustomAttribute.prototype.valueChanged = function valueChanged(newValue, oldValue) {};\n\n return SlotCustomAttribute;\n }()) || _class8);\n\n var PassThroughSlot = exports.PassThroughSlot = function () {\n function PassThroughSlot(anchor, name, destinationName, fallbackFactory) {\n \n\n this.anchor = anchor;\n this.anchor.viewSlot = this;\n this.name = name;\n this.destinationName = destinationName;\n this.fallbackFactory = fallbackFactory;\n this.destinationSlot = null;\n this.projections = 0;\n this.contentView = null;\n\n var attr = new SlotCustomAttribute(this.anchor);\n attr.value = this.destinationName;\n }\n\n PassThroughSlot.prototype.renderFallbackContent = function renderFallbackContent(view, nodes, projectionSource, index) {\n if (this.contentView === null) {\n this.contentView = this.fallbackFactory.create(this.ownerView.container);\n this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\n\n var slots = Object.create(null);\n slots[this.destinationSlot.name] = this.destinationSlot;\n\n ShadowDOM.distributeView(this.contentView, slots, projectionSource, index, this.destinationSlot.name);\n }\n };\n\n PassThroughSlot.prototype.passThroughTo = function passThroughTo(destinationSlot) {\n this.destinationSlot = destinationSlot;\n };\n\n PassThroughSlot.prototype.addNode = function addNode(view, node, projectionSource, index) {\n if (this.contentView !== null) {\n this.contentView.removeNodes();\n this.contentView.detached();\n this.contentView.unbind();\n this.contentView = null;\n }\n\n if (node.viewSlot instanceof PassThroughSlot) {\n node.viewSlot.passThroughTo(this);\n return;\n }\n\n this.projections++;\n this.destinationSlot.addNode(view, node, projectionSource, index);\n };\n\n PassThroughSlot.prototype.removeView = function removeView(view, projectionSource) {\n this.projections--;\n this.destinationSlot.removeView(view, projectionSource);\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(null, noNodes, projectionSource);\n }\n };\n\n PassThroughSlot.prototype.removeAll = function removeAll(projectionSource) {\n this.projections = 0;\n this.destinationSlot.removeAll(projectionSource);\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(null, noNodes, projectionSource);\n }\n };\n\n PassThroughSlot.prototype.projectFrom = function projectFrom(view, projectionSource) {\n this.destinationSlot.projectFrom(view, projectionSource);\n };\n\n PassThroughSlot.prototype.created = function created(ownerView) {\n this.ownerView = ownerView;\n };\n\n PassThroughSlot.prototype.bind = function bind(view) {\n if (this.contentView) {\n this.contentView.bind(view.bindingContext, view.overrideContext);\n }\n };\n\n PassThroughSlot.prototype.attached = function attached() {\n if (this.contentView) {\n this.contentView.attached();\n }\n };\n\n PassThroughSlot.prototype.detached = function detached() {\n if (this.contentView) {\n this.contentView.detached();\n }\n };\n\n PassThroughSlot.prototype.unbind = function unbind() {\n if (this.contentView) {\n this.contentView.unbind();\n }\n };\n\n _createClass(PassThroughSlot, [{\n key: 'needsFallbackRendering',\n get: function get() {\n return this.fallbackFactory && this.projections === 0;\n }\n }]);\n\n return PassThroughSlot;\n }();\n\n var ShadowSlot = exports.ShadowSlot = function () {\n function ShadowSlot(anchor, name, fallbackFactory) {\n \n\n this.anchor = anchor;\n this.anchor.isContentProjectionSource = true;\n this.anchor.viewSlot = this;\n this.name = name;\n this.fallbackFactory = fallbackFactory;\n this.contentView = null;\n this.projections = 0;\n this.children = [];\n this.projectFromAnchors = null;\n this.destinationSlots = null;\n }\n\n ShadowSlot.prototype.addNode = function addNode(view, node, projectionSource, index, destination) {\n if (this.contentView !== null) {\n this.contentView.removeNodes();\n this.contentView.detached();\n this.contentView.unbind();\n this.contentView = null;\n }\n\n if (node.viewSlot instanceof PassThroughSlot) {\n node.viewSlot.passThroughTo(this);\n return;\n }\n\n if (this.destinationSlots !== null) {\n ShadowDOM.distributeNodes(view, [node], this.destinationSlots, this, index);\n } else {\n node.auOwnerView = view;\n node.auProjectionSource = projectionSource;\n node.auAssignedSlot = this;\n\n var anchor = this._findAnchor(view, node, projectionSource, index);\n var parent = anchor.parentNode;\n\n parent.insertBefore(node, anchor);\n this.children.push(node);\n this.projections++;\n }\n };\n\n ShadowSlot.prototype.removeView = function removeView(view, projectionSource) {\n if (this.destinationSlots !== null) {\n ShadowDOM.undistributeView(view, this.destinationSlots, this);\n } else if (this.contentView && this.contentView.hasSlots) {\n ShadowDOM.undistributeView(view, this.contentView.slots, projectionSource);\n } else {\n var found = this.children.find(function (x) {\n return x.auSlotProjectFrom === projectionSource;\n });\n if (found) {\n var _children = found.auProjectionChildren;\n\n for (var i = 0, ii = _children.length; i < ii; ++i) {\n var _child = _children[i];\n\n if (_child.auOwnerView === view) {\n _children.splice(i, 1);\n view.fragment.appendChild(_child);\n i--;ii--;\n this.projections--;\n }\n }\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(view, noNodes, projectionSource);\n }\n }\n }\n };\n\n ShadowSlot.prototype.removeAll = function removeAll(projectionSource) {\n if (this.destinationSlots !== null) {\n ShadowDOM.undistributeAll(this.destinationSlots, this);\n } else if (this.contentView && this.contentView.hasSlots) {\n ShadowDOM.undistributeAll(this.contentView.slots, projectionSource);\n } else {\n var found = this.children.find(function (x) {\n return x.auSlotProjectFrom === projectionSource;\n });\n\n if (found) {\n var _children2 = found.auProjectionChildren;\n for (var i = 0, ii = _children2.length; i < ii; ++i) {\n var _child2 = _children2[i];\n _child2.auOwnerView.fragment.appendChild(_child2);\n this.projections--;\n }\n\n found.auProjectionChildren = [];\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(null, noNodes, projectionSource);\n }\n }\n }\n };\n\n ShadowSlot.prototype._findAnchor = function _findAnchor(view, node, projectionSource, index) {\n if (projectionSource) {\n var found = this.children.find(function (x) {\n return x.auSlotProjectFrom === projectionSource;\n });\n if (found) {\n if (index !== undefined) {\n var _children3 = found.auProjectionChildren;\n var viewIndex = -1;\n var lastView = void 0;\n\n for (var i = 0, ii = _children3.length; i < ii; ++i) {\n var current = _children3[i];\n\n if (current.auOwnerView !== lastView) {\n viewIndex++;\n lastView = current.auOwnerView;\n\n if (viewIndex >= index && lastView !== view) {\n _children3.splice(i, 0, node);\n return current;\n }\n }\n }\n }\n\n found.auProjectionChildren.push(node);\n return found;\n }\n }\n\n return this.anchor;\n };\n\n ShadowSlot.prototype.projectTo = function projectTo(slots) {\n this.destinationSlots = slots;\n };\n\n ShadowSlot.prototype.projectFrom = function projectFrom(view, projectionSource) {\n var anchor = _aureliaPal.DOM.createComment('anchor');\n var parent = this.anchor.parentNode;\n anchor.auSlotProjectFrom = projectionSource;\n anchor.auOwnerView = view;\n anchor.auProjectionChildren = [];\n parent.insertBefore(anchor, this.anchor);\n this.children.push(anchor);\n\n if (this.projectFromAnchors === null) {\n this.projectFromAnchors = [];\n }\n\n this.projectFromAnchors.push(anchor);\n };\n\n ShadowSlot.prototype.renderFallbackContent = function renderFallbackContent(view, nodes, projectionSource, index) {\n if (this.contentView === null) {\n this.contentView = this.fallbackFactory.create(this.ownerView.container);\n this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\n this.contentView.insertNodesBefore(this.anchor);\n }\n\n if (this.contentView.hasSlots) {\n var slots = this.contentView.slots;\n var projectFromAnchors = this.projectFromAnchors;\n\n if (projectFromAnchors !== null) {\n for (var slotName in slots) {\n var slot = slots[slotName];\n\n for (var i = 0, ii = projectFromAnchors.length; i < ii; ++i) {\n var anchor = projectFromAnchors[i];\n slot.projectFrom(anchor.auOwnerView, anchor.auSlotProjectFrom);\n }\n }\n }\n\n this.fallbackSlots = slots;\n ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index);\n }\n };\n\n ShadowSlot.prototype.created = function created(ownerView) {\n this.ownerView = ownerView;\n };\n\n ShadowSlot.prototype.bind = function bind(view) {\n if (this.contentView) {\n this.contentView.bind(view.bindingContext, view.overrideContext);\n }\n };\n\n ShadowSlot.prototype.attached = function attached() {\n if (this.contentView) {\n this.contentView.attached();\n }\n };\n\n ShadowSlot.prototype.detached = function detached() {\n if (this.contentView) {\n this.contentView.detached();\n }\n };\n\n ShadowSlot.prototype.unbind = function unbind() {\n if (this.contentView) {\n this.contentView.unbind();\n }\n };\n\n _createClass(ShadowSlot, [{\n key: 'needsFallbackRendering',\n get: function get() {\n return this.fallbackFactory && this.projections === 0;\n }\n }]);\n\n return ShadowSlot;\n }();\n\n var ShadowDOM = exports.ShadowDOM = (_temp3 = _class9 = function () {\n function ShadowDOM() {\n \n }\n\n ShadowDOM.getSlotName = function getSlotName(node) {\n if (node.auSlotAttribute === undefined) {\n return ShadowDOM.defaultSlotKey;\n }\n\n return node.auSlotAttribute.value;\n };\n\n ShadowDOM.distributeView = function distributeView(view, slots, projectionSource, index, destinationOverride) {\n var nodes = void 0;\n\n if (view === null) {\n nodes = noNodes;\n } else {\n var childNodes = view.fragment.childNodes;\n var ii = childNodes.length;\n nodes = new Array(ii);\n\n for (var i = 0; i < ii; ++i) {\n nodes[i] = childNodes[i];\n }\n }\n\n ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride);\n };\n\n ShadowDOM.undistributeView = function undistributeView(view, slots, projectionSource) {\n for (var slotName in slots) {\n slots[slotName].removeView(view, projectionSource);\n }\n };\n\n ShadowDOM.undistributeAll = function undistributeAll(slots, projectionSource) {\n for (var slotName in slots) {\n slots[slotName].removeAll(projectionSource);\n }\n };\n\n ShadowDOM.distributeNodes = function distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride) {\n for (var i = 0, ii = nodes.length; i < ii; ++i) {\n var currentNode = nodes[i];\n var nodeType = currentNode.nodeType;\n\n if (currentNode.isContentProjectionSource) {\n currentNode.viewSlot.projectTo(slots);\n\n for (var slotName in slots) {\n slots[slotName].projectFrom(view, currentNode.viewSlot);\n }\n\n nodes.splice(i, 1);\n ii--;i--;\n } else if (nodeType === 1 || nodeType === 3 || currentNode.viewSlot instanceof PassThroughSlot) {\n if (nodeType === 3 && _isAllWhitespace(currentNode)) {\n nodes.splice(i, 1);\n ii--;i--;\n } else {\n var found = slots[destinationOverride || ShadowDOM.getSlotName(currentNode)];\n\n if (found) {\n found.addNode(view, currentNode, projectionSource, index);\n nodes.splice(i, 1);\n ii--;i--;\n }\n }\n } else {\n nodes.splice(i, 1);\n ii--;i--;\n }\n }\n\n for (var _slotName in slots) {\n var slot = slots[_slotName];\n\n if (slot.needsFallbackRendering) {\n slot.renderFallbackContent(view, nodes, projectionSource, index);\n }\n }\n };\n\n return ShadowDOM;\n }(), _class9.defaultSlotKey = '__au-default-slot-key__', _temp3);\n\n\n function register(lookup, name, resource, type) {\n if (!name) {\n return;\n }\n\n var existing = lookup[name];\n if (existing) {\n if (existing !== resource) {\n throw new Error('Attempted to register ' + type + ' when one with the same name already exists. Name: ' + name + '.');\n }\n\n return;\n }\n\n lookup[name] = resource;\n }\n\n var ViewResources = exports.ViewResources = function () {\n function ViewResources(parent, viewUrl) {\n \n\n this.bindingLanguage = null;\n\n this.parent = parent || null;\n this.hasParent = this.parent !== null;\n this.viewUrl = viewUrl || '';\n this.lookupFunctions = {\n valueConverters: this.getValueConverter.bind(this),\n bindingBehaviors: this.getBindingBehavior.bind(this)\n };\n this.attributes = Object.create(null);\n this.elements = Object.create(null);\n this.valueConverters = Object.create(null);\n this.bindingBehaviors = Object.create(null);\n this.attributeMap = Object.create(null);\n this.values = Object.create(null);\n this.beforeCompile = this.afterCompile = this.beforeCreate = this.afterCreate = this.beforeBind = this.beforeUnbind = false;\n }\n\n ViewResources.prototype._tryAddHook = function _tryAddHook(obj, name) {\n if (typeof obj[name] === 'function') {\n var func = obj[name].bind(obj);\n var counter = 1;\n var callbackName = void 0;\n\n while (this[callbackName = name + counter.toString()] !== undefined) {\n counter++;\n }\n\n this[name] = true;\n this[callbackName] = func;\n }\n };\n\n ViewResources.prototype._invokeHook = function _invokeHook(name, one, two, three, four) {\n if (this.hasParent) {\n this.parent._invokeHook(name, one, two, three, four);\n }\n\n if (this[name]) {\n this[name + '1'](one, two, three, four);\n\n var callbackName = name + '2';\n if (this[callbackName]) {\n this[callbackName](one, two, three, four);\n\n callbackName = name + '3';\n if (this[callbackName]) {\n this[callbackName](one, two, three, four);\n\n var counter = 4;\n\n while (this[callbackName = name + counter.toString()] !== undefined) {\n this[callbackName](one, two, three, four);\n counter++;\n }\n }\n }\n }\n };\n\n ViewResources.prototype.registerViewEngineHooks = function registerViewEngineHooks(hooks) {\n this._tryAddHook(hooks, 'beforeCompile');\n this._tryAddHook(hooks, 'afterCompile');\n this._tryAddHook(hooks, 'beforeCreate');\n this._tryAddHook(hooks, 'afterCreate');\n this._tryAddHook(hooks, 'beforeBind');\n this._tryAddHook(hooks, 'beforeUnbind');\n };\n\n ViewResources.prototype.getBindingLanguage = function getBindingLanguage(bindingLanguageFallback) {\n return this.bindingLanguage || (this.bindingLanguage = bindingLanguageFallback);\n };\n\n ViewResources.prototype.patchInParent = function patchInParent(newParent) {\n var originalParent = this.parent;\n\n this.parent = newParent || null;\n this.hasParent = this.parent !== null;\n\n if (newParent.parent === null) {\n newParent.parent = originalParent;\n newParent.hasParent = originalParent !== null;\n }\n };\n\n ViewResources.prototype.relativeToView = function relativeToView(path) {\n return (0, _aureliaPath.relativeToFile)(path, this.viewUrl);\n };\n\n ViewResources.prototype.registerElement = function registerElement(tagName, behavior) {\n register(this.elements, tagName, behavior, 'an Element');\n };\n\n ViewResources.prototype.getElement = function getElement(tagName) {\n return this.elements[tagName] || (this.hasParent ? this.parent.getElement(tagName) : null);\n };\n\n ViewResources.prototype.mapAttribute = function mapAttribute(attribute) {\n return this.attributeMap[attribute] || (this.hasParent ? this.parent.mapAttribute(attribute) : null);\n };\n\n ViewResources.prototype.registerAttribute = function registerAttribute(attribute, behavior, knownAttribute) {\n this.attributeMap[attribute] = knownAttribute;\n register(this.attributes, attribute, behavior, 'an Attribute');\n };\n\n ViewResources.prototype.getAttribute = function getAttribute(attribute) {\n return this.attributes[attribute] || (this.hasParent ? this.parent.getAttribute(attribute) : null);\n };\n\n ViewResources.prototype.registerValueConverter = function registerValueConverter(name, valueConverter) {\n register(this.valueConverters, name, valueConverter, 'a ValueConverter');\n };\n\n ViewResources.prototype.getValueConverter = function getValueConverter(name) {\n return this.valueConverters[name] || (this.hasParent ? this.parent.getValueConverter(name) : null);\n };\n\n ViewResources.prototype.registerBindingBehavior = function registerBindingBehavior(name, bindingBehavior) {\n register(this.bindingBehaviors, name, bindingBehavior, 'a BindingBehavior');\n };\n\n ViewResources.prototype.getBindingBehavior = function getBindingBehavior(name) {\n return this.bindingBehaviors[name] || (this.hasParent ? this.parent.getBindingBehavior(name) : null);\n };\n\n ViewResources.prototype.registerValue = function registerValue(name, value) {\n register(this.values, name, value, 'a value');\n };\n\n ViewResources.prototype.getValue = function getValue(name) {\n return this.values[name] || (this.hasParent ? this.parent.getValue(name) : null);\n };\n\n return ViewResources;\n }();\n\n var View = exports.View = function () {\n function View(container, viewFactory, fragment, controllers, bindings, children, slots) {\n \n\n this.container = container;\n this.viewFactory = viewFactory;\n this.resources = viewFactory.resources;\n this.fragment = fragment;\n this.firstChild = fragment.firstChild;\n this.lastChild = fragment.lastChild;\n this.controllers = controllers;\n this.bindings = bindings;\n this.children = children;\n this.slots = slots;\n this.hasSlots = false;\n this.fromCache = false;\n this.isBound = false;\n this.isAttached = false;\n this.bindingContext = null;\n this.overrideContext = null;\n this.controller = null;\n this.viewModelScope = null;\n this.animatableElement = undefined;\n this._isUserControlled = false;\n this.contentView = null;\n\n for (var key in slots) {\n this.hasSlots = true;\n break;\n }\n }\n\n View.prototype.returnToCache = function returnToCache() {\n this.viewFactory.returnViewToCache(this);\n };\n\n View.prototype.created = function created() {\n var i = void 0;\n var ii = void 0;\n var controllers = this.controllers;\n\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].created(this);\n }\n };\n\n View.prototype.bind = function bind(bindingContext, overrideContext, _systemUpdate) {\n var controllers = void 0;\n var bindings = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (_systemUpdate && this._isUserControlled) {\n return;\n }\n\n if (this.isBound) {\n if (this.bindingContext === bindingContext) {\n return;\n }\n\n this.unbind();\n }\n\n this.isBound = true;\n this.bindingContext = bindingContext;\n this.overrideContext = overrideContext || (0, _aureliaBinding.createOverrideContext)(bindingContext);\n\n this.resources._invokeHook('beforeBind', this);\n\n bindings = this.bindings;\n for (i = 0, ii = bindings.length; i < ii; ++i) {\n bindings[i].bind(this);\n }\n\n if (this.viewModelScope !== null) {\n bindingContext.bind(this.viewModelScope.bindingContext, this.viewModelScope.overrideContext);\n this.viewModelScope = null;\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].bind(this);\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].bind(bindingContext, overrideContext, true);\n }\n\n if (this.hasSlots) {\n ShadowDOM.distributeView(this.contentView, this.slots);\n }\n };\n\n View.prototype.addBinding = function addBinding(binding) {\n this.bindings.push(binding);\n\n if (this.isBound) {\n binding.bind(this);\n }\n };\n\n View.prototype.unbind = function unbind() {\n var controllers = void 0;\n var bindings = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (this.isBound) {\n this.isBound = false;\n this.resources._invokeHook('beforeUnbind', this);\n\n if (this.controller !== null) {\n this.controller.unbind();\n }\n\n bindings = this.bindings;\n for (i = 0, ii = bindings.length; i < ii; ++i) {\n bindings[i].unbind();\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].unbind();\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].unbind();\n }\n\n this.bindingContext = null;\n this.overrideContext = null;\n }\n };\n\n View.prototype.insertNodesBefore = function insertNodesBefore(refNode) {\n refNode.parentNode.insertBefore(this.fragment, refNode);\n };\n\n View.prototype.appendNodesTo = function appendNodesTo(parent) {\n parent.appendChild(this.fragment);\n };\n\n View.prototype.removeNodes = function removeNodes() {\n var fragment = this.fragment;\n var current = this.firstChild;\n var end = this.lastChild;\n var next = void 0;\n\n while (current) {\n next = current.nextSibling;\n fragment.appendChild(current);\n\n if (current === end) {\n break;\n }\n\n current = next;\n }\n };\n\n View.prototype.attached = function attached() {\n var controllers = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (this.isAttached) {\n return;\n }\n\n this.isAttached = true;\n\n if (this.controller !== null) {\n this.controller.attached();\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].attached();\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].attached();\n }\n };\n\n View.prototype.detached = function detached() {\n var controllers = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (this.isAttached) {\n this.isAttached = false;\n\n if (this.controller !== null) {\n this.controller.detached();\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].detached();\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].detached();\n }\n }\n };\n\n return View;\n }();\n\n function getAnimatableElement(view) {\n if (view.animatableElement !== undefined) {\n return view.animatableElement;\n }\n\n var current = view.firstChild;\n\n while (current && current.nodeType !== 1) {\n current = current.nextSibling;\n }\n\n if (current && current.nodeType === 1) {\n return view.animatableElement = current.classList.contains('au-animate') ? current : null;\n }\n\n return view.animatableElement = null;\n }\n\n var ViewSlot = exports.ViewSlot = function () {\n function ViewSlot(anchor, anchorIsContainer) {\n var animator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Animator.instance;\n\n \n\n this.anchor = anchor;\n this.anchorIsContainer = anchorIsContainer;\n this.bindingContext = null;\n this.overrideContext = null;\n this.animator = animator;\n this.children = [];\n this.isBound = false;\n this.isAttached = false;\n this.contentSelectors = null;\n anchor.viewSlot = this;\n anchor.isContentProjectionSource = false;\n }\n\n ViewSlot.prototype.animateView = function animateView(view) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'enter';\n\n var animatableElement = getAnimatableElement(view);\n\n if (animatableElement !== null) {\n switch (direction) {\n case 'enter':\n return this.animator.enter(animatableElement);\n case 'leave':\n return this.animator.leave(animatableElement);\n default:\n throw new Error('Invalid animation direction: ' + direction);\n }\n }\n };\n\n ViewSlot.prototype.transformChildNodesIntoView = function transformChildNodesIntoView() {\n var parent = this.anchor;\n\n this.children.push({\n fragment: parent,\n firstChild: parent.firstChild,\n lastChild: parent.lastChild,\n returnToCache: function returnToCache() {},\n removeNodes: function removeNodes() {\n var last = void 0;\n\n while (last = parent.lastChild) {\n parent.removeChild(last);\n }\n },\n created: function created() {},\n bind: function bind() {},\n unbind: function unbind() {},\n attached: function attached() {},\n detached: function detached() {}\n });\n };\n\n ViewSlot.prototype.bind = function bind(bindingContext, overrideContext) {\n var i = void 0;\n var ii = void 0;\n var children = void 0;\n\n if (this.isBound) {\n if (this.bindingContext === bindingContext) {\n return;\n }\n\n this.unbind();\n }\n\n this.isBound = true;\n this.bindingContext = bindingContext = bindingContext || this.bindingContext;\n this.overrideContext = overrideContext = overrideContext || this.overrideContext;\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].bind(bindingContext, overrideContext, true);\n }\n };\n\n ViewSlot.prototype.unbind = function unbind() {\n if (this.isBound) {\n var i = void 0;\n var ii = void 0;\n var _children4 = this.children;\n\n this.isBound = false;\n this.bindingContext = null;\n this.overrideContext = null;\n\n for (i = 0, ii = _children4.length; i < ii; ++i) {\n _children4[i].unbind();\n }\n }\n };\n\n ViewSlot.prototype.add = function add(view) {\n if (this.anchorIsContainer) {\n view.appendNodesTo(this.anchor);\n } else {\n view.insertNodesBefore(this.anchor);\n }\n\n this.children.push(view);\n\n if (this.isAttached) {\n view.attached();\n return this.animateView(view, 'enter');\n }\n };\n\n ViewSlot.prototype.insert = function insert(index, view) {\n var children = this.children;\n var length = children.length;\n\n if (index === 0 && length === 0 || index >= length) {\n return this.add(view);\n }\n\n view.insertNodesBefore(children[index].firstChild);\n children.splice(index, 0, view);\n\n if (this.isAttached) {\n view.attached();\n return this.animateView(view, 'enter');\n }\n };\n\n ViewSlot.prototype.move = function move(sourceIndex, targetIndex) {\n if (sourceIndex === targetIndex) {\n return;\n }\n\n var children = this.children;\n var view = children[sourceIndex];\n\n view.removeNodes();\n view.insertNodesBefore(children[targetIndex].firstChild);\n children.splice(sourceIndex, 1);\n children.splice(targetIndex, 0, view);\n };\n\n ViewSlot.prototype.remove = function remove(view, returnToCache, skipAnimation) {\n return this.removeAt(this.children.indexOf(view), returnToCache, skipAnimation);\n };\n\n ViewSlot.prototype.removeMany = function removeMany(viewsToRemove, returnToCache, skipAnimation) {\n var _this4 = this;\n\n var children = this.children;\n var ii = viewsToRemove.length;\n var i = void 0;\n var rmPromises = [];\n\n viewsToRemove.forEach(function (child) {\n if (skipAnimation) {\n child.removeNodes();\n return;\n }\n\n var animation = _this4.animateView(child, 'leave');\n if (animation) {\n rmPromises.push(animation.then(function () {\n return child.removeNodes();\n }));\n } else {\n child.removeNodes();\n }\n });\n\n var removeAction = function removeAction() {\n if (_this4.isAttached) {\n for (i = 0; i < ii; ++i) {\n viewsToRemove[i].detached();\n }\n }\n\n if (returnToCache) {\n for (i = 0; i < ii; ++i) {\n viewsToRemove[i].returnToCache();\n }\n }\n\n for (i = 0; i < ii; ++i) {\n var index = children.indexOf(viewsToRemove[i]);\n if (index >= 0) {\n children.splice(index, 1);\n }\n }\n };\n\n if (rmPromises.length > 0) {\n return Promise.all(rmPromises).then(function () {\n return removeAction();\n });\n }\n\n return removeAction();\n };\n\n ViewSlot.prototype.removeAt = function removeAt(index, returnToCache, skipAnimation) {\n var _this5 = this;\n\n var view = this.children[index];\n\n var removeAction = function removeAction() {\n index = _this5.children.indexOf(view);\n view.removeNodes();\n _this5.children.splice(index, 1);\n\n if (_this5.isAttached) {\n view.detached();\n }\n\n if (returnToCache) {\n view.returnToCache();\n }\n\n return view;\n };\n\n if (!skipAnimation) {\n var animation = this.animateView(view, 'leave');\n if (animation) {\n return animation.then(function () {\n return removeAction();\n });\n }\n }\n\n return removeAction();\n };\n\n ViewSlot.prototype.removeAll = function removeAll(returnToCache, skipAnimation) {\n var _this6 = this;\n\n var children = this.children;\n var ii = children.length;\n var i = void 0;\n var rmPromises = [];\n\n children.forEach(function (child) {\n if (skipAnimation) {\n child.removeNodes();\n return;\n }\n\n var animation = _this6.animateView(child, 'leave');\n if (animation) {\n rmPromises.push(animation.then(function () {\n return child.removeNodes();\n }));\n } else {\n child.removeNodes();\n }\n });\n\n var removeAction = function removeAction() {\n if (_this6.isAttached) {\n for (i = 0; i < ii; ++i) {\n children[i].detached();\n }\n }\n\n if (returnToCache) {\n for (i = 0; i < ii; ++i) {\n var _child3 = children[i];\n\n if (_child3) {\n _child3.returnToCache();\n }\n }\n }\n\n _this6.children = [];\n };\n\n if (rmPromises.length > 0) {\n return Promise.all(rmPromises).then(function () {\n return removeAction();\n });\n }\n\n return removeAction();\n };\n\n ViewSlot.prototype.attached = function attached() {\n var i = void 0;\n var ii = void 0;\n var children = void 0;\n var child = void 0;\n\n if (this.isAttached) {\n return;\n }\n\n this.isAttached = true;\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n child = children[i];\n child.attached();\n this.animateView(child, 'enter');\n }\n };\n\n ViewSlot.prototype.detached = function detached() {\n var i = void 0;\n var ii = void 0;\n var children = void 0;\n\n if (this.isAttached) {\n this.isAttached = false;\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].detached();\n }\n }\n };\n\n ViewSlot.prototype.projectTo = function projectTo(slots) {\n var _this7 = this;\n\n this.projectToSlots = slots;\n this.add = this._projectionAdd;\n this.insert = this._projectionInsert;\n this.move = this._projectionMove;\n this.remove = this._projectionRemove;\n this.removeAt = this._projectionRemoveAt;\n this.removeMany = this._projectionRemoveMany;\n this.removeAll = this._projectionRemoveAll;\n this.children.forEach(function (view) {\n return ShadowDOM.distributeView(view, slots, _this7);\n });\n };\n\n ViewSlot.prototype._projectionAdd = function _projectionAdd(view) {\n ShadowDOM.distributeView(view, this.projectToSlots, this);\n\n this.children.push(view);\n\n if (this.isAttached) {\n view.attached();\n }\n };\n\n ViewSlot.prototype._projectionInsert = function _projectionInsert(index, view) {\n if (index === 0 && !this.children.length || index >= this.children.length) {\n this.add(view);\n } else {\n ShadowDOM.distributeView(view, this.projectToSlots, this, index);\n\n this.children.splice(index, 0, view);\n\n if (this.isAttached) {\n view.attached();\n }\n }\n };\n\n ViewSlot.prototype._projectionMove = function _projectionMove(sourceIndex, targetIndex) {\n if (sourceIndex === targetIndex) {\n return;\n }\n\n var children = this.children;\n var view = children[sourceIndex];\n\n ShadowDOM.undistributeView(view, this.projectToSlots, this);\n ShadowDOM.distributeView(view, this.projectToSlots, this, targetIndex);\n\n children.splice(sourceIndex, 1);\n children.splice(targetIndex, 0, view);\n };\n\n ViewSlot.prototype._projectionRemove = function _projectionRemove(view, returnToCache) {\n ShadowDOM.undistributeView(view, this.projectToSlots, this);\n this.children.splice(this.children.indexOf(view), 1);\n\n if (this.isAttached) {\n view.detached();\n }\n };\n\n ViewSlot.prototype._projectionRemoveAt = function _projectionRemoveAt(index, returnToCache) {\n var view = this.children[index];\n\n ShadowDOM.undistributeView(view, this.projectToSlots, this);\n this.children.splice(index, 1);\n\n if (this.isAttached) {\n view.detached();\n }\n };\n\n ViewSlot.prototype._projectionRemoveMany = function _projectionRemoveMany(viewsToRemove, returnToCache) {\n var _this8 = this;\n\n viewsToRemove.forEach(function (view) {\n return _this8.remove(view, returnToCache);\n });\n };\n\n ViewSlot.prototype._projectionRemoveAll = function _projectionRemoveAll(returnToCache) {\n ShadowDOM.undistributeAll(this.projectToSlots, this);\n\n var children = this.children;\n\n if (this.isAttached) {\n for (var i = 0, ii = children.length; i < ii; ++i) {\n children[i].detached();\n }\n }\n\n this.children = [];\n };\n\n return ViewSlot;\n }();\n\n var ProviderResolver = (0, _aureliaDependencyInjection.resolver)(_class11 = function () {\n function ProviderResolver() {\n \n }\n\n ProviderResolver.prototype.get = function get(container, key) {\n var id = key.__providerId__;\n return id in container ? container[id] : container[id] = container.invoke(key);\n };\n\n return ProviderResolver;\n }()) || _class11;\n\n var providerResolverInstance = new ProviderResolver();\n\n function elementContainerGet(key) {\n if (key === _aureliaPal.DOM.Element) {\n return this.element;\n }\n\n if (key === BoundViewFactory) {\n if (this.boundViewFactory) {\n return this.boundViewFactory;\n }\n\n var factory = this.instruction.viewFactory;\n var _partReplacements = this.partReplacements;\n\n if (_partReplacements) {\n factory = _partReplacements[factory.part] || factory;\n }\n\n this.boundViewFactory = new BoundViewFactory(this, factory, _partReplacements);\n return this.boundViewFactory;\n }\n\n if (key === ViewSlot) {\n if (this.viewSlot === undefined) {\n this.viewSlot = new ViewSlot(this.element, this.instruction.anchorIsContainer);\n this.element.isContentProjectionSource = this.instruction.lifting;\n this.children.push(this.viewSlot);\n }\n\n return this.viewSlot;\n }\n\n if (key === ElementEvents) {\n return this.elementEvents || (this.elementEvents = new ElementEvents(this.element));\n }\n\n if (key === CompositionTransaction) {\n return this.compositionTransaction || (this.compositionTransaction = this.parent.get(key));\n }\n\n if (key === ViewResources) {\n return this.viewResources;\n }\n\n if (key === TargetInstruction) {\n return this.instruction;\n }\n\n return this.superGet(key);\n }\n\n function createElementContainer(parent, element, instruction, children, partReplacements, resources) {\n var container = parent.createChild();\n var providers = void 0;\n var i = void 0;\n\n container.element = element;\n container.instruction = instruction;\n container.children = children;\n container.viewResources = resources;\n container.partReplacements = partReplacements;\n\n providers = instruction.providers;\n i = providers.length;\n\n while (i--) {\n container._resolvers.set(providers[i], providerResolverInstance);\n }\n\n container.superGet = container.get;\n container.get = elementContainerGet;\n\n return container;\n }\n\n function hasAttribute(name) {\n return this._element.hasAttribute(name);\n }\n\n function getAttribute(name) {\n return this._element.getAttribute(name);\n }\n\n function setAttribute(name, value) {\n this._element.setAttribute(name, value);\n }\n\n function makeElementIntoAnchor(element, elementInstruction) {\n var anchor = _aureliaPal.DOM.createComment('anchor');\n\n if (elementInstruction) {\n var firstChild = element.firstChild;\n\n if (firstChild && firstChild.tagName === 'AU-CONTENT') {\n anchor.contentElement = firstChild;\n }\n\n anchor._element = element;\n\n anchor.hasAttribute = hasAttribute;\n anchor.getAttribute = getAttribute;\n anchor.setAttribute = setAttribute;\n }\n\n _aureliaPal.DOM.replaceNode(anchor, element);\n\n return anchor;\n }\n\n function applyInstructions(containers, element, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources) {\n var behaviorInstructions = instruction.behaviorInstructions;\n var expressions = instruction.expressions;\n var elementContainer = void 0;\n var i = void 0;\n var ii = void 0;\n var current = void 0;\n var instance = void 0;\n\n if (instruction.contentExpression) {\n bindings.push(instruction.contentExpression.createBinding(element.nextSibling));\n element.nextSibling.auInterpolationTarget = true;\n element.parentNode.removeChild(element);\n return;\n }\n\n if (instruction.shadowSlot) {\n var commentAnchor = _aureliaPal.DOM.createComment('slot');\n var slot = void 0;\n\n if (instruction.slotDestination) {\n slot = new PassThroughSlot(commentAnchor, instruction.slotName, instruction.slotDestination, instruction.slotFallbackFactory);\n } else {\n slot = new ShadowSlot(commentAnchor, instruction.slotName, instruction.slotFallbackFactory);\n }\n\n _aureliaPal.DOM.replaceNode(commentAnchor, element);\n shadowSlots[instruction.slotName] = slot;\n controllers.push(slot);\n return;\n }\n\n if (behaviorInstructions.length) {\n if (!instruction.anchorIsContainer) {\n element = makeElementIntoAnchor(element, instruction.elementInstruction);\n }\n\n containers[instruction.injectorId] = elementContainer = createElementContainer(containers[instruction.parentInjectorId], element, instruction, children, partReplacements, resources);\n\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n current = behaviorInstructions[i];\n instance = current.type.create(elementContainer, current, element, bindings);\n controllers.push(instance);\n }\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n bindings.push(expressions[i].createBinding(element));\n }\n }\n\n function styleStringToObject(style, target) {\n var attributes = style.split(';');\n var firstIndexOfColon = void 0;\n var i = void 0;\n var current = void 0;\n var key = void 0;\n var value = void 0;\n\n target = target || {};\n\n for (i = 0; i < attributes.length; i++) {\n current = attributes[i];\n firstIndexOfColon = current.indexOf(':');\n key = current.substring(0, firstIndexOfColon).trim();\n value = current.substring(firstIndexOfColon + 1).trim();\n target[key] = value;\n }\n\n return target;\n }\n\n function styleObjectToString(obj) {\n var result = '';\n\n for (var key in obj) {\n result += key + ':' + obj[key] + ';';\n }\n\n return result;\n }\n\n function applySurrogateInstruction(container, element, instruction, controllers, bindings, children) {\n var behaviorInstructions = instruction.behaviorInstructions;\n var expressions = instruction.expressions;\n var providers = instruction.providers;\n var values = instruction.values;\n var i = void 0;\n var ii = void 0;\n var current = void 0;\n var instance = void 0;\n var currentAttributeValue = void 0;\n\n i = providers.length;\n while (i--) {\n container._resolvers.set(providers[i], providerResolverInstance);\n }\n\n for (var key in values) {\n currentAttributeValue = element.getAttribute(key);\n\n if (currentAttributeValue) {\n if (key === 'class') {\n element.setAttribute('class', currentAttributeValue + ' ' + values[key]);\n } else if (key === 'style') {\n var styleObject = styleStringToObject(values[key]);\n styleStringToObject(currentAttributeValue, styleObject);\n element.setAttribute('style', styleObjectToString(styleObject));\n }\n } else {\n element.setAttribute(key, values[key]);\n }\n }\n\n if (behaviorInstructions.length) {\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n current = behaviorInstructions[i];\n instance = current.type.create(container, current, element, bindings);\n\n if (instance.contentView) {\n children.push(instance.contentView);\n }\n\n controllers.push(instance);\n }\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n bindings.push(expressions[i].createBinding(element));\n }\n }\n\n var BoundViewFactory = exports.BoundViewFactory = function () {\n function BoundViewFactory(parentContainer, viewFactory, partReplacements) {\n \n\n this.parentContainer = parentContainer;\n this.viewFactory = viewFactory;\n this.factoryCreateInstruction = { partReplacements: partReplacements };\n }\n\n BoundViewFactory.prototype.create = function create() {\n var view = this.viewFactory.create(this.parentContainer.createChild(), this.factoryCreateInstruction);\n view._isUserControlled = true;\n return view;\n };\n\n BoundViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\n };\n\n BoundViewFactory.prototype.getCachedView = function getCachedView() {\n return this.viewFactory.getCachedView();\n };\n\n BoundViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n this.viewFactory.returnViewToCache(view);\n };\n\n _createClass(BoundViewFactory, [{\n key: 'isCaching',\n get: function get() {\n return this.viewFactory.isCaching;\n }\n }]);\n\n return BoundViewFactory;\n }();\n\n var ViewFactory = exports.ViewFactory = function () {\n function ViewFactory(template, instructions, resources) {\n \n\n this.isCaching = false;\n\n this.template = template;\n this.instructions = instructions;\n this.resources = resources;\n this.cacheSize = -1;\n this.cache = null;\n }\n\n ViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n if (size) {\n if (size === '*') {\n size = Number.MAX_VALUE;\n } else if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n }\n\n if (this.cacheSize === -1 || !doNotOverrideIfAlreadySet) {\n this.cacheSize = size;\n }\n\n if (this.cacheSize > 0) {\n this.cache = [];\n } else {\n this.cache = null;\n }\n\n this.isCaching = this.cacheSize > 0;\n };\n\n ViewFactory.prototype.getCachedView = function getCachedView() {\n return this.cache !== null ? this.cache.pop() || null : null;\n };\n\n ViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n if (view.isAttached) {\n view.detached();\n }\n\n if (view.isBound) {\n view.unbind();\n }\n\n if (this.cache !== null && this.cache.length < this.cacheSize) {\n view.fromCache = true;\n this.cache.push(view);\n }\n };\n\n ViewFactory.prototype.create = function create(container, createInstruction, element) {\n createInstruction = createInstruction || BehaviorInstruction.normal;\n\n var cachedView = this.getCachedView();\n if (cachedView !== null) {\n return cachedView;\n }\n\n var fragment = createInstruction.enhance ? this.template : this.template.cloneNode(true);\n var instructables = fragment.querySelectorAll('.au-target');\n var instructions = this.instructions;\n var resources = this.resources;\n var controllers = [];\n var bindings = [];\n var children = [];\n var shadowSlots = Object.create(null);\n var containers = { root: container };\n var partReplacements = createInstruction.partReplacements;\n var i = void 0;\n var ii = void 0;\n var view = void 0;\n var instructable = void 0;\n var instruction = void 0;\n\n this.resources._invokeHook('beforeCreate', this, container, fragment, createInstruction);\n\n if (element && this.surrogateInstruction !== null) {\n applySurrogateInstruction(container, element, this.surrogateInstruction, controllers, bindings, children);\n }\n\n if (createInstruction.enhance && fragment.hasAttribute('au-target-id')) {\n instructable = fragment;\n instruction = instructions[instructable.getAttribute('au-target-id')];\n applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\n }\n\n for (i = 0, ii = instructables.length; i < ii; ++i) {\n instructable = instructables[i];\n instruction = instructions[instructable.getAttribute('au-target-id')];\n applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\n }\n\n view = new View(container, this, fragment, controllers, bindings, children, shadowSlots);\n\n if (!createInstruction.initiatedByBehavior) {\n view.created();\n }\n\n this.resources._invokeHook('afterCreate', view);\n\n return view;\n };\n\n return ViewFactory;\n }();\n\n var nextInjectorId = 0;\n function getNextInjectorId() {\n return ++nextInjectorId;\n }\n\n var lastAUTargetID = 0;\n function getNextAUTargetID() {\n return (++lastAUTargetID).toString();\n }\n\n function makeIntoInstructionTarget(element) {\n var value = element.getAttribute('class');\n var auTargetID = getNextAUTargetID();\n\n element.setAttribute('class', value ? value + ' au-target' : 'au-target');\n element.setAttribute('au-target-id', auTargetID);\n\n return auTargetID;\n }\n\n function makeShadowSlot(compiler, resources, node, instructions, parentInjectorId) {\n var auShadowSlot = _aureliaPal.DOM.createElement('au-shadow-slot');\n _aureliaPal.DOM.replaceNode(auShadowSlot, node);\n\n var auTargetID = makeIntoInstructionTarget(auShadowSlot);\n var instruction = TargetInstruction.shadowSlot(parentInjectorId);\n\n instruction.slotName = node.getAttribute('name') || ShadowDOM.defaultSlotKey;\n instruction.slotDestination = node.getAttribute('slot');\n\n if (node.innerHTML.trim()) {\n var fragment = _aureliaPal.DOM.createDocumentFragment();\n var _child4 = void 0;\n\n while (_child4 = node.firstChild) {\n fragment.appendChild(_child4);\n }\n\n instruction.slotFallbackFactory = compiler.compile(fragment, resources);\n }\n\n instructions[auTargetID] = instruction;\n\n return auShadowSlot;\n }\n\n var ViewCompiler = exports.ViewCompiler = (_dec7 = (0, _aureliaDependencyInjection.inject)(BindingLanguage, ViewResources), _dec7(_class13 = function () {\n function ViewCompiler(bindingLanguage, resources) {\n \n\n this.bindingLanguage = bindingLanguage;\n this.resources = resources;\n }\n\n ViewCompiler.prototype.compile = function compile(source, resources, compileInstruction) {\n resources = resources || this.resources;\n compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n source = typeof source === 'string' ? _aureliaPal.DOM.createTemplateFromMarkup(source) : source;\n\n var content = void 0;\n var part = void 0;\n var cacheSize = void 0;\n\n if (source.content) {\n part = source.getAttribute('part');\n cacheSize = source.getAttribute('view-cache');\n content = _aureliaPal.DOM.adoptNode(source.content);\n } else {\n content = source;\n }\n\n compileInstruction.targetShadowDOM = compileInstruction.targetShadowDOM && _aureliaPal.FEATURE.shadowDOM;\n resources._invokeHook('beforeCompile', content, resources, compileInstruction);\n\n var instructions = {};\n this._compileNode(content, resources, instructions, source, 'root', !compileInstruction.targetShadowDOM);\n\n var firstChild = content.firstChild;\n if (firstChild && firstChild.nodeType === 1) {\n var targetId = firstChild.getAttribute('au-target-id');\n if (targetId) {\n var ins = instructions[targetId];\n\n if (ins.shadowSlot || ins.lifting || ins.elementInstruction && !ins.elementInstruction.anchorIsContainer) {\n content.insertBefore(_aureliaPal.DOM.createComment('view'), firstChild);\n }\n }\n }\n\n var factory = new ViewFactory(content, instructions, resources);\n\n factory.surrogateInstruction = compileInstruction.compileSurrogate ? this._compileSurrogate(source, resources) : null;\n factory.part = part;\n\n if (cacheSize) {\n factory.setCacheSize(cacheSize);\n }\n\n resources._invokeHook('afterCompile', factory);\n\n return factory;\n };\n\n ViewCompiler.prototype._compileNode = function _compileNode(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\n switch (node.nodeType) {\n case 1:\n return this._compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM);\n case 3:\n var expression = resources.getBindingLanguage(this.bindingLanguage).inspectTextContent(resources, node.wholeText);\n if (expression) {\n var marker = _aureliaPal.DOM.createElement('au-marker');\n var auTargetID = makeIntoInstructionTarget(marker);\n (node.parentNode || parentNode).insertBefore(marker, node);\n node.textContent = ' ';\n instructions[auTargetID] = TargetInstruction.contentExpression(expression);\n\n while (node.nextSibling && node.nextSibling.nodeType === 3) {\n (node.parentNode || parentNode).removeChild(node.nextSibling);\n }\n } else {\n while (node.nextSibling && node.nextSibling.nodeType === 3) {\n node = node.nextSibling;\n }\n }\n return node.nextSibling;\n case 11:\n var currentChild = node.firstChild;\n while (currentChild) {\n currentChild = this._compileNode(currentChild, resources, instructions, node, parentInjectorId, targetLightDOM);\n }\n break;\n default:\n break;\n }\n\n return node.nextSibling;\n };\n\n ViewCompiler.prototype._compileSurrogate = function _compileSurrogate(node, resources) {\n var tagName = node.tagName.toLowerCase();\n var attributes = node.attributes;\n var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\n var knownAttribute = void 0;\n var property = void 0;\n var instruction = void 0;\n var i = void 0;\n var ii = void 0;\n var attr = void 0;\n var attrName = void 0;\n var attrValue = void 0;\n var info = void 0;\n var type = void 0;\n var expressions = [];\n var expression = void 0;\n var behaviorInstructions = [];\n var values = {};\n var hasValues = false;\n var providers = [];\n\n for (i = 0, ii = attributes.length; i < ii; ++i) {\n attr = attributes[i];\n attrName = attr.name;\n attrValue = attr.value;\n\n info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\n type = resources.getAttribute(info.attrName);\n\n if (type) {\n knownAttribute = resources.mapAttribute(info.attrName);\n if (knownAttribute) {\n property = type.attributes[knownAttribute];\n\n if (property) {\n info.defaultBindingMode = property.defaultBindingMode;\n\n if (!info.command && !info.expression) {\n info.command = property.hasOptions ? 'options' : null;\n }\n\n if (info.command && info.command !== 'options' && type.primaryProperty) {\n var primaryProperty = type.primaryProperty;\n attrName = info.attrName = primaryProperty.name;\n\n info.defaultBindingMode = primaryProperty.defaultBindingMode;\n }\n }\n }\n }\n\n instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\n\n if (instruction) {\n if (instruction.alteredAttr) {\n type = resources.getAttribute(instruction.attrName);\n }\n\n if (instruction.discrete) {\n expressions.push(instruction);\n } else {\n if (type) {\n instruction.type = type;\n this._configureProperties(instruction, resources);\n\n if (type.liftsContent) {\n throw new Error('You cannot place a template controller on a surrogate element.');\n } else {\n behaviorInstructions.push(instruction);\n }\n } else {\n expressions.push(instruction.attributes[instruction.attrName]);\n }\n }\n } else {\n if (type) {\n instruction = BehaviorInstruction.attribute(attrName, type);\n instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\n\n if (type.liftsContent) {\n throw new Error('You cannot place a template controller on a surrogate element.');\n } else {\n behaviorInstructions.push(instruction);\n }\n } else if (attrName !== 'id' && attrName !== 'part' && attrName !== 'replace-part') {\n hasValues = true;\n values[attrName] = attrValue;\n }\n }\n }\n\n if (expressions.length || behaviorInstructions.length || hasValues) {\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n instruction = behaviorInstructions[i];\n instruction.type.compile(this, resources, node, instruction);\n providers.push(instruction.type.target);\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n expression = expressions[i];\n if (expression.attrToRemove !== undefined) {\n node.removeAttribute(expression.attrToRemove);\n }\n }\n\n return TargetInstruction.surrogate(providers, behaviorInstructions, expressions, values);\n }\n\n return null;\n };\n\n ViewCompiler.prototype._compileElement = function _compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\n var tagName = node.tagName.toLowerCase();\n var attributes = node.attributes;\n var expressions = [];\n var expression = void 0;\n var behaviorInstructions = [];\n var providers = [];\n var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\n var liftingInstruction = void 0;\n var viewFactory = void 0;\n var type = void 0;\n var elementInstruction = void 0;\n var elementProperty = void 0;\n var i = void 0;\n var ii = void 0;\n var attr = void 0;\n var attrName = void 0;\n var attrValue = void 0;\n var instruction = void 0;\n var info = void 0;\n var property = void 0;\n var knownAttribute = void 0;\n var auTargetID = void 0;\n var injectorId = void 0;\n\n if (tagName === 'slot') {\n if (targetLightDOM) {\n node = makeShadowSlot(this, resources, node, instructions, parentInjectorId);\n }\n return node.nextSibling;\n } else if (tagName === 'template') {\n viewFactory = this.compile(node, resources);\n viewFactory.part = node.getAttribute('part');\n } else {\n type = resources.getElement(node.getAttribute('as-element') || tagName);\n if (type) {\n elementInstruction = BehaviorInstruction.element(node, type);\n type.processAttributes(this, resources, node, attributes, elementInstruction);\n behaviorInstructions.push(elementInstruction);\n }\n }\n\n for (i = 0, ii = attributes.length; i < ii; ++i) {\n attr = attributes[i];\n attrName = attr.name;\n attrValue = attr.value;\n info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\n\n if (targetLightDOM && info.attrName === 'slot') {\n info.attrName = attrName = 'au-slot';\n }\n\n type = resources.getAttribute(info.attrName);\n elementProperty = null;\n\n if (type) {\n knownAttribute = resources.mapAttribute(info.attrName);\n if (knownAttribute) {\n property = type.attributes[knownAttribute];\n\n if (property) {\n info.defaultBindingMode = property.defaultBindingMode;\n\n if (!info.command && !info.expression) {\n info.command = property.hasOptions ? 'options' : null;\n }\n\n if (info.command && info.command !== 'options' && type.primaryProperty) {\n var primaryProperty = type.primaryProperty;\n attrName = info.attrName = primaryProperty.name;\n\n info.defaultBindingMode = primaryProperty.defaultBindingMode;\n }\n }\n }\n } else if (elementInstruction) {\n elementProperty = elementInstruction.type.attributes[info.attrName];\n if (elementProperty) {\n info.defaultBindingMode = elementProperty.defaultBindingMode;\n }\n }\n\n if (elementProperty) {\n instruction = bindingLanguage.createAttributeInstruction(resources, node, info, elementInstruction);\n } else {\n instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\n }\n\n if (instruction) {\n if (instruction.alteredAttr) {\n type = resources.getAttribute(instruction.attrName);\n }\n\n if (instruction.discrete) {\n expressions.push(instruction);\n } else {\n if (type) {\n instruction.type = type;\n this._configureProperties(instruction, resources);\n\n if (type.liftsContent) {\n instruction.originalAttrName = attrName;\n liftingInstruction = instruction;\n break;\n } else {\n behaviorInstructions.push(instruction);\n }\n } else if (elementProperty) {\n elementInstruction.attributes[info.attrName].targetProperty = elementProperty.name;\n } else {\n expressions.push(instruction.attributes[instruction.attrName]);\n }\n }\n } else {\n if (type) {\n instruction = BehaviorInstruction.attribute(attrName, type);\n instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\n\n if (type.liftsContent) {\n instruction.originalAttrName = attrName;\n liftingInstruction = instruction;\n break;\n } else {\n behaviorInstructions.push(instruction);\n }\n } else if (elementProperty) {\n elementInstruction.attributes[attrName] = attrValue;\n }\n }\n }\n\n if (liftingInstruction) {\n liftingInstruction.viewFactory = viewFactory;\n node = liftingInstruction.type.compile(this, resources, node, liftingInstruction, parentNode);\n auTargetID = makeIntoInstructionTarget(node);\n instructions[auTargetID] = TargetInstruction.lifting(parentInjectorId, liftingInstruction);\n } else {\n if (expressions.length || behaviorInstructions.length) {\n injectorId = behaviorInstructions.length ? getNextInjectorId() : false;\n\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n instruction = behaviorInstructions[i];\n instruction.type.compile(this, resources, node, instruction, parentNode);\n providers.push(instruction.type.target);\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n expression = expressions[i];\n if (expression.attrToRemove !== undefined) {\n node.removeAttribute(expression.attrToRemove);\n }\n }\n\n auTargetID = makeIntoInstructionTarget(node);\n instructions[auTargetID] = TargetInstruction.normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction);\n }\n\n if (elementInstruction && elementInstruction.skipContentProcessing) {\n return node.nextSibling;\n }\n\n var currentChild = node.firstChild;\n while (currentChild) {\n currentChild = this._compileNode(currentChild, resources, instructions, node, injectorId || parentInjectorId, targetLightDOM);\n }\n }\n\n return node.nextSibling;\n };\n\n ViewCompiler.prototype._configureProperties = function _configureProperties(instruction, resources) {\n var type = instruction.type;\n var attrName = instruction.attrName;\n var attributes = instruction.attributes;\n var property = void 0;\n var key = void 0;\n var value = void 0;\n\n var knownAttribute = resources.mapAttribute(attrName);\n if (knownAttribute && attrName in attributes && knownAttribute !== attrName) {\n attributes[knownAttribute] = attributes[attrName];\n delete attributes[attrName];\n }\n\n for (key in attributes) {\n value = attributes[key];\n\n if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n property = type.attributes[key];\n\n if (property !== undefined) {\n value.targetProperty = property.name;\n } else {\n value.targetProperty = key;\n }\n }\n }\n };\n\n return ViewCompiler;\n }()) || _class13);\n\n var ResourceModule = exports.ResourceModule = function () {\n function ResourceModule(moduleId) {\n \n\n this.id = moduleId;\n this.moduleInstance = null;\n this.mainResource = null;\n this.resources = null;\n this.viewStrategy = null;\n this.isInitialized = false;\n this.onLoaded = null;\n this.loadContext = null;\n }\n\n ResourceModule.prototype.initialize = function initialize(container) {\n var current = this.mainResource;\n var resources = this.resources;\n var vs = this.viewStrategy;\n\n if (this.isInitialized) {\n return;\n }\n\n this.isInitialized = true;\n\n if (current !== undefined) {\n current.metadata.viewStrategy = vs;\n current.initialize(container);\n }\n\n for (var i = 0, ii = resources.length; i < ii; ++i) {\n current = resources[i];\n current.metadata.viewStrategy = vs;\n current.initialize(container);\n }\n };\n\n ResourceModule.prototype.register = function register(registry, name) {\n var main = this.mainResource;\n var resources = this.resources;\n\n if (main !== undefined) {\n main.register(registry, name);\n name = null;\n }\n\n for (var i = 0, ii = resources.length; i < ii; ++i) {\n resources[i].register(registry, name);\n name = null;\n }\n };\n\n ResourceModule.prototype.load = function load(container, loadContext) {\n if (this.onLoaded !== null) {\n return this.loadContext === loadContext ? Promise.resolve() : this.onLoaded;\n }\n\n var main = this.mainResource;\n var resources = this.resources;\n var loads = void 0;\n\n if (main !== undefined) {\n loads = new Array(resources.length + 1);\n loads[0] = main.load(container, loadContext);\n for (var i = 0, ii = resources.length; i < ii; ++i) {\n loads[i + 1] = resources[i].load(container, loadContext);\n }\n } else {\n loads = new Array(resources.length);\n for (var _i = 0, _ii = resources.length; _i < _ii; ++_i) {\n loads[_i] = resources[_i].load(container, loadContext);\n }\n }\n\n this.loadContext = loadContext;\n this.onLoaded = Promise.all(loads);\n return this.onLoaded;\n };\n\n return ResourceModule;\n }();\n\n var ResourceDescription = exports.ResourceDescription = function () {\n function ResourceDescription(key, exportedValue, resourceTypeMeta) {\n \n\n if (!resourceTypeMeta) {\n resourceTypeMeta = _aureliaMetadata.metadata.get(_aureliaMetadata.metadata.resource, exportedValue);\n\n if (!resourceTypeMeta) {\n resourceTypeMeta = new HtmlBehaviorResource();\n resourceTypeMeta.elementName = _hyphenate(key);\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, resourceTypeMeta, exportedValue);\n }\n }\n\n if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n if (resourceTypeMeta.elementName === undefined) {\n resourceTypeMeta.elementName = _hyphenate(key);\n } else if (resourceTypeMeta.attributeName === undefined) {\n resourceTypeMeta.attributeName = _hyphenate(key);\n } else if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n HtmlBehaviorResource.convention(key, resourceTypeMeta);\n }\n } else if (!resourceTypeMeta.name) {\n resourceTypeMeta.name = _hyphenate(key);\n }\n\n this.metadata = resourceTypeMeta;\n this.value = exportedValue;\n }\n\n ResourceDescription.prototype.initialize = function initialize(container) {\n this.metadata.initialize(container, this.value);\n };\n\n ResourceDescription.prototype.register = function register(registry, name) {\n this.metadata.register(registry, name);\n };\n\n ResourceDescription.prototype.load = function load(container, loadContext) {\n return this.metadata.load(container, this.value, loadContext);\n };\n\n return ResourceDescription;\n }();\n\n var ModuleAnalyzer = exports.ModuleAnalyzer = function () {\n function ModuleAnalyzer() {\n \n\n this.cache = Object.create(null);\n }\n\n ModuleAnalyzer.prototype.getAnalysis = function getAnalysis(moduleId) {\n return this.cache[moduleId];\n };\n\n ModuleAnalyzer.prototype.analyze = function analyze(moduleId, moduleInstance, mainResourceKey) {\n var mainResource = void 0;\n var fallbackValue = void 0;\n var fallbackKey = void 0;\n var resourceTypeMeta = void 0;\n var key = void 0;\n var exportedValue = void 0;\n var resources = [];\n var conventional = void 0;\n var vs = void 0;\n var resourceModule = void 0;\n\n resourceModule = this.cache[moduleId];\n if (resourceModule) {\n return resourceModule;\n }\n\n resourceModule = new ResourceModule(moduleId);\n this.cache[moduleId] = resourceModule;\n\n if (typeof moduleInstance === 'function') {\n moduleInstance = { 'default': moduleInstance };\n }\n\n if (mainResourceKey) {\n mainResource = new ResourceDescription(mainResourceKey, moduleInstance[mainResourceKey]);\n }\n\n for (key in moduleInstance) {\n exportedValue = moduleInstance[key];\n\n if (key === mainResourceKey || typeof exportedValue !== 'function') {\n continue;\n }\n\n resourceTypeMeta = _aureliaMetadata.metadata.get(_aureliaMetadata.metadata.resource, exportedValue);\n\n if (resourceTypeMeta) {\n if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n HtmlBehaviorResource.convention(key, resourceTypeMeta);\n }\n\n if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n resourceTypeMeta.elementName = _hyphenate(key);\n }\n\n if (!mainResource && resourceTypeMeta instanceof HtmlBehaviorResource && resourceTypeMeta.elementName !== null) {\n mainResource = new ResourceDescription(key, exportedValue, resourceTypeMeta);\n } else {\n resources.push(new ResourceDescription(key, exportedValue, resourceTypeMeta));\n }\n } else if (viewStrategy.decorates(exportedValue)) {\n vs = exportedValue;\n } else if (exportedValue instanceof _aureliaLoader.TemplateRegistryEntry) {\n vs = new TemplateRegistryViewStrategy(moduleId, exportedValue);\n } else {\n if (conventional = HtmlBehaviorResource.convention(key)) {\n if (conventional.elementName !== null && !mainResource) {\n mainResource = new ResourceDescription(key, exportedValue, conventional);\n } else {\n resources.push(new ResourceDescription(key, exportedValue, conventional));\n }\n\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, conventional, exportedValue);\n } else if (conventional = _aureliaBinding.ValueConverterResource.convention(key) || _aureliaBinding.BindingBehaviorResource.convention(key) || ViewEngineHooksResource.convention(key)) {\n resources.push(new ResourceDescription(key, exportedValue, conventional));\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, conventional, exportedValue);\n } else if (!fallbackValue) {\n fallbackValue = exportedValue;\n fallbackKey = key;\n }\n }\n }\n\n if (!mainResource && fallbackValue) {\n mainResource = new ResourceDescription(fallbackKey, fallbackValue);\n }\n\n resourceModule.moduleInstance = moduleInstance;\n resourceModule.mainResource = mainResource;\n resourceModule.resources = resources;\n resourceModule.viewStrategy = vs;\n\n return resourceModule;\n };\n\n return ModuleAnalyzer;\n }();\n\n var logger = LogManager.getLogger('templating');\n\n function ensureRegistryEntry(loader, urlOrRegistryEntry) {\n if (urlOrRegistryEntry instanceof _aureliaLoader.TemplateRegistryEntry) {\n return Promise.resolve(urlOrRegistryEntry);\n }\n\n return loader.loadTemplate(urlOrRegistryEntry);\n }\n\n var ProxyViewFactory = function () {\n function ProxyViewFactory(promise) {\n var _this9 = this;\n\n \n\n promise.then(function (x) {\n return _this9.viewFactory = x;\n });\n }\n\n ProxyViewFactory.prototype.create = function create(container, bindingContext, createInstruction, element) {\n return this.viewFactory.create(container, bindingContext, createInstruction, element);\n };\n\n ProxyViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\n };\n\n ProxyViewFactory.prototype.getCachedView = function getCachedView() {\n return this.viewFactory.getCachedView();\n };\n\n ProxyViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n this.viewFactory.returnViewToCache(view);\n };\n\n _createClass(ProxyViewFactory, [{\n key: 'isCaching',\n get: function get() {\n return this.viewFactory.isCaching;\n }\n }]);\n\n return ProxyViewFactory;\n }();\n\n var ViewEngine = exports.ViewEngine = (_dec8 = (0, _aureliaDependencyInjection.inject)(_aureliaLoader.Loader, _aureliaDependencyInjection.Container, ViewCompiler, ModuleAnalyzer, ViewResources), _dec8(_class14 = (_temp4 = _class15 = function () {\n function ViewEngine(loader, container, viewCompiler, moduleAnalyzer, appResources) {\n \n\n this.loader = loader;\n this.container = container;\n this.viewCompiler = viewCompiler;\n this.moduleAnalyzer = moduleAnalyzer;\n this.appResources = appResources;\n this._pluginMap = {};\n\n var auSlotBehavior = new HtmlBehaviorResource();\n auSlotBehavior.attributeName = 'au-slot';\n auSlotBehavior.initialize(container, SlotCustomAttribute);\n auSlotBehavior.register(appResources);\n }\n\n ViewEngine.prototype.addResourcePlugin = function addResourcePlugin(extension, implementation) {\n var name = extension.replace('.', '') + '-resource-plugin';\n this._pluginMap[extension] = name;\n this.loader.addPlugin(name, implementation);\n };\n\n ViewEngine.prototype.loadViewFactory = function loadViewFactory(urlOrRegistryEntry, compileInstruction, loadContext, target) {\n var _this10 = this;\n\n loadContext = loadContext || new ResourceLoadContext();\n\n return ensureRegistryEntry(this.loader, urlOrRegistryEntry).then(function (registryEntry) {\n if (registryEntry.onReady) {\n if (!loadContext.hasDependency(urlOrRegistryEntry)) {\n loadContext.addDependency(urlOrRegistryEntry);\n return registryEntry.onReady;\n }\n\n if (registryEntry.template === null) {\n return registryEntry.onReady;\n }\n\n return Promise.resolve(new ProxyViewFactory(registryEntry.onReady));\n }\n\n loadContext.addDependency(urlOrRegistryEntry);\n\n registryEntry.onReady = _this10.loadTemplateResources(registryEntry, compileInstruction, loadContext, target).then(function (resources) {\n registryEntry.resources = resources;\n\n if (registryEntry.template === null) {\n return registryEntry.factory = null;\n }\n\n var viewFactory = _this10.viewCompiler.compile(registryEntry.template, resources, compileInstruction);\n return registryEntry.factory = viewFactory;\n });\n\n return registryEntry.onReady;\n });\n };\n\n ViewEngine.prototype.loadTemplateResources = function loadTemplateResources(registryEntry, compileInstruction, loadContext, target) {\n var resources = new ViewResources(this.appResources, registryEntry.address);\n var dependencies = registryEntry.dependencies;\n var importIds = void 0;\n var names = void 0;\n\n compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n\n if (dependencies.length === 0 && !compileInstruction.associatedModuleId) {\n return Promise.resolve(resources);\n }\n\n importIds = dependencies.map(function (x) {\n return x.src;\n });\n names = dependencies.map(function (x) {\n return x.name;\n });\n logger.debug('importing resources for ' + registryEntry.address, importIds);\n\n if (target) {\n var viewModelRequires = _aureliaMetadata.metadata.get(ViewEngine.viewModelRequireMetadataKey, target);\n if (viewModelRequires) {\n var templateImportCount = importIds.length;\n for (var i = 0, ii = viewModelRequires.length; i < ii; ++i) {\n var req = viewModelRequires[i];\n var importId = typeof req === 'function' ? _aureliaMetadata.Origin.get(req).moduleId : (0, _aureliaPath.relativeToFile)(req.src || req, registryEntry.address);\n\n if (importIds.indexOf(importId) === -1) {\n importIds.push(importId);\n names.push(req.as);\n }\n }\n logger.debug('importing ViewModel resources for ' + compileInstruction.associatedModuleId, importIds.slice(templateImportCount));\n }\n }\n\n return this.importViewResources(importIds, names, resources, compileInstruction, loadContext);\n };\n\n ViewEngine.prototype.importViewModelResource = function importViewModelResource(moduleImport, moduleMember) {\n var _this11 = this;\n\n return this.loader.loadModule(moduleImport).then(function (viewModelModule) {\n var normalizedId = _aureliaMetadata.Origin.get(viewModelModule).moduleId;\n var resourceModule = _this11.moduleAnalyzer.analyze(normalizedId, viewModelModule, moduleMember);\n\n if (!resourceModule.mainResource) {\n throw new Error('No view model found in module \"' + moduleImport + '\".');\n }\n\n resourceModule.initialize(_this11.container);\n\n return resourceModule.mainResource;\n });\n };\n\n ViewEngine.prototype.importViewResources = function importViewResources(moduleIds, names, resources, compileInstruction, loadContext) {\n var _this12 = this;\n\n loadContext = loadContext || new ResourceLoadContext();\n compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n\n moduleIds = moduleIds.map(function (x) {\n return _this12._applyLoaderPlugin(x);\n });\n\n return this.loader.loadAllModules(moduleIds).then(function (imports) {\n var i = void 0;\n var ii = void 0;\n var analysis = void 0;\n var normalizedId = void 0;\n var current = void 0;\n var associatedModule = void 0;\n var container = _this12.container;\n var moduleAnalyzer = _this12.moduleAnalyzer;\n var allAnalysis = new Array(imports.length);\n\n for (i = 0, ii = imports.length; i < ii; ++i) {\n current = imports[i];\n normalizedId = _aureliaMetadata.Origin.get(current).moduleId;\n\n analysis = moduleAnalyzer.analyze(normalizedId, current);\n analysis.initialize(container);\n analysis.register(resources, names[i]);\n\n allAnalysis[i] = analysis;\n }\n\n if (compileInstruction.associatedModuleId) {\n associatedModule = moduleAnalyzer.getAnalysis(compileInstruction.associatedModuleId);\n\n if (associatedModule) {\n associatedModule.register(resources);\n }\n }\n\n for (i = 0, ii = allAnalysis.length; i < ii; ++i) {\n allAnalysis[i] = allAnalysis[i].load(container, loadContext);\n }\n\n return Promise.all(allAnalysis).then(function () {\n return resources;\n });\n });\n };\n\n ViewEngine.prototype._applyLoaderPlugin = function _applyLoaderPlugin(id) {\n var index = id.lastIndexOf('.');\n if (index !== -1) {\n var ext = id.substring(index);\n var pluginName = this._pluginMap[ext];\n\n if (pluginName === undefined) {\n return id;\n }\n\n return this.loader.applyPluginToUrl(id, pluginName);\n }\n\n return id;\n };\n\n return ViewEngine;\n }(), _class15.viewModelRequireMetadataKey = 'aurelia:view-model-require', _temp4)) || _class14);\n\n var Controller = exports.Controller = function () {\n function Controller(behavior, instruction, viewModel, container) {\n \n\n this.behavior = behavior;\n this.instruction = instruction;\n this.viewModel = viewModel;\n this.isAttached = false;\n this.view = null;\n this.isBound = false;\n this.scope = null;\n this.container = container;\n this.elementEvents = container.elementEvents || null;\n\n var observerLookup = behavior.observerLocator.getOrCreateObserversLookup(viewModel);\n var handlesBind = behavior.handlesBind;\n var attributes = instruction.attributes;\n var boundProperties = this.boundProperties = [];\n var properties = behavior.properties;\n var i = void 0;\n var ii = void 0;\n\n behavior._ensurePropertiesDefined(viewModel, observerLookup);\n\n for (i = 0, ii = properties.length; i < ii; ++i) {\n properties[i]._initialize(viewModel, observerLookup, attributes, handlesBind, boundProperties);\n }\n }\n\n Controller.prototype.created = function created(owningView) {\n if (this.behavior.handlesCreated) {\n this.viewModel.created(owningView, this.view);\n }\n };\n\n Controller.prototype.automate = function automate(overrideContext, owningView) {\n this.view.bindingContext = this.viewModel;\n this.view.overrideContext = overrideContext || (0, _aureliaBinding.createOverrideContext)(this.viewModel);\n this.view._isUserControlled = true;\n\n if (this.behavior.handlesCreated) {\n this.viewModel.created(owningView || null, this.view);\n }\n\n this.bind(this.view);\n };\n\n Controller.prototype.bind = function bind(scope) {\n var skipSelfSubscriber = this.behavior.handlesBind;\n var boundProperties = this.boundProperties;\n var i = void 0;\n var ii = void 0;\n var x = void 0;\n var observer = void 0;\n var selfSubscriber = void 0;\n\n if (this.isBound) {\n if (this.scope === scope) {\n return;\n }\n\n this.unbind();\n }\n\n this.isBound = true;\n this.scope = scope;\n\n for (i = 0, ii = boundProperties.length; i < ii; ++i) {\n x = boundProperties[i];\n observer = x.observer;\n selfSubscriber = observer.selfSubscriber;\n observer.publishing = false;\n\n if (skipSelfSubscriber) {\n observer.selfSubscriber = null;\n }\n\n x.binding.bind(scope);\n observer.call();\n\n observer.publishing = true;\n observer.selfSubscriber = selfSubscriber;\n }\n\n var overrideContext = void 0;\n if (this.view !== null) {\n if (skipSelfSubscriber) {\n this.view.viewModelScope = scope;\n }\n\n if (this.viewModel === scope.overrideContext.bindingContext) {\n overrideContext = scope.overrideContext;\n } else if (this.instruction.inheritBindingContext) {\n overrideContext = (0, _aureliaBinding.createOverrideContext)(this.viewModel, scope.overrideContext);\n } else {\n overrideContext = (0, _aureliaBinding.createOverrideContext)(this.viewModel);\n overrideContext.__parentOverrideContext = scope.overrideContext;\n }\n\n this.view.bind(this.viewModel, overrideContext);\n } else if (skipSelfSubscriber) {\n overrideContext = scope.overrideContext;\n\n if (scope.overrideContext.__parentOverrideContext !== undefined && this.viewModel.viewFactory && this.viewModel.viewFactory.factoryCreateInstruction.partReplacements) {\n overrideContext = Object.assign({}, scope.overrideContext);\n overrideContext.parentOverrideContext = scope.overrideContext.__parentOverrideContext;\n }\n this.viewModel.bind(scope.bindingContext, overrideContext);\n }\n };\n\n Controller.prototype.unbind = function unbind() {\n if (this.isBound) {\n var _boundProperties = this.boundProperties;\n var _i2 = void 0;\n var _ii2 = void 0;\n\n this.isBound = false;\n this.scope = null;\n\n if (this.view !== null) {\n this.view.unbind();\n }\n\n if (this.behavior.handlesUnbind) {\n this.viewModel.unbind();\n }\n\n if (this.elementEvents !== null) {\n this.elementEvents.disposeAll();\n }\n\n for (_i2 = 0, _ii2 = _boundProperties.length; _i2 < _ii2; ++_i2) {\n _boundProperties[_i2].binding.unbind();\n }\n }\n };\n\n Controller.prototype.attached = function attached() {\n if (this.isAttached) {\n return;\n }\n\n this.isAttached = true;\n\n if (this.behavior.handlesAttached) {\n this.viewModel.attached();\n }\n\n if (this.view !== null) {\n this.view.attached();\n }\n };\n\n Controller.prototype.detached = function detached() {\n if (this.isAttached) {\n this.isAttached = false;\n\n if (this.view !== null) {\n this.view.detached();\n }\n\n if (this.behavior.handlesDetached) {\n this.viewModel.detached();\n }\n }\n };\n\n return Controller;\n }();\n\n var BehaviorPropertyObserver = exports.BehaviorPropertyObserver = (_dec9 = (0, _aureliaBinding.subscriberCollection)(), _dec9(_class16 = function () {\n function BehaviorPropertyObserver(taskQueue, obj, propertyName, selfSubscriber, initialValue) {\n \n\n this.taskQueue = taskQueue;\n this.obj = obj;\n this.propertyName = propertyName;\n this.notqueued = true;\n this.publishing = false;\n this.selfSubscriber = selfSubscriber;\n this.currentValue = this.oldValue = initialValue;\n }\n\n BehaviorPropertyObserver.prototype.getValue = function getValue() {\n return this.currentValue;\n };\n\n BehaviorPropertyObserver.prototype.setValue = function setValue(newValue) {\n var oldValue = this.currentValue;\n\n if (oldValue !== newValue) {\n this.oldValue = oldValue;\n this.currentValue = newValue;\n\n if (this.publishing && this.notqueued) {\n if (this.taskQueue.flushing) {\n this.call();\n } else {\n this.notqueued = false;\n this.taskQueue.queueMicroTask(this);\n }\n }\n }\n };\n\n BehaviorPropertyObserver.prototype.call = function call() {\n var oldValue = this.oldValue;\n var newValue = this.currentValue;\n\n this.notqueued = true;\n\n if (newValue === oldValue) {\n return;\n }\n\n if (this.selfSubscriber) {\n this.selfSubscriber(newValue, oldValue);\n }\n\n this.callSubscribers(newValue, oldValue);\n this.oldValue = newValue;\n };\n\n BehaviorPropertyObserver.prototype.subscribe = function subscribe(context, callable) {\n this.addSubscriber(context, callable);\n };\n\n BehaviorPropertyObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n return BehaviorPropertyObserver;\n }()) || _class16);\n\n\n function getObserver(behavior, instance, name) {\n var lookup = instance.__observers__;\n\n if (lookup === undefined) {\n if (!behavior.isInitialized) {\n behavior.initialize(_aureliaDependencyInjection.Container.instance || new _aureliaDependencyInjection.Container(), instance.constructor);\n }\n\n lookup = behavior.observerLocator.getOrCreateObserversLookup(instance);\n behavior._ensurePropertiesDefined(instance, lookup);\n }\n\n return lookup[name];\n }\n\n var BindableProperty = exports.BindableProperty = function () {\n function BindableProperty(nameOrConfig) {\n \n\n if (typeof nameOrConfig === 'string') {\n this.name = nameOrConfig;\n } else {\n Object.assign(this, nameOrConfig);\n }\n\n this.attribute = this.attribute || _hyphenate(this.name);\n if (this.defaultBindingMode === null || this.defaultBindingMode === undefined) {\n this.defaultBindingMode = _aureliaBinding.bindingMode.oneWay;\n }\n this.changeHandler = this.changeHandler || null;\n this.owner = null;\n this.descriptor = null;\n }\n\n BindableProperty.prototype.registerWith = function registerWith(target, behavior, descriptor) {\n behavior.properties.push(this);\n behavior.attributes[this.attribute] = this;\n this.owner = behavior;\n\n if (descriptor) {\n this.descriptor = descriptor;\n return this._configureDescriptor(behavior, descriptor);\n }\n\n return undefined;\n };\n\n BindableProperty.prototype._configureDescriptor = function _configureDescriptor(behavior, descriptor) {\n var name = this.name;\n\n descriptor.configurable = true;\n descriptor.enumerable = true;\n\n if ('initializer' in descriptor) {\n this.defaultValue = descriptor.initializer;\n delete descriptor.initializer;\n delete descriptor.writable;\n }\n\n if ('value' in descriptor) {\n this.defaultValue = descriptor.value;\n delete descriptor.value;\n delete descriptor.writable;\n }\n\n descriptor.get = function () {\n return getObserver(behavior, this, name).getValue();\n };\n\n descriptor.set = function (value) {\n getObserver(behavior, this, name).setValue(value);\n };\n\n descriptor.get.getObserver = function (obj) {\n return getObserver(behavior, obj, name);\n };\n\n return descriptor;\n };\n\n BindableProperty.prototype.defineOn = function defineOn(target, behavior) {\n var name = this.name;\n var handlerName = void 0;\n\n if (this.changeHandler === null) {\n handlerName = name + 'Changed';\n if (handlerName in target.prototype) {\n this.changeHandler = handlerName;\n }\n }\n\n if (this.descriptor === null) {\n Object.defineProperty(target.prototype, name, this._configureDescriptor(behavior, {}));\n }\n };\n\n BindableProperty.prototype.createObserver = function createObserver(viewModel) {\n var selfSubscriber = null;\n var defaultValue = this.defaultValue;\n var changeHandlerName = this.changeHandler;\n var name = this.name;\n var initialValue = void 0;\n\n if (this.hasOptions) {\n return undefined;\n }\n\n if (changeHandlerName in viewModel) {\n if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n viewModel[changeHandlerName](newValue, oldValue);\n viewModel.propertyChanged(name, newValue, oldValue);\n };\n } else {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel[changeHandlerName](newValue, oldValue);\n };\n }\n } else if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel.propertyChanged(name, newValue, oldValue);\n };\n } else if (changeHandlerName !== null) {\n throw new Error('Change handler ' + changeHandlerName + ' was specified but not declared on the class.');\n }\n\n if (defaultValue !== undefined) {\n initialValue = typeof defaultValue === 'function' ? defaultValue.call(viewModel) : defaultValue;\n }\n\n return new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, this.name, selfSubscriber, initialValue);\n };\n\n BindableProperty.prototype._initialize = function _initialize(viewModel, observerLookup, attributes, behaviorHandlesBind, boundProperties) {\n var selfSubscriber = void 0;\n var observer = void 0;\n var attribute = void 0;\n var defaultValue = this.defaultValue;\n\n if (this.isDynamic) {\n for (var key in attributes) {\n this._createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, key, attributes[key], boundProperties);\n }\n } else if (!this.hasOptions) {\n observer = observerLookup[this.name];\n\n if (attributes !== null) {\n selfSubscriber = observer.selfSubscriber;\n attribute = attributes[this.attribute];\n\n if (behaviorHandlesBind) {\n observer.selfSubscriber = null;\n }\n\n if (typeof attribute === 'string') {\n viewModel[this.name] = attribute;\n observer.call();\n } else if (attribute) {\n boundProperties.push({ observer: observer, binding: attribute.createBinding(viewModel) });\n } else if (defaultValue !== undefined) {\n observer.call();\n }\n\n observer.selfSubscriber = selfSubscriber;\n }\n\n observer.publishing = true;\n }\n };\n\n BindableProperty.prototype._createDynamicProperty = function _createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, name, attribute, boundProperties) {\n var changeHandlerName = name + 'Changed';\n var selfSubscriber = null;\n var observer = void 0;\n var info = void 0;\n\n if (changeHandlerName in viewModel) {\n if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n viewModel[changeHandlerName](newValue, oldValue);\n viewModel.propertyChanged(name, newValue, oldValue);\n };\n } else {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel[changeHandlerName](newValue, oldValue);\n };\n }\n } else if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel.propertyChanged(name, newValue, oldValue);\n };\n }\n\n observer = observerLookup[name] = new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, name, selfSubscriber);\n\n Object.defineProperty(viewModel, name, {\n configurable: true,\n enumerable: true,\n get: observer.getValue.bind(observer),\n set: observer.setValue.bind(observer)\n });\n\n if (behaviorHandlesBind) {\n observer.selfSubscriber = null;\n }\n\n if (typeof attribute === 'string') {\n viewModel[name] = attribute;\n observer.call();\n } else if (attribute) {\n info = { observer: observer, binding: attribute.createBinding(viewModel) };\n boundProperties.push(info);\n }\n\n observer.publishing = true;\n observer.selfSubscriber = selfSubscriber;\n };\n\n return BindableProperty;\n }();\n\n var lastProviderId = 0;\n\n function nextProviderId() {\n return ++lastProviderId;\n }\n\n function doProcessContent() {\n return true;\n }\n function doProcessAttributes() {}\n\n var HtmlBehaviorResource = exports.HtmlBehaviorResource = function () {\n function HtmlBehaviorResource() {\n \n\n this.elementName = null;\n this.attributeName = null;\n this.attributeDefaultBindingMode = undefined;\n this.liftsContent = false;\n this.targetShadowDOM = false;\n this.shadowDOMOptions = null;\n this.processAttributes = doProcessAttributes;\n this.processContent = doProcessContent;\n this.usesShadowDOM = false;\n this.childBindings = null;\n this.hasDynamicOptions = false;\n this.containerless = false;\n this.properties = [];\n this.attributes = {};\n this.isInitialized = false;\n this.primaryProperty = null;\n }\n\n HtmlBehaviorResource.convention = function convention(name, existing) {\n var behavior = void 0;\n\n if (name.endsWith('CustomAttribute')) {\n behavior = existing || new HtmlBehaviorResource();\n behavior.attributeName = _hyphenate(name.substring(0, name.length - 15));\n }\n\n if (name.endsWith('CustomElement')) {\n behavior = existing || new HtmlBehaviorResource();\n behavior.elementName = _hyphenate(name.substring(0, name.length - 13));\n }\n\n return behavior;\n };\n\n HtmlBehaviorResource.prototype.addChildBinding = function addChildBinding(behavior) {\n if (this.childBindings === null) {\n this.childBindings = [];\n }\n\n this.childBindings.push(behavior);\n };\n\n HtmlBehaviorResource.prototype.initialize = function initialize(container, target) {\n var proto = target.prototype;\n var properties = this.properties;\n var attributeName = this.attributeName;\n var attributeDefaultBindingMode = this.attributeDefaultBindingMode;\n var i = void 0;\n var ii = void 0;\n var current = void 0;\n\n if (this.isInitialized) {\n return;\n }\n\n this.isInitialized = true;\n target.__providerId__ = nextProviderId();\n\n this.observerLocator = container.get(_aureliaBinding.ObserverLocator);\n this.taskQueue = container.get(_aureliaTaskQueue.TaskQueue);\n\n this.target = target;\n this.usesShadowDOM = this.targetShadowDOM && _aureliaPal.FEATURE.shadowDOM;\n this.handlesCreated = 'created' in proto;\n this.handlesBind = 'bind' in proto;\n this.handlesUnbind = 'unbind' in proto;\n this.handlesAttached = 'attached' in proto;\n this.handlesDetached = 'detached' in proto;\n this.htmlName = this.elementName || this.attributeName;\n\n if (attributeName !== null) {\n if (properties.length === 0) {\n new BindableProperty({\n name: 'value',\n changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\n attribute: attributeName,\n defaultBindingMode: attributeDefaultBindingMode\n }).registerWith(target, this);\n }\n\n current = properties[0];\n\n if (properties.length === 1 && current.name === 'value') {\n current.isDynamic = current.hasOptions = this.hasDynamicOptions;\n current.defineOn(target, this);\n } else {\n for (i = 0, ii = properties.length; i < ii; ++i) {\n properties[i].defineOn(target, this);\n if (properties[i].primaryProperty) {\n if (this.primaryProperty) {\n throw new Error('Only one bindable property on a custom element can be defined as the default');\n }\n this.primaryProperty = properties[i];\n }\n }\n\n current = new BindableProperty({\n name: 'value',\n changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\n attribute: attributeName,\n defaultBindingMode: attributeDefaultBindingMode\n });\n\n current.hasOptions = true;\n current.registerWith(target, this);\n }\n } else {\n for (i = 0, ii = properties.length; i < ii; ++i) {\n properties[i].defineOn(target, this);\n }\n }\n };\n\n HtmlBehaviorResource.prototype.register = function register(registry, name) {\n var _this13 = this;\n\n if (this.attributeName !== null) {\n registry.registerAttribute(name || this.attributeName, this, this.attributeName);\n\n if (Array.isArray(this.aliases)) {\n this.aliases.forEach(function (alias) {\n registry.registerAttribute(alias, _this13, _this13.attributeName);\n });\n }\n }\n\n if (this.elementName !== null) {\n registry.registerElement(name || this.elementName, this);\n }\n };\n\n HtmlBehaviorResource.prototype.load = function load(container, target, loadContext, viewStrategy, transientView) {\n var _this14 = this;\n\n var options = void 0;\n\n if (this.elementName !== null) {\n viewStrategy = container.get(ViewLocator).getViewStrategy(viewStrategy || this.viewStrategy || target);\n options = new ViewCompileInstruction(this.targetShadowDOM, true);\n\n if (!viewStrategy.moduleId) {\n viewStrategy.moduleId = _aureliaMetadata.Origin.get(target).moduleId;\n }\n\n return viewStrategy.loadViewFactory(container.get(ViewEngine), options, loadContext, target).then(function (viewFactory) {\n if (!transientView || !_this14.viewFactory) {\n _this14.viewFactory = viewFactory;\n }\n\n return viewFactory;\n });\n }\n\n return Promise.resolve(this);\n };\n\n HtmlBehaviorResource.prototype.compile = function compile(compiler, resources, node, instruction, parentNode) {\n if (this.liftsContent) {\n if (!instruction.viewFactory) {\n var template = _aureliaPal.DOM.createElement('template');\n var fragment = _aureliaPal.DOM.createDocumentFragment();\n var cacheSize = node.getAttribute('view-cache');\n var part = node.getAttribute('part');\n\n node.removeAttribute(instruction.originalAttrName);\n _aureliaPal.DOM.replaceNode(template, node, parentNode);\n fragment.appendChild(node);\n instruction.viewFactory = compiler.compile(fragment, resources);\n\n if (part) {\n instruction.viewFactory.part = part;\n node.removeAttribute('part');\n }\n\n if (cacheSize) {\n instruction.viewFactory.setCacheSize(cacheSize);\n node.removeAttribute('view-cache');\n }\n\n node = template;\n }\n } else if (this.elementName !== null) {\n var _partReplacements2 = {};\n\n if (this.processContent(compiler, resources, node, instruction) && node.hasChildNodes()) {\n var currentChild = node.firstChild;\n var contentElement = this.usesShadowDOM ? null : _aureliaPal.DOM.createElement('au-content');\n var nextSibling = void 0;\n var toReplace = void 0;\n\n while (currentChild) {\n nextSibling = currentChild.nextSibling;\n\n if (currentChild.tagName === 'TEMPLATE' && (toReplace = currentChild.getAttribute('replace-part'))) {\n _partReplacements2[toReplace] = compiler.compile(currentChild, resources);\n _aureliaPal.DOM.removeNode(currentChild, parentNode);\n instruction.partReplacements = _partReplacements2;\n } else if (contentElement !== null) {\n if (currentChild.nodeType === 3 && _isAllWhitespace(currentChild)) {\n _aureliaPal.DOM.removeNode(currentChild, parentNode);\n } else {\n contentElement.appendChild(currentChild);\n }\n }\n\n currentChild = nextSibling;\n }\n\n if (contentElement !== null && contentElement.hasChildNodes()) {\n node.appendChild(contentElement);\n }\n\n instruction.skipContentProcessing = false;\n } else {\n instruction.skipContentProcessing = true;\n }\n }\n\n return node;\n };\n\n HtmlBehaviorResource.prototype.create = function create(container, instruction, element, bindings) {\n var viewHost = void 0;\n var au = null;\n\n instruction = instruction || BehaviorInstruction.normal;\n element = element || null;\n bindings = bindings || null;\n\n if (this.elementName !== null && element) {\n if (this.usesShadowDOM) {\n viewHost = element.attachShadow(this.shadowDOMOptions);\n container.registerInstance(_aureliaPal.DOM.boundary, viewHost);\n } else {\n viewHost = element;\n if (this.targetShadowDOM) {\n container.registerInstance(_aureliaPal.DOM.boundary, viewHost);\n }\n }\n }\n\n if (element !== null) {\n element.au = au = element.au || {};\n }\n\n var viewModel = instruction.viewModel || container.get(this.target);\n var controller = new Controller(this, instruction, viewModel, container);\n var childBindings = this.childBindings;\n var viewFactory = void 0;\n\n if (this.liftsContent) {\n au.controller = controller;\n } else if (this.elementName !== null) {\n viewFactory = instruction.viewFactory || this.viewFactory;\n container.viewModel = viewModel;\n\n if (viewFactory) {\n controller.view = viewFactory.create(container, instruction, element);\n }\n\n if (element !== null) {\n au.controller = controller;\n\n if (controller.view) {\n if (!this.usesShadowDOM && (element.childNodes.length === 1 || element.contentElement)) {\n var contentElement = element.childNodes[0] || element.contentElement;\n controller.view.contentView = { fragment: contentElement };\n contentElement.parentNode && _aureliaPal.DOM.removeNode(contentElement);\n }\n\n if (instruction.anchorIsContainer) {\n if (childBindings !== null) {\n for (var _i3 = 0, _ii3 = childBindings.length; _i3 < _ii3; ++_i3) {\n controller.view.addBinding(childBindings[_i3].create(element, viewModel, controller));\n }\n }\n\n controller.view.appendNodesTo(viewHost);\n } else {\n controller.view.insertNodesBefore(viewHost);\n }\n } else if (childBindings !== null) {\n for (var _i4 = 0, _ii4 = childBindings.length; _i4 < _ii4; ++_i4) {\n bindings.push(childBindings[_i4].create(element, viewModel, controller));\n }\n }\n } else if (controller.view) {\n controller.view.controller = controller;\n\n if (childBindings !== null) {\n for (var _i5 = 0, _ii5 = childBindings.length; _i5 < _ii5; ++_i5) {\n controller.view.addBinding(childBindings[_i5].create(instruction.host, viewModel, controller));\n }\n }\n } else if (childBindings !== null) {\n for (var _i6 = 0, _ii6 = childBindings.length; _i6 < _ii6; ++_i6) {\n bindings.push(childBindings[_i6].create(instruction.host, viewModel, controller));\n }\n }\n } else if (childBindings !== null) {\n for (var _i7 = 0, _ii7 = childBindings.length; _i7 < _ii7; ++_i7) {\n bindings.push(childBindings[_i7].create(element, viewModel, controller));\n }\n }\n\n if (au !== null) {\n au[this.htmlName] = controller;\n }\n\n if (instruction.initiatedByBehavior && viewFactory) {\n controller.view.created();\n }\n\n return controller;\n };\n\n HtmlBehaviorResource.prototype._ensurePropertiesDefined = function _ensurePropertiesDefined(instance, lookup) {\n var properties = void 0;\n var i = void 0;\n var ii = void 0;\n var observer = void 0;\n\n if ('__propertiesDefined__' in lookup) {\n return;\n }\n\n lookup.__propertiesDefined__ = true;\n properties = this.properties;\n\n for (i = 0, ii = properties.length; i < ii; ++i) {\n observer = properties[i].createObserver(instance);\n\n if (observer !== undefined) {\n lookup[observer.propertyName] = observer;\n }\n }\n };\n\n return HtmlBehaviorResource;\n }();\n\n function createChildObserverDecorator(selectorOrConfig, all) {\n return function (target, key, descriptor) {\n var actualTarget = typeof key === 'string' ? target.constructor : target;\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, actualTarget);\n\n if (typeof selectorOrConfig === 'string') {\n selectorOrConfig = {\n selector: selectorOrConfig,\n name: key\n };\n }\n\n if (descriptor) {\n descriptor.writable = true;\n descriptor.configurable = true;\n }\n\n selectorOrConfig.all = all;\n r.addChildBinding(new ChildObserver(selectorOrConfig));\n };\n }\n\n function children(selectorOrConfig) {\n return createChildObserverDecorator(selectorOrConfig, true);\n }\n\n function child(selectorOrConfig) {\n return createChildObserverDecorator(selectorOrConfig, false);\n }\n\n var ChildObserver = function () {\n function ChildObserver(config) {\n \n\n this.name = config.name;\n this.changeHandler = config.changeHandler || this.name + 'Changed';\n this.selector = config.selector;\n this.all = config.all;\n }\n\n ChildObserver.prototype.create = function create(viewHost, viewModel, controller) {\n return new ChildObserverBinder(this.selector, viewHost, this.name, viewModel, controller, this.changeHandler, this.all);\n };\n\n return ChildObserver;\n }();\n\n var noMutations = [];\n\n function trackMutation(groupedMutations, binder, record) {\n var mutations = groupedMutations.get(binder);\n\n if (!mutations) {\n mutations = [];\n groupedMutations.set(binder, mutations);\n }\n\n mutations.push(record);\n }\n\n function onChildChange(mutations, observer) {\n var binders = observer.binders;\n var bindersLength = binders.length;\n var groupedMutations = new Map();\n\n for (var _i8 = 0, _ii8 = mutations.length; _i8 < _ii8; ++_i8) {\n var record = mutations[_i8];\n var added = record.addedNodes;\n var removed = record.removedNodes;\n\n for (var j = 0, jj = removed.length; j < jj; ++j) {\n var node = removed[j];\n if (node.nodeType === 1) {\n for (var k = 0; k < bindersLength; ++k) {\n var binder = binders[k];\n if (binder.onRemove(node)) {\n trackMutation(groupedMutations, binder, record);\n }\n }\n }\n }\n\n for (var _j = 0, _jj = added.length; _j < _jj; ++_j) {\n var _node = added[_j];\n if (_node.nodeType === 1) {\n for (var _k = 0; _k < bindersLength; ++_k) {\n var _binder = binders[_k];\n if (_binder.onAdd(_node)) {\n trackMutation(groupedMutations, _binder, record);\n }\n }\n }\n }\n }\n\n groupedMutations.forEach(function (value, key) {\n if (key.changeHandler !== null) {\n key.viewModel[key.changeHandler](value);\n }\n });\n }\n\n var ChildObserverBinder = function () {\n function ChildObserverBinder(selector, viewHost, property, viewModel, controller, changeHandler, all) {\n \n\n this.selector = selector;\n this.viewHost = viewHost;\n this.property = property;\n this.viewModel = viewModel;\n this.controller = controller;\n this.changeHandler = changeHandler in viewModel ? changeHandler : null;\n this.usesShadowDOM = controller.behavior.usesShadowDOM;\n this.all = all;\n\n if (!this.usesShadowDOM && controller.view && controller.view.contentView) {\n this.contentView = controller.view.contentView;\n } else {\n this.contentView = null;\n }\n }\n\n ChildObserverBinder.prototype.matches = function matches(element) {\n if (element.matches(this.selector)) {\n if (this.contentView === null) {\n return true;\n }\n\n var contentView = this.contentView;\n var assignedSlot = element.auAssignedSlot;\n\n if (assignedSlot && assignedSlot.projectFromAnchors) {\n var anchors = assignedSlot.projectFromAnchors;\n\n for (var _i9 = 0, _ii9 = anchors.length; _i9 < _ii9; ++_i9) {\n if (anchors[_i9].auOwnerView === contentView) {\n return true;\n }\n }\n\n return false;\n }\n\n return element.auOwnerView === contentView;\n }\n\n return false;\n };\n\n ChildObserverBinder.prototype.bind = function bind(source) {\n var viewHost = this.viewHost;\n var viewModel = this.viewModel;\n var observer = viewHost.__childObserver__;\n\n if (!observer) {\n observer = viewHost.__childObserver__ = _aureliaPal.DOM.createMutationObserver(onChildChange);\n\n var options = {\n childList: true,\n subtree: !this.usesShadowDOM\n };\n\n observer.observe(viewHost, options);\n observer.binders = [];\n }\n\n observer.binders.push(this);\n\n if (this.usesShadowDOM) {\n var current = viewHost.firstElementChild;\n\n if (this.all) {\n var items = viewModel[this.property];\n if (!items) {\n items = viewModel[this.property] = [];\n } else {\n items.length = 0;\n }\n\n while (current) {\n if (this.matches(current)) {\n items.push(current.au && current.au.controller ? current.au.controller.viewModel : current);\n }\n\n current = current.nextElementSibling;\n }\n\n if (this.changeHandler !== null) {\n this.viewModel[this.changeHandler](noMutations);\n }\n } else {\n while (current) {\n if (this.matches(current)) {\n var value = current.au && current.au.controller ? current.au.controller.viewModel : current;\n this.viewModel[this.property] = value;\n\n if (this.changeHandler !== null) {\n this.viewModel[this.changeHandler](value);\n }\n\n break;\n }\n\n current = current.nextElementSibling;\n }\n }\n }\n };\n\n ChildObserverBinder.prototype.onRemove = function onRemove(element) {\n if (this.matches(element)) {\n var value = element.au && element.au.controller ? element.au.controller.viewModel : element;\n\n if (this.all) {\n var items = this.viewModel[this.property] || (this.viewModel[this.property] = []);\n var index = items.indexOf(value);\n\n if (index !== -1) {\n items.splice(index, 1);\n }\n\n return true;\n }\n\n return false;\n }\n\n return false;\n };\n\n ChildObserverBinder.prototype.onAdd = function onAdd(element) {\n if (this.matches(element)) {\n var value = element.au && element.au.controller ? element.au.controller.viewModel : element;\n\n if (this.all) {\n var items = this.viewModel[this.property] || (this.viewModel[this.property] = []);\n var index = 0;\n var prev = element.previousElementSibling;\n\n while (prev) {\n if (this.matches(prev)) {\n index++;\n }\n\n prev = prev.previousElementSibling;\n }\n\n items.splice(index, 0, value);\n return true;\n }\n\n this.viewModel[this.property] = value;\n\n if (this.changeHandler !== null) {\n this.viewModel[this.changeHandler](value);\n }\n }\n\n return false;\n };\n\n ChildObserverBinder.prototype.unbind = function unbind() {\n if (this.viewHost.__childObserver__) {\n this.viewHost.__childObserver__.disconnect();\n this.viewHost.__childObserver__ = null;\n }\n };\n\n return ChildObserverBinder;\n }();\n\n function remove(viewSlot, previous) {\n return Array.isArray(previous) ? viewSlot.removeMany(previous, true) : viewSlot.remove(previous, true);\n }\n\n var SwapStrategies = exports.SwapStrategies = {\n before: function before(viewSlot, previous, callback) {\n return previous === undefined ? callback() : callback().then(function () {\n return remove(viewSlot, previous);\n });\n },\n with: function _with(viewSlot, previous, callback) {\n return previous === undefined ? callback() : Promise.all([remove(viewSlot, previous), callback()]);\n },\n after: function after(viewSlot, previous, callback) {\n return Promise.resolve(viewSlot.removeAll(true)).then(callback);\n }\n };\n\n function tryActivateViewModel(context) {\n if (context.skipActivation || typeof context.viewModel.activate !== 'function') {\n return Promise.resolve();\n }\n\n return context.viewModel.activate(context.model) || Promise.resolve();\n }\n\n var CompositionEngine = exports.CompositionEngine = (_dec10 = (0, _aureliaDependencyInjection.inject)(ViewEngine, ViewLocator), _dec10(_class17 = function () {\n function CompositionEngine(viewEngine, viewLocator) {\n \n\n this.viewEngine = viewEngine;\n this.viewLocator = viewLocator;\n }\n\n CompositionEngine.prototype._swap = function _swap(context, view) {\n var swapStrategy = SwapStrategies[context.swapOrder] || SwapStrategies.after;\n var previousViews = context.viewSlot.children.slice();\n\n return swapStrategy(context.viewSlot, previousViews, function () {\n return Promise.resolve(context.viewSlot.add(view)).then(function () {\n if (context.currentController) {\n context.currentController.unbind();\n }\n });\n }).then(function () {\n if (context.compositionTransactionNotifier) {\n context.compositionTransactionNotifier.done();\n }\n });\n };\n\n CompositionEngine.prototype._createControllerAndSwap = function _createControllerAndSwap(context) {\n var _this15 = this;\n\n return this.createController(context).then(function (controller) {\n controller.automate(context.overrideContext, context.owningView);\n\n if (context.compositionTransactionOwnershipToken) {\n return context.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n return _this15._swap(context, controller.view);\n }).then(function () {\n return controller;\n });\n }\n\n return _this15._swap(context, controller.view).then(function () {\n return controller;\n });\n });\n };\n\n CompositionEngine.prototype.createController = function createController(context) {\n var _this16 = this;\n\n var childContainer = void 0;\n var viewModel = void 0;\n var viewModelResource = void 0;\n var m = void 0;\n\n return this.ensureViewModel(context).then(tryActivateViewModel).then(function () {\n childContainer = context.childContainer;\n viewModel = context.viewModel;\n viewModelResource = context.viewModelResource;\n m = viewModelResource.metadata;\n\n var viewStrategy = _this16.viewLocator.getViewStrategy(context.view || viewModel);\n\n if (context.viewResources) {\n viewStrategy.makeRelativeTo(context.viewResources.viewUrl);\n }\n\n return m.load(childContainer, viewModelResource.value, null, viewStrategy, true);\n }).then(function (viewFactory) {\n return m.create(childContainer, BehaviorInstruction.dynamic(context.host, viewModel, viewFactory));\n });\n };\n\n CompositionEngine.prototype.ensureViewModel = function ensureViewModel(context) {\n var childContainer = context.childContainer = context.childContainer || context.container.createChild();\n\n if (typeof context.viewModel === 'string') {\n context.viewModel = context.viewResources ? context.viewResources.relativeToView(context.viewModel) : context.viewModel;\n\n return this.viewEngine.importViewModelResource(context.viewModel).then(function (viewModelResource) {\n childContainer.autoRegister(viewModelResource.value);\n\n if (context.host) {\n childContainer.registerInstance(_aureliaPal.DOM.Element, context.host);\n }\n\n context.viewModel = childContainer.viewModel = childContainer.get(viewModelResource.value);\n context.viewModelResource = viewModelResource;\n return context;\n });\n }\n\n var m = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, context.viewModel.constructor);\n m.elementName = m.elementName || 'dynamic-element';\n m.initialize(context.container || childContainer, context.viewModel.constructor);\n context.viewModelResource = { metadata: m, value: context.viewModel.constructor };\n childContainer.viewModel = context.viewModel;\n return Promise.resolve(context);\n };\n\n CompositionEngine.prototype.compose = function compose(context) {\n var _this17 = this;\n\n context.childContainer = context.childContainer || context.container.createChild();\n context.view = this.viewLocator.getViewStrategy(context.view);\n\n var transaction = context.childContainer.get(CompositionTransaction);\n var compositionTransactionOwnershipToken = transaction.tryCapture();\n\n if (compositionTransactionOwnershipToken) {\n context.compositionTransactionOwnershipToken = compositionTransactionOwnershipToken;\n } else {\n context.compositionTransactionNotifier = transaction.enlist();\n }\n\n if (context.viewModel) {\n return this._createControllerAndSwap(context);\n } else if (context.view) {\n if (context.viewResources) {\n context.view.makeRelativeTo(context.viewResources.viewUrl);\n }\n\n return context.view.loadViewFactory(this.viewEngine, new ViewCompileInstruction()).then(function (viewFactory) {\n var result = viewFactory.create(context.childContainer);\n result.bind(context.bindingContext, context.overrideContext);\n\n if (context.compositionTransactionOwnershipToken) {\n return context.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n return _this17._swap(context, result);\n }).then(function () {\n return result;\n });\n }\n\n return _this17._swap(context, result).then(function () {\n return result;\n });\n });\n } else if (context.viewSlot) {\n context.viewSlot.removeAll();\n\n if (context.compositionTransactionNotifier) {\n context.compositionTransactionNotifier.done();\n }\n\n return Promise.resolve(null);\n }\n\n return Promise.resolve(null);\n };\n\n return CompositionEngine;\n }()) || _class17);\n\n var ElementConfigResource = exports.ElementConfigResource = function () {\n function ElementConfigResource() {\n \n }\n\n ElementConfigResource.prototype.initialize = function initialize(container, target) {};\n\n ElementConfigResource.prototype.register = function register(registry, name) {};\n\n ElementConfigResource.prototype.load = function load(container, target) {\n var config = new target();\n var eventManager = container.get(_aureliaBinding.EventManager);\n eventManager.registerElementConfig(config);\n };\n\n return ElementConfigResource;\n }();\n\n function validateBehaviorName(name, type) {\n if (/[A-Z]/.test(name)) {\n var newName = _hyphenate(name);\n LogManager.getLogger('templating').warn('\\'' + name + '\\' is not a valid ' + type + ' name and has been converted to \\'' + newName + '\\'. Upper-case letters are not allowed because the DOM is not case-sensitive.');\n return newName;\n }\n return name;\n }\n\n function resource(instance) {\n return function (target) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, instance, target);\n };\n }\n\n function behavior(override) {\n return function (target) {\n if (override instanceof HtmlBehaviorResource) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, override, target);\n } else {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, target);\n Object.assign(r, override);\n }\n };\n }\n\n function customElement(name) {\n return function (target) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, target);\n r.elementName = validateBehaviorName(name, 'custom element');\n };\n }\n\n function customAttribute(name, defaultBindingMode, aliases) {\n return function (target) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, target);\n r.attributeName = validateBehaviorName(name, 'custom attribute');\n r.attributeDefaultBindingMode = defaultBindingMode;\n r.aliases = aliases;\n };\n }\n\n function templateController(target) {\n var deco = function deco(t) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, t);\n r.liftsContent = true;\n };\n\n return target ? deco(target) : deco;\n }\n\n function bindable(nameOrConfigOrTarget, key, descriptor) {\n var deco = function deco(target, key2, descriptor2) {\n var actualTarget = key2 ? target.constructor : target;\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, actualTarget);\n var prop = void 0;\n\n if (key2) {\n nameOrConfigOrTarget = nameOrConfigOrTarget || {};\n nameOrConfigOrTarget.name = key2;\n }\n\n prop = new BindableProperty(nameOrConfigOrTarget);\n return prop.registerWith(actualTarget, r, descriptor2);\n };\n\n if (!nameOrConfigOrTarget) {\n return deco;\n }\n\n if (key) {\n var _target = nameOrConfigOrTarget;\n nameOrConfigOrTarget = null;\n return deco(_target, key, descriptor);\n }\n\n return deco;\n }\n\n function dynamicOptions(target) {\n var deco = function deco(t) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, t);\n r.hasDynamicOptions = true;\n };\n\n return target ? deco(target) : deco;\n }\n\n var defaultShadowDOMOptions = { mode: 'open' };\n function useShadowDOM(targetOrOptions) {\n var options = typeof targetOrOptions === 'function' || !targetOrOptions ? defaultShadowDOMOptions : targetOrOptions;\n\n var deco = function deco(t) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, t);\n r.targetShadowDOM = true;\n r.shadowDOMOptions = options;\n };\n\n return typeof targetOrOptions === 'function' ? deco(targetOrOptions) : deco;\n }\n\n function processAttributes(processor) {\n return function (t) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, t);\n r.processAttributes = function (compiler, resources, node, attributes, elementInstruction) {\n try {\n processor(compiler, resources, node, attributes, elementInstruction);\n } catch (error) {\n LogManager.getLogger('templating').error(error);\n }\n };\n };\n }\n\n function doNotProcessContent() {\n return false;\n }\n\n function processContent(processor) {\n return function (t) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, t);\n r.processContent = processor ? function (compiler, resources, node, instruction) {\n try {\n return processor(compiler, resources, node, instruction);\n } catch (error) {\n LogManager.getLogger('templating').error(error);\n return false;\n }\n } : doNotProcessContent;\n };\n }\n\n function containerless(target) {\n var deco = function deco(t) {\n var r = _aureliaMetadata.metadata.getOrCreateOwn(_aureliaMetadata.metadata.resource, HtmlBehaviorResource, t);\n r.containerless = true;\n };\n\n return target ? deco(target) : deco;\n }\n\n function useViewStrategy(strategy) {\n return function (target) {\n _aureliaMetadata.metadata.define(ViewLocator.viewStrategyMetadataKey, strategy, target);\n };\n }\n\n function useView(path) {\n return useViewStrategy(new RelativeViewStrategy(path));\n }\n\n function inlineView(markup, dependencies, dependencyBaseUrl) {\n return useViewStrategy(new InlineViewStrategy(markup, dependencies, dependencyBaseUrl));\n }\n\n function noView(targetOrDependencies, dependencyBaseUrl) {\n var target = void 0;\n var dependencies = void 0;\n if (typeof targetOrDependencies === 'function') {\n target = targetOrDependencies;\n } else {\n dependencies = targetOrDependencies;\n target = undefined;\n }\n\n var deco = function deco(t) {\n _aureliaMetadata.metadata.define(ViewLocator.viewStrategyMetadataKey, new NoViewStrategy(dependencies, dependencyBaseUrl), t);\n };\n\n return target ? deco(target) : deco;\n }\n\n function elementConfig(target) {\n var deco = function deco(t) {\n _aureliaMetadata.metadata.define(_aureliaMetadata.metadata.resource, new ElementConfigResource(), t);\n };\n\n return target ? deco(target) : deco;\n }\n\n function viewResources() {\n for (var _len = arguments.length, resources = Array(_len), _key = 0; _key < _len; _key++) {\n resources[_key] = arguments[_key];\n }\n\n return function (target) {\n _aureliaMetadata.metadata.define(ViewEngine.viewModelRequireMetadataKey, resources, target);\n };\n }\n\n var TemplatingEngine = exports.TemplatingEngine = (_dec11 = (0, _aureliaDependencyInjection.inject)(_aureliaDependencyInjection.Container, ModuleAnalyzer, ViewCompiler, CompositionEngine), _dec11(_class18 = function () {\n function TemplatingEngine(container, moduleAnalyzer, viewCompiler, compositionEngine) {\n \n\n this._container = container;\n this._moduleAnalyzer = moduleAnalyzer;\n this._viewCompiler = viewCompiler;\n this._compositionEngine = compositionEngine;\n container.registerInstance(Animator, Animator.instance = new Animator());\n }\n\n TemplatingEngine.prototype.configureAnimator = function configureAnimator(animator) {\n this._container.unregister(Animator);\n this._container.registerInstance(Animator, Animator.instance = animator);\n };\n\n TemplatingEngine.prototype.compose = function compose(context) {\n return this._compositionEngine.compose(context);\n };\n\n TemplatingEngine.prototype.enhance = function enhance(instruction) {\n if (instruction instanceof _aureliaPal.DOM.Element) {\n instruction = { element: instruction };\n }\n\n var compilerInstructions = {};\n var resources = instruction.resources || this._container.get(ViewResources);\n\n this._viewCompiler._compileNode(instruction.element, resources, compilerInstructions, instruction.element.parentNode, 'root', true);\n\n var factory = new ViewFactory(instruction.element, compilerInstructions, resources);\n var container = instruction.container || this._container.createChild();\n var view = factory.create(container, BehaviorInstruction.enhance());\n\n view.bind(instruction.bindingContext || {}, instruction.overrideContext);\n\n view.firstChild = view.lastChild = view.fragment;\n view.fragment = _aureliaPal.DOM.createDocumentFragment();\n view.attached();\n\n return view;\n };\n\n return TemplatingEngine;\n }()) || _class18);\n});\r\ndefine('aurelia-templating-resources/compose',['exports', 'aurelia-dependency-injection', 'aurelia-task-queue', 'aurelia-templating', 'aurelia-pal'], function (exports, _aureliaDependencyInjection, _aureliaTaskQueue, _aureliaTemplating, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Compose = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n \n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var Compose = exports.Compose = (_dec = (0, _aureliaTemplating.customElement)('compose'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element, _aureliaDependencyInjection.Container, _aureliaTemplating.CompositionEngine, _aureliaTemplating.ViewSlot, _aureliaTemplating.ViewResources, _aureliaTaskQueue.TaskQueue), _dec(_class = (0, _aureliaTemplating.noView)(_class = _dec2(_class = (_class2 = function () {\n function Compose(element, container, compositionEngine, viewSlot, viewResources, taskQueue) {\n \n\n _initDefineProp(this, 'model', _descriptor, this);\n\n _initDefineProp(this, 'view', _descriptor2, this);\n\n _initDefineProp(this, 'viewModel', _descriptor3, this);\n\n _initDefineProp(this, 'swapOrder', _descriptor4, this);\n\n this.element = element;\n this.container = container;\n this.compositionEngine = compositionEngine;\n this.viewSlot = viewSlot;\n this.viewResources = viewResources;\n this.taskQueue = taskQueue;\n this.currentController = null;\n this.currentViewModel = null;\n }\n\n Compose.prototype.created = function created(owningView) {\n this.owningView = owningView;\n };\n\n Compose.prototype.bind = function bind(bindingContext, overrideContext) {\n this.bindingContext = bindingContext;\n this.overrideContext = overrideContext;\n processInstruction(this, createInstruction(this, {\n view: this.view,\n viewModel: this.viewModel,\n model: this.model\n }));\n };\n\n Compose.prototype.unbind = function unbind(bindingContext, overrideContext) {\n this.bindingContext = null;\n this.overrideContext = null;\n var returnToCache = true;\n var skipAnimation = true;\n this.viewSlot.removeAll(returnToCache, skipAnimation);\n };\n\n Compose.prototype.modelChanged = function modelChanged(newValue, oldValue) {\n var _this = this;\n\n if (this.currentInstruction) {\n this.currentInstruction.model = newValue;\n return;\n }\n\n this.taskQueue.queueMicroTask(function () {\n if (_this.currentInstruction) {\n _this.currentInstruction.model = newValue;\n return;\n }\n\n var vm = _this.currentViewModel;\n\n if (vm && typeof vm.activate === 'function') {\n vm.activate(newValue);\n }\n });\n };\n\n Compose.prototype.viewChanged = function viewChanged(newValue, oldValue) {\n var _this2 = this;\n\n var instruction = createInstruction(this, {\n view: newValue,\n viewModel: this.currentViewModel || this.viewModel,\n model: this.model\n });\n\n if (this.currentInstruction) {\n this.currentInstruction = instruction;\n return;\n }\n\n this.currentInstruction = instruction;\n this.taskQueue.queueMicroTask(function () {\n return processInstruction(_this2, _this2.currentInstruction);\n });\n };\n\n Compose.prototype.viewModelChanged = function viewModelChanged(newValue, oldValue) {\n var _this3 = this;\n\n var instruction = createInstruction(this, {\n viewModel: newValue,\n view: this.view,\n model: this.model\n });\n\n if (this.currentInstruction) {\n this.currentInstruction = instruction;\n return;\n }\n\n this.currentInstruction = instruction;\n this.taskQueue.queueMicroTask(function () {\n return processInstruction(_this3, _this3.currentInstruction);\n });\n };\n\n return Compose;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'model', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'view', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'viewModel', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'swapOrder', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class) || _class);\n\n\n function createInstruction(composer, instruction) {\n return Object.assign(instruction, {\n bindingContext: composer.bindingContext,\n overrideContext: composer.overrideContext,\n owningView: composer.owningView,\n container: composer.container,\n viewSlot: composer.viewSlot,\n viewResources: composer.viewResources,\n currentController: composer.currentController,\n host: composer.element,\n swapOrder: composer.swapOrder\n });\n }\n\n function processInstruction(composer, instruction) {\n composer.currentInstruction = null;\n composer.compositionEngine.compose(instruction).then(function (controller) {\n composer.currentController = controller;\n composer.currentViewModel = controller ? controller.viewModel : null;\n });\n }\n});\r\ndefine('aurelia-templating-resources/if',['exports', 'aurelia-templating', 'aurelia-dependency-injection'], function (exports, _aureliaTemplating, _aureliaDependencyInjection) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.If = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var If = exports.If = (_dec = (0, _aureliaTemplating.customAttribute)('if'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaTemplating.BoundViewFactory, _aureliaTemplating.ViewSlot), _dec(_class = (0, _aureliaTemplating.templateController)(_class = _dec2(_class = function () {\n function If(viewFactory, viewSlot) {\n \n\n this.viewFactory = viewFactory;\n this.viewSlot = viewSlot;\n this.showing = false;\n this.view = null;\n this.bindingContext = null;\n this.overrideContext = null;\n }\n\n If.prototype.bind = function bind(bindingContext, overrideContext) {\n this.bindingContext = bindingContext;\n this.overrideContext = overrideContext;\n this.valueChanged(this.value);\n };\n\n If.prototype.valueChanged = function valueChanged(newValue) {\n var _this = this;\n\n if (this.__queuedChanges) {\n this.__queuedChanges.push(newValue);\n return;\n }\n\n var maybePromise = this._runValueChanged(newValue);\n if (maybePromise instanceof Promise) {\n (function () {\n var queuedChanges = _this.__queuedChanges = [];\n\n var runQueuedChanges = function runQueuedChanges() {\n if (!queuedChanges.length) {\n _this.__queuedChanges = undefined;\n return;\n }\n\n var nextPromise = _this._runValueChanged(queuedChanges.shift()) || Promise.resolve();\n nextPromise.then(runQueuedChanges);\n };\n\n maybePromise.then(runQueuedChanges);\n })();\n }\n };\n\n If.prototype._runValueChanged = function _runValueChanged(newValue) {\n var _this2 = this;\n\n if (!newValue) {\n var viewOrPromise = void 0;\n if (this.view !== null && this.showing) {\n viewOrPromise = this.viewSlot.remove(this.view);\n if (viewOrPromise instanceof Promise) {\n viewOrPromise.then(function () {\n return _this2.view.unbind();\n });\n } else {\n this.view.unbind();\n }\n }\n\n this.showing = false;\n return viewOrPromise;\n }\n\n if (this.view === null) {\n this.view = this.viewFactory.create();\n }\n\n if (!this.view.isBound) {\n this.view.bind(this.bindingContext, this.overrideContext);\n }\n\n if (!this.showing) {\n this.showing = true;\n return this.viewSlot.add(this.view);\n }\n\n return undefined;\n };\n\n If.prototype.unbind = function unbind() {\n if (this.view === null) {\n return;\n }\n\n this.view.unbind();\n\n if (!this.viewFactory.isCaching) {\n return;\n }\n\n if (this.showing) {\n this.showing = false;\n this.viewSlot.remove(this.view, true, true);\n }\n this.view.returnToCache();\n this.view = null;\n };\n\n return If;\n }()) || _class) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/with',['exports', 'aurelia-dependency-injection', 'aurelia-templating', 'aurelia-binding'], function (exports, _aureliaDependencyInjection, _aureliaTemplating, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.With = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var With = exports.With = (_dec = (0, _aureliaTemplating.customAttribute)('with'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaTemplating.BoundViewFactory, _aureliaTemplating.ViewSlot), _dec(_class = (0, _aureliaTemplating.templateController)(_class = _dec2(_class = function () {\n function With(viewFactory, viewSlot) {\n \n\n this.viewFactory = viewFactory;\n this.viewSlot = viewSlot;\n this.parentOverrideContext = null;\n this.view = null;\n }\n\n With.prototype.bind = function bind(bindingContext, overrideContext) {\n this.parentOverrideContext = overrideContext;\n this.valueChanged(this.value);\n };\n\n With.prototype.valueChanged = function valueChanged(newValue) {\n var overrideContext = (0, _aureliaBinding.createOverrideContext)(newValue, this.parentOverrideContext);\n if (!this.view) {\n this.view = this.viewFactory.create();\n this.view.bind(newValue, overrideContext);\n this.viewSlot.add(this.view);\n } else {\n this.view.bind(newValue, overrideContext);\n }\n };\n\n With.prototype.unbind = function unbind() {\n this.parentOverrideContext = null;\n\n if (this.view) {\n this.view.unbind();\n }\n };\n\n return With;\n }()) || _class) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/repeat',['exports', 'aurelia-dependency-injection', 'aurelia-binding', 'aurelia-templating', './repeat-strategy-locator', './repeat-utilities', './analyze-view-factory', './abstract-repeater'], function (exports, _aureliaDependencyInjection, _aureliaBinding, _aureliaTemplating, _repeatStrategyLocator, _repeatUtilities, _analyzeViewFactory, _abstractRepeater) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Repeat = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n \n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var Repeat = exports.Repeat = (_dec = (0, _aureliaTemplating.customAttribute)('repeat'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaTemplating.BoundViewFactory, _aureliaTemplating.TargetInstruction, _aureliaTemplating.ViewSlot, _aureliaTemplating.ViewResources, _aureliaBinding.ObserverLocator, _repeatStrategyLocator.RepeatStrategyLocator), _dec(_class = (0, _aureliaTemplating.templateController)(_class = _dec2(_class = (_class2 = function (_AbstractRepeater) {\n _inherits(Repeat, _AbstractRepeater);\n\n function Repeat(viewFactory, instruction, viewSlot, viewResources, observerLocator, strategyLocator) {\n \n\n var _this = _possibleConstructorReturn(this, _AbstractRepeater.call(this, {\n local: 'item',\n viewsRequireLifecycle: (0, _analyzeViewFactory.viewsRequireLifecycle)(viewFactory)\n }));\n\n _initDefineProp(_this, 'items', _descriptor, _this);\n\n _initDefineProp(_this, 'local', _descriptor2, _this);\n\n _initDefineProp(_this, 'key', _descriptor3, _this);\n\n _initDefineProp(_this, 'value', _descriptor4, _this);\n\n _this.viewFactory = viewFactory;\n _this.instruction = instruction;\n _this.viewSlot = viewSlot;\n _this.lookupFunctions = viewResources.lookupFunctions;\n _this.observerLocator = observerLocator;\n _this.key = 'key';\n _this.value = 'value';\n _this.strategyLocator = strategyLocator;\n _this.ignoreMutation = false;\n _this.sourceExpression = (0, _repeatUtilities.getItemsSourceExpression)(_this.instruction, 'repeat.for');\n _this.isOneTime = (0, _repeatUtilities.isOneTime)(_this.sourceExpression);\n _this.viewsRequireLifecycle = (0, _analyzeViewFactory.viewsRequireLifecycle)(viewFactory);\n return _this;\n }\n\n Repeat.prototype.call = function call(context, changes) {\n this[context](this.items, changes);\n };\n\n Repeat.prototype.bind = function bind(bindingContext, overrideContext) {\n this.scope = { bindingContext: bindingContext, overrideContext: overrideContext };\n this.matcherBinding = this._captureAndRemoveMatcherBinding();\n this.itemsChanged();\n };\n\n Repeat.prototype.unbind = function unbind() {\n this.scope = null;\n this.items = null;\n this.matcherBinding = null;\n this.viewSlot.removeAll(true);\n this._unsubscribeCollection();\n };\n\n Repeat.prototype._unsubscribeCollection = function _unsubscribeCollection() {\n if (this.collectionObserver) {\n this.collectionObserver.unsubscribe(this.callContext, this);\n this.collectionObserver = null;\n this.callContext = null;\n }\n };\n\n Repeat.prototype.itemsChanged = function itemsChanged() {\n this._unsubscribeCollection();\n\n if (!this.scope) {\n return;\n }\n\n var items = this.items;\n this.strategy = this.strategyLocator.getStrategy(items);\n if (!this.strategy) {\n throw new Error('Value for \\'' + this.sourceExpression + '\\' is non-repeatable');\n }\n\n if (!this.isOneTime && !this._observeInnerCollection()) {\n this._observeCollection();\n }\n this.strategy.instanceChanged(this, items);\n };\n\n Repeat.prototype._getInnerCollection = function _getInnerCollection() {\n var expression = (0, _repeatUtilities.unwrapExpression)(this.sourceExpression);\n if (!expression) {\n return null;\n }\n return expression.evaluate(this.scope, null);\n };\n\n Repeat.prototype.handleCollectionMutated = function handleCollectionMutated(collection, changes) {\n if (!this.collectionObserver) {\n return;\n }\n this.strategy.instanceMutated(this, collection, changes);\n };\n\n Repeat.prototype.handleInnerCollectionMutated = function handleInnerCollectionMutated(collection, changes) {\n var _this2 = this;\n\n if (!this.collectionObserver) {\n return;\n }\n\n if (this.ignoreMutation) {\n return;\n }\n this.ignoreMutation = true;\n var newItems = this.sourceExpression.evaluate(this.scope, this.lookupFunctions);\n this.observerLocator.taskQueue.queueMicroTask(function () {\n return _this2.ignoreMutation = false;\n });\n\n if (newItems === this.items) {\n this.itemsChanged();\n } else {\n this.items = newItems;\n }\n };\n\n Repeat.prototype._observeInnerCollection = function _observeInnerCollection() {\n var items = this._getInnerCollection();\n var strategy = this.strategyLocator.getStrategy(items);\n if (!strategy) {\n return false;\n }\n this.collectionObserver = strategy.getCollectionObserver(this.observerLocator, items);\n if (!this.collectionObserver) {\n return false;\n }\n this.callContext = 'handleInnerCollectionMutated';\n this.collectionObserver.subscribe(this.callContext, this);\n return true;\n };\n\n Repeat.prototype._observeCollection = function _observeCollection() {\n var items = this.items;\n this.collectionObserver = this.strategy.getCollectionObserver(this.observerLocator, items);\n if (this.collectionObserver) {\n this.callContext = 'handleCollectionMutated';\n this.collectionObserver.subscribe(this.callContext, this);\n }\n };\n\n Repeat.prototype._captureAndRemoveMatcherBinding = function _captureAndRemoveMatcherBinding() {\n if (this.viewFactory.viewFactory) {\n var instructions = this.viewFactory.viewFactory.instructions;\n var instructionIds = Object.keys(instructions);\n for (var i = 0; i < instructionIds.length; i++) {\n var expressions = instructions[instructionIds[i]].expressions;\n if (expressions) {\n for (var ii = 0; i < expressions.length; i++) {\n if (expressions[ii].targetProperty === 'matcher') {\n var matcherBinding = expressions[ii];\n expressions.splice(ii, 1);\n return matcherBinding;\n }\n }\n }\n }\n }\n\n return undefined;\n };\n\n Repeat.prototype.viewCount = function viewCount() {\n return this.viewSlot.children.length;\n };\n\n Repeat.prototype.views = function views() {\n return this.viewSlot.children;\n };\n\n Repeat.prototype.view = function view(index) {\n return this.viewSlot.children[index];\n };\n\n Repeat.prototype.matcher = function matcher() {\n return this.matcherBinding ? this.matcherBinding.sourceExpression.evaluate(this.scope, this.matcherBinding.lookupFunctions) : null;\n };\n\n Repeat.prototype.addView = function addView(bindingContext, overrideContext) {\n var view = this.viewFactory.create();\n view.bind(bindingContext, overrideContext);\n this.viewSlot.add(view);\n };\n\n Repeat.prototype.insertView = function insertView(index, bindingContext, overrideContext) {\n var view = this.viewFactory.create();\n view.bind(bindingContext, overrideContext);\n this.viewSlot.insert(index, view);\n };\n\n Repeat.prototype.moveView = function moveView(sourceIndex, targetIndex) {\n this.viewSlot.move(sourceIndex, targetIndex);\n };\n\n Repeat.prototype.removeAllViews = function removeAllViews(returnToCache, skipAnimation) {\n return this.viewSlot.removeAll(returnToCache, skipAnimation);\n };\n\n Repeat.prototype.removeViews = function removeViews(viewsToRemove, returnToCache, skipAnimation) {\n return this.viewSlot.removeMany(viewsToRemove, returnToCache, skipAnimation);\n };\n\n Repeat.prototype.removeView = function removeView(index, returnToCache, skipAnimation) {\n return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\n };\n\n Repeat.prototype.updateBindings = function updateBindings(view) {\n var j = view.bindings.length;\n while (j--) {\n (0, _repeatUtilities.updateOneTimeBinding)(view.bindings[j]);\n }\n j = view.controllers.length;\n while (j--) {\n var k = view.controllers[j].boundProperties.length;\n while (k--) {\n var binding = view.controllers[j].boundProperties[k].binding;\n (0, _repeatUtilities.updateOneTimeBinding)(binding);\n }\n }\n };\n\n return Repeat;\n }(_abstractRepeater.AbstractRepeater), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'items', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'local', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'key', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'value', [_aureliaTemplating.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/repeat-strategy-locator',['exports', './null-repeat-strategy', './array-repeat-strategy', './map-repeat-strategy', './set-repeat-strategy', './number-repeat-strategy'], function (exports, _nullRepeatStrategy, _arrayRepeatStrategy, _mapRepeatStrategy, _setRepeatStrategy, _numberRepeatStrategy) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RepeatStrategyLocator = undefined;\n\n \n\n var RepeatStrategyLocator = exports.RepeatStrategyLocator = function () {\n function RepeatStrategyLocator() {\n \n\n this.matchers = [];\n this.strategies = [];\n\n this.addStrategy(function (items) {\n return items === null || items === undefined;\n }, new _nullRepeatStrategy.NullRepeatStrategy());\n this.addStrategy(function (items) {\n return items instanceof Array;\n }, new _arrayRepeatStrategy.ArrayRepeatStrategy());\n this.addStrategy(function (items) {\n return items instanceof Map;\n }, new _mapRepeatStrategy.MapRepeatStrategy());\n this.addStrategy(function (items) {\n return items instanceof Set;\n }, new _setRepeatStrategy.SetRepeatStrategy());\n this.addStrategy(function (items) {\n return typeof items === 'number';\n }, new _numberRepeatStrategy.NumberRepeatStrategy());\n }\n\n RepeatStrategyLocator.prototype.addStrategy = function addStrategy(matcher, strategy) {\n this.matchers.push(matcher);\n this.strategies.push(strategy);\n };\n\n RepeatStrategyLocator.prototype.getStrategy = function getStrategy(items) {\n var matchers = this.matchers;\n\n for (var i = 0, ii = matchers.length; i < ii; ++i) {\n if (matchers[i](items)) {\n return this.strategies[i];\n }\n }\n\n return null;\n };\n\n return RepeatStrategyLocator;\n }();\n});\r\ndefine('aurelia-templating-resources/null-repeat-strategy',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n \n\n var NullRepeatStrategy = exports.NullRepeatStrategy = function () {\n function NullRepeatStrategy() {\n \n }\n\n NullRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n repeat.removeAllViews(true);\n };\n\n NullRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {};\n\n return NullRepeatStrategy;\n }();\n});\r\ndefine('aurelia-templating-resources/array-repeat-strategy',['exports', './repeat-utilities', 'aurelia-binding'], function (exports, _repeatUtilities, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrayRepeatStrategy = undefined;\n\n \n\n var ArrayRepeatStrategy = exports.ArrayRepeatStrategy = function () {\n function ArrayRepeatStrategy() {\n \n }\n\n ArrayRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n return observerLocator.getArrayObserver(items);\n };\n\n ArrayRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n var _this = this;\n\n var itemsLength = items.length;\n\n if (!items || itemsLength === 0) {\n repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n return;\n }\n\n var children = repeat.views();\n var viewsLength = children.length;\n\n if (viewsLength === 0) {\n this._standardProcessInstanceChanged(repeat, items);\n return;\n }\n\n if (repeat.viewsRequireLifecycle) {\n (function () {\n var childrenSnapshot = children.slice(0);\n var itemNameInBindingContext = repeat.local;\n var matcher = repeat.matcher();\n\n var itemsPreviouslyInViews = [];\n var viewsToRemove = [];\n\n for (var index = 0; index < viewsLength; index++) {\n var view = childrenSnapshot[index];\n var oldItem = view.bindingContext[itemNameInBindingContext];\n\n if ((0, _repeatUtilities.indexOf)(items, oldItem, matcher) === -1) {\n viewsToRemove.push(view);\n } else {\n itemsPreviouslyInViews.push(oldItem);\n }\n }\n\n var updateViews = void 0;\n var removePromise = void 0;\n\n if (itemsPreviouslyInViews.length > 0) {\n removePromise = repeat.removeViews(viewsToRemove, true, !repeat.viewsRequireLifecycle);\n updateViews = function updateViews() {\n for (var _index = 0; _index < itemsLength; _index++) {\n var item = items[_index];\n var indexOfView = (0, _repeatUtilities.indexOf)(itemsPreviouslyInViews, item, matcher, _index);\n var _view = void 0;\n\n if (indexOfView === -1) {\n var overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, items[_index], _index, itemsLength);\n repeat.insertView(_index, overrideContext.bindingContext, overrideContext);\n\n itemsPreviouslyInViews.splice(_index, 0, undefined);\n } else if (indexOfView === _index) {\n _view = children[indexOfView];\n itemsPreviouslyInViews[indexOfView] = undefined;\n } else {\n _view = children[indexOfView];\n repeat.moveView(indexOfView, _index);\n itemsPreviouslyInViews.splice(indexOfView, 1);\n itemsPreviouslyInViews.splice(_index, 0, undefined);\n }\n\n if (_view) {\n (0, _repeatUtilities.updateOverrideContext)(_view.overrideContext, _index, itemsLength);\n }\n }\n\n _this._inPlaceProcessItems(repeat, items);\n };\n } else {\n removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n updateViews = function updateViews() {\n return _this._standardProcessInstanceChanged(repeat, items);\n };\n }\n\n if (removePromise instanceof Promise) {\n removePromise.then(updateViews);\n } else {\n updateViews();\n }\n })();\n } else {\n this._inPlaceProcessItems(repeat, items);\n }\n };\n\n ArrayRepeatStrategy.prototype._standardProcessInstanceChanged = function _standardProcessInstanceChanged(repeat, items) {\n for (var i = 0, ii = items.length; i < ii; i++) {\n var overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, items[i], i, ii);\n repeat.addView(overrideContext.bindingContext, overrideContext);\n }\n };\n\n ArrayRepeatStrategy.prototype._inPlaceProcessItems = function _inPlaceProcessItems(repeat, items) {\n var itemsLength = items.length;\n var viewsLength = repeat.viewCount();\n\n while (viewsLength > itemsLength) {\n viewsLength--;\n repeat.removeView(viewsLength, true, !repeat.viewsRequireLifecycle);\n }\n\n var local = repeat.local;\n\n for (var i = 0; i < viewsLength; i++) {\n var view = repeat.view(i);\n var last = i === itemsLength - 1;\n var middle = i !== 0 && !last;\n\n if (view.bindingContext[local] === items[i] && view.overrideContext.$middle === middle && view.overrideContext.$last === last) {\n continue;\n }\n\n view.bindingContext[local] = items[i];\n view.overrideContext.$middle = middle;\n view.overrideContext.$last = last;\n repeat.updateBindings(view);\n }\n\n for (var _i = viewsLength; _i < itemsLength; _i++) {\n var overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, items[_i], _i, itemsLength);\n repeat.addView(overrideContext.bindingContext, overrideContext);\n }\n };\n\n ArrayRepeatStrategy.prototype.instanceMutated = function instanceMutated(repeat, array, splices) {\n var _this2 = this;\n\n if (repeat.__queuedSplices) {\n for (var i = 0, ii = splices.length; i < ii; ++i) {\n var _splices$i = splices[i],\n index = _splices$i.index,\n removed = _splices$i.removed,\n addedCount = _splices$i.addedCount;\n\n (0, _aureliaBinding.mergeSplice)(repeat.__queuedSplices, index, removed, addedCount);\n }\n\n repeat.__array = array.slice(0);\n return;\n }\n\n var maybePromise = this._runSplices(repeat, array.slice(0), splices);\n if (maybePromise instanceof Promise) {\n (function () {\n var queuedSplices = repeat.__queuedSplices = [];\n\n var runQueuedSplices = function runQueuedSplices() {\n if (!queuedSplices.length) {\n repeat.__queuedSplices = undefined;\n repeat.__array = undefined;\n return;\n }\n\n var nextPromise = _this2._runSplices(repeat, repeat.__array, queuedSplices) || Promise.resolve();\n queuedSplices = repeat.__queuedSplices = [];\n nextPromise.then(runQueuedSplices);\n };\n\n maybePromise.then(runQueuedSplices);\n })();\n }\n };\n\n ArrayRepeatStrategy.prototype._runSplices = function _runSplices(repeat, array, splices) {\n var _this3 = this;\n\n var removeDelta = 0;\n var rmPromises = [];\n\n for (var i = 0, ii = splices.length; i < ii; ++i) {\n var splice = splices[i];\n var removed = splice.removed;\n\n for (var j = 0, jj = removed.length; j < jj; ++j) {\n var viewOrPromise = repeat.removeView(splice.index + removeDelta + rmPromises.length, true);\n if (viewOrPromise instanceof Promise) {\n rmPromises.push(viewOrPromise);\n }\n }\n removeDelta -= splice.addedCount;\n }\n\n if (rmPromises.length > 0) {\n return Promise.all(rmPromises).then(function () {\n var spliceIndexLow = _this3._handleAddedSplices(repeat, array, splices);\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), spliceIndexLow);\n });\n }\n\n var spliceIndexLow = this._handleAddedSplices(repeat, array, splices);\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), spliceIndexLow);\n\n return undefined;\n };\n\n ArrayRepeatStrategy.prototype._handleAddedSplices = function _handleAddedSplices(repeat, array, splices) {\n var spliceIndex = void 0;\n var spliceIndexLow = void 0;\n var arrayLength = array.length;\n for (var i = 0, ii = splices.length; i < ii; ++i) {\n var splice = splices[i];\n var addIndex = spliceIndex = splice.index;\n var end = splice.index + splice.addedCount;\n\n if (typeof spliceIndexLow === 'undefined' || spliceIndexLow === null || spliceIndexLow > splice.index) {\n spliceIndexLow = spliceIndex;\n }\n\n for (; addIndex < end; ++addIndex) {\n var overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, array[addIndex], addIndex, arrayLength);\n repeat.insertView(addIndex, overrideContext.bindingContext, overrideContext);\n }\n }\n\n return spliceIndexLow;\n };\n\n return ArrayRepeatStrategy;\n }();\n});\r\ndefine('aurelia-templating-resources/repeat-utilities',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.updateOverrideContexts = updateOverrideContexts;\n exports.createFullOverrideContext = createFullOverrideContext;\n exports.updateOverrideContext = updateOverrideContext;\n exports.getItemsSourceExpression = getItemsSourceExpression;\n exports.unwrapExpression = unwrapExpression;\n exports.isOneTime = isOneTime;\n exports.updateOneTimeBinding = updateOneTimeBinding;\n exports.indexOf = indexOf;\n\n\n var oneTime = _aureliaBinding.bindingMode.oneTime;\n\n function updateOverrideContexts(views, startIndex) {\n var length = views.length;\n\n if (startIndex > 0) {\n startIndex = startIndex - 1;\n }\n\n for (; startIndex < length; ++startIndex) {\n updateOverrideContext(views[startIndex].overrideContext, startIndex, length);\n }\n }\n\n function createFullOverrideContext(repeat, data, index, length, key) {\n var bindingContext = {};\n var overrideContext = (0, _aureliaBinding.createOverrideContext)(bindingContext, repeat.scope.overrideContext);\n\n if (typeof key !== 'undefined') {\n bindingContext[repeat.key] = key;\n bindingContext[repeat.value] = data;\n } else {\n bindingContext[repeat.local] = data;\n }\n updateOverrideContext(overrideContext, index, length);\n return overrideContext;\n }\n\n function updateOverrideContext(overrideContext, index, length) {\n var first = index === 0;\n var last = index === length - 1;\n var even = index % 2 === 0;\n\n overrideContext.$index = index;\n overrideContext.$first = first;\n overrideContext.$last = last;\n overrideContext.$middle = !(first || last);\n overrideContext.$odd = !even;\n overrideContext.$even = even;\n }\n\n function getItemsSourceExpression(instruction, attrName) {\n return instruction.behaviorInstructions.filter(function (bi) {\n return bi.originalAttrName === attrName;\n })[0].attributes.items.sourceExpression;\n }\n\n function unwrapExpression(expression) {\n var unwrapped = false;\n while (expression instanceof _aureliaBinding.BindingBehavior) {\n expression = expression.expression;\n }\n while (expression instanceof _aureliaBinding.ValueConverter) {\n expression = expression.expression;\n unwrapped = true;\n }\n return unwrapped ? expression : null;\n }\n\n function isOneTime(expression) {\n while (expression instanceof _aureliaBinding.BindingBehavior) {\n if (expression.name === 'oneTime') {\n return true;\n }\n expression = expression.expression;\n }\n return false;\n }\n\n function updateOneTimeBinding(binding) {\n if (binding.call && binding.mode === oneTime) {\n binding.call(_aureliaBinding.sourceContext);\n } else if (binding.updateOneTimeBindings) {\n binding.updateOneTimeBindings();\n }\n }\n\n function indexOf(array, item, matcher, startIndex) {\n if (!matcher) {\n return array.indexOf(item);\n }\n var length = array.length;\n for (var index = startIndex || 0; index < length; index++) {\n if (matcher(array[index], item)) {\n return index;\n }\n }\n return -1;\n }\n});\r\ndefine('aurelia-templating-resources/map-repeat-strategy',['exports', './repeat-utilities'], function (exports, _repeatUtilities) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MapRepeatStrategy = undefined;\n\n \n\n var MapRepeatStrategy = exports.MapRepeatStrategy = function () {\n function MapRepeatStrategy() {\n \n }\n\n MapRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n return observerLocator.getMapObserver(items);\n };\n\n MapRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n var _this = this;\n\n var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n if (removePromise instanceof Promise) {\n removePromise.then(function () {\n return _this._standardProcessItems(repeat, items);\n });\n return;\n }\n this._standardProcessItems(repeat, items);\n };\n\n MapRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, items) {\n var index = 0;\n var overrideContext = void 0;\n\n items.forEach(function (value, key) {\n overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, value, index, items.size, key);\n repeat.addView(overrideContext.bindingContext, overrideContext);\n ++index;\n });\n };\n\n MapRepeatStrategy.prototype.instanceMutated = function instanceMutated(repeat, map, records) {\n var key = void 0;\n var i = void 0;\n var ii = void 0;\n var overrideContext = void 0;\n var removeIndex = void 0;\n var record = void 0;\n var rmPromises = [];\n var viewOrPromise = void 0;\n\n for (i = 0, ii = records.length; i < ii; ++i) {\n record = records[i];\n key = record.key;\n switch (record.type) {\n case 'update':\n removeIndex = this._getViewIndexByKey(repeat, key);\n viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\n if (viewOrPromise instanceof Promise) {\n rmPromises.push(viewOrPromise);\n }\n overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, map.get(key), removeIndex, map.size, key);\n repeat.insertView(removeIndex, overrideContext.bindingContext, overrideContext);\n break;\n case 'add':\n overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, map.get(key), map.size - 1, map.size, key);\n repeat.insertView(map.size - 1, overrideContext.bindingContext, overrideContext);\n break;\n case 'delete':\n if (record.oldValue === undefined) {\n return;\n }\n removeIndex = this._getViewIndexByKey(repeat, key);\n viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\n if (viewOrPromise instanceof Promise) {\n rmPromises.push(viewOrPromise);\n }\n break;\n case 'clear':\n repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n break;\n default:\n continue;\n }\n }\n\n if (rmPromises.length > 0) {\n Promise.all(rmPromises).then(function () {\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), 0);\n });\n } else {\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), 0);\n }\n };\n\n MapRepeatStrategy.prototype._getViewIndexByKey = function _getViewIndexByKey(repeat, key) {\n var i = void 0;\n var ii = void 0;\n var child = void 0;\n\n for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\n child = repeat.view(i);\n if (child.bindingContext[repeat.key] === key) {\n return i;\n }\n }\n\n return undefined;\n };\n\n return MapRepeatStrategy;\n }();\n});\r\ndefine('aurelia-templating-resources/set-repeat-strategy',['exports', './repeat-utilities'], function (exports, _repeatUtilities) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SetRepeatStrategy = undefined;\n\n \n\n var SetRepeatStrategy = exports.SetRepeatStrategy = function () {\n function SetRepeatStrategy() {\n \n }\n\n SetRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n return observerLocator.getSetObserver(items);\n };\n\n SetRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n var _this = this;\n\n var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n if (removePromise instanceof Promise) {\n removePromise.then(function () {\n return _this._standardProcessItems(repeat, items);\n });\n return;\n }\n this._standardProcessItems(repeat, items);\n };\n\n SetRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, items) {\n var index = 0;\n var overrideContext = void 0;\n\n items.forEach(function (value) {\n overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, value, index, items.size);\n repeat.addView(overrideContext.bindingContext, overrideContext);\n ++index;\n });\n };\n\n SetRepeatStrategy.prototype.instanceMutated = function instanceMutated(repeat, set, records) {\n var value = void 0;\n var i = void 0;\n var ii = void 0;\n var overrideContext = void 0;\n var removeIndex = void 0;\n var record = void 0;\n var rmPromises = [];\n var viewOrPromise = void 0;\n\n for (i = 0, ii = records.length; i < ii; ++i) {\n record = records[i];\n value = record.value;\n switch (record.type) {\n case 'add':\n overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, value, set.size - 1, set.size);\n repeat.insertView(set.size - 1, overrideContext.bindingContext, overrideContext);\n break;\n case 'delete':\n removeIndex = this._getViewIndexByValue(repeat, value);\n viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\n if (viewOrPromise instanceof Promise) {\n rmPromises.push(viewOrPromise);\n }\n break;\n case 'clear':\n repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n break;\n default:\n continue;\n }\n }\n\n if (rmPromises.length > 0) {\n Promise.all(rmPromises).then(function () {\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), 0);\n });\n } else {\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), 0);\n }\n };\n\n SetRepeatStrategy.prototype._getViewIndexByValue = function _getViewIndexByValue(repeat, value) {\n var i = void 0;\n var ii = void 0;\n var child = void 0;\n\n for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\n child = repeat.view(i);\n if (child.bindingContext[repeat.local] === value) {\n return i;\n }\n }\n\n return undefined;\n };\n\n return SetRepeatStrategy;\n }();\n});\r\ndefine('aurelia-templating-resources/number-repeat-strategy',['exports', './repeat-utilities'], function (exports, _repeatUtilities) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.NumberRepeatStrategy = undefined;\n\n \n\n var NumberRepeatStrategy = exports.NumberRepeatStrategy = function () {\n function NumberRepeatStrategy() {\n \n }\n\n NumberRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver() {\n return null;\n };\n\n NumberRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, value) {\n var _this = this;\n\n var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n if (removePromise instanceof Promise) {\n removePromise.then(function () {\n return _this._standardProcessItems(repeat, value);\n });\n return;\n }\n this._standardProcessItems(repeat, value);\n };\n\n NumberRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, value) {\n var childrenLength = repeat.viewCount();\n var i = void 0;\n var ii = void 0;\n var overrideContext = void 0;\n var viewsToRemove = void 0;\n\n value = Math.floor(value);\n viewsToRemove = childrenLength - value;\n\n if (viewsToRemove > 0) {\n if (viewsToRemove > childrenLength) {\n viewsToRemove = childrenLength;\n }\n\n for (i = 0, ii = viewsToRemove; i < ii; ++i) {\n repeat.removeView(childrenLength - (i + 1), true, !repeat.viewsRequireLifecycle);\n }\n\n return;\n }\n\n for (i = childrenLength, ii = value; i < ii; ++i) {\n overrideContext = (0, _repeatUtilities.createFullOverrideContext)(repeat, i, i, ii);\n repeat.addView(overrideContext.bindingContext, overrideContext);\n }\n\n (0, _repeatUtilities.updateOverrideContexts)(repeat.views(), 0);\n };\n\n return NumberRepeatStrategy;\n }();\n});\r\ndefine('aurelia-templating-resources/analyze-view-factory',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.viewsRequireLifecycle = viewsRequireLifecycle;\n var lifecycleOptionalBehaviors = exports.lifecycleOptionalBehaviors = ['focus', 'if', 'repeat', 'show', 'with'];\n\n function behaviorRequiresLifecycle(instruction) {\n var t = instruction.type;\n var name = t.elementName !== null ? t.elementName : t.attributeName;\n return lifecycleOptionalBehaviors.indexOf(name) === -1 && (t.handlesAttached || t.handlesBind || t.handlesCreated || t.handlesDetached || t.handlesUnbind) || t.viewFactory && viewsRequireLifecycle(t.viewFactory) || instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\n }\n\n function targetRequiresLifecycle(instruction) {\n var behaviors = instruction.behaviorInstructions;\n if (behaviors) {\n var i = behaviors.length;\n while (i--) {\n if (behaviorRequiresLifecycle(behaviors[i])) {\n return true;\n }\n }\n }\n\n return instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\n }\n\n function viewsRequireLifecycle(viewFactory) {\n if ('_viewsRequireLifecycle' in viewFactory) {\n return viewFactory._viewsRequireLifecycle;\n }\n\n viewFactory._viewsRequireLifecycle = false;\n\n if (viewFactory.viewFactory) {\n viewFactory._viewsRequireLifecycle = viewsRequireLifecycle(viewFactory.viewFactory);\n return viewFactory._viewsRequireLifecycle;\n }\n\n if (viewFactory.template.querySelector('.au-animate')) {\n viewFactory._viewsRequireLifecycle = true;\n return true;\n }\n\n for (var id in viewFactory.instructions) {\n if (targetRequiresLifecycle(viewFactory.instructions[id])) {\n viewFactory._viewsRequireLifecycle = true;\n return true;\n }\n }\n\n viewFactory._viewsRequireLifecycle = false;\n return false;\n }\n});\r\ndefine('aurelia-templating-resources/abstract-repeater',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n \n\n var AbstractRepeater = exports.AbstractRepeater = function () {\n function AbstractRepeater(options) {\n \n\n Object.assign(this, {\n local: 'items',\n viewsRequireLifecycle: true\n }, options);\n }\n\n AbstractRepeater.prototype.viewCount = function viewCount() {\n throw new Error('subclass must implement `viewCount`');\n };\n\n AbstractRepeater.prototype.views = function views() {\n throw new Error('subclass must implement `views`');\n };\n\n AbstractRepeater.prototype.view = function view(index) {\n throw new Error('subclass must implement `view`');\n };\n\n AbstractRepeater.prototype.matcher = function matcher() {\n throw new Error('subclass must implement `matcher`');\n };\n\n AbstractRepeater.prototype.addView = function addView(bindingContext, overrideContext) {\n throw new Error('subclass must implement `addView`');\n };\n\n AbstractRepeater.prototype.insertView = function insertView(index, bindingContext, overrideContext) {\n throw new Error('subclass must implement `insertView`');\n };\n\n AbstractRepeater.prototype.moveView = function moveView(sourceIndex, targetIndex) {\n throw new Error('subclass must implement `moveView`');\n };\n\n AbstractRepeater.prototype.removeAllViews = function removeAllViews(returnToCache, skipAnimation) {\n throw new Error('subclass must implement `removeAllViews`');\n };\n\n AbstractRepeater.prototype.removeViews = function removeViews(viewsToRemove, returnToCache, skipAnimation) {\n throw new Error('subclass must implement `removeView`');\n };\n\n AbstractRepeater.prototype.removeView = function removeView(index, returnToCache, skipAnimation) {\n throw new Error('subclass must implement `removeView`');\n };\n\n AbstractRepeater.prototype.updateBindings = function updateBindings(view) {\n throw new Error('subclass must implement `updateBindings`');\n };\n\n return AbstractRepeater;\n }();\n});\r\ndefine('aurelia-templating-resources/show',['exports', 'aurelia-dependency-injection', 'aurelia-templating', 'aurelia-pal', './aurelia-hide-style'], function (exports, _aureliaDependencyInjection, _aureliaTemplating, _aureliaPal, _aureliaHideStyle) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Show = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var Show = exports.Show = (_dec = (0, _aureliaTemplating.customAttribute)('show'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element, _aureliaTemplating.Animator, _aureliaDependencyInjection.Optional.of(_aureliaPal.DOM.boundary, true)), _dec(_class = _dec2(_class = function () {\n function Show(element, animator, domBoundary) {\n \n\n this.element = element;\n this.animator = animator;\n this.domBoundary = domBoundary;\n }\n\n Show.prototype.created = function created() {\n (0, _aureliaHideStyle.injectAureliaHideStyleAtBoundary)(this.domBoundary);\n };\n\n Show.prototype.valueChanged = function valueChanged(newValue) {\n if (newValue) {\n this.animator.removeClass(this.element, _aureliaHideStyle.aureliaHideClassName);\n } else {\n this.animator.addClass(this.element, _aureliaHideStyle.aureliaHideClassName);\n }\n };\n\n Show.prototype.bind = function bind(bindingContext) {\n this.valueChanged(this.value);\n };\n\n return Show;\n }()) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/aurelia-hide-style',['exports', 'aurelia-pal'], function (exports, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.aureliaHideClassName = undefined;\n exports.injectAureliaHideStyleAtHead = injectAureliaHideStyleAtHead;\n exports.injectAureliaHideStyleAtBoundary = injectAureliaHideStyleAtBoundary;\n var aureliaHideClassName = exports.aureliaHideClassName = 'aurelia-hide';\n\n var aureliaHideClass = '.' + aureliaHideClassName + ' { display:none !important; }';\n\n function injectAureliaHideStyleAtHead() {\n _aureliaPal.DOM.injectStyles(aureliaHideClass);\n }\n\n function injectAureliaHideStyleAtBoundary(domBoundary) {\n if (_aureliaPal.FEATURE.shadowDOM && domBoundary && !domBoundary.hasAureliaHideStyle) {\n domBoundary.hasAureliaHideStyle = true;\n _aureliaPal.DOM.injectStyles(aureliaHideClass, domBoundary);\n }\n }\n});\r\ndefine('aurelia-templating-resources/hide',['exports', 'aurelia-dependency-injection', 'aurelia-templating', 'aurelia-pal', './aurelia-hide-style'], function (exports, _aureliaDependencyInjection, _aureliaTemplating, _aureliaPal, _aureliaHideStyle) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Hide = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var Hide = exports.Hide = (_dec = (0, _aureliaTemplating.customAttribute)('hide'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element, _aureliaTemplating.Animator, _aureliaDependencyInjection.Optional.of(_aureliaPal.DOM.boundary, true)), _dec(_class = _dec2(_class = function () {\n function Hide(element, animator, domBoundary) {\n \n\n this.element = element;\n this.animator = animator;\n this.domBoundary = domBoundary;\n }\n\n Hide.prototype.created = function created() {\n (0, _aureliaHideStyle.injectAureliaHideStyleAtBoundary)(this.domBoundary);\n };\n\n Hide.prototype.valueChanged = function valueChanged(newValue) {\n if (newValue) {\n this.animator.addClass(this.element, _aureliaHideStyle.aureliaHideClassName);\n } else {\n this.animator.removeClass(this.element, _aureliaHideStyle.aureliaHideClassName);\n }\n };\n\n Hide.prototype.bind = function bind(bindingContext) {\n this.valueChanged(this.value);\n };\n\n return Hide;\n }()) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/sanitize-html',['exports', 'aurelia-binding', 'aurelia-dependency-injection', './html-sanitizer'], function (exports, _aureliaBinding, _aureliaDependencyInjection, _htmlSanitizer) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SanitizeHTMLValueConverter = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var SanitizeHTMLValueConverter = exports.SanitizeHTMLValueConverter = (_dec = (0, _aureliaBinding.valueConverter)('sanitizeHTML'), _dec2 = (0, _aureliaDependencyInjection.inject)(_htmlSanitizer.HTMLSanitizer), _dec(_class = _dec2(_class = function () {\n function SanitizeHTMLValueConverter(sanitizer) {\n \n\n this.sanitizer = sanitizer;\n }\n\n SanitizeHTMLValueConverter.prototype.toView = function toView(untrustedMarkup) {\n if (untrustedMarkup === null || untrustedMarkup === undefined) {\n return null;\n }\n\n return this.sanitizer.sanitize(untrustedMarkup);\n };\n\n return SanitizeHTMLValueConverter;\n }()) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/html-sanitizer',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n \n\n var SCRIPT_REGEX = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi;\n\n var HTMLSanitizer = exports.HTMLSanitizer = function () {\n function HTMLSanitizer() {\n \n }\n\n HTMLSanitizer.prototype.sanitize = function sanitize(input) {\n return input.replace(SCRIPT_REGEX, '');\n };\n\n return HTMLSanitizer;\n }();\n});\r\ndefine('aurelia-templating-resources/replaceable',['exports', 'aurelia-dependency-injection', 'aurelia-templating'], function (exports, _aureliaDependencyInjection, _aureliaTemplating) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Replaceable = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var Replaceable = exports.Replaceable = (_dec = (0, _aureliaTemplating.customAttribute)('replaceable'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaTemplating.BoundViewFactory, _aureliaTemplating.ViewSlot), _dec(_class = (0, _aureliaTemplating.templateController)(_class = _dec2(_class = function () {\n function Replaceable(viewFactory, viewSlot) {\n \n\n this.viewFactory = viewFactory;\n this.viewSlot = viewSlot;\n this.view = null;\n }\n\n Replaceable.prototype.bind = function bind(bindingContext, overrideContext) {\n if (this.view === null) {\n this.view = this.viewFactory.create();\n this.viewSlot.add(this.view);\n }\n\n this.view.bind(bindingContext, overrideContext);\n };\n\n Replaceable.prototype.unbind = function unbind() {\n this.view.unbind();\n };\n\n return Replaceable;\n }()) || _class) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/focus',['exports', 'aurelia-templating', 'aurelia-binding', 'aurelia-dependency-injection', 'aurelia-task-queue', 'aurelia-pal'], function (exports, _aureliaTemplating, _aureliaBinding, _aureliaDependencyInjection, _aureliaTaskQueue, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Focus = undefined;\n\n \n\n var _dec, _dec2, _class;\n\n var Focus = exports.Focus = (_dec = (0, _aureliaTemplating.customAttribute)('focus', _aureliaBinding.bindingMode.twoWay), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element, _aureliaTaskQueue.TaskQueue), _dec(_class = _dec2(_class = function () {\n function Focus(element, taskQueue) {\n var _this = this;\n\n \n\n this.element = element;\n this.taskQueue = taskQueue;\n this.isAttached = false;\n this.needsApply = false;\n\n this.focusListener = function (e) {\n _this.value = true;\n };\n this.blurListener = function (e) {\n if (_aureliaPal.DOM.activeElement !== _this.element) {\n _this.value = false;\n }\n };\n }\n\n Focus.prototype.valueChanged = function valueChanged(newValue) {\n if (this.isAttached) {\n this._apply();\n } else {\n this.needsApply = true;\n }\n };\n\n Focus.prototype._apply = function _apply() {\n var _this2 = this;\n\n if (this.value) {\n this.taskQueue.queueMicroTask(function () {\n if (_this2.value) {\n _this2.element.focus();\n }\n });\n } else {\n this.element.blur();\n }\n };\n\n Focus.prototype.attached = function attached() {\n this.isAttached = true;\n if (this.needsApply) {\n this.needsApply = false;\n this._apply();\n }\n this.element.addEventListener('focus', this.focusListener);\n this.element.addEventListener('blur', this.blurListener);\n };\n\n Focus.prototype.detached = function detached() {\n this.isAttached = false;\n this.element.removeEventListener('focus', this.focusListener);\n this.element.removeEventListener('blur', this.blurListener);\n };\n\n return Focus;\n }()) || _class) || _class);\n});\r\ndefine('aurelia-templating-resources/css-resource',['exports', 'aurelia-templating', 'aurelia-loader', 'aurelia-dependency-injection', 'aurelia-path', 'aurelia-pal'], function (exports, _aureliaTemplating, _aureliaLoader, _aureliaDependencyInjection, _aureliaPath, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports._createCSSResource = _createCSSResource;\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n \n\n var cssUrlMatcher = /url\\((?!['\"]data)([^)]+)\\)/gi;\n\n function fixupCSSUrls(address, css) {\n if (typeof css !== 'string') {\n throw new Error('Failed loading required CSS file: ' + address);\n }\n return css.replace(cssUrlMatcher, function (match, p1) {\n var quote = p1.charAt(0);\n if (quote === '\\'' || quote === '\"') {\n p1 = p1.substr(1, p1.length - 2);\n }\n return 'url(\\'' + (0, _aureliaPath.relativeToFile)(p1, address) + '\\')';\n });\n }\n\n var CSSResource = function () {\n function CSSResource(address) {\n \n\n this.address = address;\n this._scoped = null;\n this._global = false;\n this._alreadyGloballyInjected = false;\n }\n\n CSSResource.prototype.initialize = function initialize(container, target) {\n this._scoped = new target(this);\n };\n\n CSSResource.prototype.register = function register(registry, name) {\n if (name === 'scoped') {\n registry.registerViewEngineHooks(this._scoped);\n } else {\n this._global = true;\n }\n };\n\n CSSResource.prototype.load = function load(container) {\n var _this = this;\n\n return container.get(_aureliaLoader.Loader).loadText(this.address).catch(function (err) {\n return null;\n }).then(function (text) {\n text = fixupCSSUrls(_this.address, text);\n _this._scoped.css = text;\n if (_this._global) {\n _this._alreadyGloballyInjected = true;\n _aureliaPal.DOM.injectStyles(text);\n }\n });\n };\n\n return CSSResource;\n }();\n\n var CSSViewEngineHooks = function () {\n function CSSViewEngineHooks(owner) {\n \n\n this.owner = owner;\n this.css = null;\n }\n\n CSSViewEngineHooks.prototype.beforeCompile = function beforeCompile(content, resources, instruction) {\n if (instruction.targetShadowDOM) {\n _aureliaPal.DOM.injectStyles(this.css, content, true);\n } else if (_aureliaPal.FEATURE.scopedCSS) {\n var styleNode = _aureliaPal.DOM.injectStyles(this.css, content, true);\n styleNode.setAttribute('scoped', 'scoped');\n } else if (!this.owner._alreadyGloballyInjected) {\n _aureliaPal.DOM.injectStyles(this.css);\n this.owner._alreadyGloballyInjected = true;\n }\n };\n\n return CSSViewEngineHooks;\n }();\n\n function _createCSSResource(address) {\n var _dec, _class;\n\n var ViewCSS = (_dec = (0, _aureliaTemplating.resource)(new CSSResource(address)), _dec(_class = function (_CSSViewEngineHooks) {\n _inherits(ViewCSS, _CSSViewEngineHooks);\n\n function ViewCSS() {\n \n\n return _possibleConstructorReturn(this, _CSSViewEngineHooks.apply(this, arguments));\n }\n\n return ViewCSS;\n }(CSSViewEngineHooks)) || _class);\n\n return ViewCSS;\n }\n});\r\ndefine('aurelia-templating-resources/attr-binding-behavior',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AttrBindingBehavior = undefined;\n\n \n\n var AttrBindingBehavior = exports.AttrBindingBehavior = function () {\n function AttrBindingBehavior() {\n \n }\n\n AttrBindingBehavior.prototype.bind = function bind(binding, source) {\n binding.targetObserver = new _aureliaBinding.DataAttributeObserver(binding.target, binding.targetProperty);\n };\n\n AttrBindingBehavior.prototype.unbind = function unbind(binding, source) {};\n\n return AttrBindingBehavior;\n }();\n});\r\ndefine('aurelia-templating-resources/binding-mode-behaviors',['exports', 'aurelia-binding', 'aurelia-metadata'], function (exports, _aureliaBinding, _aureliaMetadata) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TwoWayBindingBehavior = exports.OneWayBindingBehavior = exports.OneTimeBindingBehavior = undefined;\n\n \n\n var _dec, _class, _dec2, _class2, _dec3, _class3;\n\n var modeBindingBehavior = {\n bind: function bind(binding, source, lookupFunctions) {\n binding.originalMode = binding.mode;\n binding.mode = this.mode;\n },\n unbind: function unbind(binding, source) {\n binding.mode = binding.originalMode;\n binding.originalMode = null;\n }\n };\n\n var OneTimeBindingBehavior = exports.OneTimeBindingBehavior = (_dec = (0, _aureliaMetadata.mixin)(modeBindingBehavior), _dec(_class = function OneTimeBindingBehavior() {\n \n\n this.mode = _aureliaBinding.bindingMode.oneTime;\n }) || _class);\n var OneWayBindingBehavior = exports.OneWayBindingBehavior = (_dec2 = (0, _aureliaMetadata.mixin)(modeBindingBehavior), _dec2(_class2 = function OneWayBindingBehavior() {\n \n\n this.mode = _aureliaBinding.bindingMode.oneWay;\n }) || _class2);\n var TwoWayBindingBehavior = exports.TwoWayBindingBehavior = (_dec3 = (0, _aureliaMetadata.mixin)(modeBindingBehavior), _dec3(_class3 = function TwoWayBindingBehavior() {\n \n\n this.mode = _aureliaBinding.bindingMode.twoWay;\n }) || _class3);\n});\r\ndefine('aurelia-templating-resources/throttle-binding-behavior',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ThrottleBindingBehavior = undefined;\n\n \n\n function throttle(newValue) {\n var _this = this;\n\n var state = this.throttleState;\n var elapsed = +new Date() - state.last;\n if (elapsed >= state.delay) {\n clearTimeout(state.timeoutId);\n state.timeoutId = null;\n state.last = +new Date();\n this.throttledMethod(newValue);\n return;\n }\n state.newValue = newValue;\n if (state.timeoutId === null) {\n state.timeoutId = setTimeout(function () {\n state.timeoutId = null;\n state.last = +new Date();\n _this.throttledMethod(state.newValue);\n }, state.delay - elapsed);\n }\n }\n\n var ThrottleBindingBehavior = exports.ThrottleBindingBehavior = function () {\n function ThrottleBindingBehavior() {\n \n }\n\n ThrottleBindingBehavior.prototype.bind = function bind(binding, source) {\n var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n\n var methodToThrottle = 'updateTarget';\n if (binding.callSource) {\n methodToThrottle = 'callSource';\n } else if (binding.updateSource && binding.mode === _aureliaBinding.bindingMode.twoWay) {\n methodToThrottle = 'updateSource';\n }\n\n binding.throttledMethod = binding[methodToThrottle];\n binding.throttledMethod.originalName = methodToThrottle;\n\n binding[methodToThrottle] = throttle;\n\n binding.throttleState = {\n delay: delay,\n last: 0,\n timeoutId: null\n };\n };\n\n ThrottleBindingBehavior.prototype.unbind = function unbind(binding, source) {\n var methodToRestore = binding.throttledMethod.originalName;\n binding[methodToRestore] = binding.throttledMethod;\n binding.throttledMethod = null;\n clearTimeout(binding.throttleState.timeoutId);\n binding.throttleState = null;\n };\n\n return ThrottleBindingBehavior;\n }();\n});\r\ndefine('aurelia-templating-resources/debounce-binding-behavior',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DebounceBindingBehavior = undefined;\n\n \n\n function debounce(newValue) {\n var _this = this;\n\n var state = this.debounceState;\n if (state.immediate) {\n state.immediate = false;\n this.debouncedMethod(newValue);\n return;\n }\n clearTimeout(state.timeoutId);\n state.timeoutId = setTimeout(function () {\n return _this.debouncedMethod(newValue);\n }, state.delay);\n }\n\n var DebounceBindingBehavior = exports.DebounceBindingBehavior = function () {\n function DebounceBindingBehavior() {\n \n }\n\n DebounceBindingBehavior.prototype.bind = function bind(binding, source) {\n var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n\n var methodToDebounce = 'updateTarget';\n if (binding.callSource) {\n methodToDebounce = 'callSource';\n } else if (binding.updateSource && binding.mode === _aureliaBinding.bindingMode.twoWay) {\n methodToDebounce = 'updateSource';\n }\n\n binding.debouncedMethod = binding[methodToDebounce];\n binding.debouncedMethod.originalName = methodToDebounce;\n\n binding[methodToDebounce] = debounce;\n\n binding.debounceState = {\n delay: delay,\n timeoutId: null,\n immediate: methodToDebounce === 'updateTarget' };\n };\n\n DebounceBindingBehavior.prototype.unbind = function unbind(binding, source) {\n var methodToRestore = binding.debouncedMethod.originalName;\n binding[methodToRestore] = binding.debouncedMethod;\n binding.debouncedMethod = null;\n clearTimeout(binding.debounceState.timeoutId);\n binding.debounceState = null;\n };\n\n return DebounceBindingBehavior;\n }();\n});\r\ndefine('aurelia-templating-resources/self-binding-behavior',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n \n\n function findOriginalEventTarget(event) {\n return event.path && event.path[0] || event.deepPath && event.deepPath[0] || event.target;\n }\n\n function handleSelfEvent(event) {\n var target = findOriginalEventTarget(event);\n if (this.target !== target) return;\n this.selfEventCallSource(event);\n }\n\n var SelfBindingBehavior = exports.SelfBindingBehavior = function () {\n function SelfBindingBehavior() {\n \n }\n\n SelfBindingBehavior.prototype.bind = function bind(binding, source) {\n if (!binding.callSource || !binding.targetEvent) throw new Error('Self binding behavior only supports event.');\n binding.selfEventCallSource = binding.callSource;\n binding.callSource = handleSelfEvent;\n };\n\n SelfBindingBehavior.prototype.unbind = function unbind(binding, source) {\n binding.callSource = binding.selfEventCallSource;\n binding.selfEventCallSource = null;\n };\n\n return SelfBindingBehavior;\n }();\n});\r\ndefine('aurelia-templating-resources/signal-binding-behavior',['exports', './binding-signaler'], function (exports, _bindingSignaler) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SignalBindingBehavior = undefined;\n\n \n\n var SignalBindingBehavior = exports.SignalBindingBehavior = function () {\n SignalBindingBehavior.inject = function inject() {\n return [_bindingSignaler.BindingSignaler];\n };\n\n function SignalBindingBehavior(bindingSignaler) {\n \n\n this.signals = bindingSignaler.signals;\n }\n\n SignalBindingBehavior.prototype.bind = function bind(binding, source) {\n if (!binding.updateTarget) {\n throw new Error('Only property bindings and string interpolation bindings can be signaled. Trigger, delegate and call bindings cannot be signaled.');\n }\n if (arguments.length === 3) {\n var name = arguments[2];\n var bindings = this.signals[name] || (this.signals[name] = []);\n bindings.push(binding);\n binding.signalName = name;\n } else if (arguments.length > 3) {\n var names = Array.prototype.slice.call(arguments, 2);\n var i = names.length;\n while (i--) {\n var _name = names[i];\n var _bindings = this.signals[_name] || (this.signals[_name] = []);\n _bindings.push(binding);\n }\n binding.signalName = names;\n } else {\n throw new Error('Signal name is required.');\n }\n };\n\n SignalBindingBehavior.prototype.unbind = function unbind(binding, source) {\n var name = binding.signalName;\n binding.signalName = null;\n if (Array.isArray(name)) {\n var names = name;\n var i = names.length;\n while (i--) {\n var n = names[i];\n var bindings = this.signals[n];\n bindings.splice(bindings.indexOf(binding), 1);\n }\n } else {\n var _bindings2 = this.signals[name];\n _bindings2.splice(_bindings2.indexOf(binding), 1);\n }\n };\n\n return SignalBindingBehavior;\n }();\n});\r\ndefine('aurelia-templating-resources/binding-signaler',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BindingSignaler = undefined;\n\n \n\n var BindingSignaler = exports.BindingSignaler = function () {\n function BindingSignaler() {\n \n\n this.signals = {};\n }\n\n BindingSignaler.prototype.signal = function signal(name) {\n var bindings = this.signals[name];\n if (!bindings) {\n return;\n }\n var i = bindings.length;\n while (i--) {\n bindings[i].call(_aureliaBinding.sourceContext);\n }\n };\n\n return BindingSignaler;\n }();\n});\r\ndefine('aurelia-templating-resources/update-trigger-binding-behavior',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.UpdateTriggerBindingBehavior = undefined;\n\n \n\n var _class, _temp;\n\n var eventNamesRequired = 'The updateTrigger binding behavior requires at least one event name argument: eg <input value.bind=\"firstName & updateTrigger:\\'blur\\'\">';\n var notApplicableMessage = 'The updateTrigger binding behavior can only be applied to two-way bindings on input/select elements.';\n\n var UpdateTriggerBindingBehavior = exports.UpdateTriggerBindingBehavior = (_temp = _class = function () {\n function UpdateTriggerBindingBehavior(eventManager) {\n \n\n this.eventManager = eventManager;\n }\n\n UpdateTriggerBindingBehavior.prototype.bind = function bind(binding, source) {\n for (var _len = arguments.length, events = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n events[_key - 2] = arguments[_key];\n }\n\n if (events.length === 0) {\n throw new Error(eventNamesRequired);\n }\n if (binding.mode !== _aureliaBinding.bindingMode.twoWay) {\n throw new Error(notApplicableMessage);\n }\n\n var targetObserver = binding.observerLocator.getObserver(binding.target, binding.targetProperty);\n if (!targetObserver.handler) {\n throw new Error(notApplicableMessage);\n }\n binding.targetObserver = targetObserver;\n\n targetObserver.originalHandler = binding.targetObserver.handler;\n\n var handler = this.eventManager.createElementHandler(events);\n targetObserver.handler = handler;\n };\n\n UpdateTriggerBindingBehavior.prototype.unbind = function unbind(binding, source) {\n binding.targetObserver.handler = binding.targetObserver.originalHandler;\n binding.targetObserver.originalHandler = null;\n };\n\n return UpdateTriggerBindingBehavior;\n }(), _class.inject = [_aureliaBinding.EventManager], _temp);\n});\r\ndefine('aurelia-templating-resources/html-resource-plugin',['exports', 'aurelia-templating', './dynamic-element'], function (exports, _aureliaTemplating, _dynamicElement) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getElementName = getElementName;\n exports.configure = configure;\n function getElementName(address) {\n return (/([^\\/^\\?]+)\\.html/i.exec(address)[1].toLowerCase()\n );\n }\n\n function configure(config) {\n var viewEngine = config.container.get(_aureliaTemplating.ViewEngine);\n var loader = config.aurelia.loader;\n\n viewEngine.addResourcePlugin('.html', {\n 'fetch': function fetch(address) {\n return loader.loadTemplate(address).then(function (registryEntry) {\n var _ref;\n\n var bindable = registryEntry.template.getAttribute('bindable');\n var elementName = getElementName(address);\n\n if (bindable) {\n bindable = bindable.split(',').map(function (x) {\n return x.trim();\n });\n registryEntry.template.removeAttribute('bindable');\n } else {\n bindable = [];\n }\n\n return _ref = {}, _ref[elementName] = (0, _dynamicElement._createDynamicElement)(elementName, address, bindable), _ref;\n });\n }\n });\n }\n});\r\ndefine('aurelia-templating-resources/dynamic-element',['exports', 'aurelia-templating'], function (exports, _aureliaTemplating) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports._createDynamicElement = _createDynamicElement;\n\n \n\n function _createDynamicElement(name, viewUrl, bindableNames) {\n var _dec, _dec2, _class;\n\n var DynamicElement = (_dec = (0, _aureliaTemplating.customElement)(name), _dec2 = (0, _aureliaTemplating.useView)(viewUrl), _dec(_class = _dec2(_class = function () {\n function DynamicElement() {\n \n }\n\n DynamicElement.prototype.bind = function bind(bindingContext) {\n this.$parent = bindingContext;\n };\n\n return DynamicElement;\n }()) || _class) || _class);\n\n for (var i = 0, ii = bindableNames.length; i < ii; ++i) {\n (0, _aureliaTemplating.bindable)(bindableNames[i])(DynamicElement);\n }\n return DynamicElement;\n }\n});\r\ndefine('aurelia-templating-binding',['exports', 'aurelia-logging', 'aurelia-binding', 'aurelia-templating'], function (exports, _aureliaLogging, _aureliaBinding, _aureliaTemplating) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TemplatingBindingLanguage = exports.SyntaxInterpreter = exports.ChildInterpolationBinding = exports.InterpolationBinding = exports.InterpolationBindingExpression = exports.AttributeMap = undefined;\n exports.configure = configure;\n\n var LogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n \n\n var _class, _temp, _dec, _class2, _class3, _temp2, _class4, _temp3;\n\n var AttributeMap = exports.AttributeMap = (_temp = _class = function () {\n function AttributeMap(svg) {\n \n\n this.elements = Object.create(null);\n this.allElements = Object.create(null);\n\n this.svg = svg;\n\n this.registerUniversal('accesskey', 'accessKey');\n this.registerUniversal('contenteditable', 'contentEditable');\n this.registerUniversal('tabindex', 'tabIndex');\n this.registerUniversal('textcontent', 'textContent');\n this.registerUniversal('innerhtml', 'innerHTML');\n this.registerUniversal('scrolltop', 'scrollTop');\n this.registerUniversal('scrollleft', 'scrollLeft');\n this.registerUniversal('readonly', 'readOnly');\n\n this.register('label', 'for', 'htmlFor');\n\n this.register('img', 'usemap', 'useMap');\n\n this.register('input', 'maxlength', 'maxLength');\n this.register('input', 'minlength', 'minLength');\n this.register('input', 'formaction', 'formAction');\n this.register('input', 'formenctype', 'formEncType');\n this.register('input', 'formmethod', 'formMethod');\n this.register('input', 'formnovalidate', 'formNoValidate');\n this.register('input', 'formtarget', 'formTarget');\n\n this.register('textarea', 'maxlength', 'maxLength');\n\n this.register('td', 'rowspan', 'rowSpan');\n this.register('td', 'colspan', 'colSpan');\n this.register('th', 'rowspan', 'rowSpan');\n this.register('th', 'colspan', 'colSpan');\n }\n\n AttributeMap.prototype.register = function register(elementName, attributeName, propertyName) {\n elementName = elementName.toLowerCase();\n attributeName = attributeName.toLowerCase();\n var element = this.elements[elementName] = this.elements[elementName] || Object.create(null);\n element[attributeName] = propertyName;\n };\n\n AttributeMap.prototype.registerUniversal = function registerUniversal(attributeName, propertyName) {\n attributeName = attributeName.toLowerCase();\n this.allElements[attributeName] = propertyName;\n };\n\n AttributeMap.prototype.map = function map(elementName, attributeName) {\n if (this.svg.isStandardSvgAttribute(elementName, attributeName)) {\n return attributeName;\n }\n elementName = elementName.toLowerCase();\n attributeName = attributeName.toLowerCase();\n var element = this.elements[elementName];\n if (element !== undefined && attributeName in element) {\n return element[attributeName];\n }\n if (attributeName in this.allElements) {\n return this.allElements[attributeName];\n }\n\n if (/(?:^data-)|(?:^aria-)|:/.test(attributeName)) {\n return attributeName;\n }\n return (0, _aureliaBinding.camelCase)(attributeName);\n };\n\n return AttributeMap;\n }(), _class.inject = [_aureliaBinding.SVGAnalyzer], _temp);\n\n var InterpolationBindingExpression = exports.InterpolationBindingExpression = function () {\n function InterpolationBindingExpression(observerLocator, targetProperty, parts, mode, lookupFunctions, attribute) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.parts = parts;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n this.attribute = this.attrToRemove = attribute;\n this.discrete = false;\n }\n\n InterpolationBindingExpression.prototype.createBinding = function createBinding(target) {\n if (this.parts.length === 3) {\n return new ChildInterpolationBinding(target, this.observerLocator, this.parts[1], this.mode, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\n }\n return new InterpolationBinding(this.observerLocator, this.parts, target, this.targetProperty, this.mode, this.lookupFunctions);\n };\n\n return InterpolationBindingExpression;\n }();\n\n function validateTarget(target, propertyName) {\n if (propertyName === 'style') {\n LogManager.getLogger('templating-binding').info('Internet Explorer does not support interpolation in \"style\" attributes. Use the style attribute\\'s alias, \"css\" instead.');\n } else if (target.parentElement && target.parentElement.nodeName === 'TEXTAREA' && propertyName === 'textContent') {\n throw new Error('Interpolation binding cannot be used in the content of a textarea element. Use <textarea value.bind=\"expression\"></textarea> instead.');\n }\n }\n\n var InterpolationBinding = exports.InterpolationBinding = function () {\n function InterpolationBinding(observerLocator, parts, target, targetProperty, mode, lookupFunctions) {\n \n\n validateTarget(target, targetProperty);\n this.observerLocator = observerLocator;\n this.parts = parts;\n this.target = target;\n this.targetProperty = targetProperty;\n this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n }\n\n InterpolationBinding.prototype.interpolate = function interpolate() {\n if (this.isBound) {\n var value = '';\n var parts = this.parts;\n for (var i = 0, ii = parts.length; i < ii; i++) {\n value += i % 2 === 0 ? parts[i] : this['childBinding' + i].value;\n }\n this.targetAccessor.setValue(value, this.target, this.targetProperty);\n }\n };\n\n InterpolationBinding.prototype.updateOneTimeBindings = function updateOneTimeBindings() {\n for (var i = 1, ii = this.parts.length; i < ii; i += 2) {\n var child = this['childBinding' + i];\n if (child.mode === _aureliaBinding.bindingMode.oneTime) {\n child.call();\n }\n }\n };\n\n InterpolationBinding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.source = source;\n\n var parts = this.parts;\n for (var i = 1, ii = parts.length; i < ii; i += 2) {\n var binding = new ChildInterpolationBinding(this, this.observerLocator, parts[i], this.mode, this.lookupFunctions);\n binding.bind(source);\n this['childBinding' + i] = binding;\n }\n\n this.isBound = true;\n this.interpolate();\n };\n\n InterpolationBinding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n this.source = null;\n var parts = this.parts;\n for (var i = 1, ii = parts.length; i < ii; i += 2) {\n var name = 'childBinding' + i;\n this[name].unbind();\n }\n };\n\n return InterpolationBinding;\n }();\n\n var ChildInterpolationBinding = exports.ChildInterpolationBinding = (_dec = (0, _aureliaBinding.connectable)(), _dec(_class2 = function () {\n function ChildInterpolationBinding(target, observerLocator, sourceExpression, mode, lookupFunctions, targetProperty, left, right) {\n \n\n if (target instanceof InterpolationBinding) {\n this.parent = target;\n } else {\n validateTarget(target, targetProperty);\n this.target = target;\n this.targetProperty = targetProperty;\n this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\n }\n this.observerLocator = observerLocator;\n this.sourceExpression = sourceExpression;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n this.left = left;\n this.right = right;\n }\n\n ChildInterpolationBinding.prototype.updateTarget = function updateTarget(value) {\n value = value === null || value === undefined ? '' : value.toString();\n if (value !== this.value) {\n this.value = value;\n if (this.parent) {\n this.parent.interpolate();\n } else {\n this.targetAccessor.setValue(this.left + value + this.right, this.target, this.targetProperty);\n }\n }\n };\n\n ChildInterpolationBinding.prototype.call = function call() {\n if (!this.isBound) {\n return;\n }\n\n this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.updateTarget(this.rawValue);\n\n if (this.mode !== _aureliaBinding.bindingMode.oneTime) {\n this._version++;\n this.sourceExpression.connect(this, this.source);\n if (this.rawValue instanceof Array) {\n this.observeArray(this.rawValue);\n }\n this.unobserve(false);\n }\n };\n\n ChildInterpolationBinding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n var sourceExpression = this.sourceExpression;\n if (sourceExpression.bind) {\n sourceExpression.bind(this, source, this.lookupFunctions);\n }\n\n this.rawValue = sourceExpression.evaluate(source, this.lookupFunctions);\n this.updateTarget(this.rawValue);\n\n if (this.mode === _aureliaBinding.bindingMode.oneWay) {\n (0, _aureliaBinding.enqueueBindingConnect)(this);\n }\n };\n\n ChildInterpolationBinding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n var sourceExpression = this.sourceExpression;\n if (sourceExpression.unbind) {\n sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this.value = null;\n this.rawValue = null;\n this.unobserve(true);\n };\n\n ChildInterpolationBinding.prototype.connect = function connect(evaluate) {\n if (!this.isBound) {\n return;\n }\n if (evaluate) {\n this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.updateTarget(this.rawValue);\n }\n this.sourceExpression.connect(this, this.source);\n if (this.rawValue instanceof Array) {\n this.observeArray(this.rawValue);\n }\n };\n\n return ChildInterpolationBinding;\n }()) || _class2);\n var SyntaxInterpreter = exports.SyntaxInterpreter = (_temp2 = _class3 = function () {\n function SyntaxInterpreter(parser, observerLocator, eventManager, attributeMap) {\n \n\n this.parser = parser;\n this.observerLocator = observerLocator;\n this.eventManager = eventManager;\n this.attributeMap = attributeMap;\n }\n\n SyntaxInterpreter.prototype.interpret = function interpret(resources, element, info, existingInstruction, context) {\n if (info.command in this) {\n return this[info.command](resources, element, info, existingInstruction, context);\n }\n\n return this.handleUnknownCommand(resources, element, info, existingInstruction, context);\n };\n\n SyntaxInterpreter.prototype.handleUnknownCommand = function handleUnknownCommand(resources, element, info, existingInstruction, context) {\n LogManager.getLogger('templating-binding').warn('Unknown binding command.', info);\n return existingInstruction;\n };\n\n SyntaxInterpreter.prototype.determineDefaultBindingMode = function determineDefaultBindingMode(element, attrName, context) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName === 'input' && (attrName === 'value' || attrName === 'files') && element.type !== 'checkbox' && element.type !== 'radio' || tagName === 'input' && attrName === 'checked' && (element.type === 'checkbox' || element.type === 'radio') || (tagName === 'textarea' || tagName === 'select') && attrName === 'value' || (attrName === 'textcontent' || attrName === 'innerhtml') && element.contentEditable === 'true' || attrName === 'scrolltop' || attrName === 'scrollleft') {\n return _aureliaBinding.bindingMode.twoWay;\n }\n\n if (context && attrName in context.attributes && context.attributes[attrName] && context.attributes[attrName].defaultBindingMode >= _aureliaBinding.bindingMode.oneTime) {\n return context.attributes[attrName].defaultBindingMode;\n }\n\n return _aureliaBinding.bindingMode.oneWay;\n };\n\n SyntaxInterpreter.prototype.bind = function bind(resources, element, info, existingInstruction, context) {\n var instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new _aureliaBinding.BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), info.defaultBindingMode || this.determineDefaultBindingMode(element, info.attrName, context), resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype.trigger = function trigger(resources, element, info) {\n return new _aureliaBinding.ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), _aureliaBinding.delegationStrategy.none, true, resources.lookupFunctions);\n };\n\n SyntaxInterpreter.prototype.capture = function capture(resources, element, info) {\n return new _aureliaBinding.ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), _aureliaBinding.delegationStrategy.capturing, true, resources.lookupFunctions);\n };\n\n SyntaxInterpreter.prototype.delegate = function delegate(resources, element, info) {\n return new _aureliaBinding.ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), _aureliaBinding.delegationStrategy.bubbling, true, resources.lookupFunctions);\n };\n\n SyntaxInterpreter.prototype.call = function call(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new _aureliaBinding.CallExpression(this.observerLocator, info.attrName, this.parser.parse(info.attrValue), resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype.options = function options(resources, element, info, existingInstruction, context) {\n var instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n var attrValue = info.attrValue;\n var language = this.language;\n var name = null;\n var target = '';\n var current = void 0;\n var i = void 0;\n var ii = void 0;\n var inString = false;\n var inEscape = false;\n var foundName = false;\n\n for (i = 0, ii = attrValue.length; i < ii; ++i) {\n current = attrValue[i];\n\n if (current === ';' && !inString) {\n if (!foundName) {\n name = this._getPrimaryPropertyName(resources, context);\n }\n info = language.inspectAttribute(resources, '?', name, target.trim());\n language.createAttributeInstruction(resources, element, info, instruction, context);\n\n if (!instruction.attributes[info.attrName]) {\n instruction.attributes[info.attrName] = info.attrValue;\n }\n\n target = '';\n name = null;\n } else if (current === ':' && name === null) {\n foundName = true;\n name = target.trim();\n target = '';\n } else if (current === '\\\\') {\n target += current;\n inEscape = true;\n continue;\n } else {\n target += current;\n\n if (name !== null && inEscape === false && current === '\\'') {\n inString = !inString;\n }\n }\n\n inEscape = false;\n }\n\n if (!foundName) {\n name = this._getPrimaryPropertyName(resources, context);\n }\n\n if (name !== null) {\n info = language.inspectAttribute(resources, '?', name, target.trim());\n language.createAttributeInstruction(resources, element, info, instruction, context);\n\n if (!instruction.attributes[info.attrName]) {\n instruction.attributes[info.attrName] = info.attrValue;\n }\n }\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype._getPrimaryPropertyName = function _getPrimaryPropertyName(resources, context) {\n var type = resources.getAttribute(context.attributeName);\n if (type && type.primaryProperty) {\n return type.primaryProperty.name;\n }\n return null;\n };\n\n SyntaxInterpreter.prototype['for'] = function _for(resources, element, info, existingInstruction) {\n var parts = void 0;\n var keyValue = void 0;\n var instruction = void 0;\n var attrValue = void 0;\n var isDestructuring = void 0;\n\n attrValue = info.attrValue;\n isDestructuring = attrValue.match(/^ *[[].+[\\]]/);\n parts = isDestructuring ? attrValue.split('of ') : attrValue.split(' of ');\n\n if (parts.length !== 2) {\n throw new Error('Incorrect syntax for \"for\". The form is: \"$local of $items\" or \"[$key, $value] of $items\".');\n }\n\n instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n\n if (isDestructuring) {\n keyValue = parts[0].replace(/[[\\]]/g, '').replace(/,/g, ' ').replace(/\\s+/g, ' ').trim().split(' ');\n instruction.attributes.key = keyValue[0];\n instruction.attributes.value = keyValue[1];\n } else {\n instruction.attributes.local = parts[0];\n }\n\n instruction.attributes.items = new _aureliaBinding.BindingExpression(this.observerLocator, 'items', this.parser.parse(parts[1]), _aureliaBinding.bindingMode.oneWay, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['two-way'] = function twoWay(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new _aureliaBinding.BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), _aureliaBinding.bindingMode.twoWay, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['one-way'] = function oneWay(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new _aureliaBinding.BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), _aureliaBinding.bindingMode.oneWay, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['one-time'] = function oneTime(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new _aureliaBinding.BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), _aureliaBinding.bindingMode.oneTime, resources.lookupFunctions);\n\n return instruction;\n };\n\n return SyntaxInterpreter;\n }(), _class3.inject = [_aureliaBinding.Parser, _aureliaBinding.ObserverLocator, _aureliaBinding.EventManager, AttributeMap], _temp2);\n\n var info = {};\n\n var TemplatingBindingLanguage = exports.TemplatingBindingLanguage = (_temp3 = _class4 = function (_BindingLanguage) {\n _inherits(TemplatingBindingLanguage, _BindingLanguage);\n\n function TemplatingBindingLanguage(parser, observerLocator, syntaxInterpreter, attributeMap) {\n \n\n var _this = _possibleConstructorReturn(this, _BindingLanguage.call(this));\n\n _this.parser = parser;\n _this.observerLocator = observerLocator;\n _this.syntaxInterpreter = syntaxInterpreter;\n _this.emptyStringExpression = _this.parser.parse('\\'\\'');\n syntaxInterpreter.language = _this;\n _this.attributeMap = attributeMap;\n return _this;\n }\n\n TemplatingBindingLanguage.prototype.inspectAttribute = function inspectAttribute(resources, elementName, attrName, attrValue) {\n var parts = attrName.split('.');\n\n info.defaultBindingMode = null;\n\n if (parts.length === 2) {\n info.attrName = parts[0].trim();\n info.attrValue = attrValue;\n info.command = parts[1].trim();\n\n if (info.command === 'ref') {\n info.expression = new _aureliaBinding.NameExpression(this.parser.parse(attrValue), info.attrName, resources.lookupFunctions);\n info.command = null;\n info.attrName = 'ref';\n } else {\n info.expression = null;\n }\n } else if (attrName === 'ref') {\n info.attrName = attrName;\n info.attrValue = attrValue;\n info.command = null;\n info.expression = new _aureliaBinding.NameExpression(this.parser.parse(attrValue), 'element', resources.lookupFunctions);\n } else {\n info.attrName = attrName;\n info.attrValue = attrValue;\n info.command = null;\n var interpolationParts = this.parseInterpolation(resources, attrValue);\n if (interpolationParts === null) {\n info.expression = null;\n } else {\n info.expression = new InterpolationBindingExpression(this.observerLocator, this.attributeMap.map(elementName, attrName), interpolationParts, _aureliaBinding.bindingMode.oneWay, resources.lookupFunctions, attrName);\n }\n }\n\n return info;\n };\n\n TemplatingBindingLanguage.prototype.createAttributeInstruction = function createAttributeInstruction(resources, element, theInfo, existingInstruction, context) {\n var instruction = void 0;\n\n if (theInfo.expression) {\n if (theInfo.attrName === 'ref') {\n return theInfo.expression;\n }\n\n instruction = existingInstruction || _aureliaTemplating.BehaviorInstruction.attribute(theInfo.attrName);\n instruction.attributes[theInfo.attrName] = theInfo.expression;\n } else if (theInfo.command) {\n instruction = this.syntaxInterpreter.interpret(resources, element, theInfo, existingInstruction, context);\n }\n\n return instruction;\n };\n\n TemplatingBindingLanguage.prototype.inspectTextContent = function inspectTextContent(resources, value) {\n var parts = this.parseInterpolation(resources, value);\n if (parts === null) {\n return null;\n }\n return new InterpolationBindingExpression(this.observerLocator, 'textContent', parts, _aureliaBinding.bindingMode.oneWay, resources.lookupFunctions, 'textContent');\n };\n\n TemplatingBindingLanguage.prototype.parseInterpolation = function parseInterpolation(resources, value) {\n var i = value.indexOf('${', 0);\n var ii = value.length;\n var char = void 0;\n var pos = 0;\n var open = 0;\n var quote = null;\n var interpolationStart = void 0;\n var parts = void 0;\n var partIndex = 0;\n\n while (i >= 0 && i < ii - 2) {\n open = 1;\n interpolationStart = i;\n i += 2;\n\n do {\n char = value[i];\n i++;\n\n if (char === \"'\" || char === '\"') {\n if (quote === null) {\n quote = char;\n } else if (quote === char) {\n quote = null;\n }\n continue;\n }\n\n if (char === '\\\\') {\n i++;\n continue;\n }\n\n if (quote !== null) {\n continue;\n }\n\n if (char === '{') {\n open++;\n } else if (char === '}') {\n open--;\n }\n } while (open > 0 && i < ii);\n\n if (open === 0) {\n parts = parts || [];\n if (value[interpolationStart - 1] === '\\\\' && value[interpolationStart - 2] !== '\\\\') {\n parts[partIndex] = value.substring(pos, interpolationStart - 1) + value.substring(interpolationStart, i);\n partIndex++;\n parts[partIndex] = this.emptyStringExpression;\n partIndex++;\n } else {\n parts[partIndex] = value.substring(pos, interpolationStart);\n partIndex++;\n parts[partIndex] = this.parser.parse(value.substring(interpolationStart + 2, i - 1));\n partIndex++;\n }\n pos = i;\n i = value.indexOf('${', i);\n } else {\n break;\n }\n }\n\n if (partIndex === 0) {\n return null;\n }\n\n parts[partIndex] = value.substr(pos);\n return parts;\n };\n\n return TemplatingBindingLanguage;\n }(_aureliaTemplating.BindingLanguage), _class4.inject = [_aureliaBinding.Parser, _aureliaBinding.ObserverLocator, SyntaxInterpreter, AttributeMap], _temp3);\n function configure(config) {\n config.container.registerSingleton(_aureliaTemplating.BindingLanguage, TemplatingBindingLanguage);\n config.container.registerAlias(_aureliaTemplating.BindingLanguage, TemplatingBindingLanguage);\n }\n});\r\ndefine('aurelia-testing/aurelia-testing',['exports', './compile-spy', './view-spy', './component-tester', './wait'], function (exports, _compileSpy, _viewSpy, _componentTester, _wait) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.waitForDocumentElements = exports.waitForDocumentElement = exports.waitFor = exports.configure = exports.ComponentTester = exports.StageComponent = exports.ViewSpy = exports.CompileSpy = undefined;\n\n\n function configure(config) {\n config.globalResources('./compile-spy', './view-spy');\n }\n\n exports.CompileSpy = _compileSpy.CompileSpy;\n exports.ViewSpy = _viewSpy.ViewSpy;\n exports.StageComponent = _componentTester.StageComponent;\n exports.ComponentTester = _componentTester.ComponentTester;\n exports.configure = configure;\n exports.waitFor = _wait.waitFor;\n exports.waitForDocumentElement = _wait.waitForDocumentElement;\n exports.waitForDocumentElements = _wait.waitForDocumentElements;\n});;define('aurelia-testing', ['aurelia-testing/aurelia-testing'], function (main) { return main; });\n\r\ndefine('aurelia-testing/compile-spy',['exports', 'aurelia-templating', 'aurelia-dependency-injection', 'aurelia-logging', 'aurelia-pal'], function (exports, _aureliaTemplating, _aureliaDependencyInjection, _aureliaLogging, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CompileSpy = undefined;\n\n var LogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n \n\n var _dec, _dec2, _class;\n\n var CompileSpy = exports.CompileSpy = (_dec = (0, _aureliaTemplating.customAttribute)('compile-spy'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element, _aureliaTemplating.TargetInstruction), _dec(_class = _dec2(_class = function CompileSpy(element, instruction) {\n \n\n LogManager.getLogger('compile-spy').info(element, instruction);\n }) || _class) || _class);\n});\r\ndefine('aurelia-testing/view-spy',['exports', 'aurelia-templating', 'aurelia-logging'], function (exports, _aureliaTemplating, _aureliaLogging) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ViewSpy = undefined;\n\n var LogManager = _interopRequireWildcard(_aureliaLogging);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n \n\n var _dec, _class;\n\n var ViewSpy = exports.ViewSpy = (_dec = (0, _aureliaTemplating.customAttribute)('view-spy'), _dec(_class = function () {\n function ViewSpy() {\n \n\n this.logger = LogManager.getLogger('view-spy');\n }\n\n ViewSpy.prototype._log = function _log(lifecycleName, context) {\n if (!this.value && lifecycleName === 'created') {\n this.logger.info(lifecycleName, this.view);\n } else if (this.value && this.value.indexOf(lifecycleName) !== -1) {\n this.logger.info(lifecycleName, this.view, context);\n }\n };\n\n ViewSpy.prototype.created = function created(view) {\n this.view = view;\n this._log('created');\n };\n\n ViewSpy.prototype.bind = function bind(bindingContext) {\n this._log('bind', bindingContext);\n };\n\n ViewSpy.prototype.attached = function attached() {\n this._log('attached');\n };\n\n ViewSpy.prototype.detached = function detached() {\n this._log('detached');\n };\n\n ViewSpy.prototype.unbind = function unbind() {\n this._log('unbind');\n };\n\n return ViewSpy;\n }()) || _class);\n});\r\ndefine('aurelia-testing/component-tester',['exports', 'aurelia-templating', 'aurelia-framework', './wait'], function (exports, _aureliaTemplating, _aureliaFramework, _wait) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ComponentTester = exports.StageComponent = undefined;\n\n \n\n var StageComponent = exports.StageComponent = function () {\n function StageComponent() {\n \n }\n\n StageComponent.withResources = function withResources(resources) {\n return new ComponentTester().withResources(resources);\n };\n\n return StageComponent;\n }();\n\n var ComponentTester = exports.ComponentTester = function () {\n function ComponentTester() {\n \n\n this.configure = function (aurelia) {\n return aurelia.use.standardConfiguration();\n };\n\n this._resources = [];\n }\n\n ComponentTester.prototype.bootstrap = function bootstrap(configure) {\n this.configure = configure;\n };\n\n ComponentTester.prototype.withResources = function withResources(resources) {\n this._resources = resources;\n return this;\n };\n\n ComponentTester.prototype.inView = function inView(html) {\n this._html = html;\n return this;\n };\n\n ComponentTester.prototype.boundTo = function boundTo(bindingContext) {\n this._bindingContext = bindingContext;\n return this;\n };\n\n ComponentTester.prototype.manuallyHandleLifecycle = function manuallyHandleLifecycle() {\n this._prepareLifecycle();\n return this;\n };\n\n ComponentTester.prototype.create = function create(bootstrap) {\n var _this = this;\n\n return bootstrap(function (aurelia) {\n return Promise.resolve(_this.configure(aurelia)).then(function () {\n if (_this._resources) {\n aurelia.use.globalResources(_this._resources);\n }\n\n return aurelia.start().then(function (a) {\n _this.host = document.createElement('div');\n _this.host.innerHTML = _this._html;\n\n document.body.appendChild(_this.host);\n\n return aurelia.enhance(_this._bindingContext, _this.host).then(function () {\n _this._rootView = aurelia.root;\n _this.element = _this.host.firstElementChild;\n\n if (aurelia.root.controllers.length) {\n _this.viewModel = aurelia.root.controllers[0].viewModel;\n }\n\n return new Promise(function (resolve) {\n return setTimeout(function () {\n return resolve();\n }, 0);\n });\n });\n });\n });\n });\n };\n\n ComponentTester.prototype.dispose = function dispose() {\n if (this.host === undefined || this._rootView === undefined) {\n throw new Error('Cannot call ComponentTester.dispose() before ComponentTester.create()');\n }\n\n this._rootView.detached();\n this._rootView.unbind();\n\n return this.host.parentNode.removeChild(this.host);\n };\n\n ComponentTester.prototype._prepareLifecycle = function _prepareLifecycle() {\n var _this2 = this;\n\n var bindPrototype = _aureliaTemplating.View.prototype.bind;\n _aureliaTemplating.View.prototype.bind = function () {};\n this.bind = function (bindingContext) {\n return new Promise(function (resolve) {\n _aureliaTemplating.View.prototype.bind = bindPrototype;\n if (bindingContext !== undefined) {\n _this2._bindingContext = bindingContext;\n }\n _this2._rootView.bind(_this2._bindingContext);\n setTimeout(function () {\n return resolve();\n }, 0);\n });\n };\n\n var attachedPrototype = _aureliaTemplating.View.prototype.attached;\n _aureliaTemplating.View.prototype.attached = function () {};\n this.attached = function () {\n return new Promise(function (resolve) {\n _aureliaTemplating.View.prototype.attached = attachedPrototype;\n _this2._rootView.attached();\n setTimeout(function () {\n return resolve();\n }, 0);\n });\n };\n\n this.detached = function () {\n return new Promise(function (resolve) {\n _this2._rootView.detached();\n setTimeout(function () {\n return resolve();\n }, 0);\n });\n };\n\n this.unbind = function () {\n return new Promise(function (resolve) {\n _this2._rootView.unbind();\n setTimeout(function () {\n return resolve();\n }, 0);\n });\n };\n };\n\n ComponentTester.prototype.waitForElement = function waitForElement(selector, options) {\n var _this3 = this;\n\n return (0, _wait.waitFor)(function () {\n return _this3.element.querySelector(selector);\n }, options);\n };\n\n ComponentTester.prototype.waitForElements = function waitForElements(selector, options) {\n var _this4 = this;\n\n return (0, _wait.waitFor)(function () {\n return _this4.element.querySelectorAll(selector);\n }, options);\n };\n\n return ComponentTester;\n }();\n});\r\ndefine('aurelia-testing/wait',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.waitFor = waitFor;\n exports.waitForDocumentElement = waitForDocumentElement;\n exports.waitForDocumentElements = waitForDocumentElements;\n function waitFor(getter, options) {\n var timedOut = false;\n\n options = Object.assign({\n present: true,\n interval: 50,\n timeout: 5000\n }, options);\n\n function wait() {\n var element = getter();\n\n var found = element !== null && (!(element instanceof NodeList) && !element.jquery || element.length > 0);\n\n if (!options.present ^ found || timedOut) {\n return Promise.resolve(element);\n }\n\n return new Promise(function (rs) {\n return setTimeout(rs, options.interval);\n }).then(wait);\n }\n\n return Promise.race([new Promise(function (rs, rj) {\n return setTimeout(function () {\n timedOut = true;\n rj(options.present ? 'Element not found' : 'Element not removed');\n }, options.timeout);\n }), wait()]);\n }\n\n function waitForDocumentElement(selector, options) {\n return waitFor(function () {\n return document.querySelector(selector);\n }, options);\n }\n\n function waitForDocumentElements(selector, options) {\n return waitFor(function () {\n return document.querySelectorAll(selector);\n }, options);\n }\n});\r\ndefine('aurelia-templating-resources/aurelia-templating-resources',['exports', 'aurelia-pal', './compose', './if', './with', './repeat', './show', './hide', './sanitize-html', './replaceable', './focus', 'aurelia-templating', './css-resource', './html-sanitizer', './attr-binding-behavior', './binding-mode-behaviors', './throttle-binding-behavior', './debounce-binding-behavior', './self-binding-behavior', './signal-binding-behavior', './binding-signaler', './update-trigger-binding-behavior', './abstract-repeater', './repeat-strategy-locator', './html-resource-plugin', './null-repeat-strategy', './array-repeat-strategy', './map-repeat-strategy', './set-repeat-strategy', './number-repeat-strategy', './repeat-utilities', './analyze-view-factory', './aurelia-hide-style'], function (exports, _aureliaPal, _compose, _if, _with, _repeat, _show, _hide, _sanitizeHtml, _replaceable, _focus, _aureliaTemplating, _cssResource, _htmlSanitizer, _attrBindingBehavior, _bindingModeBehaviors, _throttleBindingBehavior, _debounceBindingBehavior, _selfBindingBehavior, _signalBindingBehavior, _bindingSignaler, _updateTriggerBindingBehavior, _abstractRepeater, _repeatStrategyLocator, _htmlResourcePlugin, _nullRepeatStrategy, _arrayRepeatStrategy, _mapRepeatStrategy, _setRepeatStrategy, _numberRepeatStrategy, _repeatUtilities, _analyzeViewFactory, _aureliaHideStyle) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.viewsRequireLifecycle = exports.unwrapExpression = exports.updateOneTimeBinding = exports.isOneTime = exports.getItemsSourceExpression = exports.updateOverrideContext = exports.createFullOverrideContext = exports.NumberRepeatStrategy = exports.SetRepeatStrategy = exports.MapRepeatStrategy = exports.ArrayRepeatStrategy = exports.NullRepeatStrategy = exports.RepeatStrategyLocator = exports.AbstractRepeater = exports.UpdateTriggerBindingBehavior = exports.BindingSignaler = exports.SignalBindingBehavior = exports.SelfBindingBehavior = exports.DebounceBindingBehavior = exports.ThrottleBindingBehavior = exports.TwoWayBindingBehavior = exports.OneWayBindingBehavior = exports.OneTimeBindingBehavior = exports.AttrBindingBehavior = exports.configure = exports.Focus = exports.Replaceable = exports.SanitizeHTMLValueConverter = exports.HTMLSanitizer = exports.Hide = exports.Show = exports.Repeat = exports.With = exports.If = exports.Compose = undefined;\n\n\n function configure(config) {\n (0, _aureliaHideStyle.injectAureliaHideStyleAtHead)();\n\n config.globalResources(_aureliaPal.PLATFORM.moduleName('./compose'), _aureliaPal.PLATFORM.moduleName('./if'), _aureliaPal.PLATFORM.moduleName('./with'), _aureliaPal.PLATFORM.moduleName('./repeat'), _aureliaPal.PLATFORM.moduleName('./show'), _aureliaPal.PLATFORM.moduleName('./hide'), _aureliaPal.PLATFORM.moduleName('./replaceable'), _aureliaPal.PLATFORM.moduleName('./sanitize-html'), _aureliaPal.PLATFORM.moduleName('./focus'), _aureliaPal.PLATFORM.moduleName('./binding-mode-behaviors'), _aureliaPal.PLATFORM.moduleName('./self-binding-behavior'), _aureliaPal.PLATFORM.moduleName('./throttle-binding-behavior'), _aureliaPal.PLATFORM.moduleName('./debounce-binding-behavior'), _aureliaPal.PLATFORM.moduleName('./signal-binding-behavior'), _aureliaPal.PLATFORM.moduleName('./update-trigger-binding-behavior'), _aureliaPal.PLATFORM.moduleName('./attr-binding-behavior'));\n\n (0, _htmlResourcePlugin.configure)(config);\n\n var viewEngine = config.container.get(_aureliaTemplating.ViewEngine);\n var styleResourcePlugin = {\n fetch: function fetch(address) {\n var _ref;\n\n return _ref = {}, _ref[address] = (0, _cssResource._createCSSResource)(address), _ref;\n }\n };\n ['.css', '.less', '.sass', '.scss', '.styl'].forEach(function (ext) {\n return viewEngine.addResourcePlugin(ext, styleResourcePlugin);\n });\n }\n\n exports.Compose = _compose.Compose;\n exports.If = _if.If;\n exports.With = _with.With;\n exports.Repeat = _repeat.Repeat;\n exports.Show = _show.Show;\n exports.Hide = _hide.Hide;\n exports.HTMLSanitizer = _htmlSanitizer.HTMLSanitizer;\n exports.SanitizeHTMLValueConverter = _sanitizeHtml.SanitizeHTMLValueConverter;\n exports.Replaceable = _replaceable.Replaceable;\n exports.Focus = _focus.Focus;\n exports.configure = configure;\n exports.AttrBindingBehavior = _attrBindingBehavior.AttrBindingBehavior;\n exports.OneTimeBindingBehavior = _bindingModeBehaviors.OneTimeBindingBehavior;\n exports.OneWayBindingBehavior = _bindingModeBehaviors.OneWayBindingBehavior;\n exports.TwoWayBindingBehavior = _bindingModeBehaviors.TwoWayBindingBehavior;\n exports.ThrottleBindingBehavior = _throttleBindingBehavior.ThrottleBindingBehavior;\n exports.DebounceBindingBehavior = _debounceBindingBehavior.DebounceBindingBehavior;\n exports.SelfBindingBehavior = _selfBindingBehavior.SelfBindingBehavior;\n exports.SignalBindingBehavior = _signalBindingBehavior.SignalBindingBehavior;\n exports.BindingSignaler = _bindingSignaler.BindingSignaler;\n exports.UpdateTriggerBindingBehavior = _updateTriggerBindingBehavior.UpdateTriggerBindingBehavior;\n exports.AbstractRepeater = _abstractRepeater.AbstractRepeater;\n exports.RepeatStrategyLocator = _repeatStrategyLocator.RepeatStrategyLocator;\n exports.NullRepeatStrategy = _nullRepeatStrategy.NullRepeatStrategy;\n exports.ArrayRepeatStrategy = _arrayRepeatStrategy.ArrayRepeatStrategy;\n exports.MapRepeatStrategy = _mapRepeatStrategy.MapRepeatStrategy;\n exports.SetRepeatStrategy = _setRepeatStrategy.SetRepeatStrategy;\n exports.NumberRepeatStrategy = _numberRepeatStrategy.NumberRepeatStrategy;\n exports.createFullOverrideContext = _repeatUtilities.createFullOverrideContext;\n exports.updateOverrideContext = _repeatUtilities.updateOverrideContext;\n exports.getItemsSourceExpression = _repeatUtilities.getItemsSourceExpression;\n exports.isOneTime = _repeatUtilities.isOneTime;\n exports.updateOneTimeBinding = _repeatUtilities.updateOneTimeBinding;\n exports.unwrapExpression = _repeatUtilities.unwrapExpression;\n exports.viewsRequireLifecycle = _analyzeViewFactory.viewsRequireLifecycle;\n});;define('aurelia-templating-resources', ['aurelia-templating-resources/aurelia-templating-resources'], function (main) { return main; });\n\r\ndefine('lodash/noop',['require','exports','module'],function (require, exports, module) {/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n\n});\n;define('lodash', ['lodash/noop'], function (main) { return main; });\n\r\ndefine('lodash/get',['require','exports','module','./_baseGet'],function (require, exports, module) {var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n});\n\r\ndefine('lodash/_baseGet',['require','exports','module','./_castPath','./_toKey'],function (require, exports, module) {var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n});\n\r\ndefine('lodash/_castPath',['require','exports','module','./isArray','./_isKey','./_stringToPath','./toString'],function (require, exports, module) {var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n});\n\r\ndefine('lodash/isArray',['require','exports','module'],function (require, exports, module) {/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n});\n\r\ndefine('lodash/_isKey',['require','exports','module','./isArray','./isSymbol'],function (require, exports, module) {var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n});\n\r\ndefine('lodash/isSymbol',['require','exports','module','./_baseGetTag','./isObjectLike'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n});\n\r\ndefine('lodash/_baseGetTag',['require','exports','module','./_Symbol','./_getRawTag','./_objectToString'],function (require, exports, module) {var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n});\n\r\ndefine('lodash/_Symbol',['require','exports','module','./_root'],function (require, exports, module) {var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n});\n\r\ndefine('lodash/_root',['require','exports','module','./_freeGlobal'],function (require, exports, module) {var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n});\n\r\ndefine('lodash/_freeGlobal',['require','exports','module'],function (require, exports, module) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n});\n\r\ndefine('lodash/_getRawTag',['require','exports','module','./_Symbol'],function (require, exports, module) {var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n});\n\r\ndefine('lodash/_objectToString',['require','exports','module'],function (require, exports, module) {/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n});\n\r\ndefine('lodash/isObjectLike',['require','exports','module'],function (require, exports, module) {/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n});\n\r\ndefine('lodash/_stringToPath',['require','exports','module','./_memoizeCapped'],function (require, exports, module) {var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n});\n\r\ndefine('lodash/_memoizeCapped',['require','exports','module','./memoize'],function (require, exports, module) {var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n});\n\r\ndefine('lodash/memoize',['require','exports','module','./_MapCache'],function (require, exports, module) {var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n});\n\r\ndefine('lodash/_MapCache',['require','exports','module','./_mapCacheClear','./_mapCacheDelete','./_mapCacheGet','./_mapCacheHas','./_mapCacheSet'],function (require, exports, module) {var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n});\n\r\ndefine('lodash/_mapCacheClear',['require','exports','module','./_Hash','./_ListCache','./_Map'],function (require, exports, module) {var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n});\n\r\ndefine('lodash/_Hash',['require','exports','module','./_hashClear','./_hashDelete','./_hashGet','./_hashHas','./_hashSet'],function (require, exports, module) {var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n});\n\r\ndefine('lodash/_hashClear',['require','exports','module','./_nativeCreate'],function (require, exports, module) {var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n});\n\r\ndefine('lodash/_nativeCreate',['require','exports','module','./_getNative'],function (require, exports, module) {var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n});\n\r\ndefine('lodash/_getNative',['require','exports','module','./_baseIsNative','./_getValue'],function (require, exports, module) {var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n});\n\r\ndefine('lodash/_baseIsNative',['require','exports','module','./isFunction','./_isMasked','./isObject','./_toSource'],function (require, exports, module) {var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n});\n\r\ndefine('lodash/isFunction',['require','exports','module','./_baseGetTag','./isObject'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n});\n\r\ndefine('lodash/isObject',['require','exports','module'],function (require, exports, module) {/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n});\n\r\ndefine('lodash/_isMasked',['require','exports','module','./_coreJsData'],function (require, exports, module) {var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n});\n\r\ndefine('lodash/_coreJsData',['require','exports','module','./_root'],function (require, exports, module) {var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n});\n\r\ndefine('lodash/_toSource',['require','exports','module'],function (require, exports, module) {/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n});\n\r\ndefine('lodash/_getValue',['require','exports','module'],function (require, exports, module) {/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n});\n\r\ndefine('lodash/_hashDelete',['require','exports','module'],function (require, exports, module) {/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n});\n\r\ndefine('lodash/_hashGet',['require','exports','module','./_nativeCreate'],function (require, exports, module) {var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n});\n\r\ndefine('lodash/_hashHas',['require','exports','module','./_nativeCreate'],function (require, exports, module) {var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n});\n\r\ndefine('lodash/_hashSet',['require','exports','module','./_nativeCreate'],function (require, exports, module) {var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n});\n\r\ndefine('lodash/_ListCache',['require','exports','module','./_listCacheClear','./_listCacheDelete','./_listCacheGet','./_listCacheHas','./_listCacheSet'],function (require, exports, module) {var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n});\n\r\ndefine('lodash/_listCacheClear',['require','exports','module'],function (require, exports, module) {/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n});\n\r\ndefine('lodash/_listCacheDelete',['require','exports','module','./_assocIndexOf'],function (require, exports, module) {var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n});\n\r\ndefine('lodash/_assocIndexOf',['require','exports','module','./eq'],function (require, exports, module) {var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n});\n\r\ndefine('lodash/eq',['require','exports','module'],function (require, exports, module) {/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n});\n\r\ndefine('lodash/_listCacheGet',['require','exports','module','./_assocIndexOf'],function (require, exports, module) {var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n});\n\r\ndefine('lodash/_listCacheHas',['require','exports','module','./_assocIndexOf'],function (require, exports, module) {var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n});\n\r\ndefine('lodash/_listCacheSet',['require','exports','module','./_assocIndexOf'],function (require, exports, module) {var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n});\n\r\ndefine('lodash/_Map',['require','exports','module','./_getNative','./_root'],function (require, exports, module) {var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n});\n\r\ndefine('lodash/_mapCacheDelete',['require','exports','module','./_getMapData'],function (require, exports, module) {var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n});\n\r\ndefine('lodash/_getMapData',['require','exports','module','./_isKeyable'],function (require, exports, module) {var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n});\n\r\ndefine('lodash/_isKeyable',['require','exports','module'],function (require, exports, module) {/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n});\n\r\ndefine('lodash/_mapCacheGet',['require','exports','module','./_getMapData'],function (require, exports, module) {var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n});\n\r\ndefine('lodash/_mapCacheHas',['require','exports','module','./_getMapData'],function (require, exports, module) {var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n});\n\r\ndefine('lodash/_mapCacheSet',['require','exports','module','./_getMapData'],function (require, exports, module) {var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n});\n\r\ndefine('lodash/toString',['require','exports','module','./_baseToString'],function (require, exports, module) {var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n});\n\r\ndefine('lodash/_baseToString',['require','exports','module','./_Symbol','./_arrayMap','./isArray','./isSymbol'],function (require, exports, module) {var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n});\n\r\ndefine('lodash/_arrayMap',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n});\n\r\ndefine('lodash/_toKey',['require','exports','module','./isSymbol'],function (require, exports, module) {var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n});\n\r\ndefine('lodash/cloneDeep',['require','exports','module','./_baseClone'],function (require, exports, module) {var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n\n});\n\r\ndefine('lodash/_baseClone',['require','exports','module','./_Stack','./_arrayEach','./_assignValue','./_baseAssign','./_baseAssignIn','./_cloneBuffer','./_copyArray','./_copySymbols','./_copySymbolsIn','./_getAllKeys','./_getAllKeysIn','./_getTag','./_initCloneArray','./_initCloneByTag','./_initCloneObject','./isArray','./isBuffer','./isObject','./keys'],function (require, exports, module) {var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isObject = require('./isObject'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n\n});\n\r\ndefine('lodash/_Stack',['require','exports','module','./_ListCache','./_stackClear','./_stackDelete','./_stackGet','./_stackHas','./_stackSet'],function (require, exports, module) {var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n});\n\r\ndefine('lodash/_stackClear',['require','exports','module','./_ListCache'],function (require, exports, module) {var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n});\n\r\ndefine('lodash/_stackDelete',['require','exports','module'],function (require, exports, module) {/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n\n});\n\r\ndefine('lodash/_stackGet',['require','exports','module'],function (require, exports, module) {/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n});\n\r\ndefine('lodash/_stackHas',['require','exports','module'],function (require, exports, module) {/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n});\n\r\ndefine('lodash/_stackSet',['require','exports','module','./_ListCache','./_Map','./_MapCache'],function (require, exports, module) {var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n\n});\n\r\ndefine('lodash/_arrayEach',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n});\n\r\ndefine('lodash/_assignValue',['require','exports','module','./_baseAssignValue','./eq'],function (require, exports, module) {var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n});\n\r\ndefine('lodash/_baseAssignValue',['require','exports','module','./_defineProperty'],function (require, exports, module) {var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n});\n\r\ndefine('lodash/_defineProperty',['require','exports','module','./_getNative'],function (require, exports, module) {var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n});\n\r\ndefine('lodash/_baseAssign',['require','exports','module','./_copyObject','./keys'],function (require, exports, module) {var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n});\n\r\ndefine('lodash/_copyObject',['require','exports','module','./_assignValue','./_baseAssignValue'],function (require, exports, module) {var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n});\n\r\ndefine('lodash/keys',['require','exports','module','./_arrayLikeKeys','./_baseKeys','./isArrayLike'],function (require, exports, module) {var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n});\n\r\ndefine('lodash/_arrayLikeKeys',['require','exports','module','./_baseTimes','./isArguments','./isArray','./isBuffer','./_isIndex','./isTypedArray'],function (require, exports, module) {var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n});\n\r\ndefine('lodash/_baseTimes',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n});\n\r\ndefine('lodash/isArguments',['require','exports','module','./_baseIsArguments','./isObjectLike'],function (require, exports, module) {var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n});\n\r\ndefine('lodash/_baseIsArguments',['require','exports','module','./_baseGetTag','./isObjectLike'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n});\n\r\ndefine('lodash/isBuffer',['require','exports','module','./_root','./stubFalse'],function (require, exports, module) {var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n});\n\r\ndefine('lodash/stubFalse',['require','exports','module'],function (require, exports, module) {/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n});\n\r\ndefine('lodash/_isIndex',['require','exports','module'],function (require, exports, module) {/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n});\n\r\ndefine('lodash/isTypedArray',['require','exports','module','./_baseIsTypedArray','./_baseUnary','./_nodeUtil'],function (require, exports, module) {var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n});\n\r\ndefine('lodash/_baseIsTypedArray',['require','exports','module','./_baseGetTag','./isLength','./isObjectLike'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n});\n\r\ndefine('lodash/isLength',['require','exports','module'],function (require, exports, module) {/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n});\n\r\ndefine('lodash/_baseUnary',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n});\n\r\ndefine('lodash/_nodeUtil',['require','exports','module','./_freeGlobal'],function (require, exports, module) {var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n});\n\r\ndefine('lodash/_baseKeys',['require','exports','module','./_isPrototype','./_nativeKeys'],function (require, exports, module) {var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n});\n\r\ndefine('lodash/_isPrototype',['require','exports','module'],function (require, exports, module) {/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n});\n\r\ndefine('lodash/_nativeKeys',['require','exports','module','./_overArg'],function (require, exports, module) {var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n});\n\r\ndefine('lodash/_overArg',['require','exports','module'],function (require, exports, module) {/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n});\n\r\ndefine('lodash/isArrayLike',['require','exports','module','./isFunction','./isLength'],function (require, exports, module) {var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n});\n\r\ndefine('lodash/_baseAssignIn',['require','exports','module','./_copyObject','./keysIn'],function (require, exports, module) {var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n\n});\n\r\ndefine('lodash/keysIn',['require','exports','module','./_arrayLikeKeys','./_baseKeysIn','./isArrayLike'],function (require, exports, module) {var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n\n});\n\r\ndefine('lodash/_baseKeysIn',['require','exports','module','./isObject','./_isPrototype','./_nativeKeysIn'],function (require, exports, module) {var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n\n});\n\r\ndefine('lodash/_nativeKeysIn',['require','exports','module'],function (require, exports, module) {/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n\n});\n\r\ndefine('lodash/_cloneBuffer',['require','exports','module','./_root'],function (require, exports, module) {var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n});\n\r\ndefine('lodash/_copyArray',['require','exports','module'],function (require, exports, module) {/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n});\n\r\ndefine('lodash/_copySymbols',['require','exports','module','./_copyObject','./_getSymbols'],function (require, exports, module) {var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n});\n\r\ndefine('lodash/_getSymbols',['require','exports','module','./_arrayFilter','./stubArray'],function (require, exports, module) {var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n\n});\n\r\ndefine('lodash/_arrayFilter',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n});\n\r\ndefine('lodash/stubArray',['require','exports','module'],function (require, exports, module) {/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n});\n\r\ndefine('lodash/_copySymbolsIn',['require','exports','module','./_copyObject','./_getSymbolsIn'],function (require, exports, module) {var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n\n});\n\r\ndefine('lodash/_getSymbolsIn',['require','exports','module','./_arrayPush','./_getPrototype','./_getSymbols','./stubArray'],function (require, exports, module) {var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n\n});\n\r\ndefine('lodash/_arrayPush',['require','exports','module'],function (require, exports, module) {/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n});\n\r\ndefine('lodash/_getPrototype',['require','exports','module','./_overArg'],function (require, exports, module) {var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n});\n\r\ndefine('lodash/_getAllKeys',['require','exports','module','./_baseGetAllKeys','./_getSymbols','./keys'],function (require, exports, module) {var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n});\n\r\ndefine('lodash/_baseGetAllKeys',['require','exports','module','./_arrayPush','./isArray'],function (require, exports, module) {var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n});\n\r\ndefine('lodash/_getAllKeysIn',['require','exports','module','./_baseGetAllKeys','./_getSymbolsIn','./keysIn'],function (require, exports, module) {var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n\n});\n\r\ndefine('lodash/_getTag',['require','exports','module','./_DataView','./_Map','./_Promise','./_Set','./_WeakMap','./_baseGetTag','./_toSource'],function (require, exports, module) {var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n});\n\r\ndefine('lodash/_DataView',['require','exports','module','./_getNative','./_root'],function (require, exports, module) {var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n});\n\r\ndefine('lodash/_Promise',['require','exports','module','./_getNative','./_root'],function (require, exports, module) {var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n});\n\r\ndefine('lodash/_Set',['require','exports','module','./_getNative','./_root'],function (require, exports, module) {var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n});\n\r\ndefine('lodash/_WeakMap',['require','exports','module','./_getNative','./_root'],function (require, exports, module) {var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n});\n\r\ndefine('lodash/_initCloneArray',['require','exports','module'],function (require, exports, module) {/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n\n});\n\r\ndefine('lodash/_initCloneByTag',['require','exports','module','./_cloneArrayBuffer','./_cloneDataView','./_cloneMap','./_cloneRegExp','./_cloneSet','./_cloneSymbol','./_cloneTypedArray'],function (require, exports, module) {var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneMap = require('./_cloneMap'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSet = require('./_cloneSet'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n\n});\n\r\ndefine('lodash/_cloneArrayBuffer',['require','exports','module','./_Uint8Array'],function (require, exports, module) {var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n});\n\r\ndefine('lodash/_Uint8Array',['require','exports','module','./_root'],function (require, exports, module) {var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n});\n\r\ndefine('lodash/_cloneDataView',['require','exports','module','./_cloneArrayBuffer'],function (require, exports, module) {var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n\n});\n\r\ndefine('lodash/_cloneMap',['require','exports','module','./_addMapEntry','./_arrayReduce','./_mapToArray'],function (require, exports, module) {var addMapEntry = require('./_addMapEntry'),\n arrayReduce = require('./_arrayReduce'),\n mapToArray = require('./_mapToArray');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\nmodule.exports = cloneMap;\n\n});\n\r\ndefine('lodash/_addMapEntry',['require','exports','module'],function (require, exports, module) {/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\nmodule.exports = addMapEntry;\n\n});\n\r\ndefine('lodash/_arrayReduce',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n\n});\n\r\ndefine('lodash/_mapToArray',['require','exports','module'],function (require, exports, module) {/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n});\n\r\ndefine('lodash/_cloneRegExp',['require','exports','module'],function (require, exports, module) {/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n\n});\n\r\ndefine('lodash/_cloneSet',['require','exports','module','./_addSetEntry','./_arrayReduce','./_setToArray'],function (require, exports, module) {var addSetEntry = require('./_addSetEntry'),\n arrayReduce = require('./_arrayReduce'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\nmodule.exports = cloneSet;\n\n});\n\r\ndefine('lodash/_addSetEntry',['require','exports','module'],function (require, exports, module) {/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\nmodule.exports = addSetEntry;\n\n});\n\r\ndefine('lodash/_setToArray',['require','exports','module'],function (require, exports, module) {/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n});\n\r\ndefine('lodash/_cloneSymbol',['require','exports','module','./_Symbol'],function (require, exports, module) {var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n});\n\r\ndefine('lodash/_cloneTypedArray',['require','exports','module','./_cloneArrayBuffer'],function (require, exports, module) {var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n});\n\r\ndefine('lodash/_initCloneObject',['require','exports','module','./_baseCreate','./_getPrototype','./_isPrototype'],function (require, exports, module) {var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n});\n\r\ndefine('lodash/_baseCreate',['require','exports','module','./isObject'],function (require, exports, module) {var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n\n});\n\r\ndefine('lodash/uniq',['require','exports','module','./_baseUniq'],function (require, exports, module) {var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n\n});\n\r\ndefine('lodash/_baseUniq',['require','exports','module','./_SetCache','./_arrayIncludes','./_arrayIncludesWith','./_cacheHas','./_createSet','./_setToArray'],function (require, exports, module) {var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n\n});\n\r\ndefine('lodash/_SetCache',['require','exports','module','./_MapCache','./_setCacheAdd','./_setCacheHas'],function (require, exports, module) {var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n});\n\r\ndefine('lodash/_setCacheAdd',['require','exports','module'],function (require, exports, module) {/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n\n});\n\r\ndefine('lodash/_setCacheHas',['require','exports','module'],function (require, exports, module) {/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n});\n\r\ndefine('lodash/_arrayIncludes',['require','exports','module','./_baseIndexOf'],function (require, exports, module) {var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n\n});\n\r\ndefine('lodash/_baseIndexOf',['require','exports','module','./_baseFindIndex','./_baseIsNaN','./_strictIndexOf'],function (require, exports, module) {var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n\n});\n\r\ndefine('lodash/_baseFindIndex',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n\n});\n\r\ndefine('lodash/_baseIsNaN',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n\n});\n\r\ndefine('lodash/_strictIndexOf',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n\n});\n\r\ndefine('lodash/_arrayIncludesWith',['require','exports','module'],function (require, exports, module) {/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n\n});\n\r\ndefine('lodash/_cacheHas',['require','exports','module'],function (require, exports, module) {/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n});\n\r\ndefine('lodash/_createSet',['require','exports','module','./_Set','./noop','./_setToArray'],function (require, exports, module) {var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n\n});\n\r\ndefine('lodash/isNull',['require','exports','module'],function (require, exports, module) {/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nmodule.exports = isNull;\n\n});\n\r\ndefine('lodash/kebabCase',['require','exports','module','./_createCompounder'],function (require, exports, module) {var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n\n});\n\r\ndefine('lodash/_createCompounder',['require','exports','module','./_arrayReduce','./deburr','./words'],function (require, exports, module) {var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n\n});\n\r\ndefine('lodash/deburr',['require','exports','module','./_deburrLetter','./toString'],function (require, exports, module) {var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n\n});\n\r\ndefine('lodash/_deburrLetter',['require','exports','module','./_basePropertyOf'],function (require, exports, module) {var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n\n});\n\r\ndefine('lodash/_basePropertyOf',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n\n});\n\r\ndefine('lodash/words',['require','exports','module','./_asciiWords','./_hasUnicodeWord','./toString','./_unicodeWords'],function (require, exports, module) {var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n\n});\n\r\ndefine('lodash/_asciiWords',['require','exports','module'],function (require, exports, module) {/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n\n});\n\r\ndefine('lodash/_hasUnicodeWord',['require','exports','module'],function (require, exports, module) {/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n\n});\n\r\ndefine('lodash/_unicodeWords',['require','exports','module'],function (require, exports, module) {/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)',\n rsOrdUpper = '\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n\n});\n\r\ndefine('lodash/camelCase',['require','exports','module','./capitalize','./_createCompounder'],function (require, exports, module) {var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n\n});\n\r\ndefine('lodash/capitalize',['require','exports','module','./toString','./upperFirst'],function (require, exports, module) {var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n\n});\n\r\ndefine('lodash/upperFirst',['require','exports','module','./_createCaseFirst'],function (require, exports, module) {var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n\n});\n\r\ndefine('lodash/_createCaseFirst',['require','exports','module','./_castSlice','./_hasUnicode','./_stringToArray','./toString'],function (require, exports, module) {var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n\n});\n\r\ndefine('lodash/_castSlice',['require','exports','module','./_baseSlice'],function (require, exports, module) {var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n\n});\n\r\ndefine('lodash/_baseSlice',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n});\n\r\ndefine('lodash/_hasUnicode',['require','exports','module'],function (require, exports, module) {/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n\n});\n\r\ndefine('lodash/_stringToArray',['require','exports','module','./_asciiToArray','./_hasUnicode','./_unicodeToArray'],function (require, exports, module) {var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n\n});\n\r\ndefine('lodash/_asciiToArray',['require','exports','module'],function (require, exports, module) {/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n\n});\n\r\ndefine('lodash/_unicodeToArray',['require','exports','module'],function (require, exports, module) {/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n\n});\n\r\ndefine('lodash/flatten',['require','exports','module','./_baseFlatten'],function (require, exports, module) {var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n\n});\n\r\ndefine('lodash/_baseFlatten',['require','exports','module','./_arrayPush','./_isFlattenable'],function (require, exports, module) {var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n});\n\r\ndefine('lodash/_isFlattenable',['require','exports','module','./_Symbol','./isArguments','./isArray'],function (require, exports, module) {var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n\n});\n\r\ndefine('lodash/has',['require','exports','module','./_baseHas','./_hasPath'],function (require, exports, module) {var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n\n});\n\r\ndefine('lodash/_baseHas',['require','exports','module'],function (require, exports, module) {/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n\n});\n\r\ndefine('lodash/_hasPath',['require','exports','module','./_castPath','./isArguments','./isArray','./_isIndex','./isLength','./_toKey'],function (require, exports, module) {var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n});\n\r\ndefine('lodash/intersectionWith',['require','exports','module','./_arrayMap','./_baseIntersection','./_baseRest','./_castArrayLikeObject','./last'],function (require, exports, module) {var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\nvar intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n});\n\nmodule.exports = intersectionWith;\n\n});\n\r\ndefine('lodash/_baseIntersection',['require','exports','module','./_SetCache','./_arrayIncludes','./_arrayIncludesWith','./_arrayMap','./_baseUnary','./_cacheHas'],function (require, exports, module) {var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n\n});\n\r\ndefine('lodash/_baseRest',['require','exports','module','./identity','./_overRest','./_setToString'],function (require, exports, module) {var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n});\n\r\ndefine('lodash/identity',['require','exports','module'],function (require, exports, module) {/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n});\n\r\ndefine('lodash/_overRest',['require','exports','module','./_apply'],function (require, exports, module) {var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n});\n\r\ndefine('lodash/_apply',['require','exports','module'],function (require, exports, module) {/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n});\n\r\ndefine('lodash/_setToString',['require','exports','module','./_baseSetToString','./_shortOut'],function (require, exports, module) {var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n});\n\r\ndefine('lodash/_baseSetToString',['require','exports','module','./constant','./_defineProperty','./identity'],function (require, exports, module) {var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n});\n\r\ndefine('lodash/constant',['require','exports','module'],function (require, exports, module) {/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n});\n\r\ndefine('lodash/_shortOut',['require','exports','module'],function (require, exports, module) {/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n});\n\r\ndefine('lodash/_castArrayLikeObject',['require','exports','module','./isArrayLikeObject'],function (require, exports, module) {var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n\n});\n\r\ndefine('lodash/isArrayLikeObject',['require','exports','module','./isArrayLike','./isObjectLike'],function (require, exports, module) {var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n});\n\r\ndefine('lodash/last',['require','exports','module'],function (require, exports, module) {/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n});\n\r\ndefine('lodash/isEqual',['require','exports','module','./_baseIsEqual'],function (require, exports, module) {var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n\n});\n\r\ndefine('lodash/_baseIsEqual',['require','exports','module','./_baseIsEqualDeep','./isObjectLike'],function (require, exports, module) {var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n});\n\r\ndefine('lodash/_baseIsEqualDeep',['require','exports','module','./_Stack','./_equalArrays','./_equalByTag','./_equalObjects','./_getTag','./isArray','./isBuffer','./isTypedArray'],function (require, exports, module) {var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n});\n\r\ndefine('lodash/_equalArrays',['require','exports','module','./_SetCache','./_arraySome','./_cacheHas'],function (require, exports, module) {var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n});\n\r\ndefine('lodash/_arraySome',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n});\n\r\ndefine('lodash/_equalByTag',['require','exports','module','./_Symbol','./_Uint8Array','./eq','./_equalArrays','./_mapToArray','./_setToArray'],function (require, exports, module) {var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n});\n\r\ndefine('lodash/_equalObjects',['require','exports','module','./_getAllKeys'],function (require, exports, module) {var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n});\n\r\ndefine('lodash/merge',['require','exports','module','./_baseMerge','./_createAssigner'],function (require, exports, module) {var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n});\n\r\ndefine('lodash/_baseMerge',['require','exports','module','./_Stack','./_assignMergeValue','./_baseFor','./_baseMergeDeep','./isObject','./keysIn'],function (require, exports, module) {var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n\n});\n\r\ndefine('lodash/_assignMergeValue',['require','exports','module','./_baseAssignValue','./eq'],function (require, exports, module) {var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n\n});\n\r\ndefine('lodash/_baseFor',['require','exports','module','./_createBaseFor'],function (require, exports, module) {var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n});\n\r\ndefine('lodash/_createBaseFor',['require','exports','module'],function (require, exports, module) {/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n});\n\r\ndefine('lodash/_baseMergeDeep',['require','exports','module','./_assignMergeValue','./_cloneBuffer','./_cloneTypedArray','./_copyArray','./_initCloneObject','./isArguments','./isArray','./isArrayLikeObject','./isBuffer','./isFunction','./isObject','./isPlainObject','./isTypedArray','./toPlainObject'],function (require, exports, module) {var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n});\n\r\ndefine('lodash/isPlainObject',['require','exports','module','./_baseGetTag','./_getPrototype','./isObjectLike'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n});\n\r\ndefine('lodash/toPlainObject',['require','exports','module','./_copyObject','./keysIn'],function (require, exports, module) {var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n});\n\r\ndefine('lodash/_createAssigner',['require','exports','module','./_baseRest','./_isIterateeCall'],function (require, exports, module) {var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n});\n\r\ndefine('lodash/_isIterateeCall',['require','exports','module','./eq','./isArrayLike','./_isIndex','./isObject'],function (require, exports, module) {var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n});\n\r\ndefine('lodash/uniqBy',['require','exports','module','./_baseIteratee','./_baseUniq'],function (require, exports, module) {var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n\n});\n\r\ndefine('lodash/_baseIteratee',['require','exports','module','./_baseMatches','./_baseMatchesProperty','./identity','./isArray','./property'],function (require, exports, module) {var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n});\n\r\ndefine('lodash/_baseMatches',['require','exports','module','./_baseIsMatch','./_getMatchData','./_matchesStrictComparable'],function (require, exports, module) {var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n});\n\r\ndefine('lodash/_baseIsMatch',['require','exports','module','./_Stack','./_baseIsEqual'],function (require, exports, module) {var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n});\n\r\ndefine('lodash/_getMatchData',['require','exports','module','./_isStrictComparable','./keys'],function (require, exports, module) {var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n});\n\r\ndefine('lodash/_isStrictComparable',['require','exports','module','./isObject'],function (require, exports, module) {var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n});\n\r\ndefine('lodash/_matchesStrictComparable',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n});\n\r\ndefine('lodash/_baseMatchesProperty',['require','exports','module','./_baseIsEqual','./get','./hasIn','./_isKey','./_isStrictComparable','./_matchesStrictComparable','./_toKey'],function (require, exports, module) {var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n});\n\r\ndefine('lodash/hasIn',['require','exports','module','./_baseHasIn','./_hasPath'],function (require, exports, module) {var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n});\n\r\ndefine('lodash/_baseHasIn',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n});\n\r\ndefine('lodash/property',['require','exports','module','./_baseProperty','./_basePropertyDeep','./_isKey','./_toKey'],function (require, exports, module) {var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n});\n\r\ndefine('lodash/_baseProperty',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n});\n\r\ndefine('lodash/_basePropertyDeep',['require','exports','module','./_baseGet'],function (require, exports, module) {var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n});\n\r\ndefine('lodash/clone',['require','exports','module','./_baseClone'],function (require, exports, module) {var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n\n});\n\r\ndefine('lodash/map',['require','exports','module','./_arrayMap','./_baseIteratee','./_baseMap','./isArray'],function (require, exports, module) {var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n\n});\n\r\ndefine('lodash/_baseMap',['require','exports','module','./_baseEach','./isArrayLike'],function (require, exports, module) {var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n\n});\n\r\ndefine('lodash/_baseEach',['require','exports','module','./_baseForOwn','./_createBaseEach'],function (require, exports, module) {var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n});\n\r\ndefine('lodash/_baseForOwn',['require','exports','module','./_baseFor','./keys'],function (require, exports, module) {var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n});\n\r\ndefine('lodash/_createBaseEach',['require','exports','module','./isArrayLike'],function (require, exports, module) {var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n});\n\r\ndefine('lodash/first',['require','exports','module','./head'],function (require, exports, module) {module.exports = require('./head');\n\n});\n\r\ndefine('lodash/head',['require','exports','module'],function (require, exports, module) {/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n\n});\n\r\ndefine('lodash/takeRight',['require','exports','module','./_baseSlice','./toInteger'],function (require, exports, module) {var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\nfunction takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nmodule.exports = takeRight;\n\n});\n\r\ndefine('lodash/toInteger',['require','exports','module','./toFinite'],function (require, exports, module) {var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n\n});\n\r\ndefine('lodash/toFinite',['require','exports','module','./toNumber'],function (require, exports, module) {var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n\n});\n\r\ndefine('lodash/toNumber',['require','exports','module','./isObject','./isSymbol'],function (require, exports, module) {var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n});\n\r\ndefine('lodash/values',['require','exports','module','./_baseValues','./keys'],function (require, exports, module) {var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n});\n\r\ndefine('lodash/_baseValues',['require','exports','module','./_arrayMap'],function (require, exports, module) {var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n\n});\n\r\ndefine('lodash/mapValues',['require','exports','module','./_baseAssignValue','./_baseForOwn','./_baseIteratee'],function (require, exports, module) {var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n\n});\n\r\ndefine('lodash/debounce',['require','exports','module','./isObject','./now','./toNumber'],function (require, exports, module) {var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n\n});\n\r\ndefine('lodash/now',['require','exports','module','./_root'],function (require, exports, module) {var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n\n});\n\r\ndefine('lodash/sortBy',['require','exports','module','./_baseFlatten','./_baseOrderBy','./_baseRest','./_isIterateeCall'],function (require, exports, module) {var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n\n});\n\r\ndefine('lodash/_baseOrderBy',['require','exports','module','./_arrayMap','./_baseIteratee','./_baseMap','./_baseSortBy','./_baseUnary','./_compareMultiple','./identity'],function (require, exports, module) {var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n\n});\n\r\ndefine('lodash/_baseSortBy',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n\n});\n\r\ndefine('lodash/_compareMultiple',['require','exports','module','./_compareAscending'],function (require, exports, module) {var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n\n});\n\r\ndefine('lodash/_compareAscending',['require','exports','module','./isSymbol'],function (require, exports, module) {var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n\n});\n\r\ndefine('lodash/groupBy',['require','exports','module','./_baseAssignValue','./_createAggregator'],function (require, exports, module) {var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n\n});\n\r\ndefine('lodash/_createAggregator',['require','exports','module','./_arrayAggregator','./_baseAggregator','./_baseIteratee','./isArray'],function (require, exports, module) {var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n\n});\n\r\ndefine('lodash/_arrayAggregator',['require','exports','module'],function (require, exports, module) {/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n\n});\n\r\ndefine('lodash/_baseAggregator',['require','exports','module','./_baseEach'],function (require, exports, module) {var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n\n});\n\r\ndefine('lodash/fp/flatMap',['require','exports','module','./convert','../flatMap','./placeholder'],function (require, exports, module) {var convert = require('./convert'),\n func = convert('flatMap', require('../flatMap'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n\n});\n\r\ndefine('lodash/fp/convert',['require','exports','module','./_baseConvert','./_util'],function (require, exports, module) {var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n\n});\n\r\ndefine('lodash/fp/_baseConvert',['require','exports','module','./_mapping','./placeholder'],function (require, exports, module) {var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var setPlaceholder,\n isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n placeholder = isLib ? func : fallbackHolder,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isFunction': util.isFunction,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isFunction = helpers.isFunction,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null) {\n nested[path[index]] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n if (mapping.placeholder[realName]) {\n setPlaceholder = true;\n result.placeholder = func.placeholder = placeholder;\n }\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n if (setPlaceholder) {\n _.placeholder = placeholder;\n }\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n\n});\n\r\ndefine('lodash/fp/_mapping',['require','exports','module'],function (require, exports, module) {/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to track methods with placeholder support */\nexports.placeholder = {\n 'bind': true,\n 'bindKey': true,\n 'curry': true,\n 'curryRight': true,\n 'partial': true,\n 'partialRight': true\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n\n});\n\r\ndefine('lodash/fp/placeholder',['require','exports','module'],function (require, exports, module) {/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n\n});\n\r\ndefine('lodash/fp/_util',['require','exports','module','../ary','../_baseAssign','../clone','../curry','../_arrayEach','../isArray','../isFunction','../iteratee','../_baseKeys','../rearg','../toInteger','../toPath'],function (require, exports, module) {module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isFunction': require('../isFunction'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n\n});\n\r\ndefine('lodash/ary',['require','exports','module','./_createWrap'],function (require, exports, module) {var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n\n});\n\r\ndefine('lodash/_createWrap',['require','exports','module','./_baseSetData','./_createBind','./_createCurry','./_createHybrid','./_createPartial','./_getData','./_mergeData','./_setData','./_setWrapToString','./toInteger'],function (require, exports, module) {var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n\n});\n\r\ndefine('lodash/_baseSetData',['require','exports','module','./identity','./_metaMap'],function (require, exports, module) {var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n\n});\n\r\ndefine('lodash/_metaMap',['require','exports','module','./_WeakMap'],function (require, exports, module) {var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n\n});\n\r\ndefine('lodash/_createBind',['require','exports','module','./_createCtor','./_root'],function (require, exports, module) {var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n\n});\n\r\ndefine('lodash/_createCtor',['require','exports','module','./_baseCreate','./isObject'],function (require, exports, module) {var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n\n});\n\r\ndefine('lodash/_createCurry',['require','exports','module','./_apply','./_createCtor','./_createHybrid','./_createRecurry','./_getHolder','./_replaceHolders','./_root'],function (require, exports, module) {var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n\n});\n\r\ndefine('lodash/_createHybrid',['require','exports','module','./_composeArgs','./_composeArgsRight','./_countHolders','./_createCtor','./_createRecurry','./_getHolder','./_reorder','./_replaceHolders','./_root'],function (require, exports, module) {var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n\n});\n\r\ndefine('lodash/_composeArgs',['require','exports','module'],function (require, exports, module) {/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n\n});\n\r\ndefine('lodash/_composeArgsRight',['require','exports','module'],function (require, exports, module) {/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n\n});\n\r\ndefine('lodash/_countHolders',['require','exports','module'],function (require, exports, module) {/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n\n});\n\r\ndefine('lodash/_createRecurry',['require','exports','module','./_isLaziable','./_setData','./_setWrapToString'],function (require, exports, module) {var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n\n});\n\r\ndefine('lodash/_isLaziable',['require','exports','module','./_LazyWrapper','./_getData','./_getFuncName','./wrapperLodash'],function (require, exports, module) {var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n\n});\n\r\ndefine('lodash/_LazyWrapper',['require','exports','module','./_baseCreate','./_baseLodash'],function (require, exports, module) {var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n\n});\n\r\ndefine('lodash/_baseLodash',['require','exports','module'],function (require, exports, module) {/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n\n});\n\r\ndefine('lodash/_getData',['require','exports','module','./_metaMap','./noop'],function (require, exports, module) {var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n\n});\n\r\ndefine('lodash/_getFuncName',['require','exports','module','./_realNames'],function (require, exports, module) {var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n\n});\n\r\ndefine('lodash/_realNames',['require','exports','module'],function (require, exports, module) {/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n\n});\n\r\ndefine('lodash/wrapperLodash',['require','exports','module','./_LazyWrapper','./_LodashWrapper','./_baseLodash','./isArray','./isObjectLike','./_wrapperClone'],function (require, exports, module) {var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n\n});\n\r\ndefine('lodash/_LodashWrapper',['require','exports','module','./_baseCreate','./_baseLodash'],function (require, exports, module) {var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n\n});\n\r\ndefine('lodash/_wrapperClone',['require','exports','module','./_LazyWrapper','./_LodashWrapper','./_copyArray'],function (require, exports, module) {var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n\n});\n\r\ndefine('lodash/_setData',['require','exports','module','./_baseSetData','./_shortOut'],function (require, exports, module) {var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n\n});\n\r\ndefine('lodash/_setWrapToString',['require','exports','module','./_getWrapDetails','./_insertWrapDetails','./_setToString','./_updateWrapDetails'],function (require, exports, module) {var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n\n});\n\r\ndefine('lodash/_getWrapDetails',['require','exports','module'],function (require, exports, module) {/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n\n});\n\r\ndefine('lodash/_insertWrapDetails',['require','exports','module'],function (require, exports, module) {/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n\n});\n\r\ndefine('lodash/_updateWrapDetails',['require','exports','module','./_arrayEach','./_arrayIncludes'],function (require, exports, module) {var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n\n});\n\r\ndefine('lodash/_getHolder',['require','exports','module'],function (require, exports, module) {/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n\n});\n\r\ndefine('lodash/_reorder',['require','exports','module','./_copyArray','./_isIndex'],function (require, exports, module) {var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n\n});\n\r\ndefine('lodash/_replaceHolders',['require','exports','module'],function (require, exports, module) {/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n\n});\n\r\ndefine('lodash/_createPartial',['require','exports','module','./_apply','./_createCtor','./_root'],function (require, exports, module) {var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n\n});\n\r\ndefine('lodash/_mergeData',['require','exports','module','./_composeArgs','./_composeArgsRight','./_replaceHolders'],function (require, exports, module) {var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n\n});\n\r\ndefine('lodash/curry',['require','exports','module','./_createWrap'],function (require, exports, module) {var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n\n});\n\r\ndefine('lodash/iteratee',['require','exports','module','./_baseClone','./_baseIteratee'],function (require, exports, module) {var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n\n});\n\r\ndefine('lodash/rearg',['require','exports','module','./_createWrap','./_flatRest'],function (require, exports, module) {var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n\n});\n\r\ndefine('lodash/_flatRest',['require','exports','module','./flatten','./_overRest','./_setToString'],function (require, exports, module) {var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n\n});\n\r\ndefine('lodash/toPath',['require','exports','module','./_arrayMap','./_copyArray','./isArray','./isSymbol','./_stringToPath','./_toKey','./toString'],function (require, exports, module) {var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n\n});\n\r\ndefine('lodash/flatMap',['require','exports','module','./_baseFlatten','./map'],function (require, exports, module) {var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n\n});\n\r\ndefine('lodash/fp/flow',['require','exports','module','./convert','../flow','./placeholder'],function (require, exports, module) {var convert = require('./convert'),\n func = convert('flow', require('../flow'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n\n});\n\r\ndefine('lodash/flow',['require','exports','module','./_createFlow'],function (require, exports, module) {var createFlow = require('./_createFlow');\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nmodule.exports = flow;\n\n});\n\r\ndefine('lodash/_createFlow',['require','exports','module','./_LodashWrapper','./_flatRest','./_getData','./_getFuncName','./isArray','./_isLaziable'],function (require, exports, module) {var LodashWrapper = require('./_LodashWrapper'),\n flatRest = require('./_flatRest'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n isArray = require('./isArray'),\n isLaziable = require('./_isLaziable');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nmodule.exports = createFlow;\n\n});\n\r\ndefine('lodash/keyBy',['require','exports','module','./_baseAssignValue','./_createAggregator'],function (require, exports, module) {var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n\n});\n\r\ndefine('lodash/unescape',['require','exports','module','./toString','./_unescapeHtmlChar'],function (require, exports, module) {var toString = require('./toString'),\n unescapeHtmlChar = require('./_unescapeHtmlChar');\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n}\n\nmodule.exports = unescape;\n\n});\n\r\ndefine('lodash/_unescapeHtmlChar',['require','exports','module','./_basePropertyOf'],function (require, exports, module) {var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nmodule.exports = unescapeHtmlChar;\n\n});\n\r\ndefine('lodash/find',['require','exports','module','./_createFind','./findIndex'],function (require, exports, module) {var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n\n});\n\r\ndefine('lodash/_createFind',['require','exports','module','./_baseIteratee','./isArrayLike','./keys'],function (require, exports, module) {var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n\n});\n\r\ndefine('lodash/findIndex',['require','exports','module','./_baseFindIndex','./_baseIteratee','./toInteger'],function (require, exports, module) {var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n});\n\r\ndefine('lodash/includes',['require','exports','module','./_baseIndexOf','./isArrayLike','./isString','./toInteger','./values'],function (require, exports, module) {var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n\n});\n\r\ndefine('lodash/isString',['require','exports','module','./_baseGetTag','./isArray','./isObjectLike'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n});\n\r\ndefine('lodash/fp/filter',['require','exports','module','./convert','../filter','./placeholder'],function (require, exports, module) {var convert = require('./convert'),\n func = convert('filter', require('../filter'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n\n});\n\r\ndefine('lodash/filter',['require','exports','module','./_arrayFilter','./_baseFilter','./_baseIteratee','./isArray'],function (require, exports, module) {var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n\n});\n\r\ndefine('lodash/_baseFilter',['require','exports','module','./_baseEach'],function (require, exports, module) {var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n\n});\n\r\ndefine('lodash/some',['require','exports','module','./_arraySome','./_baseIteratee','./_baseSome','./isArray','./_isIterateeCall'],function (require, exports, module) {var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n\n});\n\r\ndefine('lodash/_baseSome',['require','exports','module','./_baseEach'],function (require, exports, module) {var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n\n});\n\r\ndefine('lodash/set',['require','exports','module','./_baseSet'],function (require, exports, module) {var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n\n});\n\r\ndefine('lodash/_baseSet',['require','exports','module','./_assignValue','./_castPath','./_isIndex','./isObject','./_toKey'],function (require, exports, module) {var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n\n});\n\r\ndefine('lodash/split',['require','exports','module','./_baseToString','./_castSlice','./_hasUnicode','./_isIterateeCall','./isRegExp','./_stringToArray','./toString'],function (require, exports, module) {var baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n isIterateeCall = require('./_isIterateeCall'),\n isRegExp = require('./isRegExp'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\nfunction split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n}\n\nmodule.exports = split;\n\n});\n\r\ndefine('lodash/isRegExp',['require','exports','module','./_baseIsRegExp','./_baseUnary','./_nodeUtil'],function (require, exports, module) {var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n\n});\n\r\ndefine('lodash/_baseIsRegExp',['require','exports','module','./_baseGetTag','./isObjectLike'],function (require, exports, module) {var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n\n});\n\r\ndefine('lodash/isEmpty',['require','exports','module','./_baseKeys','./_getTag','./isArguments','./isArray','./isArrayLike','./isBuffer','./_isPrototype','./isTypedArray'],function (require, exports, module) {var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n});\n\r\ndefine('lodash/each',['require','exports','module','./forEach'],function (require, exports, module) {module.exports = require('./forEach');\n\n});\n\r\ndefine('lodash/forEach',['require','exports','module','./_arrayEach','./_baseEach','./_castFunction','./isArray'],function (require, exports, module) {var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n\n});\n\r\ndefine('lodash/_castFunction',['require','exports','module','./identity'],function (require, exports, module) {var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n\n});\n\r\ndefine('lodash/cloneDeepWith',['require','exports','module','./_baseClone'],function (require, exports, module) {var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nmodule.exports = cloneDeepWith;\n\n});\n\r\ndefine('lodash/take',['require','exports','module','./_baseSlice','./toInteger'],function (require, exports, module) {var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nmodule.exports = take;\n\n});\n\r\ndefine('lodash/sumBy',['require','exports','module','./_baseIteratee','./_baseSum'],function (require, exports, module) {var baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n\n});\n\r\ndefine('lodash/_baseSum',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n\n});\n\r\ndefine('lodash/countBy',['require','exports','module','./_baseAssignValue','./_createAggregator'],function (require, exports, module) {var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\nvar countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n});\n\nmodule.exports = countBy;\n\n});\n\r\ndefine('lodash/minBy',['require','exports','module','./_baseExtremum','./_baseIteratee','./_baseLt'],function (require, exports, module) {var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n\n});\n\r\ndefine('lodash/_baseExtremum',['require','exports','module','./isSymbol'],function (require, exports, module) {var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n\n});\n\r\ndefine('lodash/_baseLt',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n\n});\n\r\ndefine('lodash/maxBy',['require','exports','module','./_baseExtremum','./_baseGt','./_baseIteratee'],function (require, exports, module) {var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n\n});\n\r\ndefine('lodash/_baseGt',['require','exports','module'],function (require, exports, module) {/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n\n});\n\r\ndefine('lodash/uniqWith',['require','exports','module','./_baseUniq'],function (require, exports, module) {var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n\n});\n\r\ndefine('lodash/sortedUniq',['require','exports','module','./_baseSortedUniq'],function (require, exports, module) {var baseSortedUniq = require('./_baseSortedUniq');\n\n/**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\nfunction sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n}\n\nmodule.exports = sortedUniq;\n\n});\n\r\ndefine('lodash/_baseSortedUniq',['require','exports','module','./eq'],function (require, exports, module) {var eq = require('./eq');\n\n/**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n}\n\nmodule.exports = baseSortedUniq;\n\n});\n\r\ndefine('lodash/unionBy',['require','exports','module','./_baseFlatten','./_baseIteratee','./_baseRest','./_baseUniq','./isArrayLikeObject','./last'],function (require, exports, module) {var baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nvar unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));\n});\n\nmodule.exports = unionBy;\n\n});\n\r\ndefine('lodash/orderBy',['require','exports','module','./_baseOrderBy','./isArray'],function (require, exports, module) {var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n\n});\n\r\ndefine('lodash/toArray',['require','exports','module','./_Symbol','./_copyArray','./_getTag','./isArrayLike','./isString','./_iteratorToArray','./_mapToArray','./_setToArray','./_stringToArray','./values'],function (require, exports, module) {var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n\n});\n\r\ndefine('lodash/_iteratorToArray',['require','exports','module'],function (require, exports, module) {/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n\n});\n\r\n// Empty Aurelia Polyfills, now done by babel-polyfills which are much more complete\ndefine('aurelia-polyfills', [], function() {});\n\ndefine(\"aurelia-polyfills/aurelia-polyfills\", [],function(){});\n\r\n/*!\n * jQuery JavaScript Library v3.2.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2017-03-20T18:59Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.2.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t// strings and numbers (primitives or objects)\n\t\t// that can be coerced to finite numbers (gh-2662)\n\t\tvar type = jQuery.type( obj );\n\t\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t\t// subtraction forces infinities to NaN\n\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE <=9 - 11, Edge 12 - 13\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Simple selector that can be filtered directly, removing non-Elements\n\tif ( risSimple.test( qualifier ) ) {\n\t\treturn jQuery.filter( qualifier, elements, not );\n\t}\n\n\t// Complex selector, compare the two sets, removing non-Elements\n\tqualifier = jQuery.filter( qualifier, elements );\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && jQuery.isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( jQuery.isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tjQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ jQuery.camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ jQuery.camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( jQuery.camelCase );\n\t\t\t} else {\n\t\t\t\tkey = jQuery.camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: jQuery.isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( \">tbody\", elem )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.cssText =\n\t\t\t\"box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i,\n\t\tval = 0;\n\n\t// If we already have the right measurement, avoid augmentation\n\tif ( extra === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\ti = 4;\n\n\t// Otherwise initialize for horizontal or vertical properties\n\t} else {\n\t\ti = name === \"width\" ? 1 : 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with computed style\n\tvar valueIsBorderBox,\n\t\tstyles = getStyles( elem ),\n\t\tval = curCSS( elem, name, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test( val ) ) {\n\t\treturn val;\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = isBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t// Fall back to offsetWidth/Height when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\tif ( val === \"auto\" ) {\n\t\tval = elem[ \"offset\" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnothtmlwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = jQuery.isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 13\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar doc, docElem, rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\trect = elem.getBoundingClientRect();\n\n\t\tdoc = elem.ownerDocument;\n\t\tdocElem = doc.documentElement;\n\t\twin = doc.defaultView;\n\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset = {\n\t\t\t\ttop: parentOffset.top + jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true ),\n\t\t\t\tleft: parentOffset.left + jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true )\n\t\t\t};\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n\r\n/*! jQuery UI - v1.12.1 - 2017-03-07\n* http://jqueryui.com\n* Includes: keycode.js, widgets/datepicker.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine('jquery-ui/jquery-ui',[ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.12.1\";\n\n\n/*!\n * jQuery UI Keycode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n// jscs:disable maximumLineLength\n/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */\n/*!\n * jQuery UI Datepicker 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Datepicker\n//>>group: Widgets\n//>>description: Displays a calendar from an input or inline for selecting dates.\n//>>docs: http://api.jqueryui.com/datepicker/\n//>>demos: http://jqueryui.com/datepicker/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/datepicker.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.extend( $.ui, { datepicker: { version: \"1.12.1\" } } );\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n Settings for (groups of) date pickers are maintained in an instance object,\n allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[ \"\" ] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [ \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\" ], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ], // For formatting\n\t\tdayNames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ], // For formatting\n\t\tdayNamesShort: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ], // For formatting\n\t\tdayNamesMin: [ \"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\" ], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend( this._defaults, this.regional[ \"\" ] );\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ] );\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover( $( \"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) );\n}\n\n$.extend( Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param settings object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function( settings ) {\n\t\tdatepicker_extendRemove( this._defaults, settings || {} );\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t * @param settings object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function( target, settings ) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = ( nodeName === \"div\" || nodeName === \"span\" );\n\t\tif ( !target.id ) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst( $( target ), inline );\n\t\tinst.settings = $.extend( {}, settings || {} );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tthis._connectDatepicker( target, inst );\n\t\t} else if ( inline ) {\n\t\t\tthis._inlineDatepicker( target, inst );\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function( target, inline ) {\n\t\tvar id = target[ 0 ].id.replace( /([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\" ); // escape jQuery meta chars\n\t\treturn { id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: ( !inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover( $( \"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) ) ) };\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function( target, inst ) {\n\t\tvar input = $( target );\n\t\tinst.append = $( [] );\n\t\tinst.trigger = $( [] );\n\t\tif ( input.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments( input, inst );\n\t\tinput.addClass( this.markerClassName ).on( \"keydown\", this._doKeyDown ).\n\t\t\ton( \"keypress\", this._doKeyPress ).on( \"keyup\", this._doKeyUp );\n\t\tthis._autoSize( inst );\n\t\t$.data( target, \"datepicker\", inst );\n\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function( input, inst ) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get( inst, \"appendText\" ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\tif ( inst.append ) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif ( appendText ) {\n\t\t\tinst.append = $( \"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\" );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.append );\n\t\t}\n\n\t\tinput.off( \"focus\", this._showDatepicker );\n\n\t\tif ( inst.trigger ) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get( inst, \"showOn\" );\n\t\tif ( showOn === \"focus\" || showOn === \"both\" ) { // pop-up date picker when in the marked field\n\t\t\tinput.on( \"focus\", this._showDatepicker );\n\t\t}\n\t\tif ( showOn === \"button\" || showOn === \"both\" ) { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get( inst, \"buttonText\" );\n\t\t\tbuttonImage = this._get( inst, \"buttonImage\" );\n\t\t\tinst.trigger = $( this._get( inst, \"buttonImageOnly\" ) ?\n\t\t\t\t$( \"<img/>\" ).addClass( this._triggerClass ).\n\t\t\t\t\tattr( { src: buttonImage, alt: buttonText, title: buttonText } ) :\n\t\t\t\t$( \"<button type='button'></button>\" ).addClass( this._triggerClass ).\n\t\t\t\t\thtml( !buttonImage ? buttonText : $( \"<img/>\" ).attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.trigger );\n\t\t\tinst.trigger.on( \"click\", function() {\n\t\t\t\tif ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} );\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function( inst ) {\n\t\tif ( this._get( inst, \"autoSize\" ) && !inst.inline ) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date( 2009, 12 - 1, 20 ), // Ensure double digits\n\t\t\t\tdateFormat = this._get( inst, \"dateFormat\" );\n\n\t\t\tif ( dateFormat.match( /[DM]/ ) ) {\n\t\t\t\tfindMax = function( names ) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor ( i = 0; i < names.length; i++ ) {\n\t\t\t\t\t\tif ( names[ i ].length > max ) {\n\t\t\t\t\t\t\tmax = names[ i ].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\" ) ) ) );\n\t\t\t\tdate.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\" ) ) ) + 20 - date.getDay() );\n\t\t\t}\n\t\t\tinst.input.attr( \"size\", this._formatDate( inst, date ).length );\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function( target, inst ) {\n\t\tvar divSpan = $( target );\n\t\tif ( divSpan.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass( this.markerClassName ).append( inst.dpDiv );\n\t\t$.data( target, \"datepicker\", inst );\n\t\tthis._setDate( inst, this._getDefaultDate( inst ), true );\n\t\tthis._updateDatepicker( inst );\n\t\tthis._updateAlternate( inst );\n\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param input element - ignored\n\t * @param date\tstring or Date - the initial date to display\n\t * @param onSelect function - the function to call when a date is selected\n\t * @param settings object - update the dialog date picker instance's settings (anonymous object)\n\t * @param pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function( input, date, onSelect, settings, pos ) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif ( !inst ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $( \"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\" );\n\t\t\tthis._dialogInput.on( \"keydown\", this._doKeyDown );\n\t\t\t$( \"body\" ).append( this._dialogInput );\n\t\t\tinst = this._dialogInst = this._newInst( this._dialogInput, false );\n\t\t\tinst.settings = {};\n\t\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, settings || {} );\n\t\tdate = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );\n\t\tthis._dialogInput.val( date );\n\n\t\tthis._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );\n\t\tif ( !this._pos ) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];\n\t\t}\n\n\t\t// Move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css( \"left\", ( this._pos[ 0 ] + 20 ) + \"px\" ).css( \"top\", this._pos[ 1 ] + \"px\" );\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass( this._dialogClass );\n\t\tthis._showDatepicker( this._dialogInput[ 0 ] );\n\t\tif ( $.blockUI ) {\n\t\t\t$.blockUI( this.dpDiv );\n\t\t}\n\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function( target ) {\n\t\tvar nodeName,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData( target, \"datepicker\" );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass( this.markerClassName ).\n\t\t\t\toff( \"focus\", this._showDatepicker ).\n\t\t\t\toff( \"keydown\", this._doKeyDown ).\n\t\t\t\toff( \"keypress\", this._doKeyPress ).\n\t\t\t\toff( \"keyup\", this._doKeyUp );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\t$target.removeClass( this.markerClassName ).empty();\n\t\t}\n\n\t\tif ( datepicker_instActive === inst ) {\n\t\t\tdatepicker_instActive = null;\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = false; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"1.0\", cursor: \"\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().removeClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", false );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = true; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"0.5\", cursor: \"default\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().addClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", true );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t\tthis._disabledInputs[ this._disabledInputs.length ] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function( target ) {\n\t\tif ( !target ) {\n\t\t\treturn false;\n\t\t}\n\t\tfor ( var i = 0; i < this._disabledInputs.length; i++ ) {\n\t\t\tif ( this._disabledInputs[ i ] === target ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param target element - the target input field or division or span\n\t * @return object - the associated instance data\n\t * @throws error if a jQuery problem getting data\n\t */\n\t_getInst: function( target ) {\n\t\ttry {\n\t\t\treturn $.data( target, \"datepicker\" );\n\t\t}\n\t\tcatch ( err ) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t * @param name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param value any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function( target, name, value ) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst( target );\n\n\t\tif ( arguments.length === 2 && typeof name === \"string\" ) {\n\t\t\treturn ( name === \"defaults\" ? $.extend( {}, $.datepicker._defaults ) :\n\t\t\t\t( inst ? ( name === \"all\" ? $.extend( {}, inst.settings ) :\n\t\t\t\tthis._get( inst, name ) ) : null ) );\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif ( typeof name === \"string\" ) {\n\t\t\tsettings = {};\n\t\t\tsettings[ name ] = value;\n\t\t}\n\n\t\tif ( inst ) {\n\t\t\tif ( this._curInst === inst ) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker( target, true );\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" );\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" );\n\t\t\tdatepicker_extendRemove( inst.settings, settings );\n\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {\n\t\t\t\tinst.settings.minDate = this._formatDate( inst, minDate );\n\t\t\t}\n\t\t\tif ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {\n\t\t\t\tinst.settings.maxDate = this._formatDate( inst, maxDate );\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker( target );\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker( target );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments( $( target ), inst );\n\t\t\tthis._autoSize( inst );\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateAlternate( inst );\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t// Change method deprecated\n\t_changeDatepicker: function( target, name, value ) {\n\t\tthis._optionDatepicker( target, name, value );\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function( target ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param date\tDate - the new date\n\t */\n\t_setDateDatepicker: function( target, date ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateDatepicker( inst );\n\t\t\tthis._updateAlternate( inst );\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function( target, noDefault ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst && !inst.inline ) {\n\t\t\tthis._setDateFromField( inst, noDefault );\n\t\t}\n\t\treturn ( inst ? this._getDate( inst ) : null );\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function( event ) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst( event.target ),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is( \".ui-datepicker-rtl\" );\n\n\t\tinst._keyEvent = true;\n\t\tif ( $.datepicker._datepickerShowing ) {\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $( \"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv );\n\t\t\t\t\t\tif ( sel[ 0 ] ) {\n\t\t\t\t\t\t\t$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get( inst, \"onSelect\" );\n\t\t\t\t\t\tif ( onSelect ) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate( inst );\n\n\t\t\t\t\t\t\t// Trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._clearDate( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, -7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, +7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker( this );\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif ( handled ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function( event ) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( $.datepicker._get( inst, \"constrainInput\" ) ) {\n\t\t\tchars = $.datepicker._possibleChars( $.datepicker._get( inst, \"dateFormat\" ) );\n\t\t\tchr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );\n\t\t\treturn event.ctrlKey || event.metaKey || ( chr < \" \" || !chars || chars.indexOf( chr ) > -1 );\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function( event ) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( inst.input.val() !== inst.lastVal ) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t( inst.input ? inst.input.val() : null ),\n\t\t\t\t\t$.datepicker._getFormatConfig( inst ) );\n\n\t\t\t\tif ( date ) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField( inst );\n\t\t\t\t\t$.datepicker._updateAlternate( inst );\n\t\t\t\t\t$.datepicker._updateDatepicker( inst );\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch ( err ) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param input element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function( input ) {\n\t\tinput = input.target || input;\n\t\tif ( input.nodeName.toLowerCase() !== \"input\" ) { // find from button/image trigger\n\t\t\tinput = $( \"input\", input.parentNode )[ 0 ];\n\t\t}\n\n\t\tif ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst( input );\n\t\tif ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {\n\t\t\t$.datepicker._curInst.dpDiv.stop( true, true );\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get( inst, \"beforeShow\" );\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};\n\t\tif ( beforeShowSettings === false ) {\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, beforeShowSettings );\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField( inst );\n\n\t\tif ( $.datepicker._inDialog ) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif ( !$.datepicker._pos ) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos( input );\n\t\t\t$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$( input ).parents().each( function() {\n\t\t\tisFixed |= $( this ).css( \"position\" ) === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t} );\n\n\t\toffset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };\n\t\t$.datepicker._pos = null;\n\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css( { position: \"absolute\", display: \"block\", top: \"-1000px\" } );\n\t\t$.datepicker._updateDatepicker( inst );\n\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset( inst, offset, isFixed );\n\t\tinst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : ( isFixed ? \"fixed\" : \"absolute\" ) ), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\" } );\n\n\t\tif ( !inst.inline ) {\n\t\t\tshowAnim = $.datepicker._get( inst, \"showAnim\" );\n\t\t\tduration = $.datepicker._get( inst, \"duration\" );\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ showAnim || \"show\" ]( showAnim ? duration : null );\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function( inst ) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append( this._generateHTML( inst ) );\n\t\tthis._attachHandlers( inst );\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tcols = numMonths[ 1 ],\n\t\t\twidth = 17,\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" );\n\n\t\tif ( activeCell.length > 0 ) {\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\n\t\t}\n\n\t\tinst.dpDiv.removeClass( \"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\" ).width( \"\" );\n\t\tif ( cols > 1 ) {\n\t\t\tinst.dpDiv.addClass( \"ui-datepicker-multi-\" + cols ).css( \"width\", ( width * cols ) + \"em\" );\n\t\t}\n\t\tinst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-multi\" );\n\t\tinst.dpDiv[ ( this._get( inst, \"isRTL\" ) ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-rtl\" );\n\n\t\tif ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.trigger( \"focus\" );\n\t\t}\n\n\t\t// Deffered render of the years select (to avoid flashes on Firefox)\n\t\tif ( inst.yearshtml ) {\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout( function() {\n\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif ( origyearshtml === inst.yearshtml && inst.yearshtml ) {\n\t\t\t\t\tinst.dpDiv.find( \"select.ui-datepicker-year:first\" ).replaceWith( inst.yearshtml );\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0 );\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function( inst, offset, isFixed ) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),\n\t\t\tviewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );\n\n\t\toffset.left -= ( this._get( inst, \"isRTL\" ) ? ( dpWidth - inputWidth ) : 0 );\n\t\toffset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;\n\t\toffset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;\n\n\t\t// Now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?\n\t\t\tMath.abs( offset.left + dpWidth - viewWidth ) : 0 );\n\t\toffset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?\n\t\t\tMath.abs( dpHeight + inputHeight ) : 0 );\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function( obj ) {\n\t\tvar position,\n\t\t\tinst = this._getInst( obj ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\twhile ( obj && ( obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {\n\t\t\tobj = obj[ isRTL ? \"previousSibling\" : \"nextSibling\" ];\n\t\t}\n\n\t\tposition = $( obj ).offset();\n\t\treturn [ position.left, position.top ];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param input element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function( input ) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif ( !inst || ( input && inst !== $.data( input, \"datepicker\" ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._datepickerShowing ) {\n\t\t\tshowAnim = this._get( inst, \"showAnim\" );\n\t\t\tduration = this._get( inst, \"duration\" );\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog( inst );\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration, postProcess );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ ( showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t( showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\" ) ) ]( ( showAnim ? duration : null ), postProcess );\n\t\t\t}\n\n\t\t\tif ( !showAnim ) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get( inst, \"onClose\" );\n\t\t\tif ( onClose ) {\n\t\t\t\tonClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : \"\" ), inst ] );\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif ( this._inDialog ) {\n\t\t\t\tthis._dialogInput.css( { position: \"absolute\", left: \"0\", top: \"-100px\" } );\n\t\t\t\tif ( $.blockUI ) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$( \"body\" ).append( this.dpDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function( inst ) {\n\t\tinst.dpDiv.removeClass( this._dialogClass ).off( \".ui-datepicker-calendar\" );\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function( event ) {\n\t\tif ( !$.datepicker._curInst ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $( event.target ),\n\t\t\tinst = $.datepicker._getInst( $target[ 0 ] );\n\n\t\tif ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents( \"#\" + $.datepicker._mainDivId ).length === 0 &&\n\t\t\t\t!$target.hasClass( $.datepicker.markerClassName ) &&\n\t\t\t\t!$target.closest( \".\" + $.datepicker._triggerClass ).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||\n\t\t\t( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function( id, offset, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate( inst, offset +\n\t\t\t( period === \"M\" ? this._get( inst, \"showCurrentAtPos\" ) : 0 ), // undo positioning\n\t\t\tperiod );\n\t\tthis._updateDatepicker( inst );\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function( id ) {\n\t\tvar date,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function( id, select, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tinst[ \"selected\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\tinst[ \"draw\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\t\tparseInt( select.options[ select.selectedIndex ].value, 10 );\n\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function( id, month, year, td ) {\n\t\tvar inst,\n\t\t\ttarget = $( id );\n\n\t\tif ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst( target[ 0 ] );\n\t\tinst.selectedDay = inst.currentDay = $( \"a\", td ).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate( id, this._formatDate( inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear ) );\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function( id ) {\n\t\tvar target = $( id );\n\t\tthis._selectDate( target, \"\" );\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function( id, dateStr ) {\n\t\tvar onSelect,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tdateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( dateStr );\n\t\t}\n\t\tthis._updateAlternate( inst );\n\n\t\tonSelect = this._get( inst, \"onSelect\" );\n\t\tif ( onSelect ) {\n\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] ); // trigger custom callback\n\t\t} else if ( inst.input ) {\n\t\t\tinst.input.trigger( \"change\" ); // fire the change event\n\t\t}\n\n\t\tif ( inst.inline ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[ 0 ];\n\t\t\tif ( typeof( inst.input[ 0 ] ) !== \"object\" ) {\n\t\t\t\tinst.input.trigger( \"focus\" ); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function( inst ) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get( inst, \"altField\" );\n\n\t\tif ( altField ) { // update alternate field too\n\t\t\taltFormat = this._get( inst, \"altFormat\" ) || this._get( inst, \"dateFormat\" );\n\t\t\tdate = this._getDate( inst );\n\t\t\tdateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );\n\t\t\t$( altField ).val( dateStr );\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param date Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function( date ) {\n\t\tvar day = date.getDay();\n\t\treturn [ ( day > 0 && day < 6 ), \"\" ];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param date Date - the date to get the week for\n\t * @return number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function( date ) {\n\t\tvar time,\n\t\t\tcheckDate = new Date( date.getTime() );\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth( 0 ); // Compare with Jan 1\n\t\tcheckDate.setDate( 1 );\n\t\treturn Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param format string - the expected format of the date\n\t * @param value string - the date in the above format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function( format, value, settings ) {\n\t\tif ( format == null || value == null ) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = ( typeof value === \"object\" ? value.toString() : value + \"\" );\n\t\tif ( value === \"\" ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = ( typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function( match ) {\n\t\t\t\tvar isDoubled = lookAhead( match ),\n\t\t\t\t\tsize = ( match === \"@\" ? 14 : ( match === \"!\" ? 20 :\n\t\t\t\t\t( match === \"y\" && isDoubled ? 4 : ( match === \"o\" ? 3 : 2 ) ) ) ),\n\t\t\t\t\tminSize = ( match === \"y\" ? size : 1 ),\n\t\t\t\t\tdigits = new RegExp( \"^\\\\d{\" + minSize + \",\" + size + \"}\" ),\n\t\t\t\t\tnum = value.substring( iValue ).match( digits );\n\t\t\t\tif ( !num ) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[ 0 ].length;\n\t\t\t\treturn parseInt( num[ 0 ], 10 );\n\t\t\t},\n\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function( match, shortNames, longNames ) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {\n\t\t\t\t\t\treturn [ [ k, v ] ];\n\t\t\t\t\t} ).sort( function( a, b ) {\n\t\t\t\t\t\treturn -( a[ 1 ].length - b[ 1 ].length );\n\t\t\t\t\t} );\n\n\t\t\t\t$.each( names, function( i, pair ) {\n\t\t\t\t\tvar name = pair[ 1 ];\n\t\t\t\t\tif ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {\n\t\t\t\t\t\tindex = pair[ 0 ];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tif ( index !== -1 ) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber( \"d\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName( \"D\", dayNamesShort, dayNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber( \"o\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber( \"m\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName( \"M\", monthNamesShort, monthNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber( \"y\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date( getNumber( \"@\" ) );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date( ( getNumber( \"!\" ) - this._ticksTo1970 ) / 10000 );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( iValue < value.length ) {\n\t\t\textra = value.substr( iValue );\n\t\t\tif ( !/^\\s+/.test( extra ) ) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif ( year === -1 ) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if ( year < 100 ) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t( year <= shortYearCutoff ? 0 : -100 );\n\t\t}\n\n\t\tif ( doy > -1 ) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth( year, month - 1 );\n\t\t\t\tif ( day <= dim ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while ( true );\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust( new Date( year, month - 1, day ) );\n\t\tif ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +\n\t\tMath.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D - day name short\n\t * DD - day name long\n\t * m - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M - month name short\n\t * MM - month name long\n\t * y - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param format string - the desired format of the date\n\t * @param date Date - the date value to format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return string - the date in the above format\n\t */\n\tformatDate: function( format, date, settings ) {\n\t\tif ( !date ) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function( match, value, len ) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif ( lookAhead( match ) ) {\n\t\t\t\t\twhile ( num.length < len ) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function( match, value, shortNames, longNames ) {\n\t\t\t\treturn ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif ( date ) {\n\t\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\t\tif ( literal ) {\n\t\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber( \"d\", date.getDate(), 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName( \"D\", date.getDay(), dayNamesShort, dayNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber( \"o\",\n\t\t\t\t\t\t\t\tMath.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber( \"m\", date.getMonth() + 1, 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName( \"M\", date.getMonth(), monthNamesShort, monthNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += ( lookAhead( \"y\" ) ? date.getFullYear() :\n\t\t\t\t\t\t\t\t( date.getFullYear() % 100 < 10 ? \"0\" : \"\" ) + date.getFullYear() % 100 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function( format ) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function( inst, name ) {\n\t\treturn inst.settings[ name ] !== undefined ?\n\t\t\tinst.settings[ name ] : this._defaults[ name ];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function( inst, noDefault ) {\n\t\tif ( inst.input.val() === inst.lastVal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get( inst, \"dateFormat\" ),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate( inst ),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig( inst );\n\n\t\ttry {\n\t\t\tdate = this.parseDate( dateFormat, dates, settings ) || defaultDate;\n\t\t} catch ( event ) {\n\t\t\tdates = ( noDefault ? \"\" : dates );\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = ( dates ? date.getDate() : 0 );\n\t\tinst.currentMonth = ( dates ? date.getMonth() : 0 );\n\t\tinst.currentYear = ( dates ? date.getFullYear() : 0 );\n\t\tthis._adjustInstDate( inst );\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function( inst ) {\n\t\treturn this._restrictMinMax( inst,\n\t\t\tthis._determineDate( inst, this._get( inst, \"defaultDate\" ), new Date() ) );\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function( inst, date, defaultDate ) {\n\t\tvar offsetNumeric = function( offset ) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate( date.getDate() + offset );\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function( offset ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig( inst ) );\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {\n\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = ( offset.toLowerCase().match( /^c/ ) ?\n\t\t\t\t\t$.datepicker._getDate( inst ) : null ) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec( offset );\n\n\t\t\t\twhile ( matches ) {\n\t\t\t\t\tswitch ( matches[ 2 ] || \"d\" ) {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec( offset );\n\t\t\t\t}\n\t\t\t\treturn new Date( year, month, day );\n\t\t\t},\n\t\t\tnewDate = ( date == null || date === \"\" ? defaultDate : ( typeof date === \"string\" ? offsetString( date ) :\n\t\t\t\t( typeof date === \"number\" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );\n\n\t\tnewDate = ( newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate );\n\t\tif ( newDate ) {\n\t\t\tnewDate.setHours( 0 );\n\t\t\tnewDate.setMinutes( 0 );\n\t\t\tnewDate.setSeconds( 0 );\n\t\t\tnewDate.setMilliseconds( 0 );\n\t\t}\n\t\treturn this._daylightSavingAdjust( newDate );\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param date (Date) the date to check\n\t * @return (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function( date ) {\n\t\tif ( !date ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function( inst, date, noChange ) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t\tthis._adjustInstDate( inst );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( clear ? \"\" : this._formatDate( inst ) );\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function( inst ) {\n\t\tvar startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === \"\" ) ? null :\n\t\t\tthis._daylightSavingAdjust( new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers. These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function( inst ) {\n\t\tvar stepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find( \"[data-handler]\" ).map( function() {\n\t\t\tvar handler = {\n\t\t\t\tprev: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, -stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\tnext: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, +stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\thide: function() {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function() {\n\t\t\t\t\t$.datepicker._gotoToday( id );\n\t\t\t\t},\n\t\t\t\tselectDay: function() {\n\t\t\t\t\t$.datepicker._selectDay( id, +this.getAttribute( \"data-month\" ), +this.getAttribute( \"data-year\" ), this );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"M\" );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"Y\" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$( this ).on( this.getAttribute( \"data-event\" ), handler[ this.getAttribute( \"data-handler\" ) ] );\n\t\t} );\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function( inst ) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time\n\t\t\tisRTL = this._get( inst, \"isRTL\" ),\n\t\t\tshowButtonPanel = this._get( inst, \"showButtonPanel\" ),\n\t\t\thideIfNoPrevNext = this._get( inst, \"hideIfNoPrevNext\" ),\n\t\t\tnavigationAsDateFormat = this._get( inst, \"navigationAsDateFormat\" ),\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tshowCurrentAtPos = this._get( inst, \"showCurrentAtPos\" ),\n\t\t\tstepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tisMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),\n\t\t\tcurrentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :\n\t\t\t\tnew Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif ( drawMonth < 0 ) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif ( maxDate ) {\n\t\t\tmaxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );\n\t\t\tmaxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );\n\t\t\twhile ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif ( drawMonth < 0 ) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get( inst, \"prevText\" );\n\t\tprevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tprev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" ) );\n\n\t\tnextText = this._get( inst, \"nextText\" );\n\t\tnextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tnext = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" ) );\n\n\t\tcurrentText = this._get( inst, \"currentText\" );\n\t\tgotoDate = ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ? currentDate : today );\n\t\tcurrentText = ( !navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );\n\n\t\tcontrols = ( !inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get( inst, \"closeText\" ) + \"</button>\" : \"\" );\n\n\t\tbuttonPanel = ( showButtonPanel ) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + ( isRTL ? controls : \"\" ) +\n\t\t\t( this._isInRange( inst, gotoDate ) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\" ) + ( isRTL ? \"\" : controls ) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt( this._get( inst, \"firstDay\" ), 10 );\n\t\tfirstDay = ( isNaN( firstDay ) ? 0 : firstDay );\n\n\t\tshowWeek = this._get( inst, \"showWeek\" );\n\t\tdayNames = this._get( inst, \"dayNames\" );\n\t\tdayNamesMin = this._get( inst, \"dayNamesMin\" );\n\t\tmonthNames = this._get( inst, \"monthNames\" );\n\t\tmonthNamesShort = this._get( inst, \"monthNamesShort\" );\n\t\tbeforeShowDay = this._get( inst, \"beforeShowDay\" );\n\t\tshowOtherMonths = this._get( inst, \"showOtherMonths\" );\n\t\tselectOtherMonths = this._get( inst, \"selectOtherMonths\" );\n\t\tdefaultDate = this._getDefaultDate( inst );\n\t\thtml = \"\";\n\n\t\tfor ( row = 0; row < numMonths[ 0 ]; row++ ) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor ( col = 0; col < numMonths[ 1 ]; col++ ) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif ( isMultiMonth ) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif ( numMonths[ 1 ] > 1 ) {\n\t\t\t\t\t\tswitch ( col ) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"right\" : \"left\" ); break;\n\t\t\t\t\t\t\tcase numMonths[ 1 ] - 1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"left\" : \"right\" ); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : \"\" ) +\n\t\t\t\t\t( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : \"\" ) +\n\t\t\t\t\tthis._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = ( showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get( inst, \"weekHeader\" ) + \"</th>\" : \"\" );\n\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // days of the week\n\t\t\t\t\tday = ( dow + firstDay ) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\" ) + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[ day ] + \"'>\" + dayNamesMin[ day ] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth( drawYear, drawMonth );\n\t\t\t\tif ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {\n\t\t\t\t\tinst.selectedDay = Math.min( inst.selectedDay, daysInMonth );\n\t\t\t\t}\n\t\t\t\tleadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;\n\t\t\t\tcurRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate\n\t\t\t\tnumRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );\n\t\t\t\tfor ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = ( !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get( inst, \"calculateWeek\" )( printDate ) + \"</td>\" );\n\t\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // create date picker days\n\t\t\t\t\t\tdaySettings = ( beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, \"\" ] );\n\t\t\t\t\t\totherMonth = ( printDate.getMonth() !== drawMonth );\n\t\t\t\t\t\tunselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||\n\t\t\t\t\t\t\t( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t( ( dow + firstDay + 6 ) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\" ) + // highlight weekends\n\t\t\t\t\t\t\t( otherMonth ? \" ui-datepicker-other-month\" : \"\" ) + // highlight days from other months\n\t\t\t\t\t\t\t( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key\n\t\t\t\t\t\t\t( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?\n\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\" ) + // highlight unselectable days\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[ 1 ] + // highlight custom dates\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\" ) ) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? \" title='\" + daySettings[ 2 ].replace( /'/g, \"&#39;\" ) + \"'\" : \"\" ) + // cell title\n\t\t\t\t\t\t\t( unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\" ) + \">\" + // actions\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"&#xa0;\" : // display for other months\n\t\t\t\t\t\t\t( unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\" ) +\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( otherMonth ? \" ui-priority-secondary\" : \"\" ) + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\" ) ) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate( printDate.getDate() + 1 );\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust( printDate );\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif ( drawMonth > 11 ) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + ( isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\" ) : \"\" );\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort ) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get( inst, \"changeMonth\" ),\n\t\t\tchangeYear = this._get( inst, \"changeYear\" ),\n\t\t\tshowMonthAfterYear = this._get( inst, \"showMonthAfterYear\" ),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// Month selection\n\t\tif ( secondary || !changeMonth ) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[ drawMonth ] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = ( minDate && minDate.getFullYear() === drawYear );\n\t\t\tinMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++ ) {\n\t\t\t\tif ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t( month === drawMonth ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + monthNamesShort[ month ] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif ( !showMonthAfterYear ) {\n\t\t\thtml += monthHtml + ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" );\n\t\t}\n\n\t\t// Year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif ( secondary || !changeYear ) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get( inst, \"yearRange\" ).split( \":\" );\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function( value ) {\n\t\t\t\t\tvar year = ( value.match( /c[+\\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :\n\t\t\t\t\t\t( value.match( /[+\\-].*/ ) ? thisYear + parseInt( value, 10 ) :\n\t\t\t\t\t\tparseInt( value, 10 ) ) );\n\t\t\t\t\treturn ( isNaN( year ) ? thisYear : year );\n\t\t\t\t};\n\t\t\t\tyear = determineYear( years[ 0 ] );\n\t\t\t\tendYear = Math.max( year, determineYear( years[ 1 ] || \"\" ) );\n\t\t\t\tyear = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );\n\t\t\t\tendYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor ( ; year <= endYear; year++ ) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t( year === drawYear ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get( inst, \"yearSuffix\" );\n\t\tif ( showMonthAfterYear ) {\n\t\t\thtml += ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" ) + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function( inst, offset, period ) {\n\t\tvar year = inst.selectedYear + ( period === \"Y\" ? offset : 0 ),\n\t\t\tmonth = inst.selectedMonth + ( period === \"M\" ? offset : 0 ),\n\t\t\tday = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === \"D\" ? offset : 0 ),\n\t\t\tdate = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif ( period === \"M\" || period === \"Y\" ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function( inst, date ) {\n\t\tvar minDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tnewDate = ( minDate && date < minDate ? minDate : date );\n\t\treturn ( maxDate && newDate > maxDate ? maxDate : newDate );\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function( inst ) {\n\t\tvar onChange = this._get( inst, \"onChangeMonthYear\" );\n\t\tif ( onChange ) {\n\t\t\tonChange.apply( ( inst.input ? inst.input[ 0 ] : null ),\n\t\t\t\t[ inst.selectedYear, inst.selectedMonth + 1, inst ] );\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function( inst ) {\n\t\tvar numMonths = this._get( inst, \"numberOfMonths\" );\n\t\treturn ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === \"number\" ? [ 1, numMonths ] : numMonths ) );\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function( inst, minMax ) {\n\t\treturn this._determineDate( inst, this._get( inst, minMax + \"Date\" ), null );\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function( year, month ) {\n\t\treturn 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function( year, month ) {\n\t\treturn new Date( year, month, 1 ).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function( inst, offset, curYear, curMonth ) {\n\t\tvar numMonths = this._getNumberOfMonths( inst ),\n\t\t\tdate = this._daylightSavingAdjust( new Date( curYear,\n\t\t\tcurMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );\n\n\t\tif ( offset < 0 ) {\n\t\t\tdate.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );\n\t\t}\n\t\treturn this._isInRange( inst, date );\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function( inst, date ) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get( inst, \"yearRange\" );\n\t\t\tif ( years ) {\n\t\t\t\tyearSplit = years.split( \":\" );\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt( yearSplit[ 0 ], 10 );\n\t\t\t\tmaxYear = parseInt( yearSplit[ 1 ], 10 );\n\t\t\t\tif ( yearSplit[ 0 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[ 1 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ( ( !minDate || date.getTime() >= minDate.getTime() ) &&\n\t\t\t( !maxDate || date.getTime() <= maxDate.getTime() ) &&\n\t\t\t( !minYear || date.getFullYear() >= minYear ) &&\n\t\t\t( !maxYear || date.getFullYear() <= maxYear ) );\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function( inst ) {\n\t\tvar shortYearCutoff = this._get( inst, \"shortYearCutoff\" );\n\t\tshortYearCutoff = ( typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );\n\t\treturn { shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get( inst, \"dayNamesShort\" ), dayNames: this._get( inst, \"dayNames\" ),\n\t\t\tmonthNamesShort: this._get( inst, \"monthNamesShort\" ), monthNames: this._get( inst, \"monthNames\" ) };\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function( inst, day, month, year ) {\n\t\tif ( !day ) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = ( day ? ( typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust( new Date( year, month, day ) ) ) :\n\t\t\tthis._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\treturn this.formatDate( this._get( inst, \"dateFormat\" ), date, this._getFormatConfig( inst ) );\n\t}\n} );\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover( dpDiv ) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.on( \"mouseout\", selector, function() {\n\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-prev-hover\" );\n\t\t\t}\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-next-hover\" );\n\t\t\t}\n\t\t} )\n\t\t.on( \"mouseover\", selector, datepicker_handleMouseover );\n}\n\nfunction datepicker_handleMouseover() {\n\tif ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {\n\t\t$( this ).parents( \".ui-datepicker-calendar\" ).find( \"a\" ).removeClass( \"ui-state-hover\" );\n\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-prev-hover\" );\n\t\t}\n\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-next-hover\" );\n\t\t}\n\t}\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove( target, props ) {\n\t$.extend( target, props );\n\tfor ( var name in props ) {\n\t\tif ( props[ name ] == null ) {\n\t\t\ttarget[ name ] = props[ name ];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n @param options string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n @return jQuery object */\n$.fn.datepicker = function( options ) {\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif ( !$.datepicker.initialized ) {\n\t\t$( document ).on( \"mousedown\", $.datepicker._checkExternalClick );\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ( $( \"#\" + $.datepicker._mainDivId ).length === 0 ) {\n\t\t$( \"body\" ).append( $.datepicker.dpDiv );\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call( arguments, 1 );\n\tif ( typeof options === \"string\" && ( options === \"isDisabled\" || options === \"getDate\" || options === \"widget\" ) ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\tif ( options === \"option\" && arguments.length === 2 && typeof arguments[ 1 ] === \"string\" ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\treturn this.each( function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\t\tapply( $.datepicker, [ this ].concat( otherArgs ) ) :\n\t\t\t$.datepicker._attachDatepicker( this, options );\n\t} );\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.12.1\";\n\nvar widgetsDatepicker = $.datepicker;\n\n\n\n\n}));;define('jquery-ui', ['jquery-ui/jquery-ui'], function (main) { return main; });\n\r\n/*\n Highcharts JS v5.0.14 (2017-07-28)\n\n (c) 2009-2016 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n(function(M,S){\"object\"===typeof module&&module.exports?module.exports=M.document?S(M):S:M.Highcharts=S(M)})(\"undefined\"!==typeof window?window:this,function(M){M=function(){var a=window,C=a.document,A=a.navigator&&a.navigator.userAgent||\"\",F=C&&C.createElementNS&&!!C.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\").createSVGRect,E=/(edge|msie|trident)/i.test(A)&&!window.opera,m=!F,f=/Firefox/.test(A),l=f&&4>parseInt(A.split(\"Firefox/\")[1],10);return a.Highcharts?a.Highcharts.error(16,!0):{product:\"Highcharts\",\nversion:\"5.0.14\",deg2rad:2*Math.PI/360,doc:C,hasBidiBug:l,hasTouch:C&&void 0!==C.documentElement.ontouchstart,isMS:E,isWebKit:/AppleWebKit/.test(A),isFirefox:f,isTouchDevice:/(Mobile|Android|Windows Phone)/.test(A),SVG_NS:\"http://www.w3.org/2000/svg\",chartCount:0,seriesTypes:{},symbolSizes:{},svg:F,vml:m,win:a,marginNames:[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"],noop:function(){},charts:[]}}();(function(a){var C=[],A=a.charts,F=a.doc,E=a.win;a.error=function(m,f){m=a.isNumber(m)?\"Highcharts error #\"+\nm+\": www.highcharts.com/errors/\"+m:m;if(f)throw Error(m);E.console&&console.log(m)};a.Fx=function(a,f,l){this.options=f;this.elem=a;this.prop=l};a.Fx.prototype={dSetter:function(){var a=this.paths[0],f=this.paths[1],l=[],r=this.now,u=a.length,t;if(1===r)l=this.toD;else if(u===f.length&&1>r)for(;u--;)t=parseFloat(a[u]),l[u]=isNaN(t)?a[u]:r*parseFloat(f[u]-t)+t;else l=f;this.elem.attr(\"d\",l,null,!0)},update:function(){var a=this.elem,f=this.prop,l=this.now,r=this.options.step;if(this[f+\"Setter\"])this[f+\n\"Setter\"]();else a.attr?a.element&&a.attr(f,l,null,!0):a.style[f]=l+this.unit;r&&r.call(a,l,this)},run:function(a,f,l){var r=this,m=function(a){return m.stopped?!1:r.step(a)},t;this.startTime=+new Date;this.start=a;this.end=f;this.unit=l;this.now=this.start;this.pos=0;m.elem=this.elem;m.prop=this.prop;m()&&1===C.push(m)&&(m.timerId=setInterval(function(){for(t=0;t<C.length;t++)C[t]()||C.splice(t--,1);C.length||clearInterval(m.timerId)},13))},step:function(m){var f=+new Date,l,r=this.options,u=this.elem,\nt=r.complete,g=r.duration,d=r.curAnim;u.attr&&!u.element?m=!1:m||f>=g+this.startTime?(this.now=this.end,this.pos=1,this.update(),l=d[this.prop]=!0,a.objectEach(d,function(a){!0!==a&&(l=!1)}),l&&t&&t.call(u),m=!1):(this.pos=r.easing((f-this.startTime)/g),this.now=this.start+(this.end-this.start)*this.pos,this.update(),m=!0);return m},initPath:function(m,f,l){function r(a){var c,e;for(n=a.length;n--;)c=\"M\"===a[n]||\"L\"===a[n],e=/[a-zA-Z]/.test(a[n+3]),c&&e&&a.splice(n+1,0,a[n+1],a[n+2],a[n+1],a[n+2])}\nfunction u(a,c){for(;a.length<v;){a[0]=c[v-a.length];var b=a.slice(0,e);[].splice.apply(a,[0,0].concat(b));D&&(b=a.slice(a.length-e),[].splice.apply(a,[a.length,0].concat(b)),n--)}a[0]=\"M\"}function t(a,c){for(var q=(v-a.length)/e;0<q&&q--;)y=a.slice().splice(a.length/J-e,e*J),y[0]=c[v-e-q*e],b&&(y[e-6]=y[e-2],y[e-5]=y[e-1]),[].splice.apply(a,[a.length/J,0].concat(y)),D&&q--}f=f||\"\";var g,d=m.startX,k=m.endX,b=-1<f.indexOf(\"C\"),e=b?7:3,v,y,n;f=f.split(\" \");l=l.slice();var D=m.isArea,J=D?2:1,c;b&&(r(f),\nr(l));if(d&&k){for(n=0;n<d.length;n++)if(d[n]===k[0]){g=n;break}else if(d[0]===k[k.length-d.length+n]){g=n;c=!0;break}void 0===g&&(f=[])}f.length&&a.isNumber(g)&&(v=l.length+g*J*e,c?(u(f,l),t(l,f)):(u(l,f),t(f,l)));return[f,l]}};a.Fx.prototype.fillSetter=a.Fx.prototype.strokeSetter=function(){this.elem.attr(this.prop,a.color(this.start).tweenTo(a.color(this.end),this.pos),null,!0)};a.extend=function(a,f){var m;a||(a={});for(m in f)a[m]=f[m];return a};a.merge=function(){var m,f=arguments,l,r={},u=\nfunction(f,g){\"object\"!==typeof f&&(f={});a.objectEach(g,function(d,k){!a.isObject(d,!0)||a.isClass(d)||a.isDOMElement(d)?f[k]=g[k]:f[k]=u(f[k]||{},d)});return f};!0===f[0]&&(r=f[1],f=Array.prototype.slice.call(f,2));l=f.length;for(m=0;m<l;m++)r=u(r,f[m]);return r};a.pInt=function(a,f){return parseInt(a,f||10)};a.isString=function(a){return\"string\"===typeof a};a.isArray=function(a){a=Object.prototype.toString.call(a);return\"[object Array]\"===a||\"[object Array Iterator]\"===a};a.isObject=function(m,\nf){return!!m&&\"object\"===typeof m&&(!f||!a.isArray(m))};a.isDOMElement=function(m){return a.isObject(m)&&\"number\"===typeof m.nodeType};a.isClass=function(m){var f=m&&m.constructor;return!(!a.isObject(m,!0)||a.isDOMElement(m)||!f||!f.name||\"Object\"===f.name)};a.isNumber=function(a){return\"number\"===typeof a&&!isNaN(a)};a.erase=function(a,f){for(var m=a.length;m--;)if(a[m]===f){a.splice(m,1);break}};a.defined=function(a){return void 0!==a&&null!==a};a.attr=function(m,f,l){var r;a.isString(f)?a.defined(l)?\nm.setAttribute(f,l):m&&m.getAttribute&&(r=m.getAttribute(f)):a.defined(f)&&a.isObject(f)&&a.objectEach(f,function(a,f){m.setAttribute(f,a)});return r};a.splat=function(m){return a.isArray(m)?m:[m]};a.syncTimeout=function(a,f,l){if(f)return setTimeout(a,f,l);a.call(0,l)};a.pick=function(){var a=arguments,f,l,r=a.length;for(f=0;f<r;f++)if(l=a[f],void 0!==l&&null!==l)return l};a.css=function(m,f){a.isMS&&!a.svg&&f&&void 0!==f.opacity&&(f.filter=\"alpha(opacity\\x3d\"+100*f.opacity+\")\");a.extend(m.style,\nf)};a.createElement=function(m,f,l,r,u){m=F.createElement(m);var t=a.css;f&&a.extend(m,f);u&&t(m,{padding:0,border:\"none\",margin:0});l&&t(m,l);r&&r.appendChild(m);return m};a.extendClass=function(m,f){var l=function(){};l.prototype=new m;a.extend(l.prototype,f);return l};a.pad=function(a,f,l){return Array((f||2)+1-String(a).length).join(l||0)+a};a.relativeLength=function(a,f,l){return/%$/.test(a)?f*parseFloat(a)/100+(l||0):parseFloat(a)};a.wrap=function(a,f,l){var r=a[f];a[f]=function(){var a=Array.prototype.slice.call(arguments),\nf=arguments,g=this;g.proceed=function(){r.apply(g,arguments.length?arguments:f)};a.unshift(r);a=l.apply(this,a);g.proceed=null;return a}};a.getTZOffset=function(m){var f=a.Date;return 6E4*(f.hcGetTimezoneOffset&&f.hcGetTimezoneOffset(m)||f.hcTimezoneOffset||0)};a.dateFormat=function(m,f,l){if(!a.defined(f)||isNaN(f))return a.defaultOptions.lang.invalidDate||\"\";m=a.pick(m,\"%Y-%m-%d %H:%M:%S\");var r=a.Date,u=new r(f-a.getTZOffset(f)),t=u[r.hcGetHours](),g=u[r.hcGetDay](),d=u[r.hcGetDate](),k=u[r.hcGetMonth](),\nb=u[r.hcGetFullYear](),e=a.defaultOptions.lang,v=e.weekdays,y=e.shortWeekdays,n=a.pad,r=a.extend({a:y?y[g]:v[g].substr(0,3),A:v[g],d:n(d),e:n(d,2,\" \"),w:g,b:e.shortMonths[k],B:e.months[k],m:n(k+1),y:b.toString().substr(2,2),Y:b,H:n(t),k:t,I:n(t%12||12),l:t%12||12,M:n(u[r.hcGetMinutes]()),p:12>t?\"AM\":\"PM\",P:12>t?\"am\":\"pm\",S:n(u.getSeconds()),L:n(Math.round(f%1E3),3)},a.dateFormats);a.objectEach(r,function(a,e){for(;-1!==m.indexOf(\"%\"+e);)m=m.replace(\"%\"+e,\"function\"===typeof a?a(f):a)});return l?m.substr(0,\n1).toUpperCase()+m.substr(1):m};a.formatSingle=function(m,f){var l=/\\.([0-9])/,r=a.defaultOptions.lang;/f$/.test(m)?(l=(l=m.match(l))?l[1]:-1,null!==f&&(f=a.numberFormat(f,l,r.decimalPoint,-1<m.indexOf(\",\")?r.thousandsSep:\"\"))):f=a.dateFormat(m,f);return f};a.format=function(m,f){for(var l=\"{\",r=!1,u,t,g,d,k=[],b;m;){l=m.indexOf(l);if(-1===l)break;u=m.slice(0,l);if(r){u=u.split(\":\");t=u.shift().split(\".\");d=t.length;b=f;for(g=0;g<d;g++)b=b[t[g]];u.length&&(b=a.formatSingle(u.join(\":\"),b));k.push(b)}else k.push(u);\nm=m.slice(l+1);l=(r=!r)?\"}\":\"{\"}k.push(m);return k.join(\"\")};a.getMagnitude=function(a){return Math.pow(10,Math.floor(Math.log(a)/Math.LN10))};a.normalizeTickInterval=function(m,f,l,r,u){var t,g=m;l=a.pick(l,1);t=m/l;f||(f=u?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===r&&(1===l?f=a.grep(f,function(a){return 0===a%1}):.1>=l&&(f=[1/l])));for(r=0;r<f.length&&!(g=f[r],u&&g*l>=m||!u&&t<=(f[r]+(f[r+1]||f[r]))/2);r++);return g=a.correctFloat(g*l,-Math.round(Math.log(.001)/Math.LN10))};a.stableSort=\nfunction(a,f){var l=a.length,r,m;for(m=0;m<l;m++)a[m].safeI=m;a.sort(function(a,g){r=f(a,g);return 0===r?a.safeI-g.safeI:r});for(m=0;m<l;m++)delete a[m].safeI};a.arrayMin=function(a){for(var f=a.length,l=a[0];f--;)a[f]<l&&(l=a[f]);return l};a.arrayMax=function(a){for(var f=a.length,l=a[0];f--;)a[f]>l&&(l=a[f]);return l};a.destroyObjectProperties=function(m,f){a.objectEach(m,function(a,r){a&&a!==f&&a.destroy&&a.destroy();delete m[r]})};a.discardElement=function(m){var f=a.garbageBin;f||(f=a.createElement(\"div\"));\nm&&f.appendChild(m);f.innerHTML=\"\"};a.correctFloat=function(a,f){return parseFloat(a.toPrecision(f||14))};a.setAnimation=function(m,f){f.renderer.globalAnimation=a.pick(m,f.options.chart.animation,!0)};a.animObject=function(m){return a.isObject(m)?a.merge(m):{duration:m?500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(m,f,l,r){m=+m||0;f=+f;var u=a.defaultOptions.lang,t=(m.toString().split(\".\")[1]||\"\").split(\"e\")[0].length,\ng,d,k=m.toString().split(\"e\");-1===f?f=Math.min(t,20):a.isNumber(f)||(f=2);d=(Math.abs(k[1]?k[0]:m)+Math.pow(10,-Math.max(f,t)-1)).toFixed(f);t=String(a.pInt(d));g=3<t.length?t.length%3:0;l=a.pick(l,u.decimalPoint);r=a.pick(r,u.thousandsSep);m=(0>m?\"-\":\"\")+(g?t.substr(0,g)+r:\"\");m+=t.substr(g).replace(/(\\d{3})(?=\\d)/g,\"$1\"+r);f&&(m+=l+d.slice(-f));k[1]&&(m+=\"e\"+k[1]);return m};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(m,f,l){if(\"width\"===f)return Math.min(m.offsetWidth,\nm.scrollWidth)-a.getStyle(m,\"padding-left\")-a.getStyle(m,\"padding-right\");if(\"height\"===f)return Math.min(m.offsetHeight,m.scrollHeight)-a.getStyle(m,\"padding-top\")-a.getStyle(m,\"padding-bottom\");if(m=E.getComputedStyle(m,void 0))m=m.getPropertyValue(f),a.pick(l,!0)&&(m=a.pInt(m));return m};a.inArray=function(a,f){return f.indexOf?f.indexOf(a):[].indexOf.call(f,a)};a.grep=function(a,f){return[].filter.call(a,f)};a.find=function(a,f){return[].find.call(a,f)};a.map=function(a,f){for(var l=[],r=0,m=\na.length;r<m;r++)l[r]=f.call(a[r],a[r],r,a);return l};a.offset=function(a){var f=F.documentElement;a=a.getBoundingClientRect();return{top:a.top+(E.pageYOffset||f.scrollTop)-(f.clientTop||0),left:a.left+(E.pageXOffset||f.scrollLeft)-(f.clientLeft||0)}};a.stop=function(a,f){for(var l=C.length;l--;)C[l].elem!==a||f&&f!==C[l].prop||(C[l].stopped=!0)};a.each=function(a,f,l){return Array.prototype.forEach.call(a,f,l)};a.objectEach=function(a,f,l){for(var r in a)a.hasOwnProperty(r)&&f.call(l,a[r],r,a)};\na.addEvent=function(m,f,l){function r(a){a.target=a.srcElement||E;l.call(m,a)}var u=m.hcEvents=m.hcEvents||{};m.addEventListener?m.addEventListener(f,l,!1):m.attachEvent&&(m.hcEventsIE||(m.hcEventsIE={}),l.hcGetKey||(l.hcGetKey=a.uniqueKey()),m.hcEventsIE[l.hcGetKey]=r,m.attachEvent(\"on\"+f,r));u[f]||(u[f]=[]);u[f].push(l);return function(){a.removeEvent(m,f,l)}};a.removeEvent=function(m,f,l){function r(a,b){m.removeEventListener?m.removeEventListener(a,b,!1):m.attachEvent&&(b=m.hcEventsIE[b.hcGetKey],\nm.detachEvent(\"on\"+a,b))}function u(){var d,b;m.nodeName&&(f?(d={},d[f]=!0):d=g,a.objectEach(d,function(a,d){if(g[d])for(b=g[d].length;b--;)r(d,g[d][b])}))}var t,g=m.hcEvents,d;g&&(f?(t=g[f]||[],l?(d=a.inArray(l,t),-1<d&&(t.splice(d,1),g[f]=t),r(f,l)):(u(),g[f]=[])):(u(),m.hcEvents={}))};a.fireEvent=function(m,f,l,r){var u;u=m.hcEvents;var t,g;l=l||{};if(F.createEvent&&(m.dispatchEvent||m.fireEvent))u=F.createEvent(\"Events\"),u.initEvent(f,!0,!0),a.extend(u,l),m.dispatchEvent?m.dispatchEvent(u):m.fireEvent(f,\nu);else if(u)for(u=u[f]||[],t=u.length,l.target||a.extend(l,{preventDefault:function(){l.defaultPrevented=!0},target:m,type:f}),f=0;f<t;f++)(g=u[f])&&!1===g.call(m,l)&&l.preventDefault();r&&!l.defaultPrevented&&r(l)};a.animate=function(m,f,l){var r,u=\"\",t,g,d;a.isObject(l)||(d=arguments,l={duration:d[2],easing:d[3],complete:d[4]});a.isNumber(l.duration)||(l.duration=400);l.easing=\"function\"===typeof l.easing?l.easing:Math[l.easing]||Math.easeInOutSine;l.curAnim=a.merge(f);a.objectEach(f,function(d,\nb){a.stop(m,b);g=new a.Fx(m,l,b);t=null;\"d\"===b?(g.paths=g.initPath(m,m.d,f.d),g.toD=f.d,r=0,t=1):m.attr?r=m.attr(b):(r=parseFloat(a.getStyle(m,b))||0,\"opacity\"!==b&&(u=\"px\"));t||(t=d);t&&t.match&&t.match(\"px\")&&(t=t.replace(/px/g,\"\"));g.run(r,t,u)})};a.seriesType=function(m,f,l,r,u){var t=a.getOptions(),g=a.seriesTypes;t.plotOptions[m]=a.merge(t.plotOptions[f],l);g[m]=a.extendClass(g[f]||function(){},r);g[m].prototype.type=m;u&&(g[m].prototype.pointClass=a.extendClass(a.Point,u));return g[m]};a.uniqueKey=\nfunction(){var a=Math.random().toString(36).substring(2,9),f=0;return function(){return\"highcharts-\"+a+\"-\"+f++}}();E.jQuery&&(E.jQuery.fn.highcharts=function(){var m=[].slice.call(arguments);if(this[0])return m[0]?(new (a[a.isString(m[0])?m.shift():\"Chart\"])(this[0],m[0],m[1]),this):A[a.attr(this[0],\"data-highcharts-chart\")]});F&&!F.defaultView&&(a.getStyle=function(m,f){var l={width:\"clientWidth\",height:\"clientHeight\"}[f];if(m.style[f])return a.pInt(m.style[f]);\"opacity\"===f&&(f=\"filter\");if(l)return m.style.zoom=\n1,Math.max(m[l]-2*a.getStyle(m,\"padding\"),0);m=m.currentStyle[f.replace(/\\-(\\w)/g,function(a,f){return f.toUpperCase()})];\"filter\"===f&&(m=m.replace(/alpha\\(opacity=([0-9]+)\\)/,function(a,f){return f/100}));return\"\"===m?1:a.pInt(m)});Array.prototype.forEach||(a.each=function(a,f,l){for(var r=0,m=a.length;r<m;r++)if(!1===f.call(l,a[r],r,a))return r});Array.prototype.indexOf||(a.inArray=function(a,f){var l,r=0;if(f)for(l=f.length;r<l;r++)if(f[r]===a)return r;return-1});Array.prototype.filter||(a.grep=\nfunction(a,f){for(var l=[],r=0,m=a.length;r<m;r++)f(a[r],r)&&l.push(a[r]);return l});Array.prototype.find||(a.find=function(a,f){var l,r=a.length;for(l=0;l<r;l++)if(f(a[l],l))return a[l]})})(M);(function(a){var C=a.each,A=a.isNumber,F=a.map,E=a.merge,m=a.pInt;a.Color=function(f){if(!(this instanceof a.Color))return new a.Color(f);this.init(f)};a.Color.prototype={parsers:[{regex:/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,parse:function(a){return[m(a[1]),\nm(a[2]),m(a[3]),parseFloat(a[4],10)]}},{regex:/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,parse:function(a){return[m(a[1]),m(a[2]),m(a[3]),1]}}],names:{none:\"rgba(255,255,255,0)\",white:\"#ffffff\",black:\"#000000\"},init:function(f){var l,r,m,t;if((this.input=f=this.names[f&&f.toLowerCase?f.toLowerCase():\"\"]||f)&&f.stops)this.stops=F(f.stops,function(g){return new a.Color(g[1])});else if(f&&\"#\"===f.charAt()&&(l=f.length,f=parseInt(f.substr(1),16),7===l?r=[(f&16711680)>>16,(f&65280)>>\n8,f&255,1]:4===l&&(r=[(f&3840)>>4|(f&3840)>>8,(f&240)>>4|f&240,(f&15)<<4|f&15,1])),!r)for(m=this.parsers.length;m--&&!r;)t=this.parsers[m],(l=t.regex.exec(f))&&(r=t.parse(l));this.rgba=r||[]},get:function(a){var f=this.input,r=this.rgba,m;this.stops?(m=E(f),m.stops=[].concat(m.stops),C(this.stops,function(f,g){m.stops[g]=[m.stops[g][0],f.get(a)]})):m=r&&A(r[0])?\"rgb\"===a||!a&&1===r[3]?\"rgb(\"+r[0]+\",\"+r[1]+\",\"+r[2]+\")\":\"a\"===a?r[3]:\"rgba(\"+r.join(\",\")+\")\":f;return m},brighten:function(a){var f,r=this.rgba;\nif(this.stops)C(this.stops,function(f){f.brighten(a)});else if(A(a)&&0!==a)for(f=0;3>f;f++)r[f]+=m(255*a),0>r[f]&&(r[f]=0),255<r[f]&&(r[f]=255);return this},setOpacity:function(a){this.rgba[3]=a;return this},tweenTo:function(a,l){var f,m;a.rgba.length?(f=this.rgba,a=a.rgba,m=1!==a[3]||1!==f[3],a=(m?\"rgba(\":\"rgb(\")+Math.round(a[0]+(f[0]-a[0])*(1-l))+\",\"+Math.round(a[1]+(f[1]-a[1])*(1-l))+\",\"+Math.round(a[2]+(f[2]-a[2])*(1-l))+(m?\",\"+(a[3]+(f[3]-a[3])*(1-l)):\"\")+\")\"):a=a.input||\"none\";return a}};a.color=\nfunction(f){return new a.Color(f)}})(M);(function(a){var C,A,F=a.addEvent,E=a.animate,m=a.attr,f=a.charts,l=a.color,r=a.css,u=a.createElement,t=a.defined,g=a.deg2rad,d=a.destroyObjectProperties,k=a.doc,b=a.each,e=a.extend,v=a.erase,y=a.grep,n=a.hasTouch,D=a.inArray,J=a.isArray,c=a.isFirefox,G=a.isMS,q=a.isObject,B=a.isString,K=a.isWebKit,p=a.merge,z=a.noop,I=a.objectEach,L=a.pick,h=a.pInt,w=a.removeEvent,P=a.stop,H=a.svg,O=a.SVG_NS,Q=a.symbolSizes,R=a.win;C=a.SVGElement=function(){return this};e(C.prototype,\n{opacity:1,SVG_NS:O,textProps:\"direction fontSize fontWeight fontFamily fontStyle color lineHeight width textAlign textDecoration textOverflow textOutline\".split(\" \"),init:function(a,h){this.element=\"span\"===h?u(h):k.createElementNS(this.SVG_NS,h);this.renderer=a},animate:function(x,h,c){h=a.animObject(L(h,this.renderer.globalAnimation,!0));0!==h.duration?(c&&(h.complete=c),E(this,x,h)):(this.attr(x,null,c),h.step&&h.step.call(this));return this},colorGradient:function(x,h,c){var w=this.renderer,\ne,q,N,d,n,g,k,H,G,v,z=[],f;x.radialGradient?q=\"radialGradient\":x.linearGradient&&(q=\"linearGradient\");q&&(N=x[q],n=w.gradients,k=x.stops,v=c.radialReference,J(N)&&(x[q]=N={x1:N[0],y1:N[1],x2:N[2],y2:N[3],gradientUnits:\"userSpaceOnUse\"}),\"radialGradient\"===q&&v&&!t(N.gradientUnits)&&(d=N,N=p(N,w.getRadialAttr(v,d),{gradientUnits:\"userSpaceOnUse\"})),I(N,function(a,x){\"id\"!==x&&z.push(x,a)}),I(k,function(a){z.push(a)}),z=z.join(\",\"),n[z]?v=n[z].attr(\"id\"):(N.id=v=a.uniqueKey(),n[z]=g=w.createElement(q).attr(N).add(w.defs),\ng.radAttr=d,g.stops=[],b(k,function(x){0===x[1].indexOf(\"rgba\")?(e=a.color(x[1]),H=e.get(\"rgb\"),G=e.get(\"a\")):(H=x[1],G=1);x=w.createElement(\"stop\").attr({offset:x[0],\"stop-color\":H,\"stop-opacity\":G}).add(g);g.stops.push(x)})),f=\"url(\"+w.url+\"#\"+v+\")\",c.setAttribute(h,f),c.gradient=z,x.toString=function(){return f})},applyTextOutline:function(x){var h=this.element,c,w,p,e,q;-1!==x.indexOf(\"contrast\")&&(x=x.replace(/contrast/g,this.renderer.getContrast(h.style.fill)));x=x.split(\" \");w=x[x.length-1];\nif((p=x[0])&&\"none\"!==p&&a.svg){this.fakeTS=!0;x=[].slice.call(h.getElementsByTagName(\"tspan\"));this.ySetter=this.xSetter;p=p.replace(/(^[\\d\\.]+)(.*?)$/g,function(a,x,h){return 2*x+h});for(q=x.length;q--;)c=x[q],\"highcharts-text-outline\"===c.getAttribute(\"class\")&&v(x,h.removeChild(c));e=h.firstChild;b(x,function(a,x){0===x&&(a.setAttribute(\"x\",h.getAttribute(\"x\")),x=h.getAttribute(\"y\"),a.setAttribute(\"y\",x||0),null===x&&h.setAttribute(\"y\",0));a=a.cloneNode(1);m(a,{\"class\":\"highcharts-text-outline\",\nfill:w,stroke:w,\"stroke-width\":p,\"stroke-linejoin\":\"round\"});h.insertBefore(a,e)})}},attr:function(a,h,c,w){var x,p=this.element,e,q=this,b,N;\"string\"===typeof a&&void 0!==h&&(x=a,a={},a[x]=h);\"string\"===typeof a?q=(this[a+\"Getter\"]||this._defaultGetter).call(this,a,p):(I(a,function(x,h){b=!1;w||P(this,h);this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)$/.test(h)&&(e||(this.symbolAttr(a),e=!0),b=!0);!this.rotation||\"x\"!==h&&\"y\"!==h||(this.doTransform=!0);b||(N=this[h+\"Setter\"]||\nthis._defaultSetter,N.call(this,x,h,p),this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(h)&&this.updateShadows(h,x,N))},this),this.afterSetters());c&&c();return q},afterSetters:function(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)},updateShadows:function(a,h,c){for(var x=this.shadows,w=x.length;w--;)c.call(x[w],\"height\"===a?Math.max(h-(x[w].cutHeight||0),0):\"d\"===a?this.d:h,a,x[w])},addClass:function(a,h){var x=this.attr(\"class\")||\"\";-1===x.indexOf(a)&&\n(h||(a=(x+(x?\" \":\"\")+a).replace(\" \",\" \")),this.attr(\"class\",a));return this},hasClass:function(a){return-1!==D(a,(this.attr(\"class\")||\"\").split(\" \"))},removeClass:function(a){return this.attr(\"class\",(this.attr(\"class\")||\"\").replace(a,\"\"))},symbolAttr:function(a){var x=this;b(\"x y r start end width height innerR anchorX anchorY\".split(\" \"),function(h){x[h]=L(a[h],x[h])});x.attr({d:x.renderer.symbols[x.symbolName](x.x,x.y,x.width,x.height,x)})},clip:function(a){return this.attr(\"clip-path\",a?\"url(\"+\nthis.renderer.url+\"#\"+a.id+\")\":\"none\")},crisp:function(a,h){var x=this,c={},w;h=h||a.strokeWidth||0;w=Math.round(h)%2/2;a.x=Math.floor(a.x||x.x||0)+w;a.y=Math.floor(a.y||x.y||0)+w;a.width=Math.floor((a.width||x.width||0)-2*w);a.height=Math.floor((a.height||x.height||0)-2*w);t(a.strokeWidth)&&(a.strokeWidth=h);I(a,function(a,h){x[h]!==a&&(x[h]=c[h]=a)});return c},css:function(a){var x=this.styles,c={},w=this.element,p,q=\"\",b,d=!x,n=[\"textOutline\",\"textOverflow\",\"width\"];a&&a.color&&(a.fill=a.color);\nx&&I(a,function(a,h){a!==x[h]&&(c[h]=a,d=!0)});d&&(x&&(a=e(x,c)),p=this.textWidth=a&&a.width&&\"auto\"!==a.width&&\"text\"===w.nodeName.toLowerCase()&&h(a.width),this.styles=a,p&&!H&&this.renderer.forExport&&delete a.width,G&&!H?r(this.element,a):(b=function(a,x){return\"-\"+x.toLowerCase()},I(a,function(a,x){-1===D(x,n)&&(q+=x.replace(/([A-Z])/g,b)+\":\"+a+\";\")}),q&&m(w,\"style\",q)),this.added&&(\"text\"===this.element.nodeName&&this.renderer.buildText(this),a&&a.textOutline&&this.applyTextOutline(a.textOutline)));\nreturn this},strokeWidth:function(){return this[\"stroke-width\"]||0},on:function(a,h){var x=this,c=x.element;n&&\"click\"===a?(c.ontouchstart=function(a){x.touchEventFired=Date.now();a.preventDefault();h.call(c,a)},c.onclick=function(a){(-1===R.navigator.userAgent.indexOf(\"Android\")||1100<Date.now()-(x.touchEventFired||0))&&h.call(c,a)}):c[\"on\"+a]=h;return this},setRadialReference:function(a){var x=this.renderer.gradients[this.element.gradient];this.element.radialReference=a;x&&x.radAttr&&x.animate(this.renderer.getRadialAttr(a,\nx.radAttr));return this},translate:function(a,h){return this.attr({translateX:a,translateY:h})},invert:function(a){this.inverted=a;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,h=this.translateY||0,c=this.scaleX,w=this.scaleY,p=this.inverted,e=this.rotation,q=this.element;p&&(a+=this.width,h+=this.height);a=[\"translate(\"+a+\",\"+h+\")\"];p?a.push(\"rotate(90) scale(-1,1)\"):e&&a.push(\"rotate(\"+e+\" \"+(q.getAttribute(\"x\")||0)+\" \"+(q.getAttribute(\"y\")||0)+\")\");(t(c)||\nt(w))&&a.push(\"scale(\"+L(c,1)+\" \"+L(w,1)+\")\");a.length&&q.setAttribute(\"transform\",a.join(\" \"))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,h,c){var x,w,p,e,q={};w=this.renderer;p=w.alignedObjects;var b,d;if(a){if(this.alignOptions=a,this.alignByTranslate=h,!c||B(c))this.alignTo=x=c||\"renderer\",v(p,this),p.push(this),c=null}else a=this.alignOptions,h=this.alignByTranslate,x=this.alignTo;c=L(c,w[x],w);x=a.align;w=a.verticalAlign;p=(c.x||0)+(a.x||\n0);e=(c.y||0)+(a.y||0);\"right\"===x?b=1:\"center\"===x&&(b=2);b&&(p+=(c.width-(a.width||0))/b);q[h?\"translateX\":\"x\"]=Math.round(p);\"bottom\"===w?d=1:\"middle\"===w&&(d=2);d&&(e+=(c.height-(a.height||0))/d);q[h?\"translateY\":\"y\"]=Math.round(e);this[this.placed?\"animate\":\"attr\"](q);this.placed=!0;this.alignAttr=q;return this},getBBox:function(a,h){var x,c=this.renderer,w,p=this.element,q=this.styles,d,n=this.textStr,k,N=c.cache,H=c.cacheKeys,G;h=L(h,this.rotation);w=h*g;d=q&&q.fontSize;void 0!==n&&(G=n.toString(),\n-1===G.indexOf(\"\\x3c\")&&(G=G.replace(/[0-9]/g,\"0\")),G+=[\"\",h||0,d,q&&q.width,q&&q.textOverflow].join());G&&!a&&(x=N[G]);if(!x){if(p.namespaceURI===this.SVG_NS||c.forExport){try{(k=this.fakeTS&&function(a){b(p.querySelectorAll(\".highcharts-text-outline\"),function(x){x.style.display=a})})&&k(\"none\"),x=p.getBBox?e({},p.getBBox()):{width:p.offsetWidth,height:p.offsetHeight},k&&k(\"\")}catch(W){}if(!x||0>x.width)x={width:0,height:0}}else x=this.htmlGetBBox();c.isSVG&&(a=x.width,c=x.height,q&&\"11px\"===q.fontSize&&\n17===Math.round(c)&&(x.height=c=14),h&&(x.width=Math.abs(c*Math.sin(w))+Math.abs(a*Math.cos(w)),x.height=Math.abs(c*Math.cos(w))+Math.abs(a*Math.sin(w))));if(G&&0<x.height){for(;250<H.length;)delete N[H.shift()];N[G]||H.push(G);N[G]=x}}return x},show:function(a){return this.attr({visibility:a?\"inherit\":\"visible\"})},hide:function(){return this.attr({visibility:\"hidden\"})},fadeOut:function(a){var x=this;x.animate({opacity:0},{duration:a||150,complete:function(){x.attr({y:-9999})}})},add:function(a){var x=\nthis.renderer,h=this.element,c;a&&(this.parentGroup=a);this.parentInverted=a&&a.inverted;void 0!==this.textStr&&x.buildText(this);this.added=!0;if(!a||a.handleZ||this.zIndex)c=this.zIndexSetter();c||(a?a.element:x.box).appendChild(h);if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var x=a.parentNode;x&&x.removeChild(a)},destroy:function(){var a=this,h=a.element||{},c=a.renderer.isSVG&&\"SPAN\"===h.nodeName&&a.parentGroup,w=h.ownerSVGElement;h.onclick=h.onmouseout=h.onmouseover=h.onmousemove=\nh.point=null;P(a);a.clipPath&&w&&(b(w.querySelectorAll(\"[clip-path]\"),function(x){-1<x.getAttribute(\"clip-path\").indexOf(a.clipPath.element.id+\")\")&&x.removeAttribute(\"clip-path\")}),a.clipPath=a.clipPath.destroy());if(a.stops){for(w=0;w<a.stops.length;w++)a.stops[w]=a.stops[w].destroy();a.stops=null}a.safeRemoveChild(h);for(a.destroyShadows();c&&c.div&&0===c.div.childNodes.length;)h=c.parentGroup,a.safeRemoveChild(c.div),delete c.div,c=h;a.alignTo&&v(a.renderer.alignedObjects,a);I(a,function(x,h){delete a[h]});\nreturn null},shadow:function(a,h,c){var x=[],w,p,q=this.element,e,b,d,n;if(!a)this.destroyShadows();else if(!this.shadows){b=L(a.width,3);d=(a.opacity||.15)/b;n=this.parentInverted?\"(-1,-1)\":\"(\"+L(a.offsetX,1)+\", \"+L(a.offsetY,1)+\")\";for(w=1;w<=b;w++)p=q.cloneNode(0),e=2*b+1-2*w,m(p,{isShadow:\"true\",stroke:a.color||\"#000000\",\"stroke-opacity\":d*w,\"stroke-width\":e,transform:\"translate\"+n,fill:\"none\"}),c&&(m(p,\"height\",Math.max(m(p,\"height\")-e,0)),p.cutHeight=e),h?h.element.appendChild(p):q.parentNode.insertBefore(p,\nq),x.push(p);this.shadows=x}return this},destroyShadows:function(){b(this.shadows||[],function(a){this.safeRemoveChild(a)},this);this.shadows=void 0},xGetter:function(a){\"circle\"===this.element.nodeName&&(\"x\"===a?a=\"cx\":\"y\"===a&&(a=\"cy\"));return this._defaultGetter(a)},_defaultGetter:function(a){a=L(this[a],this.element?this.element.getAttribute(a):null,0);/^[\\-0-9\\.]+$/.test(a)&&(a=parseFloat(a));return a},dSetter:function(a,h,c){a&&a.join&&(a=a.join(\" \"));/(NaN| {2}|^$)/.test(a)&&(a=\"M 0 0\");this[h]!==\na&&(c.setAttribute(h,a),this[h]=a)},dashstyleSetter:function(a){var x,c=this[\"stroke-width\"];\"inherit\"===c&&(c=1);if(a=a&&a.toLowerCase()){a=a.replace(\"shortdashdotdot\",\"3,1,1,1,1,1,\").replace(\"shortdashdot\",\"3,1,1,1\").replace(\"shortdot\",\"1,1,\").replace(\"shortdash\",\"3,1,\").replace(\"longdash\",\"8,3,\").replace(/dot/g,\"1,3,\").replace(\"dash\",\"4,3,\").replace(/,$/,\"\").split(\",\");for(x=a.length;x--;)a[x]=h(a[x])*c;a=a.join(\",\").replace(/NaN/g,\"none\");this.element.setAttribute(\"stroke-dasharray\",a)}},alignSetter:function(a){this.element.setAttribute(\"text-anchor\",\n{left:\"start\",center:\"middle\",right:\"end\"}[a])},opacitySetter:function(a,h,c){this[h]=a;c.setAttribute(h,a)},titleSetter:function(a){var h=this.element.getElementsByTagName(\"title\")[0];h||(h=k.createElementNS(this.SVG_NS,\"title\"),this.element.appendChild(h));h.firstChild&&h.removeChild(h.firstChild);h.appendChild(k.createTextNode(String(L(a),\"\").replace(/<[^>]*>/g,\"\")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},fillSetter:function(a,\nh,c){\"string\"===typeof a?c.setAttribute(h,a):a&&this.colorGradient(a,h,c)},visibilitySetter:function(a,h,c){\"inherit\"===a?c.removeAttribute(h):this[h]!==a&&c.setAttribute(h,a);this[h]=a},zIndexSetter:function(a,c){var x=this.renderer,w=this.parentGroup,p=(w||x).element||x.box,q,e=this.element,b;q=this.added;var d;t(a)&&(e.zIndex=a,a=+a,this[c]===a&&(q=!1),this[c]=a);if(q){(a=this.zIndex)&&w&&(w.handleZ=!0);c=p.childNodes;for(d=0;d<c.length&&!b;d++)w=c[d],q=w.zIndex,w!==e&&(h(q)>a||!t(a)&&t(q)||0>\na&&!t(q)&&p!==x.box)&&(p.insertBefore(e,w),b=!0);b||p.appendChild(e)}return b},_defaultSetter:function(a,h,c){c.setAttribute(h,a)}});C.prototype.yGetter=C.prototype.xGetter;C.prototype.translateXSetter=C.prototype.translateYSetter=C.prototype.rotationSetter=C.prototype.verticalAlignSetter=C.prototype.scaleXSetter=C.prototype.scaleYSetter=function(a,h){this[h]=a;this.doTransform=!0};C.prototype[\"stroke-widthSetter\"]=C.prototype.strokeSetter=function(a,h,c){this[h]=a;this.stroke&&this[\"stroke-width\"]?\n(C.prototype.fillSetter.call(this,this.stroke,\"stroke\",c),c.setAttribute(\"stroke-width\",this[\"stroke-width\"]),this.hasStroke=!0):\"stroke-width\"===h&&0===a&&this.hasStroke&&(c.removeAttribute(\"stroke\"),this.hasStroke=!1)};A=a.SVGRenderer=function(){this.init.apply(this,arguments)};e(A.prototype,{Element:C,SVG_NS:O,init:function(a,h,w,p,q,e){var x;p=this.createElement(\"svg\").attr({version:\"1.1\",\"class\":\"highcharts-root\"}).css(this.getStyle(p));x=p.element;a.appendChild(x);-1===a.innerHTML.indexOf(\"xmlns\")&&\nm(x,\"xmlns\",this.SVG_NS);this.isSVG=!0;this.box=x;this.boxWrapper=p;this.alignedObjects=[];this.url=(c||K)&&k.getElementsByTagName(\"base\").length?R.location.href.replace(/#.*?$/,\"\").replace(/<[^>]*>/g,\"\").replace(/([\\('\\)])/g,\"\\\\$1\").replace(/ /g,\"%20\"):\"\";this.createElement(\"desc\").add().element.appendChild(k.createTextNode(\"Created with Highcharts 5.0.14\"));this.defs=this.createElement(\"defs\").add();this.allowHTML=e;this.forExport=q;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=\n0;this.setSize(h,w,!1);var b;c&&a.getBoundingClientRect&&(h=function(){r(a,{left:0,top:0});b=a.getBoundingClientRect();r(a,{left:Math.ceil(b.left)-b.left+\"px\",top:Math.ceil(b.top)-b.top+\"px\"})},h(),this.unSubPixelFix=F(R,\"resize\",h))},getStyle:function(a){return this.style=e({fontFamily:'\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif',fontSize:\"12px\"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=\nthis.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();d(this.gradients||{});this.gradients=null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var h=new this.Element;h.init(this,a);return h},draw:z,getRadialAttr:function(a,h){return{cx:a[0]-a[2]/2+h.cx*a[2],cy:a[1]-a[2]/2+h.cy*a[2],r:h.r*a[2]}},getSpanWidth:function(a,h){var c=a.getBBox(!0).width;!H&&this.forExport&&(c=this.measureSpanWidth(h.firstChild.data,\na.styles));return c},applyEllipsis:function(a,h,c,w){var x=a.rotation,p=c,q,e=0,b=c.length,d=function(a){h.removeChild(h.firstChild);a&&h.appendChild(k.createTextNode(a))},n;a.rotation=0;p=this.getSpanWidth(a,h);if(n=p>w){for(;e<=b;)q=Math.ceil((e+b)/2),p=c.substring(0,q)+\"\\u2026\",d(p),p=this.getSpanWidth(a,h),e===b?e=b+1:p>w?b=q-1:e=q;0===b&&d(\"\")}a.rotation=x;return n},buildText:function(a){var c=a.element,w=this,x=w.forExport,p=L(a.textStr,\"\").toString(),q=-1!==p.indexOf(\"\\x3c\"),e=c.childNodes,\nd,n,g,G,v=m(c,\"x\"),z=a.styles,f=a.textWidth,I=z&&z.lineHeight,B=z&&z.textOutline,D=z&&\"ellipsis\"===z.textOverflow,l=z&&\"nowrap\"===z.whiteSpace,P=z&&z.fontSize,t,J,u=e.length,z=f&&!a.added&&this.box,K=function(a){var x;x=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:P||w.style.fontSize||12;return I?h(I):w.fontMetrics(x,a.getAttribute(\"style\")?a:c).h};t=[p,D,l,I,B,P,f].join();if(t!==a.textCache){for(a.textCache=t;u--;)c.removeChild(e[u]);q||B||D||f||-1!==p.indexOf(\" \")?(d=/<.*class=\"([^\"]+)\".*>/,\nn=/<.*style=\"([^\"]+)\".*>/,g=/<.*href=\"([^\"]+)\".*>/,z&&z.appendChild(c),p=q?p.replace(/<(b|strong)>/g,'\\x3cspan style\\x3d\"font-weight:bold\"\\x3e').replace(/<(i|em)>/g,'\\x3cspan style\\x3d\"font-style:italic\"\\x3e').replace(/<a/g,\"\\x3cspan\").replace(/<\\/(b|strong|i|em|a)>/g,\"\\x3c/span\\x3e\").split(/<br.*?>/g):[p],p=y(p,function(a){return\"\"!==a}),b(p,function(h,p){var q,e=0;h=h.replace(/^\\s+|\\s+$/g,\"\").replace(/<span/g,\"|||\\x3cspan\").replace(/<\\/span>/g,\"\\x3c/span\\x3e|||\");q=h.split(\"|||\");b(q,function(h){if(\"\"!==\nh||1===q.length){var b={},z=k.createElementNS(w.SVG_NS,\"tspan\"),y,I;d.test(h)&&(y=h.match(d)[1],m(z,\"class\",y));n.test(h)&&(I=h.match(n)[1].replace(/(;| |^)color([ :])/,\"$1fill$2\"),m(z,\"style\",I));g.test(h)&&!x&&(m(z,\"onclick\",'location.href\\x3d\"'+h.match(g)[1]+'\"'),r(z,{cursor:\"pointer\"}));h=(h.replace(/<(.|\\n)*?>/g,\"\")||\" \").replace(/&lt;/g,\"\\x3c\").replace(/&gt;/g,\"\\x3e\");if(\" \"!==h){z.appendChild(k.createTextNode(h));e?b.dx=0:p&&null!==v&&(b.x=v);m(z,b);c.appendChild(z);!e&&J&&(!H&&x&&r(z,{display:\"block\"}),\nm(z,\"dy\",K(z)));if(f){b=h.replace(/([^\\^])-/g,\"$1- \").split(\" \");y=1<q.length||p||1<b.length&&!l;var B=[],N,P=K(z),t=a.rotation;for(D&&(G=w.applyEllipsis(a,z,h,f));!D&&y&&(b.length||B.length);)a.rotation=0,N=w.getSpanWidth(a,z),h=N>f,void 0===G&&(G=h),h&&1!==b.length?(z.removeChild(z.firstChild),B.unshift(b.pop())):(b=B,B=[],b.length&&!l&&(z=k.createElementNS(O,\"tspan\"),m(z,{dy:P,x:v}),I&&m(z,\"style\",I),c.appendChild(z)),N>f&&(f=N)),b.length&&z.appendChild(k.createTextNode(b.join(\" \").replace(/- /g,\n\"-\")));a.rotation=t}e++}}});J=J||c.childNodes.length}),G&&a.attr(\"title\",a.textStr),z&&z.removeChild(c),B&&a.applyTextOutline&&a.applyTextOutline(B)):c.appendChild(k.createTextNode(p.replace(/&lt;/g,\"\\x3c\").replace(/&gt;/g,\"\\x3e\")))}},getContrast:function(a){a=l(a).rgba;return 510<a[0]+a[1]+a[2]?\"#000000\":\"#FFFFFF\"},button:function(a,h,c,w,q,b,d,n,g){var x=this.label(a,h,c,g,null,null,null,null,\"button\"),k=0;x.attr(p({padding:8,r:2},q));var z,H,v,f;q=p({fill:\"#f7f7f7\",stroke:\"#cccccc\",\"stroke-width\":1,\nstyle:{color:\"#333333\",cursor:\"pointer\",fontWeight:\"normal\"}},q);z=q.style;delete q.style;b=p(q,{fill:\"#e6e6e6\"},b);H=b.style;delete b.style;d=p(q,{fill:\"#e6ebf5\",style:{color:\"#000000\",fontWeight:\"bold\"}},d);v=d.style;delete d.style;n=p(q,{style:{color:\"#cccccc\"}},n);f=n.style;delete n.style;F(x.element,G?\"mouseover\":\"mouseenter\",function(){3!==k&&x.setState(1)});F(x.element,G?\"mouseout\":\"mouseleave\",function(){3!==k&&x.setState(k)});x.setState=function(a){1!==a&&(x.state=k=a);x.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass(\"highcharts-button-\"+\n[\"normal\",\"hover\",\"pressed\",\"disabled\"][a||0]);x.attr([q,b,d,n][a||0]).css([z,H,v,f][a||0])};x.attr(q).css(e({cursor:\"default\"},z));return x.on(\"click\",function(a){3!==k&&w.call(x,a)})},crispLine:function(a,h){a[1]===a[4]&&(a[1]=a[4]=Math.round(a[1])-h%2/2);a[2]===a[5]&&(a[2]=a[5]=Math.round(a[2])+h%2/2);return a},path:function(a){var h={fill:\"none\"};J(a)?h.d=a:q(a)&&e(h,a);return this.createElement(\"path\").attr(h)},circle:function(a,h,c){a=q(a)?a:{x:a,y:h,r:c};h=this.createElement(\"circle\");h.xSetter=\nh.ySetter=function(a,h,c){c.setAttribute(\"c\"+h,a)};return h.attr(a)},arc:function(a,h,c,w,p,b){q(a)?(w=a,h=w.y,c=w.r,a=w.x):w={innerR:w,start:p,end:b};a=this.symbol(\"arc\",a,h,c,c,w);a.r=c;return a},rect:function(a,h,c,w,p,b){p=q(a)?a.r:p;var x=this.createElement(\"rect\");a=q(a)?a:void 0===a?{}:{x:a,y:h,width:Math.max(c,0),height:Math.max(w,0)};void 0!==b&&(a.strokeWidth=b,a=x.crisp(a));a.fill=\"none\";p&&(a.r=p);x.rSetter=function(a,h,c){m(c,{rx:a,ry:a})};return x.attr(a)},setSize:function(a,h,c){var w=\nthis.alignedObjects,p=w.length;this.width=a;this.height=h;for(this.boxWrapper.animate({width:a,height:h},{step:function(){this.attr({viewBox:\"0 0 \"+this.attr(\"width\")+\" \"+this.attr(\"height\")})},duration:L(c,!0)?void 0:0});p--;)w[p].align()},g:function(a){var h=this.createElement(\"g\");return a?h.attr({\"class\":\"highcharts-\"+a}):h},image:function(a,h,c,w,p){var x={preserveAspectRatio:\"none\"};1<arguments.length&&e(x,{x:h,y:c,width:w,height:p});x=this.createElement(\"image\").attr(x);x.element.setAttributeNS?\nx.element.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",a):x.element.setAttribute(\"hc-svg-href\",a);return x},symbol:function(a,h,c,w,p,q){var x=this,d,n=/^url\\((.*?)\\)$/,g=n.test(a),z=!g&&(this.symbols[a]?a:\"circle\"),G=z&&this.symbols[z],H=t(h)&&G&&G.call(this.symbols,Math.round(h),Math.round(c),w,p,q),v,y;G?(d=this.path(H),d.attr(\"fill\",\"none\"),e(d,{symbolName:z,x:h,y:c,width:w,height:p}),q&&e(d,q)):g&&(v=a.match(n)[1],d=this.image(v),d.imgwidth=L(Q[v]&&Q[v].width,q&&q.width),d.imgheight=\nL(Q[v]&&Q[v].height,q&&q.height),y=function(){d.attr({width:d.width,height:d.height})},b([\"width\",\"height\"],function(a){d[a+\"Setter\"]=function(a,h){var c={},w=this[\"img\"+h],p=\"width\"===h?\"translateX\":\"translateY\";this[h]=a;t(w)&&(this.element&&this.element.setAttribute(h,w),this.alignByTranslate||(c[p]=((this[h]||0)-w)/2,this.attr(c)))}}),t(h)&&d.attr({x:h,y:c}),d.isImg=!0,t(d.imgwidth)&&t(d.imgheight)?y():(d.attr({width:0,height:0}),u(\"img\",{onload:function(){var a=f[x.chartIndex];0===this.width&&\n(r(this,{position:\"absolute\",top:\"-999em\"}),k.body.appendChild(this));Q[v]={width:this.width,height:this.height};d.imgwidth=this.width;d.imgheight=this.height;d.element&&y();this.parentNode&&this.parentNode.removeChild(this);x.imgCount--;if(!x.imgCount&&a&&a.onload)a.onload()},src:v}),this.imgCount++));return d},symbols:{circle:function(a,h,c,w){return this.arc(a+c/2,h+w/2,c/2,w/2,{start:0,end:2*Math.PI,open:!1})},square:function(a,h,c,w){return[\"M\",a,h,\"L\",a+c,h,a+c,h+w,a,h+w,\"Z\"]},triangle:function(a,\nh,c,w){return[\"M\",a+c/2,h,\"L\",a+c,h+w,a,h+w,\"Z\"]},\"triangle-down\":function(a,h,c,w){return[\"M\",a,h,\"L\",a+c,h,a+c/2,h+w,\"Z\"]},diamond:function(a,h,c,w){return[\"M\",a+c/2,h,\"L\",a+c,h+w/2,a+c/2,h+w,a,h+w/2,\"Z\"]},arc:function(a,h,c,w,p){var q=p.start,b=p.r||c,x=p.r||w||c,e=p.end-.001;c=p.innerR;w=L(p.open,.001>Math.abs(p.end-p.start-2*Math.PI));var d=Math.cos(q),n=Math.sin(q),g=Math.cos(e),e=Math.sin(e);p=.001>p.end-q-Math.PI?0:1;b=[\"M\",a+b*d,h+x*n,\"A\",b,x,0,p,1,a+b*g,h+x*e];t(c)&&b.push(w?\"M\":\"L\",a+c*\ng,h+c*e,\"A\",c,c,0,p,0,a+c*d,h+c*n);b.push(w?\"\":\"Z\");return b},callout:function(a,h,c,w,p){var q=Math.min(p&&p.r||0,c,w),b=q+6,e=p&&p.anchorX;p=p&&p.anchorY;var d;d=[\"M\",a+q,h,\"L\",a+c-q,h,\"C\",a+c,h,a+c,h,a+c,h+q,\"L\",a+c,h+w-q,\"C\",a+c,h+w,a+c,h+w,a+c-q,h+w,\"L\",a+q,h+w,\"C\",a,h+w,a,h+w,a,h+w-q,\"L\",a,h+q,\"C\",a,h,a,h,a+q,h];e&&e>c?p>h+b&&p<h+w-b?d.splice(13,3,\"L\",a+c,p-6,a+c+6,p,a+c,p+6,a+c,h+w-q):d.splice(13,3,\"L\",a+c,w/2,e,p,a+c,w/2,a+c,h+w-q):e&&0>e?p>h+b&&p<h+w-b?d.splice(33,3,\"L\",a,p+6,a-6,p,a,p-6,\na,h+q):d.splice(33,3,\"L\",a,w/2,e,p,a,w/2,a,h+q):p&&p>w&&e>a+b&&e<a+c-b?d.splice(23,3,\"L\",e+6,h+w,e,h+w+6,e-6,h+w,a+q,h+w):p&&0>p&&e>a+b&&e<a+c-b&&d.splice(3,3,\"L\",e-6,h,e,h-6,e+6,h,c-q,h);return d}},clipRect:function(h,c,w,p){var q=a.uniqueKey(),b=this.createElement(\"clipPath\").attr({id:q}).add(this.defs);h=this.rect(h,c,w,p,0).add(b);h.id=q;h.clipPath=b;h.count=0;return h},text:function(a,h,c,w){var p=!H&&this.forExport,q={};if(w&&(this.allowHTML||!this.forExport))return this.html(a,h,c);q.x=Math.round(h||\n0);c&&(q.y=Math.round(c));if(a||0===a)q.text=a;a=this.createElement(\"text\").attr(q);p&&a.css({position:\"absolute\"});w||(a.xSetter=function(a,h,c){var w=c.getElementsByTagName(\"tspan\"),p,q=c.getAttribute(h),b;for(b=0;b<w.length;b++)p=w[b],p.getAttribute(h)===q&&p.setAttribute(h,a);c.setAttribute(h,a)});return a},fontMetrics:function(a,c){a=a||c&&c.style&&c.style.fontSize||this.style&&this.style.fontSize;a=/px/.test(a)?h(a):/em/.test(a)?parseFloat(a)*(c?this.fontMetrics(null,c.parentNode).f:16):12;\nc=24>a?a+3:Math.round(1.2*a);return{h:c,b:Math.round(.8*c),f:a}},rotCorr:function(a,h,c){var w=a;h&&c&&(w=Math.max(w*Math.cos(h*g),4));return{x:-a/3*Math.sin(h*g),y:w}},label:function(h,c,q,d,n,g,k,z,G){var x=this,H=x.g(\"button\"!==G&&\"label\"),v=H.text=x.text(\"\",0,0,k).attr({zIndex:1}),f,y,I=0,B=3,D=0,r,l,P,m,J,O={},L,u,N=/^url\\((.*?)\\)$/.test(d),K=N,U,T,Q,R;G&&H.addClass(\"highcharts-\"+G);K=N;U=function(){return(L||0)%2/2};T=function(){var a=v.element.style,h={};y=(void 0===r||void 0===l||J)&&t(v.textStr)&&\nv.getBBox();H.width=(r||y.width||0)+2*B+D;H.height=(l||y.height||0)+2*B;u=B+x.fontMetrics(a&&a.fontSize,v).b;K&&(f||(H.box=f=x.symbols[d]||N?x.symbol(d):x.rect(),f.addClass((\"button\"===G?\"\":\"highcharts-label-box\")+(G?\" highcharts-\"+G+\"-box\":\"\")),f.add(H),a=U(),h.x=a,h.y=(z?-u:0)+a),h.width=Math.round(H.width),h.height=Math.round(H.height),f.attr(e(h,O)),O={})};Q=function(){var a=D+B,h;h=z?0:u;t(r)&&y&&(\"center\"===J||\"right\"===J)&&(a+={center:.5,right:1}[J]*(r-y.width));if(a!==v.x||h!==v.y)v.attr(\"x\",\na),void 0!==h&&v.attr(\"y\",h);v.x=a;v.y=h};R=function(a,h){f?f.attr(a,h):O[a]=h};H.onAdd=function(){v.add(H);H.attr({text:h||0===h?h:\"\",x:c,y:q});f&&t(n)&&H.attr({anchorX:n,anchorY:g})};H.widthSetter=function(h){r=a.isNumber(h)?h:null};H.heightSetter=function(a){l=a};H[\"text-alignSetter\"]=function(a){J=a};H.paddingSetter=function(a){t(a)&&a!==B&&(B=H.padding=a,Q())};H.paddingLeftSetter=function(a){t(a)&&a!==D&&(D=a,Q())};H.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==I&&(I=a,y&&H.attr({x:P}))};\nH.textSetter=function(a){void 0!==a&&v.textSetter(a);T();Q()};H[\"stroke-widthSetter\"]=function(a,h){a&&(K=!0);L=this[\"stroke-width\"]=a;R(h,a)};H.strokeSetter=H.fillSetter=H.rSetter=function(a,h){\"r\"!==h&&(\"fill\"===h&&a&&(K=!0),H[h]=a);R(h,a)};H.anchorXSetter=function(a,h){n=H.anchorX=a;R(h,Math.round(a)-U()-P)};H.anchorYSetter=function(a,h){g=H.anchorY=a;R(h,a-m)};H.xSetter=function(a){H.x=a;I&&(a-=I*((r||y.width)+2*B));P=Math.round(a);H.attr(\"translateX\",P)};H.ySetter=function(a){m=H.y=Math.round(a);\nH.attr(\"translateY\",m)};var V=H.css;return e(H,{css:function(a){if(a){var h={};a=p(a);b(H.textProps,function(c){void 0!==a[c]&&(h[c]=a[c],delete a[c])});v.css(h)}return V.call(H,a)},getBBox:function(){return{width:y.width+2*B,height:y.height+2*B,x:y.x-B,y:y.y-B}},shadow:function(a){a&&(T(),f&&f.shadow(a));return H},destroy:function(){w(H.element,\"mouseenter\");w(H.element,\"mouseleave\");v&&(v=v.destroy());f&&(f=f.destroy());C.prototype.destroy.call(H);H=x=T=Q=R=null}})}});a.Renderer=A})(M);(function(a){var C=\na.attr,A=a.createElement,F=a.css,E=a.defined,m=a.each,f=a.extend,l=a.isFirefox,r=a.isMS,u=a.isWebKit,t=a.pInt,g=a.SVGRenderer,d=a.win,k=a.wrap;f(a.SVGElement.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&\"SPAN\"===b.tagName&&a.width)delete a.width,this.textWidth=b,this.updateTransform();a&&\"ellipsis\"===a.textOverflow&&(a.whiteSpace=\"nowrap\",a.overflow=\"hidden\");this.styles=f(this.styles,a);F(this.element,a);return this},htmlGetBBox:function(){var a=this.element;\"text\"===a.nodeName&&(a.style.position=\n\"absolute\");return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a=this.renderer,e=this.element,d=this.translateX||0,g=this.translateY||0,n=this.x||0,k=this.y||0,f=this.textAlign||\"left\",c={left:0,center:.5,right:1}[f],G=this.styles;F(e,{marginLeft:d,marginTop:g});this.shadows&&m(this.shadows,function(a){F(a,{marginLeft:d+1,marginTop:g+1})});this.inverted&&m(e.childNodes,function(c){a.invertChild(c,e)});if(\"SPAN\"===e.tagName){var q=\nthis.rotation,B=t(this.textWidth),r=G&&G.whiteSpace,p=[q,f,e.innerHTML,this.textWidth,this.textAlign].join();p!==this.cTT&&(G=a.fontMetrics(e.style.fontSize).b,E(q)&&this.setSpanRotation(q,c,G),F(e,{width:\"\",whiteSpace:r||\"nowrap\"}),e.offsetWidth>B&&/[ \\-]/.test(e.textContent||e.innerText)&&F(e,{width:B+\"px\",display:\"block\",whiteSpace:r||\"normal\"}),this.getSpanCorrection(e.offsetWidth,G,c,q,f));F(e,{left:n+(this.xCorr||0)+\"px\",top:k+(this.yCorr||0)+\"px\"});u&&(G=e.offsetHeight);this.cTT=p}}else this.alignOnAdd=\n!0},setSpanRotation:function(a,e,g){var b={},n=r?\"-ms-transform\":u?\"-webkit-transform\":l?\"MozTransform\":d.opera?\"-o-transform\":\"\";b[n]=b.transform=\"rotate(\"+a+\"deg)\";b[n+(l?\"Origin\":\"-origin\")]=b.transformOrigin=100*e+\"% \"+g+\"px\";F(this.element,b)},getSpanCorrection:function(a,e,d){this.xCorr=-a*d;this.yCorr=-e}});f(g.prototype,{html:function(a,e,d){var b=this.createElement(\"span\"),n=b.element,g=b.renderer,v=g.isSVG,c=function(a,c){m([\"opacity\",\"visibility\"],function(q){k(a,q+\"Setter\",function(a,\np,q,b){a.call(this,p,q,b);c[q]=p})})};b.textSetter=function(a){a!==n.innerHTML&&delete this.bBox;n.innerHTML=this.textStr=a;b.htmlUpdateTransform()};v&&c(b,b.element.style);b.xSetter=b.ySetter=b.alignSetter=b.rotationSetter=function(a,c){\"align\"===c&&(c=\"textAlign\");b[c]=a;b.htmlUpdateTransform()};b.attr({text:a,x:Math.round(e),y:Math.round(d)}).css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize,position:\"absolute\"});n.style.whiteSpace=\"nowrap\";b.css=b.htmlCss;v&&(b.add=function(a){var q,\ne=g.box.parentNode,d=[];if(this.parentGroup=a){if(q=a.div,!q){for(;a;)d.push(a),a=a.parentGroup;m(d.reverse(),function(a){var p,n=C(a.element,\"class\");n&&(n={className:n});q=a.div=a.div||A(\"div\",n,{position:\"absolute\",left:(a.translateX||0)+\"px\",top:(a.translateY||0)+\"px\",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},q||e);p=q.style;f(a,{classSetter:function(a){this.element.setAttribute(\"class\",a);q.className=a},on:function(){d[0].div&&b.on.apply({element:d[0].div},\narguments);return a},translateXSetter:function(c,h){p.left=c+\"px\";a[h]=c;a.doTransform=!0},translateYSetter:function(c,h){p.top=c+\"px\";a[h]=c;a.doTransform=!0}});c(a,p)})}}else q=e;q.appendChild(n);b.added=!0;b.alignOnAdd&&b.htmlUpdateTransform();return b});return b}})})(M);(function(a){var C,A,F=a.createElement,E=a.css,m=a.defined,f=a.deg2rad,l=a.discardElement,r=a.doc,u=a.each,t=a.erase,g=a.extend;C=a.extendClass;var d=a.isArray,k=a.isNumber,b=a.isObject,e=a.merge;A=a.noop;var v=a.pick,y=a.pInt,\nn=a.SVGElement,D=a.SVGRenderer,J=a.win;a.svg||(A={docMode8:r&&8===r.documentMode,init:function(a,b){var c=[\"\\x3c\",b,' filled\\x3d\"f\" stroked\\x3d\"f\"'],e=[\"position: \",\"absolute\",\";\"],d=\"div\"===b;(\"shape\"===b||d)&&e.push(\"left:0;top:0;width:1px;height:1px;\");e.push(\"visibility: \",d?\"hidden\":\"visible\");c.push(' style\\x3d\"',e.join(\"\"),'\"/\\x3e');b&&(c=d||\"span\"===b||\"img\"===b?c.join(\"\"):a.prepVML(c),this.element=F(c));this.renderer=a},add:function(a){var c=this.renderer,b=this.element,e=c.box,d=a&&a.inverted,\ne=a?a.element||a:e;a&&(this.parentGroup=a);d&&c.invertChild(b,e);e.appendChild(b);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();this.className&&this.attr(\"class\",this.className);return this},updateTransform:n.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=Math.cos(a*f),q=Math.sin(a*f);E(this.element,{filter:a?[\"progid:DXImageTransform.Microsoft.Matrix(M11\\x3d\",b,\", M12\\x3d\",-q,\", M21\\x3d\",q,\", M22\\x3d\",\nb,\", sizingMethod\\x3d'auto expand')\"].join(\"\"):\"none\"})},getSpanCorrection:function(a,b,q,e,d){var c=e?Math.cos(e*f):1,n=e?Math.sin(e*f):0,g=v(this.elemHeight,this.element.offsetHeight),k;this.xCorr=0>c&&-a;this.yCorr=0>n&&-g;k=0>c*n;this.xCorr+=n*b*(k?1-q:q);this.yCorr-=c*b*(e?k?q:1-q:1);d&&\"left\"!==d&&(this.xCorr-=a*q*(0>c?-1:1),e&&(this.yCorr-=g*q*(0>n?-1:1)),E(this.element,{textAlign:d}))},pathToVML:function(a){for(var c=a.length,b=[];c--;)k(a[c])?b[c]=Math.round(10*a[c])-5:\"Z\"===a[c]?b[c]=\"x\":\n(b[c]=a[c],!a.isArc||\"wa\"!==a[c]&&\"at\"!==a[c]||(b[c+5]===b[c+7]&&(b[c+7]+=a[c+7]>a[c+5]?1:-1),b[c+6]===b[c+8]&&(b[c+8]+=a[c+8]>a[c+6]?1:-1)));return b.join(\" \")||\"x\"},clip:function(a){var c=this,b;a?(b=a.members,t(b,c),b.push(c),c.destroyClip=function(){t(b,c)},a=a.getCSS(c)):(c.destroyClip&&c.destroyClip(),a={clip:c.docMode8?\"inherit\":\"rect(auto)\"});return c.css(a)},css:n.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&l(a)},destroy:function(){this.destroyClip&&this.destroyClip();return n.prototype.destroy.apply(this)},\non:function(a,b){this.element[\"on\"+a]=function(){var a=J.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c;a=a.split(/[ ,]/);c=a.length;if(9===c||11===c)a[c-4]=a[c-2]=y(a[c-2])-10*b;return a.join(\" \")},shadow:function(a,b,e){var c=[],q,p=this.element,d=this.renderer,n,g=p.style,h,w=p.path,k,H,f,D;w&&\"string\"!==typeof w.value&&(w=\"x\");H=w;if(a){f=v(a.width,3);D=(a.opacity||.15)/f;for(q=1;3>=q;q++)k=2*f+1-2*q,e&&(H=this.cutOffPath(w.value,k+.5)),h=['\\x3cshape isShadow\\x3d\"true\" strokeweight\\x3d\"',\nk,'\" filled\\x3d\"false\" path\\x3d\"',H,'\" coordsize\\x3d\"10 10\" style\\x3d\"',p.style.cssText,'\" /\\x3e'],n=F(d.prepVML(h),null,{left:y(g.left)+v(a.offsetX,1),top:y(g.top)+v(a.offsetY,1)}),e&&(n.cutOff=k+1),h=['\\x3cstroke color\\x3d\"',a.color||\"#000000\",'\" opacity\\x3d\"',D*q,'\"/\\x3e'],F(d.prepVML(h),null,null,n),b?b.element.appendChild(n):p.parentNode.insertBefore(n,p),c.push(n);this.shadows=c}return this},updateShadows:A,setAttr:function(a,b){this.docMode8?this.element[a]=b:this.element.setAttribute(a,b)},\nclassSetter:function(a){(this.added?this.element:this).className=a},dashstyleSetter:function(a,b,e){(e.getElementsByTagName(\"stroke\")[0]||F(this.renderer.prepVML([\"\\x3cstroke/\\x3e\"]),null,null,e))[b]=a||\"solid\";this[b]=a},dSetter:function(a,b,e){var c=this.shadows;a=a||[];this.d=a.join&&a.join(\" \");e.path=a=this.pathToVML(a);if(c)for(e=c.length;e--;)c[e].path=c[e].cutOff?this.cutOffPath(a,c[e].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,e){var c=e.nodeName;\"SPAN\"===c?e.style.color=a:\"IMG\"!==\nc&&(e.filled=\"none\"!==a,this.setAttr(\"fillcolor\",this.renderer.color(a,e,b,this)))},\"fill-opacitySetter\":function(a,b,e){F(this.renderer.prepVML([\"\\x3c\",b.split(\"-\")[0],' opacity\\x3d\"',a,'\"/\\x3e']),null,null,e)},opacitySetter:A,rotationSetter:function(a,b,e){e=e.style;this[b]=e[b]=a;e.left=-Math.round(Math.sin(a*f)+1)+\"px\";e.top=Math.round(Math.cos(a*f))+\"px\"},strokeSetter:function(a,b,e){this.setAttr(\"strokecolor\",this.renderer.color(a,e,b,this))},\"stroke-widthSetter\":function(a,b,e){e.stroked=!!a;\nthis[b]=a;k(a)&&(a+=\"px\");this.setAttr(\"strokeweight\",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,e){\"inherit\"===a&&(a=\"visible\");this.shadows&&u(this.shadows,function(c){c.style[b]=a});\"DIV\"===e.nodeName&&(a=\"hidden\"===a?\"-999em\":0,this.docMode8||(e.style[b]=a?\"visible\":\"hidden\"),b=\"top\");e.style[b]=a},xSetter:function(a,b,e){this[b]=a;\"x\"===b?b=\"left\":\"y\"===b&&(b=\"top\");this.updateClipping?(this[b]=a,this.updateClipping()):e.style[b]=a},zIndexSetter:function(a,\nb,e){e.style[b]=a}},A[\"stroke-opacitySetter\"]=A[\"fill-opacitySetter\"],a.VMLElement=A=C(n,A),A.prototype.ySetter=A.prototype.widthSetter=A.prototype.heightSetter=A.prototype.xSetter,A={Element:A,isIE8:-1<J.navigator.userAgent.indexOf(\"MSIE 8.0\"),init:function(a,b,e){var c,d;this.alignedObjects=[];c=this.createElement(\"div\").css({position:\"relative\"});d=c.element;a.appendChild(c.element);this.isVML=!0;this.box=d;this.boxWrapper=c;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(b,\ne,!1);if(!r.namespaces.hcv){r.namespaces.add(\"hcv\",\"urn:schemas-microsoft-com:vml\");try{r.createStyleSheet().cssText=\"hcv\\\\:fill, hcv\\\\:path, hcv\\\\:shape, hcv\\\\:stroke{ behavior:url(#default#VML); display: inline-block; } \"}catch(p){r.styleSheets[0].cssText+=\"hcv\\\\:fill, hcv\\\\:path, hcv\\\\:shape, hcv\\\\:stroke{ behavior:url(#default#VML); display: inline-block; } \"}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,e,d,n){var c=this.createElement(),p=b(a);return g(c,{members:[],\ncount:0,left:(p?a.x:a)+1,top:(p?a.y:e)+1,width:(p?a.width:d)-1,height:(p?a.height:n)-1,getCSS:function(a){var c=a.element,b=c.nodeName,h=a.inverted,w=this.top-(\"shape\"===b?c.offsetTop:0),p=this.left,c=p+this.width,e=w+this.height,w={clip:\"rect(\"+Math.round(h?p:w)+\"px,\"+Math.round(h?e:c)+\"px,\"+Math.round(h?c:e)+\"px,\"+Math.round(h?w:p)+\"px)\"};!h&&a.docMode8&&\"DIV\"===b&&g(w,{width:c+\"px\",height:e+\"px\"});return w},updateClipping:function(){u(c.members,function(a){a.element&&a.css(c.getCSS(a))})}})},color:function(c,\nb,e,d){var q=this,p,n=/^rgba/,g,k,h=\"none\";c&&c.linearGradient?k=\"gradient\":c&&c.radialGradient&&(k=\"pattern\");if(k){var w,v,H=c.linearGradient||c.radialGradient,f,D,y,x,r,B=\"\";c=c.stops;var l,G=[],m=function(){g=['\\x3cfill colors\\x3d\"'+G.join(\",\")+'\" opacity\\x3d\"',y,'\" o:opacity2\\x3d\"',D,'\" type\\x3d\"',k,'\" ',B,'focus\\x3d\"100%\" method\\x3d\"any\" /\\x3e'];F(q.prepVML(g),null,null,b)};f=c[0];l=c[c.length-1];0<f[0]&&c.unshift([0,f[1]]);1>l[0]&&c.push([1,l[1]]);u(c,function(h,c){n.test(h[1])?(p=a.color(h[1]),\nw=p.get(\"rgb\"),v=p.get(\"a\")):(w=h[1],v=1);G.push(100*h[0]+\"% \"+w);c?(y=v,x=w):(D=v,r=w)});if(\"fill\"===e)if(\"gradient\"===k)e=H.x1||H[0]||0,c=H.y1||H[1]||0,f=H.x2||H[2]||0,H=H.y2||H[3]||0,B='angle\\x3d\"'+(90-180*Math.atan((H-c)/(f-e))/Math.PI)+'\"',m();else{var h=H.r,t=2*h,J=2*h,A=H.cx,C=H.cy,E=b.radialReference,M,h=function(){E&&(M=d.getBBox(),A+=(E[0]-M.x)/M.width-.5,C+=(E[1]-M.y)/M.height-.5,t*=E[2]/M.width,J*=E[2]/M.height);B='src\\x3d\"'+a.getOptions().global.VMLRadialGradientURL+'\" size\\x3d\"'+t+\",\"+\nJ+'\" origin\\x3d\"0.5,0.5\" position\\x3d\"'+A+\",\"+C+'\" color2\\x3d\"'+r+'\" ';m()};d.added?h():d.onAdd=h;h=x}else h=w}else n.test(c)&&\"IMG\"!==b.tagName?(p=a.color(c),d[e+\"-opacitySetter\"](p.get(\"a\"),e,b),h=p.get(\"rgb\")):(h=b.getElementsByTagName(e),h.length&&(h[0].opacity=1,h[0].type=\"solid\"),h=c);return h},prepVML:function(a){var c=this.isIE8;a=a.join(\"\");c?(a=a.replace(\"/\\x3e\",' xmlns\\x3d\"urn:schemas-microsoft-com:vml\" /\\x3e'),a=-1===a.indexOf('style\\x3d\"')?a.replace(\"/\\x3e\",' style\\x3d\"display:inline-block;behavior:url(#default#VML);\" /\\x3e'):\na.replace('style\\x3d\"','style\\x3d\"display:inline-block;behavior:url(#default#VML);')):a=a.replace(\"\\x3c\",\"\\x3chcv:\");return a},text:D.prototype.html,path:function(a){var c={coordsize:\"10 10\"};d(a)?c.d=a:b(a)&&g(c,a);return this.createElement(\"shape\").attr(c)},circle:function(a,e,d){var c=this.symbol(\"circle\");b(a)&&(d=a.r,e=a.y,a=a.x);c.isCircle=!0;c.r=d;return c.attr({x:a,y:e})},g:function(a){var c;a&&(c={className:\"highcharts-\"+a,\"class\":\"highcharts-\"+a});return this.createElement(\"div\").attr(c)},\nimage:function(a,b,e,d,n){var c=this.createElement(\"img\").attr({src:a});1<arguments.length&&c.attr({x:b,y:e,width:d,height:n});return c},createElement:function(a){return\"rect\"===a?this.symbol(a):D.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this;b=b.style;var e=\"IMG\"===a.tagName&&a.style;E(a,{flip:\"x\",left:y(b.width)-(e?y(e.top):1),top:y(b.height)-(e?y(e.left):1),rotation:-90});u(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,e,d,n){var c=n.start,\nq=n.end,g=n.r||e||d;e=n.innerR;d=Math.cos(c);var k=Math.sin(c),h=Math.cos(q),w=Math.sin(q);if(0===q-c)return[\"x\"];c=[\"wa\",a-g,b-g,a+g,b+g,a+g*d,b+g*k,a+g*h,b+g*w];n.open&&!e&&c.push(\"e\",\"M\",a,b);c.push(\"at\",a-e,b-e,a+e,b+e,a+e*h,b+e*w,a+e*d,b+e*k,\"x\",\"e\");c.isArc=!0;return c},circle:function(a,b,e,d,n){n&&m(n.r)&&(e=d=2*n.r);n&&n.isCircle&&(a-=e/2,b-=d/2);return[\"wa\",a,b,a+e,b+d,a+e,b+d/2,a+e,b+d/2,\"e\"]},rect:function(a,b,e,d,n){return D.prototype.symbols[m(n)&&n.r?\"callout\":\"square\"].call(0,a,b,\ne,d,n)}}},a.VMLRenderer=C=function(){this.init.apply(this,arguments)},C.prototype=e(D.prototype,A),a.Renderer=C);D.prototype.measureSpanWidth=function(a,b){var c=r.createElement(\"span\");a=r.createTextNode(a);c.appendChild(a);E(c,b);this.box.appendChild(c);b=c.offsetWidth;l(c);return b}})(M);(function(a){function C(){var f=a.defaultOptions.global,l=r.moment;if(f.timezone){if(l)return function(a){return-l.tz(a,f.timezone).utcOffset()};a.error(25)}return f.useUTC&&f.getTimezoneOffset}function A(){var f=\na.defaultOptions.global,t,g=f.useUTC,d=g?\"getUTC\":\"get\",k=g?\"setUTC\":\"set\";a.Date=t=f.Date||r.Date;t.hcTimezoneOffset=g&&f.timezoneOffset;t.hcGetTimezoneOffset=C();t.hcMakeTime=function(a,e,d,k,n,f){var b;g?(b=t.UTC.apply(0,arguments),b+=m(b)):b=(new t(a,e,l(d,1),l(k,0),l(n,0),l(f,0))).getTime();return b};E(\"Minutes Hours Day Date Month FullYear\".split(\" \"),function(a){t[\"hcGet\"+a]=d+a});E(\"Milliseconds Seconds Minutes Hours Date Month FullYear\".split(\" \"),function(a){t[\"hcSet\"+a]=k+a})}var F=a.color,\nE=a.each,m=a.getTZOffset,f=a.merge,l=a.pick,r=a.win;a.defaultOptions={colors:\"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1\".split(\" \"),symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:\"January February March April May June July August September October November December\".split(\" \"),shortMonths:\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),weekdays:\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),\ndecimalPoint:\".\",numericSymbols:\"kMGTPE\".split(\"\"),resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{useUTC:!0,VMLRadialGradientURL:\"http://code.highcharts.com/5.0.14/gfx/vml-radial-gradient.png\"},chart:{borderRadius:0,defaultSeriesType:\"line\",ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:20},position:{align:\"right\",x:-10,y:10}},width:null,height:null,borderColor:\"#335cad\",backgroundColor:\"#ffffff\",plotBorderColor:\"#cccccc\"},title:{text:\"Chart title\",\nalign:\"center\",margin:15,widthAdjust:-44},subtitle:{text:\"\",align:\"center\",widthAdjust:-44},plotOptions:{},labels:{style:{position:\"absolute\",color:\"#333333\"}},legend:{enabled:!0,align:\"center\",layout:\"horizontal\",labelFormatter:function(){return this.name},borderColor:\"#999999\",borderRadius:0,navigation:{activeColor:\"#003399\",inactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",fontSize:\"12px\",fontWeight:\"bold\",textOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},itemHiddenStyle:{color:\"#cccccc\"},\nshadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,textAlign:\"center\"}},tooltip:{enabled:!0,animation:a.svg,borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %b %e, %H:%M:%S.%L\",second:\"%A, %b %e, %H:%M:%S\",minute:\"%A, %b %e, %H:%M\",hour:\"%A, %b %e, %H:%M\",\nday:\"%A, %b %e, %Y\",week:\"Week from %A, %b %e, %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",padding:8,snap:a.isTouchDevice?25:10,backgroundColor:F(\"#f7f7f7\").setOpacity(.85).get(),borderWidth:1,headerFormat:'\\x3cspan style\\x3d\"font-size: 10px\"\\x3e{point.key}\\x3c/span\\x3e\\x3cbr/\\x3e',pointFormat:'\\x3cspan style\\x3d\"color:{point.color}\"\\x3e\\u25cf\\x3c/span\\x3e {series.name}: \\x3cb\\x3e{point.y}\\x3c/b\\x3e\\x3cbr/\\x3e',shadow:!0,style:{color:\"#333333\",cursor:\"default\",fontSize:\"12px\",pointerEvents:\"none\",\nwhiteSpace:\"nowrap\"}},credits:{enabled:!0,href:\"http://www.highcharts.com\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"9px\"},text:\"Highcharts.com\"}};a.setOptions=function(r){a.defaultOptions=f(!0,a.defaultOptions,r);A();return a.defaultOptions};a.getOptions=function(){return a.defaultOptions};a.defaultPlotOptions=a.defaultOptions.plotOptions;A()})(M);(function(a){var C=a.correctFloat,A=a.defined,F=a.destroyObjectProperties,E=a.isNumber,\nm=a.merge,f=a.pick,l=a.deg2rad;a.Tick=function(a,f,l,g){this.axis=a;this.pos=f;this.type=l||\"\";this.isNewLabel=this.isNew=!0;l||g||this.addLabel()};a.Tick.prototype={addLabel:function(){var a=this.axis,l=a.options,t=a.chart,g=a.categories,d=a.names,k=this.pos,b=l.labels,e=a.tickPositions,v=k===e[0],y=k===e[e.length-1],d=g?f(g[k],d[k],k):k,g=this.label,e=e.info,n;a.isDatetimeAxis&&e&&(n=l.dateTimeLabelFormats[e.higherRanks[k]||e.unitName]);this.isFirst=v;this.isLast=y;l=a.labelFormatter.call({axis:a,\nchart:t,isFirst:v,isLast:y,dateTimeLabelFormat:n,value:a.isLog?C(a.lin2log(d)):d,pos:k});A(g)?g&&g.attr({text:l}):(this.labelLength=(this.label=g=A(l)&&b.enabled?t.renderer.text(l,0,0,b.useHTML).css(m(b.style)).add(a.labelGroup):null)&&g.getBBox().width,this.rotation=0)},getLabelSize:function(){return this.label?this.label.getBBox()[this.axis.horiz?\"height\":\"width\"]:0},handleOverflow:function(a){var r=this.axis,m=a.x,g=r.chart.chartWidth,d=r.chart.spacing,k=f(r.labelLeft,Math.min(r.pos,d[3])),d=f(r.labelRight,\nMath.max(r.pos+r.len,g-d[1])),b=this.label,e=this.rotation,v={left:0,center:.5,right:1}[r.labelAlign],y=b.getBBox().width,n=r.getSlotWidth(),D=n,J=1,c,G={};if(e)0>e&&m-v*y<k?c=Math.round(m/Math.cos(e*l)-k):0<e&&m+v*y>d&&(c=Math.round((g-m)/Math.cos(e*l)));else if(g=m+(1-v)*y,m-v*y<k?D=a.x+D*(1-v)-k:g>d&&(D=d-a.x+D*v,J=-1),D=Math.min(n,D),D<n&&\"center\"===r.labelAlign&&(a.x+=J*(n-D-v*(n-Math.min(y,D)))),y>D||r.autoRotation&&(b.styles||{}).width)c=D;c&&(G.width=c,(r.options.labels.style||{}).textOverflow||\n(G.textOverflow=\"ellipsis\"),b.css(G))},getPosition:function(a,f,l,g){var d=this.axis,k=d.chart,b=g&&k.oldChartHeight||k.chartHeight;return{x:a?d.translate(f+l,null,null,g)+d.transB:d.left+d.offset+(d.opposite?(g&&k.oldChartWidth||k.chartWidth)-d.right-d.left:0),y:a?b-d.bottom+d.offset-(d.opposite?d.height:0):b-d.translate(f+l,null,null,g)-d.transB}},getLabelPosition:function(a,f,m,g,d,k,b,e){var v=this.axis,y=v.transA,n=v.reversed,D=v.staggerLines,r=v.tickRotCorr||{x:0,y:0},c=d.y;A(c)||(c=0===v.side?\nm.rotation?-8:-m.getBBox().height:2===v.side?r.y+8:Math.cos(m.rotation*l)*(r.y-m.getBBox(!1,0).height/2));a=a+d.x+r.x-(k&&g?k*y*(n?-1:1):0);f=f+c-(k&&!g?k*y*(n?1:-1):0);D&&(m=b/(e||1)%D,v.opposite&&(m=D-m-1),f+=v.labelOffset/D*m);return{x:a,y:Math.round(f)}},getMarkPath:function(a,f,l,g,d,k){return k.crispLine([\"M\",a,f,\"L\",a+(d?0:-l),f+(d?l:0)],g)},renderGridLine:function(a,f,l){var g=this.axis,d=g.options,k=this.gridLine,b={},e=this.pos,v=this.type,y=g.tickmarkOffset,n=g.chart.renderer,D=v?v+\"Grid\":\n\"grid\",r=d[D+\"LineWidth\"],c=d[D+\"LineColor\"],d=d[D+\"LineDashStyle\"];k||(b.stroke=c,b[\"stroke-width\"]=r,d&&(b.dashstyle=d),v||(b.zIndex=1),a&&(b.opacity=0),this.gridLine=k=n.path().attr(b).addClass(\"highcharts-\"+(v?v+\"-\":\"\")+\"grid-line\").add(g.gridGroup));if(!a&&k&&(a=g.getPlotLinePath(e+y,k.strokeWidth()*l,a,!0)))k[this.isNew?\"attr\":\"animate\"]({d:a,opacity:f})},renderMark:function(a,l,m){var g=this.axis,d=g.options,k=g.chart.renderer,b=this.type,e=b?b+\"Tick\":\"tick\",v=g.tickSize(e),y=this.mark,n=!y,\nD=a.x;a=a.y;var r=f(d[e+\"Width\"],!b&&g.isXAxis?1:0),d=d[e+\"Color\"];v&&(g.opposite&&(v[0]=-v[0]),n&&(this.mark=y=k.path().addClass(\"highcharts-\"+(b?b+\"-\":\"\")+\"tick\").add(g.axisGroup),y.attr({stroke:d,\"stroke-width\":r})),y[n?\"attr\":\"animate\"]({d:this.getMarkPath(D,a,v[0],y.strokeWidth()*m,g.horiz,k),opacity:l}))},renderLabel:function(a,l,m,g){var d=this.axis,k=d.horiz,b=d.options,e=this.label,v=b.labels,y=v.step,n=d.tickmarkOffset,D=!0,r=a.x;a=a.y;e&&E(r)&&(e.xy=a=this.getLabelPosition(r,a,e,k,v,n,\ng,y),this.isFirst&&!this.isLast&&!f(b.showFirstLabel,1)||this.isLast&&!this.isFirst&&!f(b.showLastLabel,1)?D=!1:!k||d.isRadial||v.step||v.rotation||l||0===m||this.handleOverflow(a),y&&g%y&&(D=!1),D&&E(a.y)?(a.opacity=m,e[this.isNewLabel?\"attr\":\"animate\"](a),this.isNewLabel=!1):(e.attr(\"y\",-9999),this.isNewLabel=!0),this.isNew=!1)},render:function(a,l,m){var g=this.axis,d=g.horiz,k=this.getPosition(d,this.pos,g.tickmarkOffset,l),b=k.x,e=k.y,g=d&&b===g.pos+g.len||!d&&e===g.pos?-1:1;m=f(m,1);this.isActive=\n!0;this.renderGridLine(l,m,g);this.renderMark(k,m,g);this.renderLabel(k,l,m,a)},destroy:function(){F(this,this.axis)}}})(M);var S=function(a){var C=a.addEvent,A=a.animObject,F=a.arrayMax,E=a.arrayMin,m=a.color,f=a.correctFloat,l=a.defaultOptions,r=a.defined,u=a.deg2rad,t=a.destroyObjectProperties,g=a.each,d=a.extend,k=a.fireEvent,b=a.format,e=a.getMagnitude,v=a.grep,y=a.inArray,n=a.isArray,D=a.isNumber,J=a.isString,c=a.merge,G=a.normalizeTickInterval,q=a.objectEach,B=a.pick,K=a.removeEvent,p=a.splat,\nz=a.syncTimeout,I=a.Tick,L=function(){this.init.apply(this,arguments)};a.extend(L.prototype,{defaultOptions:{dateTimeLabelFormats:{millisecond:\"%H:%M:%S.%L\",second:\"%H:%M:%S\",minute:\"%H:%M\",hour:\"%H:%M\",day:\"%e. %b\",week:\"%e. %b\",month:\"%b '%y\",year:\"%Y\"},endOnTick:!1,labels:{enabled:!0,style:{color:\"#666666\",cursor:\"default\",fontSize:\"11px\"},x:0},minPadding:.01,maxPadding:.01,minorTickLength:2,minorTickPosition:\"outside\",startOfWeek:1,startOnTick:!1,tickLength:10,tickmarkPlacement:\"between\",tickPixelInterval:100,\ntickPosition:\"outside\",title:{align:\"middle\",style:{color:\"#666666\"}},type:\"linear\",minorGridLineColor:\"#f2f2f2\",minorGridLineWidth:1,minorTickColor:\"#999999\",lineColor:\"#ccd6eb\",lineWidth:1,gridLineColor:\"#e6e6e6\",tickColor:\"#ccd6eb\"},defaultYAxisOptions:{endOnTick:!0,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},maxPadding:.05,minPadding:.05,startOnTick:!0,title:{rotation:270,text:\"Values\"},stackLabels:{allowOverlap:!1,enabled:!1,formatter:function(){return a.numberFormat(this.total,-1)},\nstyle:{fontSize:\"11px\",fontWeight:\"bold\",color:\"#000000\",textOutline:\"1px contrast\"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},init:function(a,c){var h=c.isX,b=this;b.chart=a;b.horiz=a.inverted&&!b.isZAxis?!h:h;b.isXAxis=h;b.coll=b.coll||(h?\n\"xAxis\":\"yAxis\");b.opposite=c.opposite;b.side=c.side||(b.horiz?b.opposite?0:2:b.opposite?1:3);b.setOptions(c);var w=this.options,e=w.type;b.labelFormatter=w.labels.formatter||b.defaultLabelFormatter;b.userOptions=c;b.minPixelPadding=0;b.reversed=w.reversed;b.visible=!1!==w.visible;b.zoomEnabled=!1!==w.zoomEnabled;b.hasNames=\"category\"===e||!0===w.categories;b.categories=w.categories||b.hasNames;b.names=b.names||[];b.plotLinesAndBandsGroups={};b.isLog=\"logarithmic\"===e;b.isDatetimeAxis=\"datetime\"===\ne;b.positiveValuesOnly=b.isLog&&!b.allowNegativeLog;b.isLinked=r(w.linkedTo);b.ticks={};b.labelEdge=[];b.minorTicks={};b.plotLinesAndBands=[];b.alternateBands={};b.len=0;b.minRange=b.userMinRange=w.minRange||w.maxZoom;b.range=w.range;b.offset=w.offset||0;b.stacks={};b.oldStacks={};b.stacksTouched=0;b.max=null;b.min=null;b.crosshair=B(w.crosshair,p(a.options.tooltip.crosshairs)[h?0:1],!1);c=b.options.events;-1===y(b,a.axes)&&(h?a.axes.splice(a.xAxis.length,0,b):a.axes.push(b),a[b.coll].push(b));b.series=\nb.series||[];a.inverted&&!b.isZAxis&&h&&void 0===b.reversed&&(b.reversed=!0);q(c,function(a,h){C(b,h,a)});b.lin2log=w.linearToLogConverter||b.lin2log;b.isLog&&(b.val2lin=b.log2lin,b.lin2val=b.lin2log)},setOptions:function(a){this.options=c(this.defaultOptions,\"yAxis\"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],c(l[this.coll],a))},defaultLabelFormatter:function(){var h=this.axis,\nc=this.value,e=h.categories,p=this.dateTimeLabelFormat,d=l.lang,n=d.numericSymbols,d=d.numericSymbolMagnitude||1E3,q=n&&n.length,x,g=h.options.labels.format,h=h.isLog?Math.abs(c):h.tickInterval;if(g)x=b(g,this);else if(e)x=c;else if(p)x=a.dateFormat(p,c);else if(q&&1E3<=h)for(;q--&&void 0===x;)e=Math.pow(d,q+1),h>=e&&0===10*c%e&&null!==n[q]&&0!==c&&(x=a.numberFormat(c/e,-1)+n[q]);void 0===x&&(x=1E4<=Math.abs(c)?a.numberFormat(c,-1):a.numberFormat(c,-1,void 0,\"\"));return x},getSeriesExtremes:function(){var a=\nthis,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();g(a.series,function(h){if(h.visible||!b.options.chart.ignoreHiddenSeries){var c=h.options,w=c.threshold,e;a.hasVisibleSeries=!0;a.positiveValuesOnly&&0>=w&&(w=null);if(a.isXAxis)c=h.xData,c.length&&(h=E(c),D(h)||h instanceof Date||(c=v(c,function(a){return D(a)}),h=E(c)),a.dataMin=Math.min(B(a.dataMin,c[0]),h),a.dataMax=Math.max(B(a.dataMax,c[0]),F(c)));else if(h.getExtremes(),\ne=h.dataMax,h=h.dataMin,r(h)&&r(e)&&(a.dataMin=Math.min(B(a.dataMin,h),h),a.dataMax=Math.max(B(a.dataMax,e),e)),r(w)&&(a.threshold=w),!c.softThreshold||a.positiveValuesOnly)a.softThreshold=!1}})},translate:function(a,b,c,e,p,d){var h=this.linkedParent||this,w=1,n=0,q=e?h.oldTransA:h.transA;e=e?h.oldMin:h.min;var g=h.minPixelPadding;p=(h.isOrdinal||h.isBroken||h.isLog&&p)&&h.lin2val;q||(q=h.transA);c&&(w*=-1,n=h.len);h.reversed&&(w*=-1,n-=w*(h.sector||h.len));b?(a=(a*w+n-g)/q+e,p&&(a=h.lin2val(a))):\n(p&&(a=h.val2lin(a)),a=w*(a-e)*q+n+w*g+(D(d)?q*d:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,e,p){var h=this.chart,w=this.left,d=this.top,n,q,g=c&&h.oldChartHeight||h.chartHeight,k=c&&h.oldChartWidth||h.chartWidth,f;n=this.transB;var v=function(a,h,b){if(a<h||a>b)e?a=Math.min(Math.max(h,a),b):f=!0;return a};p=B(p,this.translate(a,\nnull,null,c));a=c=Math.round(p+n);n=q=Math.round(g-p-n);D(p)?this.horiz?(n=d,q=g-this.bottom,a=c=v(a,w,w+this.width)):(a=w,c=k-this.right,n=q=v(n,d,d+this.height)):f=!0;return f&&!e?null:h.renderer.crispLine([\"M\",a,n,\"L\",c,q],b||1)},getLinearTickPositions:function(a,b,c){var h,w=f(Math.floor(b/a)*a);c=f(Math.ceil(c/a)*a);var e=[];if(this.single)return[b];for(b=w;b<=c;){e.push(b);b=f(b+a);if(b===h)break;h=b}return e},getMinorTickPositions:function(){var a=this,b=a.options,c=a.tickPositions,e=a.minorTickInterval,\np=[],d=a.pointRangePadding||0,n=a.min-d,d=a.max+d,q=d-n;if(q&&q/e<a.len/3)if(a.isLog)g(this.paddedTicks,function(h,b,c){b&&p.push.apply(p,a.getLogTickPositions(e,c[b-1],c[b],!0))});else if(a.isDatetimeAxis&&\"auto\"===b.minorTickInterval)p=p.concat(a.getTimeTicks(a.normalizeTimeTickInterval(e),n,d,b.startOfWeek));else for(b=n+(c[0]-n)%e;b<=d&&b!==p[0];b+=e)p.push(b);0!==p.length&&a.trimTicks(p);return p},adjustForMinRange:function(){var a=this.options,b=this.min,c=this.max,e,p,d,n,q,k,f,v;this.isXAxis&&\nvoid 0===this.minRange&&!this.isLog&&(r(a.min)||r(a.max)?this.minRange=null:(g(this.series,function(a){k=a.xData;for(n=f=a.xIncrement?1:k.length-1;0<n;n--)if(q=k[n]-k[n-1],void 0===d||q<d)d=q}),this.minRange=Math.min(5*d,this.dataMax-this.dataMin)));c-b<this.minRange&&(p=this.dataMax-this.dataMin>=this.minRange,v=this.minRange,e=(v-c+b)/2,e=[b-e,B(a.min,b-e)],p&&(e[2]=this.isLog?this.log2lin(this.dataMin):this.dataMin),b=F(e),c=[b+v,B(a.max,b+v)],p&&(c[2]=this.isLog?this.log2lin(this.dataMax):this.dataMax),\nc=E(c),c-b<v&&(e[0]=c-v,e[1]=B(a.min,c-v),b=F(e)));this.min=b;this.max=c},getClosest:function(){var a;this.categories?a=1:g(this.series,function(h){var b=h.closestPointRange,c=h.visible||!h.chart.options.chart.ignoreHiddenSeries;!h.noSharedTooltip&&r(b)&&c&&(a=r(a)?Math.min(a,b):b)});return a},nameToX:function(a){var h=n(this.categories),b=h?this.categories:this.names,c=a.options.x,e;a.series.requireSorting=!1;r(c)||(c=!1===this.options.uniqueNames?a.series.autoIncrement():y(a.name,b));-1===c?h||\n(e=b.length):e=c;void 0!==e&&(this.names[e]=a.name);return e},updateNames:function(){var a=this;0<this.names.length&&(this.names.length=0,this.minRange=this.userMinRange,g(this.series||[],function(h){h.xIncrement=null;if(!h.points||h.isDirtyData)h.processData(),h.generatePoints();g(h.points,function(b,c){var e;b.options&&(e=a.nameToX(b),void 0!==e&&e!==b.x&&(b.x=e,h.xData[c]=e))})}))},setAxisTranslation:function(a){var h=this,b=h.max-h.min,c=h.axisPointRange||0,e,p=0,d=0,n=h.linkedParent,q=!!h.categories,\nk=h.transA,f=h.isXAxis;if(f||q||c)e=h.getClosest(),n?(p=n.minPointOffset,d=n.pointRangePadding):g(h.series,function(a){var b=q?1:f?B(a.options.pointRange,e,0):h.axisPointRange||0;a=a.options.pointPlacement;c=Math.max(c,b);h.single||(p=Math.max(p,J(a)?0:b/2),d=Math.max(d,\"on\"===a?0:b))}),n=h.ordinalSlope&&e?h.ordinalSlope/e:1,h.minPointOffset=p*=n,h.pointRangePadding=d*=n,h.pointRange=Math.min(c,b),f&&(h.closestPointRange=e);a&&(h.oldTransA=k);h.translationSlope=h.transA=k=h.options.staticScale||h.len/\n(b+d||1);h.transB=h.horiz?h.left:h.bottom;h.minPixelPadding=k*p},minFromRange:function(){return this.max-this.range},setTickInterval:function(h){var b=this,c=b.chart,p=b.options,d=b.isLog,n=b.log2lin,q=b.isDatetimeAxis,x=b.isXAxis,v=b.isLinked,z=p.maxPadding,y=p.minPadding,l=p.tickInterval,I=p.tickPixelInterval,m=b.categories,J=b.threshold,t=b.softThreshold,L,u,K,A;q||m||v||this.getTickAmount();K=B(b.userMin,p.min);A=B(b.userMax,p.max);v?(b.linkedParent=c[b.coll][p.linkedTo],c=b.linkedParent.getExtremes(),\nb.min=B(c.min,c.dataMin),b.max=B(c.max,c.dataMax),p.type!==b.linkedParent.options.type&&a.error(11,1)):(!t&&r(J)&&(b.dataMin>=J?(L=J,y=0):b.dataMax<=J&&(u=J,z=0)),b.min=B(K,L,b.dataMin),b.max=B(A,u,b.dataMax));d&&(b.positiveValuesOnly&&!h&&0>=Math.min(b.min,B(b.dataMin,b.min))&&a.error(10,1),b.min=f(n(b.min),15),b.max=f(n(b.max),15));b.range&&r(b.max)&&(b.userMin=b.min=K=Math.max(b.dataMin,b.minFromRange()),b.userMax=A=b.max,b.range=null);k(b,\"foundExtremes\");b.beforePadding&&b.beforePadding();b.adjustForMinRange();\n!(m||b.axisPointRange||b.usePercentage||v)&&r(b.min)&&r(b.max)&&(n=b.max-b.min)&&(!r(K)&&y&&(b.min-=n*y),!r(A)&&z&&(b.max+=n*z));D(p.softMin)&&(b.min=Math.min(b.min,p.softMin));D(p.softMax)&&(b.max=Math.max(b.max,p.softMax));D(p.floor)&&(b.min=Math.max(b.min,p.floor));D(p.ceiling)&&(b.max=Math.min(b.max,p.ceiling));t&&r(b.dataMin)&&(J=J||0,!r(K)&&b.min<J&&b.dataMin>=J?b.min=J:!r(A)&&b.max>J&&b.dataMax<=J&&(b.max=J));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:v&&!l&&I===b.linkedParent.options.tickPixelInterval?\nl=b.linkedParent.tickInterval:B(l,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,m?1:(b.max-b.min)*I/Math.max(b.len,I));x&&!h&&g(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!l&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));h=B(p.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);\n!l&&b.tickInterval<h&&(b.tickInterval=h);q||d||l||(b.tickInterval=G(b.tickInterval,null,e(b.tickInterval),B(p.allowDecimals,!(.5<b.tickInterval&&5>b.tickInterval&&1E3<b.max&&9999>b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval=b.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,e=a.tickPositioner,p=a.startOnTick,d=a.endOnTick;this.tickmarkOffset=this.categories&&\"between\"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval=\n\"auto\"===a.minorTickInterval&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.single=this.min===this.max&&r(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==a.allowDecimals);this.tickPositions=b=c&&c.slice();!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,\nthis.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,e&&(e=e.apply(this,[this.min,this.max])))&&(this.tickPositions=b=e);this.paddedTicks=b.slice(0);this.trimTicks(b,p,d);this.isLinked||(this.single&&2>b.length&&(this.min-=.5,this.max+=.5),c||e||this.adjustTickAmount())},trimTicks:function(a,b,c){var h=a[0],e=a[a.length-1],p=this.minPointOffset||0;if(!this.isLinked){if(b&&-Infinity!==h)this.min=h;else for(;this.min-p>a[0];)a.shift();if(c)this.max=e;else for(;this.max+p<a[a.length-\n1];)a.pop();0===a.length&&r(h)&&a.push((e+h)/2)}},alignToOthers:function(){var a={},b,c=this.options;!1===this.chart.options.chart.alignTicks||!1===c.alignTicks||this.isLog||g(this.chart[this.coll],function(h){var c=h.options,c=[h.horiz?c.left:c.top,c.width,c.height,c.pane].join();h.series.length&&(a[c]?b=!0:a[c]=1)});return b},getTickAmount:function(){var a=this.options,b=a.tickAmount,c=a.tickPixelInterval;!r(a.tickInterval)&&this.len<c&&!this.isRadial&&!this.isLog&&a.startOnTick&&a.endOnTick&&(b=\n2);!b&&this.alignToOthers()&&(b=Math.ceil(this.len/c)+1);4>b&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.tickInterval,b=this.tickPositions,c=this.tickAmount,e=this.finalTickAmt,p=b&&b.length;if(p<c){for(;b.length<c;)b.push(f(b[b.length-1]+a));this.transA*=(p-1)/(c-1);this.max=b[b.length-1]}else p>c&&(this.tickInterval*=2,this.setTickPositions());if(r(e)){for(a=c=b.length;a--;)(3===e&&1===a%2||2>=e&&0<a&&a<c-1)&&b.splice(a,1);this.finalTickAmt=void 0}},setScale:function(){var a,\nb;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();b=this.len!==this.oldAxisLength;g(this.series,function(b){if(b.isDirtyData||b.isDirty||b.xAxis.isDirty)a=!0});b||a||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax||this.alignToOthers()?(this.resetStacks&&this.resetStacks(),this.forceRedraw=!1,this.getSeriesExtremes(),this.setTickInterval(),this.oldUserMin=this.userMin,this.oldUserMax=this.userMax,this.isDirty||\n(this.isDirty=b||this.min!==this.oldMin||this.max!==this.oldMax)):this.cleanStacks&&this.cleanStacks()},setExtremes:function(a,b,c,e,p){var h=this,n=h.chart;c=B(c,!0);g(h.series,function(a){delete a.kdTree});p=d(p,{min:a,max:b});k(h,\"setExtremes\",p,function(){h.userMin=a;h.userMax=b;h.eventArgs=p;c&&n.redraw(e)})},zoom:function(a,b){var h=this.dataMin,c=this.dataMax,e=this.options,p=Math.min(h,B(e.min,h)),e=Math.max(c,B(e.max,c));if(a!==this.min||b!==this.max)this.allowZoomOutside||(r(h)&&(a<p&&(a=\np),a>e&&(a=e)),r(c)&&(b<p&&(b=p),b>e&&(b=e))),this.displayBtn=void 0!==a||void 0!==b,this.setExtremes(a,b,!1,void 0,{trigger:\"zoom\"});return!0},setAxisSize:function(){var b=this.chart,c=this.options,e=c.offsets||[0,0,0,0],p=this.horiz,d=this.width=Math.round(a.relativeLength(B(c.width,b.plotWidth-e[3]+e[1]),b.plotWidth)),n=this.height=Math.round(a.relativeLength(B(c.height,b.plotHeight-e[0]+e[2]),b.plotHeight)),q=this.top=Math.round(a.relativeLength(B(c.top,b.plotTop+e[0]),b.plotHeight,b.plotTop)),\nc=this.left=Math.round(a.relativeLength(B(c.left,b.plotLeft+e[3]),b.plotWidth,b.plotLeft));this.bottom=b.chartHeight-n-q;this.right=b.chartWidth-d-c;this.len=Math.max(p?d:n,0);this.pos=p?c:q},getExtremes:function(){var a=this.isLog,b=this.lin2log;return{min:a?f(b(this.min)):this.min,max:a?f(b(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,h=this.lin2log,c=b?h(this.min):this.min,b=b?h(this.max):this.max;\nnull===a?a=c:c>a?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){a=(B(a,0)-90*this.side+720)%360;return 15<a&&165>a?\"right\":195<a&&345>a?\"left\":\"center\"},tickSize:function(a){var b=this.options,h=b[a+\"Length\"],c=B(b[a+\"Width\"],\"tick\"===a&&this.isXAxis?1:0);if(c&&h)return\"inside\"===b[a+\"Position\"]&&(h=-h),[h,c]},labelMetrics:function(){var a=this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize,\nthis.ticks[a]&&this.ticks[a].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,c=this.tickInterval,e=c,p=this.len/(((this.categories?1:0)+this.max-this.min)/c),d,n=a.rotation,q=this.labelMetrics(),k,f=Number.MAX_VALUE,v,z=function(a){a/=p||1;a=1<a?Math.ceil(a):1;return a*c};b?(v=!a.staggerLines&&!a.step&&(r(n)?[n]:p<B(a.autoRotationLimit,80)&&a.autoRotation))&&g(v,function(a){var b;if(a===n||a&&-90<=a&&90>=a)k=z(Math.abs(q.h/Math.sin(u*a))),b=k+Math.abs(a/360),b<f&&(f=b,d=a,e=k)}):\na.step||(e=z(q.h));this.autoRotation=v;this.labelRotation=B(d,n);return e},getSlotWidth:function(){var a=this.chart,b=this.horiz,c=this.options.labels,e=Math.max(this.tickPositions.length-(this.categories?0:1),1),p=a.margin[3];return b&&2>(c.step||0)&&!c.rotation&&(this.staggerLines||1)*this.len/e||!b&&(p&&p-a.spacing[3]||.33*a.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,e=this.tickPositions,p=this.ticks,d=this.options.labels,n=this.horiz,q=this.getSlotWidth(),k=Math.max(1,\nMath.round(q-2*(d.padding||5))),f={},v=this.labelMetrics(),z=d.style&&d.style.textOverflow,D,y=0,l,I;J(d.rotation)||(f.rotation=d.rotation||0);g(e,function(a){(a=p[a])&&a.labelLength>y&&(y=a.labelLength)});this.maxLabelLength=y;if(this.autoRotation)y>k&&y>v.h?f.rotation=this.labelRotation:this.labelRotation=0;else if(q&&(D={width:k+\"px\"},!z))for(D.textOverflow=\"clip\",l=e.length;!n&&l--;)if(I=e[l],k=p[I].label)k.styles&&\"ellipsis\"===k.styles.textOverflow?k.css({textOverflow:\"clip\"}):p[I].labelLength>\nq&&k.css({width:q+\"px\"}),k.getBBox().height>this.len/e.length-(v.h-v.f)&&(k.specCss={textOverflow:\"ellipsis\"});f.rotation&&(D={width:(y>.5*a.chartHeight?.33*a.chartHeight:a.chartHeight)+\"px\"},z||(D.textOverflow=\"ellipsis\"));if(this.labelAlign=d.align||this.autoLabelAlign(this.labelRotation))f.align=this.labelAlign;g(e,function(a){var b=(a=p[a])&&a.label;b&&(b.attr(f),D&&b.css(c(D,b.specCss)),delete b.specCss,a.rotation=f.rotation)});this.tickRotCorr=b.rotCorr(v.b,this.labelRotation||0,0!==this.side)},\nhasData:function(){return this.hasVisibleSeries||r(this.min)&&r(this.max)&&!!this.tickPositions},addTitle:function(a){var b=this.chart.renderer,c=this.horiz,h=this.opposite,e=this.options.title,p;this.axisTitle||((p=e.textAlign)||(p=(c?{low:\"left\",middle:\"center\",high:\"right\"}:{low:h?\"right\":\"left\",middle:\"center\",high:h?\"left\":\"right\"})[e.align]),this.axisTitle=b.text(e.text,0,0,e.useHTML).attr({zIndex:7,rotation:e.rotation||0,align:p}).addClass(\"highcharts-axis-title\").css(e.style).add(this.axisGroup),\nthis.axisTitle.isNew=!0);e.style.width||this.isRadial||this.axisTitle.css({width:this.len});this.axisTitle[a?\"show\":\"hide\"](!0)},generateTick:function(a){var b=this.ticks;b[a]?b[a].addLabel():b[a]=new I(this,a)},getOffset:function(){var a=this,b=a.chart,c=b.renderer,e=a.options,p=a.tickPositions,d=a.ticks,n=a.horiz,k=a.side,f=b.inverted&&!a.isZAxis?[1,0,3,2][k]:k,v,z,D=0,y,l=0,I=e.title,m=e.labels,G=0,J=b.axisOffset,b=b.clipOffset,t=[-1,1,1,-1][k],L=e.className,u=a.axisParent,K=this.tickSize(\"tick\");\nv=a.hasData();a.showAxis=z=v||B(e.showEmpty,!0);a.staggerLines=a.horiz&&m.staggerLines;a.axisGroup||(a.gridGroup=c.g(\"grid\").attr({zIndex:e.gridZIndex||1}).addClass(\"highcharts-\"+this.coll.toLowerCase()+\"-grid \"+(L||\"\")).add(u),a.axisGroup=c.g(\"axis\").attr({zIndex:e.zIndex||2}).addClass(\"highcharts-\"+this.coll.toLowerCase()+\" \"+(L||\"\")).add(u),a.labelGroup=c.g(\"axis-labels\").attr({zIndex:m.zIndex||7}).addClass(\"highcharts-\"+a.coll.toLowerCase()+\"-labels \"+(L||\"\")).add(u));v||a.isLinked?(g(p,function(b,\nc){a.generateTick(b,c)}),a.renderUnsquish(),!1===m.reserveSpace||0!==k&&2!==k&&{1:\"left\",3:\"right\"}[k]!==a.labelAlign&&\"center\"!==a.labelAlign||g(p,function(a){G=Math.max(d[a].getLabelSize(),G)}),a.staggerLines&&(G*=a.staggerLines,a.labelOffset=G*(a.opposite?-1:1))):q(d,function(a,b){a.destroy();delete d[b]});I&&I.text&&!1!==I.enabled&&(a.addTitle(z),z&&!1!==I.reserveSpace&&(a.titleOffset=D=a.axisTitle.getBBox()[n?\"height\":\"width\"],y=I.offset,l=r(y)?0:B(I.margin,n?5:10)));a.renderLine();a.offset=\nt*B(e.offset,J[k]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=0===k?-a.labelMetrics().h:2===k?a.tickRotCorr.y:0;l=Math.abs(G)+l;G&&(l=l-c+t*(n?B(m.y,a.tickRotCorr.y+8*t):m.x));a.axisTitleMargin=B(y,l);J[k]=Math.max(J[k],a.axisTitleMargin+D+t*a.offset,l,v&&p.length&&K?K[0]+t*a.offset:0);p=2*Math.floor(a.axisLine.strokeWidth()/2);0<e.offset&&(p-=2*e.offset);b[f]=Math.max(b[f]||p,p)},getLinePath:function(a){var b=this.chart,c=this.opposite,h=this.offset,e=this.horiz,p=this.left+(c?this.width:0)+h,h=b.chartHeight-\nthis.bottom-(c?this.height:0)+h;c&&(a*=-1);return b.renderer.crispLine([\"M\",e?this.left:p,e?h:this.top,\"L\",e?b.chartWidth-this.right:p,e?h:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass(\"highcharts-axis-line\").add(this.axisGroup),this.axisLine.attr({stroke:this.options.lineColor,\"stroke-width\":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,e=this.len,p=this.options.title,\nd=a?b:c,n=this.opposite,q=this.offset,k=p.x||0,g=p.y||0,f=this.axisTitle,v=this.chart.renderer.fontMetrics(p.style&&p.style.fontSize,f),f=Math.max(f.getBBox(null,0).height-v.h-1,0),e={low:d+(a?0:e),middle:d+e/2,high:d+(a?e:0)}[p.align],b=(a?c+this.height:b)+(a?1:-1)*(n?-1:1)*this.axisTitleMargin+[-f,f,v.f,-f][this.side];return{x:a?e+k:b+(n?this.width:0)+q+k,y:a?b+g-(n?this.height:0)+q:e+g}},renderMinorTick:function(a){var b=this.chart.hasRendered&&D(this.oldMin),c=this.minorTicks;c[a]||(c[a]=new I(this,\na,\"minor\"));b&&c[a].isNew&&c[a].render(null,!0);c[a].render(null,!1,1)},renderTick:function(a,b){var c=this.isLinked,e=this.ticks,h=this.chart.hasRendered&&D(this.oldMin);if(!c||a>=this.min&&a<=this.max)e[a]||(e[a]=new I(this,a)),h&&e[a].isNew&&e[a].render(b,!0,.1),e[a].render(b)},render:function(){var b=this,c=b.chart,e=b.options,p=b.isLog,d=b.lin2log,n=b.isLinked,k=b.tickPositions,f=b.axisTitle,v=b.ticks,y=b.minorTicks,l=b.alternateBands,m=e.stackLabels,r=e.alternateGridColor,B=b.tickmarkOffset,\nG=b.axisLine,J=b.showAxis,t=A(c.renderer.globalAnimation),L,u;b.labelEdge.length=0;b.overlap=!1;g([v,y,l],function(a){q(a,function(a){a.isActive=!1})});if(b.hasData()||n)b.minorTickInterval&&!b.categories&&g(b.getMinorTickPositions(),function(a){b.renderMinorTick(a)}),k.length&&(g(k,function(a,c){b.renderTick(a,c)}),B&&(0===b.min||b.single)&&(v[-1]||(v[-1]=new I(b,-1,null,!0)),v[-1].render(-1))),r&&g(k,function(e,h){u=void 0!==k[h+1]?k[h+1]+B:b.max-B;0===h%2&&e<b.max&&u<=b.max+(c.polar?-B:B)&&(l[e]||\n(l[e]=new a.PlotLineOrBand(b)),L=e+B,l[e].options={from:p?d(L):L,to:p?d(u):u,color:r},l[e].render(),l[e].isActive=!0)}),b._addedPlotLB||(g((e.plotLines||[]).concat(e.plotBands||[]),function(a){b.addPlotBandOrLine(a)}),b._addedPlotLB=!0);g([v,y,l],function(a){var b,e=[],h=t.duration;q(a,function(a,b){a.isActive||(a.render(b,!1,0),a.isActive=!1,e.push(b))});z(function(){for(b=e.length;b--;)a[e[b]]&&!a[e[b]].isActive&&(a[e[b]].destroy(),delete a[e[b]])},a!==l&&c.hasRendered&&h?h:0)});G&&(G[G.isPlaced?\n\"animate\":\"attr\"]({d:this.getLinePath(G.strokeWidth())}),G.isPlaced=!0,G[J?\"show\":\"hide\"](!0));f&&J&&(e=b.getTitlePosition(),D(e.y)?(f[f.isNew?\"attr\":\"animate\"](e),f.isNew=!1):(f.attr(\"y\",-9999),f.isNew=!0));m&&m.enabled&&b.renderStackTotals();b.isDirty=!1},redraw:function(){this.visible&&(this.render(),g(this.plotLinesAndBands,function(a){a.render()}));g(this.series,function(a){a.isDirty=!0})},keepProps:\"extKey hcEvents names series userMax userMin\".split(\" \"),destroy:function(a){var b=this,c=b.stacks,\ne=b.plotLinesAndBands,h;a||K(b);q(c,function(a,b){t(a);c[b]=null});g([b.ticks,b.minorTicks,b.alternateBands],function(a){t(a)});if(e)for(a=e.length;a--;)e[a].destroy();g(\"stackTotalGroup axisLine axisTitle axisGroup gridGroup labelGroup cross\".split(\" \"),function(a){b[a]&&(b[a]=b[a].destroy())});for(h in b.plotLinesAndBandsGroups)b.plotLinesAndBandsGroups[h]=b.plotLinesAndBandsGroups[h].destroy();q(b,function(a,c){-1===y(c,b.keepProps)&&delete b[c]})},drawCrosshair:function(a,b){var c,e=this.crosshair,\nh=B(e.snap,!0),p,d=this.cross;a||(a=this.cross&&this.cross.e);this.crosshair&&!1!==(r(b)||!h)?(h?r(b)&&(p=this.isXAxis?b.plotX:this.len-b.plotY):p=a&&(this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos),r(p)&&(c=this.getPlotLinePath(b&&(this.isXAxis?b.x:B(b.stackY,b.y)),null,null,null,p)||null),r(c)?(b=this.categories&&!this.isRadial,d||(this.cross=d=this.chart.renderer.path().addClass(\"highcharts-crosshair highcharts-crosshair-\"+(b?\"category \":\"thin \")+e.className).attr({zIndex:B(e.zIndex,2)}).add(),\nd.attr({stroke:e.color||(b?m(\"#ccd6eb\").setOpacity(.25).get():\"#cccccc\"),\"stroke-width\":B(e.width,1)}),e.dashStyle&&d.attr({dashstyle:e.dashStyle})),d.show().attr({d:c}),b&&!e.width&&d.attr({\"stroke-width\":this.transA}),this.cross.e=a):this.hideCrosshair()):this.hideCrosshair()},hideCrosshair:function(){this.cross&&this.cross.hide()}});return a.Axis=L}(M);(function(a){var C=a.Axis,A=a.Date,F=a.dateFormat,E=a.defaultOptions,m=a.defined,f=a.each,l=a.extend,r=a.getMagnitude,u=a.getTZOffset,t=a.normalizeTickInterval,\ng=a.pick,d=a.timeUnits;C.prototype.getTimeTicks=function(a,b,e,v){var k=[],n={},D=E.global.useUTC,r,c=new A(b-Math.max(u(b),u(e))),G=A.hcMakeTime,q=a.unitRange,B=a.count,t,p;if(m(b)){c[A.hcSetMilliseconds](q>=d.second?0:B*Math.floor(c.getMilliseconds()/B));if(q>=d.second)c[A.hcSetSeconds](q>=d.minute?0:B*Math.floor(c.getSeconds()/B));if(q>=d.minute)c[A.hcSetMinutes](q>=d.hour?0:B*Math.floor(c[A.hcGetMinutes]()/B));if(q>=d.hour)c[A.hcSetHours](q>=d.day?0:B*Math.floor(c[A.hcGetHours]()/B));if(q>=d.day)c[A.hcSetDate](q>=\nd.month?1:B*Math.floor(c[A.hcGetDate]()/B));q>=d.month&&(c[A.hcSetMonth](q>=d.year?0:B*Math.floor(c[A.hcGetMonth]()/B)),r=c[A.hcGetFullYear]());if(q>=d.year)c[A.hcSetFullYear](r-r%B);if(q===d.week)c[A.hcSetDate](c[A.hcGetDate]()-c[A.hcGetDay]()+g(v,1));r=c[A.hcGetFullYear]();v=c[A.hcGetMonth]();var z=c[A.hcGetDate](),I=c[A.hcGetHours]();if(A.hcTimezoneOffset||A.hcGetTimezoneOffset)p=(!D||!!A.hcGetTimezoneOffset)&&(e-b>4*d.month||u(b)!==u(e)),c=c.getTime(),t=u(c),c=new A(c+t);D=c.getTime();for(b=1;D<\ne;)k.push(D),D=q===d.year?G(r+b*B,0):q===d.month?G(r,v+b*B):!p||q!==d.day&&q!==d.week?p&&q===d.hour?G(r,v,z,I+b*B,0,0,t)-t:D+q*B:G(r,v,z+b*B*(q===d.day?1:7)),b++;k.push(D);q<=d.hour&&1E4>k.length&&f(k,function(a){0===a%18E5&&\"000000000\"===F(\"%H%M%S%L\",a)&&(n[a]=\"day\")})}k.info=l(a,{higherRanks:n,totalRange:q*B});return k};C.prototype.normalizeTimeTickInterval=function(a,b){var e=b||[[\"millisecond\",[1,2,5,10,20,25,50,100,200,500]],[\"second\",[1,2,5,10,15,30]],[\"minute\",[1,2,5,10,15,30]],[\"hour\",[1,\n2,3,4,6,8,12]],[\"day\",[1,2]],[\"week\",[1,2]],[\"month\",[1,2,3,4,6]],[\"year\",null]];b=e[e.length-1];var k=d[b[0]],g=b[1],n;for(n=0;n<e.length&&!(b=e[n],k=d[b[0]],g=b[1],e[n+1]&&a<=(k*g[g.length-1]+d[e[n+1][0]])/2);n++);k===d.year&&a<5*k&&(g=[1,2,5]);a=t(a/k,g,\"year\"===b[0]?Math.max(r(a/k),1):1);return{unitRange:k,count:a,unitName:b[0]}}})(M);(function(a){var C=a.Axis,A=a.getMagnitude,F=a.map,E=a.normalizeTickInterval,m=a.pick;C.prototype.getLogTickPositions=function(a,l,r,u){var f=this.options,g=this.len,\nd=this.lin2log,k=this.log2lin,b=[];u||(this._minorAutoInterval=null);if(.5<=a)a=Math.round(a),b=this.getLinearTickPositions(a,l,r);else if(.08<=a)for(var g=Math.floor(l),e,v,y,n,D,f=.3<a?[1,2,4]:.15<a?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];g<r+1&&!D;g++)for(v=f.length,e=0;e<v&&!D;e++)y=k(d(g)*f[e]),y>l&&(!u||n<=r)&&void 0!==n&&b.push(n),n>r&&(D=!0),n=y;else l=d(l),r=d(r),a=f[u?\"minorTickInterval\":\"tickInterval\"],a=m(\"auto\"===a?null:a,this._minorAutoInterval,f.tickPixelInterval/(u?5:1)*(r-l)/((u?g/this.tickPositions.length:\ng)||1)),a=E(a,null,A(a)),b=F(this.getLinearTickPositions(a,l,r),k),u||(this._minorAutoInterval=a/5);u||(this.tickInterval=a);return b};C.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};C.prototype.lin2log=function(a){return Math.pow(10,a)}})(M);(function(a,C){var A=a.arrayMax,F=a.arrayMin,E=a.defined,m=a.destroyObjectProperties,f=a.each,l=a.erase,r=a.merge,u=a.pick;a.PlotLineOrBand=function(a,g){this.axis=a;g&&(this.options=g,this.id=g.id)};a.PlotLineOrBand.prototype={render:function(){var f=\nthis,g=f.axis,d=g.horiz,k=f.options,b=k.label,e=f.label,v=k.to,l=k.from,n=k.value,D=E(l)&&E(v),m=E(n),c=f.svgElem,G=!c,q=[],B=k.color,K=u(k.zIndex,0),p=k.events,q={\"class\":\"highcharts-plot-\"+(D?\"band \":\"line \")+(k.className||\"\")},z={},I=g.chart.renderer,L=D?\"bands\":\"lines\",h=g.log2lin;g.isLog&&(l=h(l),v=h(v),n=h(n));m?(q={stroke:B,\"stroke-width\":k.width},k.dashStyle&&(q.dashstyle=k.dashStyle)):D&&(B&&(q.fill=B),k.borderWidth&&(q.stroke=k.borderColor,q[\"stroke-width\"]=k.borderWidth));z.zIndex=K;L+=\n\"-\"+K;(B=g.plotLinesAndBandsGroups[L])||(g.plotLinesAndBandsGroups[L]=B=I.g(\"plot-\"+L).attr(z).add());G&&(f.svgElem=c=I.path().attr(q).add(B));if(m)q=g.getPlotLinePath(n,c.strokeWidth());else if(D)q=g.getPlotBandPath(l,v,k);else return;G&&q&&q.length?(c.attr({d:q}),p&&a.objectEach(p,function(a,b){c.on(b,function(a){p[b].apply(f,[a])})})):c&&(q?(c.show(),c.animate({d:q})):(c.hide(),e&&(f.label=e=e.destroy())));b&&E(b.text)&&q&&q.length&&0<g.width&&0<g.height&&!q.flat?(b=r({align:d&&D&&\"center\",x:d?\n!D&&4:10,verticalAlign:!d&&D&&\"middle\",y:d?D?16:10:D?6:-4,rotation:d&&!D&&90},b),this.renderLabel(b,q,D,K)):e&&e.hide();return f},renderLabel:function(a,g,d,k){var b=this.label,e=this.axis.chart.renderer;b||(b={align:a.textAlign||a.align,rotation:a.rotation,\"class\":\"highcharts-plot-\"+(d?\"band\":\"line\")+\"-label \"+(a.className||\"\")},b.zIndex=k,this.label=b=e.text(a.text,0,0,a.useHTML).attr(b).add(),b.css(a.style));k=[g[1],g[4],d?g[6]:g[1]];g=[g[2],g[5],d?g[7]:g[2]];d=F(k);e=F(g);b.align(a,!1,{x:d,y:e,\nwidth:A(k)-d,height:A(g)-e});b.show()},destroy:function(){l(this.axis.plotLinesAndBands,this);delete this.axis;m(this)}};a.extend(C.prototype,{getPlotBandPath:function(a,g){var d=this.getPlotLinePath(g,null,null,!0),k=this.getPlotLinePath(a,null,null,!0),b=this.horiz,e=1;a=a<this.min&&g<this.min||a>this.max&&g>this.max;k&&d?(a&&(k.flat=k.toString()===d.toString(),e=0),k.push(b&&d[4]===k[4]?d[4]+e:d[4],b||d[5]!==k[5]?d[5]:d[5]+e,b&&d[1]===k[1]?d[1]+e:d[1],b||d[2]!==k[2]?d[2]:d[2]+e)):k=null;return k},\naddPlotBand:function(a){return this.addPlotBandOrLine(a,\"plotBands\")},addPlotLine:function(a){return this.addPlotBandOrLine(a,\"plotLines\")},addPlotBandOrLine:function(f,g){var d=(new a.PlotLineOrBand(this,f)).render(),k=this.userOptions;d&&(g&&(k[g]=k[g]||[],k[g].push(f)),this.plotLinesAndBands.push(d));return d},removePlotBandOrLine:function(a){for(var g=this.plotLinesAndBands,d=this.options,k=this.userOptions,b=g.length;b--;)g[b].id===a&&g[b].destroy();f([d.plotLines||[],k.plotLines||[],d.plotBands||\n[],k.plotBands||[]],function(e){for(b=e.length;b--;)e[b].id===a&&l(e,e[b])})},removePlotBand:function(a){this.removePlotBandOrLine(a)},removePlotLine:function(a){this.removePlotBandOrLine(a)}})})(M,S);(function(a){var C=a.dateFormat,A=a.each,F=a.extend,E=a.format,m=a.isNumber,f=a.map,l=a.merge,r=a.pick,u=a.splat,t=a.syncTimeout,g=a.timeUnits;a.Tooltip=function(){this.init.apply(this,arguments)};a.Tooltip.prototype={init:function(a,k){this.chart=a;this.options=k;this.crosshairs=[];this.now={x:0,y:0};\nthis.isHidden=!0;this.split=k.split&&!a.inverted;this.shared=k.shared||this.split},cleanSplit:function(a){A(this.chart.series,function(d){var b=d&&d.tt;b&&(!b.isActive||a?d.tt=b.destroy():b.isActive=!1)})},getLabel:function(){var a=this.chart.renderer,k=this.options;this.label||(this.split?this.label=a.g(\"tooltip\"):(this.label=a.label(\"\",0,0,k.shape||\"callout\",null,null,k.useHTML,null,\"tooltip\").attr({padding:k.padding,r:k.borderRadius}),this.label.attr({fill:k.backgroundColor,\"stroke-width\":k.borderWidth}).css(k.style).shadow(k.shadow)),\nthis.label.attr({zIndex:8}).add());return this.label},update:function(a){this.destroy();l(!0,this.chart.options.tooltip.userOptions,a);this.init(this.chart,l(!0,this.options,a))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&&(this.cleanSplit(this.chart,!0),this.tt=this.tt.destroy());clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,k,b,e){var d=this,g=d.now,n=!1!==d.options.animation&&!d.isHidden&&(1<Math.abs(a-g.x)||1<Math.abs(k-\ng.y)),f=d.followPointer||1<d.len;F(g,{x:n?(2*g.x+a)/3:a,y:n?(g.y+k)/2:k,anchorX:f?void 0:n?(2*g.anchorX+b)/3:b,anchorY:f?void 0:n?(g.anchorY+e)/2:e});d.getLabel().attr(g);n&&(clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){d&&d.move(a,k,b,e)},32))},hide:function(a){var d=this;clearTimeout(this.hideTimer);a=r(a,this.options.hideDelay,500);this.isHidden||(this.hideTimer=t(function(){d.getLabel()[a?\"fadeOut\":\"hide\"]();d.isHidden=!0},a))},getAnchor:function(a,k){var b,e=this.chart,\nd=e.inverted,g=e.plotTop,n=e.plotLeft,l=0,m=0,c,r;a=u(a);b=a[0].tooltipPos;this.followPointer&&k&&(void 0===k.chartX&&(k=e.pointer.normalize(k)),b=[k.chartX-e.plotLeft,k.chartY-g]);b||(A(a,function(a){c=a.series.yAxis;r=a.series.xAxis;l+=a.plotX+(!d&&r?r.left-n:0);m+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!d&&c?c.top-g:0)}),l/=a.length,m/=a.length,b=[d?e.plotWidth-m:l,this.shared&&!d&&1<a.length&&k?k.chartY-g:d?e.plotHeight-l:m]);return f(b,Math.round)},getPosition:function(a,g,b){var e=this.chart,\nd=this.distance,k={},n=b.h||0,f,l=[\"y\",e.chartHeight,g,b.plotY+e.plotTop,e.plotTop,e.plotTop+e.plotHeight],c=[\"x\",e.chartWidth,a,b.plotX+e.plotLeft,e.plotLeft,e.plotLeft+e.plotWidth],m=!this.followPointer&&r(b.ttBelow,!e.inverted===!!b.negative),q=function(a,b,c,e,p,q){var h=c<e-d,g=e+d+c<b,f=e-d-c;e+=d;if(m&&g)k[a]=e;else if(!m&&h)k[a]=f;else if(h)k[a]=Math.min(q-c,0>f-n?f:f-n);else if(g)k[a]=Math.max(p,e+n+c>b?e:e+n);else return!1},B=function(a,b,c,e){var h;e<d||e>b-d?h=!1:k[a]=e<c/2?1:e>b-c/2?\nb-c-2:e-c/2;return h},t=function(a){var b=l;l=c;c=b;f=a},p=function(){!1!==q.apply(0,l)?!1!==B.apply(0,c)||f||(t(!0),p()):f?k.x=k.y=0:(t(!0),p())};(e.inverted||1<this.len)&&t();p();return k},defaultFormatter:function(a){var d=this.points||u(this),b;b=[a.tooltipFooterHeaderFormatter(d[0])];b=b.concat(a.bodyFormatter(d));b.push(a.tooltipFooterHeaderFormatter(d[0],!0));return b},refresh:function(a,g){var b,e=this.options,d,k=a,n,f={},l=[];b=e.formatter||this.defaultFormatter;var f=this.shared,c;e.enabled&&\n(clearTimeout(this.hideTimer),this.followPointer=u(k)[0].series.tooltipOptions.followPointer,n=this.getAnchor(k,g),g=n[0],d=n[1],!f||k.series&&k.series.noSharedTooltip?f=k.getLabelConfig():(A(k,function(a){a.setState(\"hover\");l.push(a.getLabelConfig())}),f={x:k[0].category,y:k[0].y},f.points=l,k=k[0]),this.len=l.length,f=b.call(f,this),c=k.series,this.distance=r(c.tooltipOptions.distance,16),!1===f?this.hide():(b=this.getLabel(),this.isHidden&&b.attr({opacity:1}).show(),this.split?this.renderSplit(f,\na):(e.style.width||b.css({width:this.chart.spacingBox.width}),b.attr({text:f&&f.join?f.join(\"\"):f}),b.removeClass(/highcharts-color-[\\d]+/g).addClass(\"highcharts-color-\"+r(k.colorIndex,c.colorIndex)),b.attr({stroke:e.borderColor||k.color||c.color||\"#666666\"}),this.updatePosition({plotX:g,plotY:d,negative:k.negative,ttBelow:k.ttBelow,h:n[2]||0})),this.isHidden=!1))},renderSplit:function(d,k){var b=this,e=[],g=this.chart,f=g.renderer,n=!0,l=this.options,m=0,c=this.getLabel();A(d.slice(0,k.length+1),\nfunction(a,d){if(!1!==a){d=k[d-1]||{isHeader:!0,plotX:k[0].plotX};var q=d.series||b,v=q.tt,p=d.series||{},z=\"highcharts-color-\"+r(d.colorIndex,p.colorIndex,\"none\");v||(q.tt=v=f.label(null,null,null,\"callout\").addClass(\"highcharts-tooltip-box \"+z).attr({padding:l.padding,r:l.borderRadius,fill:l.backgroundColor,stroke:l.borderColor||d.color||p.color||\"#333333\",\"stroke-width\":l.borderWidth}).add(c));v.isActive=!0;v.attr({text:a});v.css(l.style).shadow(l.shadow);a=v.getBBox();p=a.width+v.strokeWidth();\nd.isHeader?(m=a.height,p=Math.max(0,Math.min(d.plotX+g.plotLeft-p/2,g.chartWidth-p))):p=d.plotX+g.plotLeft-r(l.distance,16)-p;0>p&&(n=!1);a=(d.series&&d.series.yAxis&&d.series.yAxis.pos)+(d.plotY||0);a-=g.plotTop;e.push({target:d.isHeader?g.plotHeight+m:a,rank:d.isHeader?1:0,size:q.tt.getBBox().height+1,point:d,x:p,tt:v})}});this.cleanSplit();a.distribute(e,g.plotHeight+m);A(e,function(a){var b=a.point,c=b.series;a.tt.attr({visibility:void 0===a.pos?\"hidden\":\"inherit\",x:n||b.isHeader?a.x:b.plotX+\ng.plotLeft+r(l.distance,16),y:a.pos+g.plotTop,anchorX:b.isHeader?b.plotX+g.plotLeft:b.plotX+c.xAxis.pos,anchorY:b.isHeader?a.pos+g.plotTop-15:b.plotY+c.yAxis.pos})})},updatePosition:function(a){var d=this.chart,b=this.getLabel(),b=(this.options.positioner||this.getPosition).call(this,b.width,b.height,a);this.move(Math.round(b.x),Math.round(b.y||0),a.plotX+d.plotLeft,a.plotY+d.plotTop)},getDateFormat:function(a,k,b,e){var d=C(\"%m-%d %H:%M:%S.%L\",k),f,n,l={millisecond:15,second:12,minute:9,hour:6,day:3},\nm=\"millisecond\";for(n in g){if(a===g.week&&+C(\"%w\",k)===b&&\"00:00:00.000\"===d.substr(6)){n=\"week\";break}if(g[n]>a){n=m;break}if(l[n]&&d.substr(l[n])!==\"01-01 00:00:00.000\".substr(l[n]))break;\"week\"!==n&&(m=n)}n&&(f=e[n]);return f},getXDateFormat:function(a,g,b){g=g.dateTimeLabelFormats;var e=b&&b.closestPointRange;return(e?this.getDateFormat(e,a.x,b.options.startOfWeek,g):g.day)||g.year},tooltipFooterHeaderFormatter:function(a,g){var b=g?\"footer\":\"header\";g=a.series;var e=g.tooltipOptions,d=e.xDateFormat,\nk=g.xAxis,n=k&&\"datetime\"===k.options.type&&m(a.key),b=e[b+\"Format\"];n&&!d&&(d=this.getXDateFormat(a,e,k));n&&d&&(b=b.replace(\"{point.key}\",\"{point.key:\"+d+\"}\"));return E(b,{point:a,series:g})},bodyFormatter:function(a){return f(a,function(a){var b=a.series.tooltipOptions;return(b.pointFormatter||a.point.tooltipFormatter).call(a.point,b.pointFormat)})}}})(M);(function(a){var C=a.addEvent,A=a.attr,F=a.charts,E=a.color,m=a.css,f=a.defined,l=a.each,r=a.extend,u=a.find,t=a.fireEvent,g=a.isObject,d=a.offset,\nk=a.pick,b=a.removeEvent,e=a.splat,v=a.Tooltip,y=a.win;a.Pointer=function(a,b){this.init(a,b)};a.Pointer.prototype={init:function(a,b){this.options=b;this.chart=a;this.runChartClick=b.chart.events&&!!b.chart.events.click;this.pinchDown=[];this.lastValidTouch={};v&&(a.tooltip=new v(a,b.tooltip),this.followTouchMove=k(b.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,e=b.options.chart,c=e.zoomType||\"\",b=b.inverted;/touch/.test(a.type)&&(c=k(e.pinchType,c));\nthis.zoomX=a=/x/.test(c);this.zoomY=c=/y/.test(c);this.zoomHor=a&&!b||c&&b;this.zoomVert=c&&!b||a&&b;this.hasZoom=a||c},normalize:function(a,b){var e,c;a=a||y.event;a.target||(a.target=a.srcElement);c=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;b||(this.chartPosition=b=d(this.chart.container));void 0===c.pageX?(e=Math.max(a.x,a.clientX-b.left),b=a.y):(e=c.pageX-b.left,b=c.pageY-b.top);return r(a,{chartX:Math.round(e),chartY:Math.round(b)})},getCoordinates:function(a){var b=\n{xAxis:[],yAxis:[]};l(this.chart.axes,function(e){b[e.isXAxis?\"xAxis\":\"yAxis\"].push({axis:e,value:e.toValue(a[e.horiz?\"chartX\":\"chartY\"])})});return b},findNearestKDPoint:function(a,b,e){var c;l(a,function(a){var d=!(a.noSharedTooltip&&b)&&0>a.options.findNearestPointBy.indexOf(\"y\");a=a.searchPoint(e,d);if((d=g(a,!0))&&!(d=!g(c,!0)))var d=c.distX-a.distX,n=c.dist-a.dist,k=(a.series.group&&a.series.group.zIndex)-(c.series.group&&c.series.group.zIndex),d=0<(0!==d&&b?d:0!==n?n:0!==k?k:c.series.index>\na.series.index?-1:1);d&&(c=a)});return c},getPointFromEvent:function(a){a=a.target;for(var b;a&&!b;)b=a.point,a=a.parentNode;return b},getChartCoordinatesFromPoint:function(a,b){var e=a.series,c=e.xAxis,e=e.yAxis;if(c&&e)return b?{chartX:c.len+c.pos-a.clientX,chartY:e.len+e.pos-a.plotY}:{chartX:a.clientX+c.pos,chartY:a.plotY+e.pos}},getHoverData:function(b,e,d,c,f,q){var n,v=[];c=!(!c||!b);var p=e&&!e.stickyTracking?[e]:a.grep(d,function(a){return a.visible&&!(!f&&a.directTouch)&&k(a.options.enableMouseTracking,\n!0)&&a.stickyTracking});e=(n=c?b:this.findNearestKDPoint(p,f,q))&&n.series;n&&(f&&!e.noSharedTooltip?(p=a.grep(d,function(a){return a.visible&&!(!f&&a.directTouch)&&k(a.options.enableMouseTracking,!0)&&!a.noSharedTooltip}),l(p,function(a){a=u(a.points,function(a){return a.x===n.x});g(a)&&!a.isNull&&v.push(a)})):v.push(n));return{hoverPoint:n,hoverSeries:e,hoverPoints:v}},runPointActions:function(b,e){var d=this.chart,c=d.tooltip,g=c?c.shared:!1,n=e||d.hoverPoint,f=n&&n.series||d.hoverSeries,f=this.getHoverData(n,\nf,d.series,!!e||f&&f.directTouch&&this.isDirectTouch,g,b),v,n=f.hoverPoint;v=f.hoverPoints;e=(f=f.hoverSeries)&&f.tooltipOptions.followPointer;g=g&&f&&!f.noSharedTooltip;if(n&&(n!==d.hoverPoint||c&&c.isHidden)){l(d.hoverPoints||[],function(b){-1===a.inArray(b,v)&&b.setState()});l(v||[],function(a){a.setState(\"hover\")});if(d.hoverSeries!==f)f.onMouseOver();d.hoverPoint&&d.hoverPoint.firePointEvent(\"mouseOut\");n.firePointEvent(\"mouseOver\");d.hoverPoints=v;d.hoverPoint=n;c&&c.refresh(g?v:n,b)}else e&&\nc&&!c.isHidden&&(n=c.getAnchor([{}],b),c.updatePosition({plotX:n[0],plotY:n[1]}));this.unDocMouseMove||(this.unDocMouseMove=C(d.container.ownerDocument,\"mousemove\",function(b){var c=F[a.hoverChartIndex];if(c)c.pointer.onDocumentMouseMove(b)}));l(d.axes,function(c){var e=k(c.crosshair.snap,!0),p=e?a.find(v,function(a){return a.series[c.coll]===c}):void 0;p||!e?c.drawCrosshair(b,p):c.hideCrosshair()})},reset:function(a,b){var d=this.chart,c=d.hoverSeries,g=d.hoverPoint,n=d.hoverPoints,f=d.tooltip,k=\nf&&f.shared?n:g;a&&k&&l(e(k),function(b){b.series.isCartesian&&void 0===b.plotX&&(a=!1)});if(a)f&&k&&(f.refresh(k),g&&(g.setState(g.state,!0),l(d.axes,function(a){a.crosshair&&a.drawCrosshair(null,g)})));else{if(g)g.onMouseOut();n&&l(n,function(a){a.setState()});if(c)c.onMouseOut();f&&f.hide(b);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());l(d.axes,function(a){a.hideCrosshair()});this.hoverX=d.hoverPoints=d.hoverPoint=null}},scaleGroups:function(a,b){var e=this.chart,c;l(e.series,\nfunction(d){c=a||d.getPlotBox();d.xAxis&&d.xAxis.zoomEnabled&&d.group&&(d.group.attr(c),d.markerGroup&&(d.markerGroup.attr(c),d.markerGroup.clip(b?e.clipRect:null)),d.dataLabelsGroup&&d.dataLabelsGroup.attr(c))});e.clipRect.attr(b||e.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,e=b.options.chart,c=a.chartX,d=a.chartY,g=this.zoomHor,n=this.zoomVert,\nf=b.plotLeft,p=b.plotTop,k=b.plotWidth,v=b.plotHeight,l,h=this.selectionMarker,w=this.mouseDownX,m=this.mouseDownY,r=e.panKey&&a[e.panKey+\"Key\"];h&&h.touch||(c<f?c=f:c>f+k&&(c=f+k),d<p?d=p:d>p+v&&(d=p+v),this.hasDragged=Math.sqrt(Math.pow(w-c,2)+Math.pow(m-d,2)),10<this.hasDragged&&(l=b.isInsidePlot(w-f,m-p),b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!r&&!h&&(this.selectionMarker=h=b.renderer.rect(f,p,g?1:k,n?1:v,0).attr({fill:e.selectionMarkerFill||E(\"#335cad\").setOpacity(.25).get(),\"class\":\"highcharts-selection-marker\",\nzIndex:7}).add()),h&&g&&(c-=w,h.attr({width:Math.abs(c),x:(0<c?0:c)+w})),h&&n&&(c=d-m,h.attr({height:Math.abs(c),y:(0<c?0:c)+m})),l&&!h&&e.panning&&b.pan(a,e.panning)))},drop:function(a){var b=this,e=this.chart,c=this.hasPinched;if(this.selectionMarker){var d={originalEvent:a,xAxis:[],yAxis:[]},g=this.selectionMarker,n=g.attr?g.attr(\"x\"):g.x,k=g.attr?g.attr(\"y\"):g.y,p=g.attr?g.attr(\"width\"):g.width,v=g.attr?g.attr(\"height\"):g.height,I;if(this.hasDragged||c)l(e.axes,function(e){if(e.zoomEnabled&&f(e.min)&&\n(c||b[{xAxis:\"zoomX\",yAxis:\"zoomY\"}[e.coll]])){var h=e.horiz,g=\"touchend\"===a.type?e.minPixelPadding:0,q=e.toValue((h?n:k)+g),h=e.toValue((h?n+p:k+v)-g);d[e.coll].push({axis:e,min:Math.min(q,h),max:Math.max(q,h)});I=!0}}),I&&t(e,\"selection\",d,function(a){e.zoom(r(a,c?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();c&&this.scaleGroups()}e&&(m(e.container,{cursor:e._cursor}),e.cancelClick=10<this.hasDragged,e.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=\n[])},onContainerMouseDown:function(a){a=this.normalize(a);this.zoomOption(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(b){F[a.hoverChartIndex]&&F[a.hoverChartIndex].pointer.drop(b)},onDocumentMouseMove:function(a){var b=this.chart,e=this.chartPosition;a=this.normalize(a,e);!e||this.inClass(a.target,\"highcharts-tracker\")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)||this.reset()},onContainerMouseLeave:function(b){var e=F[a.hoverChartIndex];e&&(b.relatedTarget||\nb.toElement)&&(e.pointer.reset(),e.pointer.chartPosition=null)},onContainerMouseMove:function(b){var e=this.chart;f(a.hoverChartIndex)&&F[a.hoverChartIndex]&&F[a.hoverChartIndex].mouseIsDown||(a.hoverChartIndex=e.index);b=this.normalize(b);b.returnValue=!1;\"mousedown\"===e.mouseIsDown&&this.drag(b);!this.inClass(b.target,\"highcharts-tracker\")&&!e.isInsidePlot(b.chartX-e.plotLeft,b.chartY-e.plotTop)||e.openMenu||this.runPointActions(b)},inClass:function(a,b){for(var e;a;){if(e=A(a,\"class\")){if(-1!==\ne.indexOf(b))return!0;if(-1!==e.indexOf(\"highcharts-container\"))return!1}a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries;a=a.relatedTarget||a.toElement;this.isDirectTouch=!1;if(!(!b||!a||b.stickyTracking||this.inClass(a,\"highcharts-tooltip\")||this.inClass(a,\"highcharts-series-\"+b.index)&&this.inClass(a,\"highcharts-tracker\")))b.onMouseOut()},onContainerClick:function(a){var b=this.chart,e=b.hoverPoint,c=b.plotLeft,d=b.plotTop;a=this.normalize(a);b.cancelClick||(e&&this.inClass(a.target,\n\"highcharts-tracker\")?(t(e.series,\"click\",r(a,{point:e})),b.hoverPoint&&e.firePointEvent(\"click\",a)):(r(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-c,a.chartY-d)&&t(b,\"click\",a)))},setDOMEvents:function(){var b=this,e=b.chart.container,d=e.ownerDocument;e.onmousedown=function(a){b.onContainerMouseDown(a)};e.onmousemove=function(a){b.onContainerMouseMove(a)};e.onclick=function(a){b.onContainerClick(a)};C(e,\"mouseleave\",b.onContainerMouseLeave);1===a.chartCount&&C(d,\"mouseup\",b.onDocumentMouseUp);\na.hasTouch&&(e.ontouchstart=function(a){b.onContainerTouchStart(a)},e.ontouchmove=function(a){b.onContainerTouchMove(a)},1===a.chartCount&&C(d,\"touchend\",b.onDocumentTouchEnd))},destroy:function(){var e=this,d=this.chart.container.ownerDocument;e.unDocMouseMove&&e.unDocMouseMove();b(e.chart.container,\"mouseleave\",e.onContainerMouseLeave);a.chartCount||(b(d,\"mouseup\",e.onDocumentMouseUp),a.hasTouch&&b(d,\"touchend\",e.onDocumentTouchEnd));clearInterval(e.tooltipTimeout);a.objectEach(e,function(a,b){e[b]=\nnull})}}})(M);(function(a){var C=a.charts,A=a.each,F=a.extend,E=a.map,m=a.noop,f=a.pick;F(a.Pointer.prototype,{pinchTranslate:function(a,f,m,t,g,d){this.zoomHor&&this.pinchTranslateDirection(!0,a,f,m,t,g,d);this.zoomVert&&this.pinchTranslateDirection(!1,a,f,m,t,g,d)},pinchTranslateDirection:function(a,f,m,t,g,d,k,b){var e=this.chart,v=a?\"x\":\"y\",l=a?\"X\":\"Y\",n=\"chart\"+l,r=a?\"width\":\"height\",u=e[\"plot\"+(a?\"Left\":\"Top\")],c,G,q=b||1,B=e.inverted,K=e.bounds[a?\"h\":\"v\"],p=1===f.length,z=f[0][n],I=m[0][n],\nL=!p&&f[1][n],h=!p&&m[1][n],w;m=function(){!p&&20<Math.abs(z-L)&&(q=b||Math.abs(I-h)/Math.abs(z-L));G=(u-I)/q+z;c=e[\"plot\"+(a?\"Width\":\"Height\")]/q};m();f=G;f<K.min?(f=K.min,w=!0):f+c>K.max&&(f=K.max-c,w=!0);w?(I-=.8*(I-k[v][0]),p||(h-=.8*(h-k[v][1])),m()):k[v]=[I,h];B||(d[v]=G-u,d[r]=c);d=B?1/q:q;g[r]=c;g[v]=f;t[B?a?\"scaleY\":\"scaleX\":\"scale\"+l]=q;t[\"translate\"+l]=d*u+(I-d*z)},pinch:function(a){var l=this,u=l.chart,t=l.pinchDown,g=a.touches,d=g.length,k=l.lastValidTouch,b=l.hasZoom,e=l.selectionMarker,\nv={},y=1===d&&(l.inClass(a.target,\"highcharts-tracker\")&&u.runTrackerClick||l.runChartClick),n={};1<d&&(l.initiated=!0);b&&l.initiated&&!y&&a.preventDefault();E(g,function(a){return l.normalize(a)});\"touchstart\"===a.type?(A(g,function(a,b){t[b]={chartX:a.chartX,chartY:a.chartY}}),k.x=[t[0].chartX,t[1]&&t[1].chartX],k.y=[t[0].chartY,t[1]&&t[1].chartY],A(u.axes,function(a){if(a.zoomEnabled){var b=u.bounds[a.horiz?\"h\":\"v\"],e=a.minPixelPadding,d=a.toPixels(f(a.options.min,a.dataMin)),g=a.toPixels(f(a.options.max,\na.dataMax)),k=Math.max(d,g);b.min=Math.min(a.pos,Math.min(d,g)-e);b.max=Math.max(a.pos+a.len,k+e)}}),l.res=!0):l.followTouchMove&&1===d?this.runPointActions(l.normalize(a)):t.length&&(e||(l.selectionMarker=e=F({destroy:m,touch:!0},u.plotBox)),l.pinchTranslate(t,g,v,e,n,k),l.hasPinched=b,l.scaleGroups(v,n),l.res&&(l.res=!1,this.reset(!1,0)))},touch:function(l,m){var r=this.chart,t,g;if(r.index!==a.hoverChartIndex)this.onContainerMouseLeave({relatedTarget:!0});a.hoverChartIndex=r.index;1===l.touches.length?\n(l=this.normalize(l),(g=r.isInsidePlot(l.chartX-r.plotLeft,l.chartY-r.plotTop))&&!r.openMenu?(m&&this.runPointActions(l),\"touchmove\"===l.type&&(m=this.pinchDown,t=m[0]?4<=Math.sqrt(Math.pow(m[0].chartX-l.chartX,2)+Math.pow(m[0].chartY-l.chartY,2)):!1),f(t,!0)&&this.pinch(l)):m&&this.reset()):2===l.touches.length&&this.pinch(l)},onContainerTouchStart:function(a){this.zoomOption(a);this.touch(a,!0)},onContainerTouchMove:function(a){this.touch(a)},onDocumentTouchEnd:function(f){C[a.hoverChartIndex]&&\nC[a.hoverChartIndex].pointer.drop(f)}})})(M);(function(a){var C=a.addEvent,A=a.charts,F=a.css,E=a.doc,m=a.extend,f=a.noop,l=a.Pointer,r=a.removeEvent,u=a.win,t=a.wrap;if(!a.hasTouch&&(u.PointerEvent||u.MSPointerEvent)){var g={},d=!!u.PointerEvent,k=function(){var b=[];b.item=function(a){return this[a]};a.objectEach(g,function(a){b.push({pageX:a.pageX,pageY:a.pageY,target:a.target})});return b},b=function(b,d,g,n){\"touch\"!==b.pointerType&&b.pointerType!==b.MSPOINTER_TYPE_TOUCH||!A[a.hoverChartIndex]||\n(n(b),n=A[a.hoverChartIndex].pointer,n[d]({type:g,target:b.currentTarget,preventDefault:f,touches:k()}))};m(l.prototype,{onContainerPointerDown:function(a){b(a,\"onContainerTouchStart\",\"touchstart\",function(a){g[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){b(a,\"onContainerTouchMove\",\"touchmove\",function(a){g[a.pointerId]={pageX:a.pageX,pageY:a.pageY};g[a.pointerId].target||(g[a.pointerId].target=a.currentTarget)})},onDocumentPointerUp:function(a){b(a,\n\"onDocumentTouchEnd\",\"touchend\",function(a){delete g[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,d?\"pointerdown\":\"MSPointerDown\",this.onContainerPointerDown);a(this.chart.container,d?\"pointermove\":\"MSPointerMove\",this.onContainerPointerMove);a(E,d?\"pointerup\":\"MSPointerUp\",this.onDocumentPointerUp)}});t(l.prototype,\"init\",function(a,b,d){a.call(this,b,d);this.hasZoom&&F(b.container,{\"-ms-touch-action\":\"none\",\"touch-action\":\"none\"})});t(l.prototype,\"setDOMEvents\",function(a){a.apply(this);\n(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(C)});t(l.prototype,\"destroy\",function(a){this.batchMSEvents(r);a.call(this)})}})(M);(function(a){var C=a.addEvent,A=a.css,F=a.discardElement,E=a.defined,m=a.each,f=a.isFirefox,l=a.marginNames,r=a.merge,u=a.pick,t=a.setAnimation,g=a.stableSort,d=a.win,k=a.wrap;a.Legend=function(a,e){this.init(a,e)};a.Legend.prototype={init:function(a,e){this.chart=a;this.setOptions(e);e.enabled&&(this.render(),C(this.chart,\"endResize\",function(){this.legend.positionCheckboxes()}))},\nsetOptions:function(a){var b=u(a.padding,8);this.options=a;this.itemStyle=a.itemStyle;this.itemHiddenStyle=r(this.itemStyle,a.itemHiddenStyle);this.itemMarginTop=a.itemMarginTop||0;this.padding=b;this.initialItemY=b-5;this.itemHeight=this.maxItemWidth=0;this.symbolWidth=u(a.symbolWidth,16);this.pages=[]},update:function(a,e){var b=this.chart;this.setOptions(r(!0,this.options,a));this.destroy();b.isDirtyLegend=b.isDirtyBox=!0;u(e,!0)&&b.redraw()},colorizeItem:function(a,e){a.legendGroup[e?\"removeClass\":\n\"addClass\"](\"highcharts-legend-item-hidden\");var b=this.options,d=a.legendItem,g=a.legendLine,f=a.legendSymbol,k=this.itemHiddenStyle.color,b=e?b.itemStyle.color:k,c=e?a.color||k:k,l=a.options&&a.options.marker,q={fill:c};d&&d.css({fill:b,color:b});g&&g.attr({stroke:c});f&&(l&&f.isMarker&&(q=a.pointAttribs(),e||(q.stroke=q.fill=k)),f.attr(q))},positionItem:function(a){var b=this.options,d=b.symbolPadding,b=!b.rtl,g=a._legendItemPos,f=g[0],g=g[1],k=a.checkbox;(a=a.legendGroup)&&a.element&&a.translate(b?\nf:this.legendWidth-f-2*d-4,g);k&&(k.x=f,k.y=g)},destroyItem:function(a){var b=a.checkbox;m([\"legendItem\",\"legendLine\",\"legendSymbol\",\"legendGroup\"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&F(a.checkbox)},destroy:function(){function a(a){this[a]&&(this[a]=this[a].destroy())}m(this.getAllItems(),function(b){m([\"legendItem\",\"legendGroup\"],a,b)});m(\"clipRect up down pager nav box title group\".split(\" \"),a,this);this.display=null},positionCheckboxes:function(a){var b=this.group&&this.group.alignAttr,\nd,g=this.clipHeight||this.legendHeight,f=this.titleHeight;b&&(d=b.translateY,m(this.allItems,function(e){var k=e.checkbox,c;k&&(c=d+f+k.y+(a||0)+3,A(k,{left:b.translateX+e.checkboxOffset+k.x-20+\"px\",top:c+\"px\",display:c>d-6&&c<d+g-6?\"\":\"none\"}))}))},renderTitle:function(){var a=this.options,e=this.padding,d=a.title,g=0;d.text&&(this.title||(this.title=this.chart.renderer.label(d.text,e-3,e-4,null,null,null,a.useHTML,null,\"legend-title\").attr({zIndex:1}).css(d.style).add(this.group)),a=this.title.getBBox(),\ng=a.height,this.offsetWidth=a.width,this.contentGroup.attr({translateY:g}));this.titleHeight=g},setText:function(b){var e=this.options;b.legendItem.attr({text:e.labelFormat?a.format(e.labelFormat,b):e.labelFormatter.call(b)})},renderItem:function(a){var b=this.chart,d=b.renderer,g=this.options,f=\"horizontal\"===g.layout,k=this.symbolWidth,l=g.symbolPadding,c=this.itemStyle,m=this.itemHiddenStyle,q=this.padding,B=f?u(g.itemDistance,20):0,t=!g.rtl,p=g.width,z=g.itemMarginBottom||0,I=this.itemMarginTop,\nL=a.legendItem,h=!a.series,w=!h&&a.series.drawLegendSymbol?a.series:a,P=w.options,H=this.createCheckboxForItem&&P&&P.showCheckbox,P=k+l+B+(H?20:0),O=g.useHTML,A=a.options.className;L||(a.legendGroup=d.g(\"legend-item\").addClass(\"highcharts-\"+w.type+\"-series highcharts-color-\"+a.colorIndex+(A?\" \"+A:\"\")+(h?\" highcharts-series-\"+a.index:\"\")).attr({zIndex:1}).add(this.scrollGroup),a.legendItem=L=d.text(\"\",t?k+l:-l,this.baseline||0,O).css(r(a.visible?c:m)).attr({align:t?\"left\":\"right\",zIndex:2}).add(a.legendGroup),\nthis.baseline||(k=c.fontSize,this.fontMetrics=d.fontMetrics(k,L),this.baseline=this.fontMetrics.f+3+I,L.attr(\"y\",this.baseline)),this.symbolHeight=g.symbolHeight||this.fontMetrics.f,w.drawLegendSymbol(this,a),this.setItemEvents&&this.setItemEvents(a,L,O),H&&this.createCheckboxForItem(a));this.colorizeItem(a,a.visible);c.width||L.css({width:(g.itemWidth||g.width||b.spacingBox.width)-P});this.setText(a);d=L.getBBox();c=a.checkboxOffset=g.itemWidth||a.legendItemWidth||d.width+P;this.itemHeight=d=Math.round(a.legendItemHeight||\nd.height||this.symbolHeight);f&&this.itemX-q+c>(p||b.spacingBox.width-2*q-g.x)&&(this.itemX=q,this.itemY+=I+this.lastLineHeight+z,this.lastLineHeight=0);this.maxItemWidth=Math.max(this.maxItemWidth,c);this.lastItemY=I+this.itemY+z;this.lastLineHeight=Math.max(d,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];f?this.itemX+=c:(this.itemY+=I+d+z,this.lastLineHeight=d);this.offsetWidth=p||Math.max((f?this.itemX-q-(a.checkbox?0:B):c)+q,this.offsetWidth)},getAllItems:function(){var a=[];m(this.chart.series,\nfunction(b){var e=b&&b.options;b&&u(e.showInLegend,E(e.linkedTo)?!1:void 0,!0)&&(a=a.concat(b.legendItems||(\"point\"===e.legendType?b.data:b)))});return a},adjustMargins:function(a,e){var b=this.chart,d=this.options,g=d.align.charAt(0)+d.verticalAlign.charAt(0)+d.layout.charAt(0);d.floating||m([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(f,k){f.test(g)&&!E(a[k])&&(b[l[k]]=Math.max(b[l[k]],b.legend[(k+1)%2?\"legendHeight\":\"legendWidth\"]+[1,-1,-1,1][k]*d[k%2?\"x\":\"y\"]+u(d.margin,\n12)+e[k]))})},render:function(){var a=this,e=a.chart,d=e.renderer,f=a.group,k,l,t,c,u=a.box,q=a.options,B=a.padding;a.itemX=B;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;f||(a.group=f=d.g(\"legend\").attr({zIndex:7}).add(),a.contentGroup=d.g().attr({zIndex:1}).add(f),a.scrollGroup=d.g().add(a.contentGroup));a.renderTitle();k=a.getAllItems();g(k,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});q.reversed&&k.reverse();a.allItems=k;a.display=l=\n!!k.length;a.lastLineHeight=0;m(k,function(b){a.renderItem(b)});t=(q.width||a.offsetWidth)+B;c=a.lastItemY+a.lastLineHeight+a.titleHeight;c=a.handleOverflow(c);c+=B;u||(a.box=u=d.rect().addClass(\"highcharts-legend-box\").attr({r:q.borderRadius}).add(f),u.isNew=!0);u.attr({stroke:q.borderColor,\"stroke-width\":q.borderWidth||0,fill:q.backgroundColor||\"none\"}).shadow(q.shadow);0<t&&0<c&&(u[u.isNew?\"attr\":\"animate\"](u.crisp({x:0,y:0,width:t,height:c},u.strokeWidth())),u.isNew=!1);u[l?\"show\":\"hide\"]();a.legendWidth=\nt;a.legendHeight=c;m(k,function(b){a.positionItem(b)});l&&f.align(r(q,{width:t,height:c}),!0,\"spacingBox\");e.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,d=this.chart,g=d.renderer,f=this.options,k=f.y,l=this.padding,d=d.spacingBox.height+(\"top\"===f.verticalAlign?-k:k)-l,k=f.maxHeight,c,r=this.clipRect,q=f.navigation,B=u(q.animation,!0),t=q.arrowSize||12,p=this.nav,z=this.pages,I,L=this.allItems,h=function(a){\"number\"===typeof a?r.attr({height:a}):r&&(b.clipRect=r.destroy(),\nb.contentGroup.clip());b.contentGroup.div&&(b.contentGroup.div.style.clip=a?\"rect(\"+l+\"px,9999px,\"+(l+a)+\"px,0)\":\"auto\")};\"horizontal\"!==f.layout||\"middle\"===f.verticalAlign||f.floating||(d/=2);k&&(d=Math.min(d,k));z.length=0;a>d&&!1!==q.enabled?(this.clipHeight=c=Math.max(d-20-this.titleHeight-l,0),this.currentPage=u(this.currentPage,1),this.fullHeight=a,m(L,function(a,b){var e=a._legendItemPos[1];a=Math.round(a.legendItem.getBBox().height);var d=z.length;if(!d||e-z[d-1]>c&&(I||e)!==z[d-1])z.push(I||\ne),d++;b===L.length-1&&e+a-z[d-1]>c&&z.push(e);e!==I&&(I=e)}),r||(r=b.clipRect=g.clipRect(0,l,9999,0),b.contentGroup.clip(r)),h(c),p||(this.nav=p=g.g().attr({zIndex:1}).add(this.group),this.up=g.symbol(\"triangle\",0,0,t,t).on(\"click\",function(){b.scroll(-1,B)}).add(p),this.pager=g.text(\"\",15,10).addClass(\"highcharts-legend-navigation\").css(q.style).add(p),this.down=g.symbol(\"triangle-down\",0,0,t,t).on(\"click\",function(){b.scroll(1,B)}).add(p)),b.scroll(0),a=d):p&&(h(),this.nav=p.destroy(),this.scrollGroup.attr({translateY:1}),\nthis.clipHeight=0);return a},scroll:function(a,e){var b=this.pages,d=b.length;a=this.currentPage+a;var g=this.clipHeight,f=this.options.navigation,k=this.pager,c=this.padding;a>d&&(a=d);0<a&&(void 0!==e&&t(e,this.chart),this.nav.attr({translateX:c,translateY:g+this.padding+7+this.titleHeight,visibility:\"visible\"}),this.up.attr({\"class\":1===a?\"highcharts-legend-nav-inactive\":\"highcharts-legend-nav-active\"}),k.attr({text:a+\"/\"+d}),this.down.attr({x:18+this.pager.getBBox().width,\"class\":a===d?\"highcharts-legend-nav-inactive\":\n\"highcharts-legend-nav-active\"}),this.up.attr({fill:1===a?f.inactiveColor:f.activeColor}).css({cursor:1===a?\"default\":\"pointer\"}),this.down.attr({fill:a===d?f.inactiveColor:f.activeColor}).css({cursor:a===d?\"default\":\"pointer\"}),e=-b[a-1]+this.initialItemY,this.scrollGroup.animate({translateY:e}),this.currentPage=a,this.positionCheckboxes(e))}};a.LegendSymbolMixin={drawRectangle:function(a,e){var b=a.symbolHeight,d=a.options.squareSymbol;e.legendSymbol=this.chart.renderer.rect(d?(a.symbolWidth-b)/\n2:0,a.baseline-b+1,d?b:a.symbolWidth,b,u(a.options.symbolRadius,b/2)).addClass(\"highcharts-point\").attr({zIndex:3}).add(e.legendGroup)},drawLineMarker:function(a){var b=this.options,d=b.marker,g=a.symbolWidth,f=a.symbolHeight,k=f/2,l=this.chart.renderer,c=this.legendGroup;a=a.baseline-Math.round(.3*a.fontMetrics.b);var m;m={\"stroke-width\":b.lineWidth||0};b.dashStyle&&(m.dashstyle=b.dashStyle);this.legendLine=l.path([\"M\",0,a,\"L\",g,a]).addClass(\"highcharts-graph\").attr(m).add(c);d&&!1!==d.enabled&&\n(b=Math.min(u(d.radius,k),k),0===this.symbol.indexOf(\"url\")&&(d=r(d,{width:f,height:f}),b=0),this.legendSymbol=d=l.symbol(this.symbol,g/2-b,a-b,2*b,2*b,d).addClass(\"highcharts-point\").add(c),d.isMarker=!0)}};(/Trident\\/7\\.0/.test(d.navigator.userAgent)||f)&&k(a.Legend.prototype,\"positionItem\",function(a,e){var b=this,d=function(){e._legendItemPos&&a.call(b,e)};d();setTimeout(d)})})(M);(function(a){var C=a.addEvent,A=a.animate,F=a.animObject,E=a.attr,m=a.doc,f=a.Axis,l=a.createElement,r=a.defaultOptions,\nu=a.discardElement,t=a.charts,g=a.css,d=a.defined,k=a.each,b=a.extend,e=a.find,v=a.fireEvent,y=a.getStyle,n=a.grep,D=a.isNumber,J=a.isObject,c=a.isString,G=a.Legend,q=a.marginNames,B=a.merge,K=a.objectEach,p=a.Pointer,z=a.pick,I=a.pInt,L=a.removeEvent,h=a.seriesTypes,w=a.splat,P=a.svg,H=a.syncTimeout,O=a.win,Q=a.Renderer,R=a.Chart=function(){this.getArgs.apply(this,arguments)};a.chart=function(a,b,c){return new R(a,b,c)};b(R.prototype,{callbacks:[],getArgs:function(){var a=[].slice.call(arguments);\nif(c(a[0])||a[0].nodeName)this.renderTo=a.shift();this.init(a[0],a[1])},init:function(b,c){var e,d,h=b.series,p=b.plotOptions||{};b.series=null;e=B(r,b);for(d in e.plotOptions)e.plotOptions[d].tooltip=p[d]&&B(p[d].tooltip)||void 0;e.tooltip.userOptions=b.chart&&b.chart.forExport&&b.tooltip.userOptions||b.tooltip;e.series=b.series=h;this.userOptions=b;b=e.chart;d=b.events;this.margin=[];this.spacing=[];this.bounds={h:{},v:{}};this.callback=c;this.isResizing=0;this.options=e;this.axes=[];this.series=\n[];this.hasCartesianSeries=b.showAxes;var g=this;g.index=t.length;t.push(g);a.chartCount++;d&&K(d,function(a,b){C(g,b,a)});g.xAxis=[];g.yAxis=[];g.pointCount=g.colorCounter=g.symbolCounter=0;g.firstRender()},initSeries:function(b){var c=this.options.chart;(c=h[b.type||c.type||c.defaultSeriesType])||a.error(17,!0);c=new c;c.init(this,b);return c},orderSeries:function(a){var b=this.series;for(a=a||0;a<b.length;a++)b[a]&&(b[a].index=a,b[a].name=b[a].name||\"Series \"+(b[a].index+1))},isInsidePlot:function(a,\nb,c){var e=c?b:a;a=c?a:b;return 0<=e&&e<=this.plotWidth&&0<=a&&a<=this.plotHeight},redraw:function(c){var e=this.axes,d=this.series,h=this.pointer,p=this.legend,g=this.isDirtyLegend,f,q,l=this.hasCartesianSeries,n=this.isDirtyBox,z,m=this.renderer,x=m.isHidden(),w=[];this.setResponsive&&this.setResponsive(!1);a.setAnimation(c,this);x&&this.temporaryDisplay();this.layOutTitles();for(c=d.length;c--;)if(z=d[c],z.options.stacking&&(f=!0,z.isDirty)){q=!0;break}if(q)for(c=d.length;c--;)z=d[c],z.options.stacking&&\n(z.isDirty=!0);k(d,function(a){a.isDirty&&\"point\"===a.options.legendType&&(a.updateTotals&&a.updateTotals(),g=!0);a.isDirtyData&&v(a,\"updatedData\")});g&&p.options.enabled&&(p.render(),this.isDirtyLegend=!1);f&&this.getStacks();l&&k(e,function(a){a.updateNames();a.setScale()});this.getMargins();l&&(k(e,function(a){a.isDirty&&(n=!0)}),k(e,function(a){var c=a.min+\",\"+a.max;a.extKey!==c&&(a.extKey=c,w.push(function(){v(a,\"afterSetExtremes\",b(a.eventArgs,a.getExtremes()));delete a.eventArgs}));(n||f)&&\na.redraw()}));n&&this.drawChartBox();v(this,\"predraw\");k(d,function(a){(n||a.isDirty)&&a.visible&&a.redraw();a.isDirtyData=!1});h&&h.reset(!0);m.draw();v(this,\"redraw\");v(this,\"render\");x&&this.temporaryDisplay(!0);k(w,function(a){a.call()})},get:function(a){function b(b){return b.id===a||b.options&&b.options.id===a}var c,d=this.series,h;c=e(this.axes,b)||e(this.series,b);for(h=0;!c&&h<d.length;h++)c=e(d[h].points||[],b);return c},getAxes:function(){var a=this,b=this.options,c=b.xAxis=w(b.xAxis||\n{}),b=b.yAxis=w(b.yAxis||{});k(c,function(a,b){a.index=b;a.isX=!0});k(b,function(a,b){a.index=b});c=c.concat(b);k(c,function(b){new f(a,b)})},getSelectedPoints:function(){var a=[];k(this.series,function(b){a=a.concat(n(b.data||[],function(a){return a.selected}))});return a},getSelectedSeries:function(){return n(this.series,function(a){return a.selected})},setTitle:function(a,b,c){var e=this,d=e.options,h;h=d.title=B({style:{color:\"#333333\",fontSize:d.isStock?\"16px\":\"18px\"}},d.title,a);d=d.subtitle=\nB({style:{color:\"#666666\"}},d.subtitle,b);k([[\"title\",a,h],[\"subtitle\",b,d]],function(a,b){var c=a[0],d=e[c],h=a[1];a=a[2];d&&h&&(e[c]=d=d.destroy());a&&a.text&&!d&&(e[c]=e.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,\"class\":\"highcharts-\"+c,zIndex:a.zIndex||4}).add(),e[c].update=function(a){e.setTitle(!b&&a,b&&a)},e[c].css(a.style))});e.layOutTitles(c)},layOutTitles:function(a){var c=0,e,d=this.renderer,h=this.spacingBox;k([\"title\",\"subtitle\"],function(a){var e=this[a],p=this.options[a];\na=\"title\"===a?-3:p.verticalAlign?0:c+2;var g;e&&(g=p.style.fontSize,g=d.fontMetrics(g,e).b,e.css({width:(p.width||h.width+p.widthAdjust)+\"px\"}).align(b({y:a+g},p),!1,\"spacingBox\"),p.floating||p.verticalAlign||(c=Math.ceil(c+e.getBBox(p.useHTML).height)))},this);e=this.titleOffset!==c;this.titleOffset=c;!this.isDirtyBox&&e&&(this.isDirtyBox=e,this.hasRendered&&z(a,!0)&&this.isDirtyBox&&this.redraw())},getChartSize:function(){var b=this.options.chart,c=b.width,b=b.height,e=this.renderTo;d(c)||(this.containerWidth=\ny(e,\"width\"));d(b)||(this.containerHeight=y(e,\"height\"));this.chartWidth=Math.max(0,c||this.containerWidth||600);this.chartHeight=Math.max(0,a.relativeLength(b,this.chartWidth)||this.containerHeight||400)},temporaryDisplay:function(b){var c=this.renderTo;if(b)for(;c&&c.style;)c.hcOrigStyle&&(a.css(c,c.hcOrigStyle),delete c.hcOrigStyle),c.hcOrigDetached&&(m.body.removeChild(c),c.hcOrigDetached=!1),c=c.parentNode;else for(;c&&c.style;){m.body.contains(c)||(c.hcOrigDetached=!0,m.body.appendChild(c));\nif(\"none\"===y(c,\"display\",!1)||c.hcOricDetached)c.hcOrigStyle={display:c.style.display,height:c.style.height,overflow:c.style.overflow},b={display:\"block\",overflow:\"hidden\"},c!==this.renderTo&&(b.height=0),a.css(c,b),c.offsetWidth||c.style.setProperty(\"display\",\"block\",\"important\");c=c.parentNode;if(c===m.body)break}},setClassName:function(a){this.container.className=\"highcharts-container \"+(a||\"\")},getContainer:function(){var e,d=this.options,h=d.chart,p,g;e=this.renderTo;var f=a.uniqueKey(),k;e||\n(this.renderTo=e=h.renderTo);c(e)&&(this.renderTo=e=m.getElementById(e));e||a.error(13,!0);p=I(E(e,\"data-highcharts-chart\"));D(p)&&t[p]&&t[p].hasRendered&&t[p].destroy();E(e,\"data-highcharts-chart\",this.index);e.innerHTML=\"\";h.skipClone||e.offsetWidth||this.temporaryDisplay();this.getChartSize();p=this.chartWidth;g=this.chartHeight;k=b({position:\"relative\",overflow:\"hidden\",width:p+\"px\",height:g+\"px\",textAlign:\"left\",lineHeight:\"normal\",zIndex:0,\"-webkit-tap-highlight-color\":\"rgba(0,0,0,0)\"},h.style);\nthis.container=e=l(\"div\",{id:f},k,e);this._cursor=e.style.cursor;this.renderer=new (a[h.renderer]||Q)(e,p,g,null,h.forExport,d.exporting&&d.exporting.allowHTML);this.setClassName(h.className);this.renderer.setStyle(h.style);this.renderer.chartIndex=this.index},getMargins:function(a){var b=this.spacing,c=this.margin,e=this.titleOffset;this.resetMargins();e&&!d(c[0])&&(this.plotTop=Math.max(this.plotTop,e+this.options.title.margin+b[0]));this.legend.display&&this.legend.adjustMargins(c,b);this.extraMargin&&\n(this[this.extraMargin.type]=(this[this.extraMargin.type]||0)+this.extraMargin.value);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);a||this.getAxisMargins()},getAxisMargins:function(){var a=this,b=a.axisOffset=[0,0,0,0],c=a.margin;a.hasCartesianSeries&&k(a.axes,function(a){a.visible&&a.getOffset()});k(q,function(e,h){d(c[h])||(a[e]+=b[h])});a.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,e=b.renderTo,h=d(c.width)&&d(c.height),p=c.width||y(e,\"width\"),c=c.height||y(e,\"height\"),\ne=a?a.target:O;if(!h&&!b.isPrinting&&p&&c&&(e===O||e===m)){if(p!==b.containerWidth||c!==b.containerHeight)clearTimeout(b.reflowTimeout),b.reflowTimeout=H(function(){b.container&&b.setSize(void 0,void 0,!1)},a?100:0);b.containerWidth=p;b.containerHeight=c}},initReflow:function(){var a=this,b;b=C(O,\"resize\",function(b){a.reflow(b)});C(a,\"destroy\",b)},setSize:function(b,c,e){var d=this,h=d.renderer;d.isResizing+=1;a.setAnimation(e,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;void 0!==\nb&&(d.options.chart.width=b);void 0!==c&&(d.options.chart.height=c);d.getChartSize();b=h.globalAnimation;(b?A:g)(d.container,{width:d.chartWidth+\"px\",height:d.chartHeight+\"px\"},b);d.setChartSize(!0);h.setSize(d.chartWidth,d.chartHeight,e);k(d.axes,function(a){a.isDirty=!0;a.setScale()});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.layOutTitles();d.getMargins();d.redraw(e);d.oldChartHeight=null;v(d,\"resize\");H(function(){d&&v(d,\"endResize\",null,function(){--d.isResizing})},F(b).duration)},setChartSize:function(a){function b(a){a=\nf[a]||0;return Math.max(m||a,a)/2}var c=this.inverted,e=this.renderer,d=this.chartWidth,h=this.chartHeight,p=this.options.chart,g=this.spacing,f=this.clipOffset,q,n,l,z,m;this.plotLeft=q=Math.round(this.plotLeft);this.plotTop=n=Math.round(this.plotTop);this.plotWidth=l=Math.max(0,Math.round(d-q-this.marginRight));this.plotHeight=z=Math.max(0,Math.round(h-n-this.marginBottom));this.plotSizeX=c?z:l;this.plotSizeY=c?l:z;this.plotBorderWidth=p.plotBorderWidth||0;this.spacingBox=e.spacingBox={x:g[3],y:g[0],\nwidth:d-g[3]-g[1],height:h-g[0]-g[2]};this.plotBox=e.plotBox={x:q,y:n,width:l,height:z};m=2*Math.floor(this.plotBorderWidth/2);c=Math.ceil(b(3));e=Math.ceil(b(0));this.clipBox={x:c,y:e,width:Math.floor(this.plotSizeX-b(1)-c),height:Math.max(0,Math.floor(this.plotSizeY-b(2)-e))};a||k(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this,b=a.options.chart;k([\"margin\",\"spacing\"],function(c){var e=b[c],d=J(e)?e:[e,e,e,e];k([\"Top\",\"Right\",\"Bottom\",\"Left\"],function(e,\nh){a[c][h]=z(b[c+e],d[h])})});k(q,function(b,c){a[b]=z(a.margin[c],a.spacing[c])});a.axisOffset=[0,0,0,0];a.clipOffset=[]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,e=this.chartHeight,d=this.chartBackground,h=this.plotBackground,p=this.plotBorder,g,f=this.plotBGImage,k=a.backgroundColor,q=a.plotBackgroundColor,l=a.plotBackgroundImage,n,z=this.plotLeft,m=this.plotTop,w=this.plotWidth,I=this.plotHeight,v=this.plotBox,r=this.clipRect,B=this.clipBox,y=\"animate\";\nd||(this.chartBackground=d=b.rect().addClass(\"highcharts-background\").add(),y=\"attr\");g=a.borderWidth||0;n=g+(a.shadow?8:0);k={fill:k||\"none\"};if(g||d[\"stroke-width\"])k.stroke=a.borderColor,k[\"stroke-width\"]=g;d.attr(k).shadow(a.shadow);d[y]({x:n/2,y:n/2,width:c-n-g%2,height:e-n-g%2,r:a.borderRadius});y=\"animate\";h||(y=\"attr\",this.plotBackground=h=b.rect().addClass(\"highcharts-plot-background\").add());h[y](v);h.attr({fill:q||\"none\"}).shadow(a.plotShadow);l&&(f?f.animate(v):this.plotBGImage=b.image(l,\nz,m,w,I).add());r?r.animate({width:B.width,height:B.height}):this.clipRect=b.clipRect(B);y=\"animate\";p||(y=\"attr\",this.plotBorder=p=b.rect().addClass(\"highcharts-plot-border\").attr({zIndex:1}).add());p.attr({stroke:a.plotBorderColor,\"stroke-width\":a.plotBorderWidth||0,fill:\"none\"});p[y](p.crisp({x:z,y:m,width:w,height:I},-p.strokeWidth()));this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,e=a.options.series,d,p;k([\"inverted\",\"angular\",\"polar\"],function(g){c=h[b.type||b.defaultSeriesType];\np=b[g]||c&&c.prototype[g];for(d=e&&e.length;!p&&d--;)(c=h[e[d].type])&&c.prototype[g]&&(p=!0);a[g]=p})},linkSeries:function(){var a=this,b=a.series;k(b,function(a){a.linkedSeries.length=0});k(b,function(b){var e=b.options.linkedTo;c(e)&&(e=\":previous\"===e?a.series[b.index-1]:a.get(e))&&e.linkedParent!==b&&(e.linkedSeries.push(b),b.linkedParent=e,b.visible=z(b.options.visible,e.options.visible,b.visible))})},renderSeries:function(){k(this.series,function(a){a.translate();a.render()})},renderLabels:function(){var a=\nthis,c=a.options.labels;c.items&&k(c.items,function(e){var d=b(c.style,e.style),h=I(d.left)+a.plotLeft,p=I(d.top)+a.plotTop+12;delete d.left;delete d.top;a.renderer.text(e.html,h,p).attr({zIndex:2}).css(d).add()})},render:function(){var a=this.axes,b=this.renderer,c=this.options,e,d,h;this.setTitle();this.legend=new G(this,c.legend);this.getStacks&&this.getStacks();this.getMargins(!0);this.setChartSize();c=this.plotWidth;e=this.plotHeight-=21;k(a,function(a){a.setScale()});this.getAxisMargins();d=\n1.1<c/this.plotWidth;h=1.05<e/this.plotHeight;if(d||h)k(a,function(a){(a.horiz&&d||!a.horiz&&h)&&a.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries&&k(a,function(a){a.visible&&a.render()});this.seriesGroup||(this.seriesGroup=b.g(\"series-group\").attr({zIndex:3}).add());this.renderSeries();this.renderLabels();this.addCredits();this.setResponsive&&this.setResponsive();this.hasRendered=!0},addCredits:function(a){var b=this;a=B(!0,this.options.credits,a);a.enabled&&!this.credits&&\n(this.credits=this.renderer.text(a.text+(this.mapCredits||\"\"),0,0).addClass(\"highcharts-credits\").on(\"click\",function(){a.href&&(O.location.href=a.href)}).attr({align:a.position.align,zIndex:8}).css(a.style).add().align(a.position),this.credits.update=function(a){b.credits=b.credits.destroy();b.addCredits(a)})},destroy:function(){var b=this,c=b.axes,e=b.series,d=b.container,h,p=d&&d.parentNode;v(b,\"destroy\");b.renderer.forExport?a.erase(t,b):t[b.index]=void 0;a.chartCount--;b.renderTo.removeAttribute(\"data-highcharts-chart\");\nL(b);for(h=c.length;h--;)c[h]=c[h].destroy();this.scroller&&this.scroller.destroy&&this.scroller.destroy();for(h=e.length;h--;)e[h]=e[h].destroy();k(\"title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer\".split(\" \"),function(a){var c=b[a];c&&c.destroy&&(b[a]=c.destroy())});d&&(d.innerHTML=\"\",L(d),p&&u(d));K(b,function(a,c){delete b[c]})},isReadyToRender:function(){var a=this;return P||O!=O.top||\n\"complete\"===m.readyState?!0:(m.attachEvent(\"onreadystatechange\",function(){m.detachEvent(\"onreadystatechange\",a.firstRender);\"complete\"===m.readyState&&a.firstRender()}),!1)},firstRender:function(){var a=this,b=a.options;if(a.isReadyToRender()){a.getContainer();v(a,\"init\");a.resetMargins();a.setChartSize();a.propFromSeries();a.getAxes();k(b.series||[],function(b){a.initSeries(b)});a.linkSeries();v(a,\"beforeRender\");p&&(a.pointer=new p(a,b));a.render();if(!a.renderer.imgCount&&a.onload)a.onload();\na.temporaryDisplay(!0)}},onload:function(){k([this.callback].concat(this.callbacks),function(a){a&&void 0!==this.index&&a.apply(this,[this])},this);v(this,\"load\");v(this,\"render\");d(this.index)&&!1!==this.options.chart.reflow&&this.initReflow();this.onload=null}})})(M);(function(a){var C,A=a.each,F=a.extend,E=a.erase,m=a.fireEvent,f=a.format,l=a.isArray,r=a.isNumber,u=a.pick,t=a.removeEvent;a.Point=C=function(){};a.Point.prototype={init:function(a,d,f){this.series=a;this.color=a.color;this.applyOptions(d,\nf);a.options.colorByPoint?(d=a.options.colors||a.chart.options.colors,this.color=this.color||d[a.colorCounter],d=d.length,f=a.colorCounter,a.colorCounter++,a.colorCounter===d&&(a.colorCounter=0)):f=a.colorIndex;this.colorIndex=u(this.colorIndex,f);a.chart.pointCount++;return this},applyOptions:function(a,d){var g=this.series,b=g.options.pointValKey||g.pointValKey;a=C.prototype.optionsToObject.call(this,a);F(this,a);this.options=this.options?F(this.options,a):a;a.group&&delete this.group;b&&(this.y=\nthis[b]);this.isNull=u(this.isValid&&!this.isValid(),null===this.x||!r(this.y,!0));this.selected&&(this.state=\"select\");\"name\"in this&&void 0===d&&g.xAxis&&g.xAxis.hasNames&&(this.x=g.xAxis.nameToX(this));void 0===this.x&&g&&(this.x=void 0===d?g.autoIncrement(this):d);return this},optionsToObject:function(a){var d={},g=this.series,b=g.options.keys,e=b||g.pointArrayMap||[\"y\"],f=e.length,m=0,n=0;if(r(a)||null===a)d[e[0]]=a;else if(l(a))for(!b&&a.length>f&&(g=typeof a[0],\"string\"===g?d.name=a[0]:\"number\"===\ng&&(d.x=a[0]),m++);n<f;)b&&void 0===a[m]||(d[e[n]]=a[m]),m++,n++;else\"object\"===typeof a&&(d=a,a.dataLabels&&(g._hasPointLabels=!0),a.marker&&(g._hasPointMarkers=!0));return d},getClassName:function(){return\"highcharts-point\"+(this.selected?\" highcharts-point-select\":\"\")+(this.negative?\" highcharts-negative\":\"\")+(this.isNull?\" highcharts-null-point\":\"\")+(void 0!==this.colorIndex?\" highcharts-color-\"+this.colorIndex:\"\")+(this.options.className?\" \"+this.options.className:\"\")+(this.zone&&this.zone.className?\n\" \"+this.zone.className.replace(\"highcharts-negative\",\"\"):\"\")},getZone:function(){var a=this.series,d=a.zones,a=a.zoneAxis||\"y\",f=0,b;for(b=d[f];this[a]>=b.value;)b=d[++f];b&&b.color&&!this.options.color&&(this.color=b.color);return b},destroy:function(){var a=this.series.chart,d=a.hoverPoints,f;a.pointCount--;d&&(this.setState(),E(d,this),d.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)t(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this);\nfor(f in this)this[f]=null},destroyElements:function(){for(var a=[\"graphic\",\"dataLabel\",\"dataLabelUpper\",\"connector\",\"shadowGroup\"],d,f=6;f--;)d=a[f],this[d]&&(this[d]=this[d].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var d=this.series,g=d.tooltipOptions,b=u(g.valueDecimals,\"\"),\ne=g.valuePrefix||\"\",l=g.valueSuffix||\"\";A(d.pointArrayMap||[\"y\"],function(d){d=\"{point.\"+d;if(e||l)a=a.replace(d+\"}\",e+d+\"}\"+l);a=a.replace(d+\"}\",d+\":,.\"+b+\"f}\")});return f(a,{point:this,series:this.series})},firePointEvent:function(a,d,f){var b=this,e=this.series.options;(e.point.events[a]||b.options&&b.options.events&&b.options.events[a])&&this.importEvents();\"click\"===a&&e.allowPointSelect&&(f=function(a){b.select&&b.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});m(this,a,d,f)},visible:!0}})(M);\n(function(a){var C=a.addEvent,A=a.animObject,F=a.arrayMax,E=a.arrayMin,m=a.correctFloat,f=a.Date,l=a.defaultOptions,r=a.defaultPlotOptions,u=a.defined,t=a.each,g=a.erase,d=a.extend,k=a.fireEvent,b=a.grep,e=a.isArray,v=a.isNumber,y=a.isString,n=a.merge,D=a.objectEach,J=a.pick,c=a.removeEvent,G=a.splat,q=a.SVGElement,B=a.syncTimeout,K=a.win;a.Series=a.seriesType(\"line\",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},marker:{lineWidth:0,lineColor:\"#ffffff\",radius:4,\nstates:{hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:\"#cccccc\",lineColor:\"#000000\",lineWidth:2}}},point:{events:{}},dataLabels:{align:\"center\",formatter:function(){return null===this.y?\"\":a.numberFormat(this.y,-1)},style:{fontSize:\"11px\",fontWeight:\"bold\",color:\"contrast\",textOutline:\"1px contrast\"},verticalAlign:\"bottom\",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,softThreshold:!0,states:{hover:{animation:{duration:50},lineWidthPlus:1,marker:{},\nhalo:{size:10,opacity:.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:\"x\"},{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:[\"xAxis\",\"yAxis\"],colorCounter:0,parallelArrays:[\"x\",\"y\"],coll:\"series\",init:function(a,b){var c=this,e,h=a.series,p;c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();d(c,{name:b.name,state:\"\",visible:!1!==b.visible,selected:!0===b.selected});e=b.events;D(e,function(a,b){C(c,b,a)});if(e&&\ne.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();t(c.parallelArrays,function(a){c[a+\"Data\"]=[]});c.setData(b.data,!1);c.isCartesian&&(a.hasCartesianSeries=!0);h.length&&(p=h[h.length-1]);c._i=J(p&&p._i,-1)+1;a.orderSeries(this.insert(h))},insert:function(a){var b=this.options.index,c;if(v(b)){for(c=a.length;c--;)if(b>=J(a[c].options.index,a[c]._i)){a.splice(c+1,0,this);break}-1===c&&a.unshift(this);c+=1}else a.push(this);return J(c,\na.length-1)},bindAxes:function(){var b=this,c=b.options,e=b.chart,d;t(b.axisTypes||[],function(h){t(e[h],function(a){d=a.options;if(c[h]===d.index||void 0!==c[h]&&c[h]===d.id||void 0===c[h]&&0===d.index)b.insert(a.series),b[h]=a,a.isDirty=!0});b[h]||b.optionalAxis===h||a.error(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,e=arguments,d=v(b)?function(e){var d=\"y\"===e&&c.toYData?c.toYData(a):a[e];c[e+\"Data\"][b]=d}:function(a){Array.prototype[b].apply(c[a+\"Data\"],Array.prototype.slice.call(e,\n2))};t(c.parallelArrays,d)},autoIncrement:function(){var a=this.options,b=this.xIncrement,c,e=a.pointIntervalUnit,b=J(b,a.pointStart,0);this.pointInterval=c=J(this.pointInterval,a.pointInterval,1);e&&(a=new f(b),\"day\"===e?a=+a[f.hcSetDate](a[f.hcGetDate]()+c):\"month\"===e?a=+a[f.hcSetMonth](a[f.hcGetMonth]()+c):\"year\"===e&&(a=+a[f.hcSetFullYear](a[f.hcGetFullYear]()+c)),c=a-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,c=b.options,e=c.plotOptions,d=(b.userOptions||{}).plotOptions||\n{},p=e[this.type];this.userOptions=a;b=n(p,e.series,a);this.tooltipOptions=n(l.tooltip,l.plotOptions.series&&l.plotOptions.series.tooltip,l.plotOptions[this.type].tooltip,c.tooltip.userOptions,e.series&&e.series.tooltip,e[this.type].tooltip,a.tooltip);this.stickyTracking=J(a.stickyTracking,d[this.type]&&d[this.type].stickyTracking,d.series&&d.series.stickyTracking,this.tooltipOptions.shared&&!this.noSharedTooltip?!0:b.stickyTracking);null===p.marker&&delete b.marker;this.zoneAxis=b.zoneAxis;a=this.zones=\n(b.zones||[]).slice();!b.negativeColor&&!b.negativeFillColor||b.zones||a.push({value:b[this.zoneAxis+\"Threshold\"]||b.threshold||0,className:\"highcharts-negative\",color:b.negativeColor,fillColor:b.negativeFillColor});a.length&&u(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor});return b},getCyclic:function(a,b,c){var e,d=this.chart,p=this.userOptions,f=a+\"Index\",g=a+\"Counter\",k=c?c.length:J(d.options.chart[a+\"Count\"],d[a+\"Count\"]);b||(e=J(p[f],p[\"_\"+f]),u(e)||(d.series.length||\n(d[g]=0),p[\"_\"+f]=e=d[g]%k,d[g]+=1),c&&(b=c[e]));void 0!==e&&(this[f]=e);this[a]=b},getColor:function(){this.options.colorByPoint?this.options.color=null:this.getCyclic(\"color\",this.options.color||r[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic(\"symbol\",this.options.marker.symbol,this.chart.options.symbols)},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,setData:function(b,c,d,f){var h=this,p=h.points,g=p&&p.length||0,k,q=h.options,l=h.chart,n=null,m=h.xAxis,\nz=q.turboThreshold,r=this.xData,B=this.yData,I=(k=h.pointArrayMap)&&k.length;b=b||[];k=b.length;c=J(c,!0);if(!1!==f&&k&&g===k&&!h.cropped&&!h.hasGroupedData&&h.visible)t(b,function(a,b){p[b].update&&a!==q.data[b]&&p[b].update(a,!1,null,!1)});else{h.xIncrement=null;h.colorCounter=0;t(this.parallelArrays,function(a){h[a+\"Data\"].length=0});if(z&&k>z){for(d=0;null===n&&d<k;)n=b[d],d++;if(v(n))for(d=0;d<k;d++)r[d]=this.autoIncrement(),B[d]=b[d];else if(e(n))if(I)for(d=0;d<k;d++)n=b[d],r[d]=n[0],B[d]=n.slice(1,\nI+1);else for(d=0;d<k;d++)n=b[d],r[d]=n[0],B[d]=n[1];else a.error(12)}else for(d=0;d<k;d++)void 0!==b[d]&&(n={series:h},h.pointClass.prototype.applyOptions.apply(n,[b[d]]),h.updateParallelArrays(n,d));y(B[0])&&a.error(14,!0);h.data=[];h.options.data=h.userOptions.data=b;for(d=g;d--;)p[d]&&p[d].destroy&&p[d].destroy();m&&(m.minRange=m.userMinRange);h.isDirty=l.isDirtyBox=!0;h.isDirtyData=!!p;d=!1}\"point\"===q.legendType&&(this.processData(),this.generatePoints());c&&l.redraw(d)},processData:function(b){var c=\nthis.xData,e=this.yData,d=c.length,h;h=0;var p,f,g=this.xAxis,k,q=this.options;k=q.cropThreshold;var n=this.getExtremesFromAll||q.getExtremesFromAll,l=this.isCartesian,q=g&&g.val2lin,m=g&&g.isLog,v,r;if(l&&!this.isDirty&&!g.isDirty&&!this.yAxis.isDirty&&!b)return!1;g&&(b=g.getExtremes(),v=b.min,r=b.max);if(l&&this.sorted&&!n&&(!k||d>k||this.forceCrop))if(c[d-1]<v||c[0]>r)c=[],e=[];else if(c[0]<v||c[d-1]>r)h=this.cropData(this.xData,this.yData,v,r),c=h.xData,e=h.yData,h=h.start,p=!0;for(k=c.length||\n1;--k;)d=m?q(c[k])-q(c[k-1]):c[k]-c[k-1],0<d&&(void 0===f||d<f)?f=d:0>d&&this.requireSorting&&a.error(15);this.cropped=p;this.cropStart=h;this.processedXData=c;this.processedYData=e;this.closestPointRange=f},cropData:function(a,b,c,e){var d=a.length,p=0,g=d,f=J(this.cropShoulder,1),k;for(k=0;k<d;k++)if(a[k]>=c){p=Math.max(0,k-f);break}for(c=k;c<d;c++)if(a[c]>e){g=c+f;break}return{xData:a.slice(p,g),yData:b.slice(p,g),start:p,end:g}},generatePoints:function(){var a=this.options,b=a.data,c=this.data,\ne,d=this.processedXData,g=this.processedYData,f=this.pointClass,k=d.length,q=this.cropStart||0,n,l=this.hasGroupedData,a=a.keys,m,v=[],r;c||l||(c=[],c.length=b.length,c=this.data=c);a&&l&&(this.options.keys=!1);for(r=0;r<k;r++)n=q+r,l?(m=(new f).init(this,[d[r]].concat(G(g[r]))),m.dataGroup=this.groupMap[r]):(m=c[n])||void 0===b[n]||(c[n]=m=(new f).init(this,b[n],d[r])),m&&(m.index=n,v[r]=m);this.options.keys=a;if(c&&(k!==(e=c.length)||l))for(r=0;r<e;r++)r!==q||l||(r+=k),c[r]&&(c[r].destroyElements(),\nc[r].plotX=void 0);this.data=c;this.points=v},getExtremes:function(a){var b=this.yAxis,c=this.processedXData,d,h=[],p=0;d=this.xAxis.getExtremes();var g=d.min,f=d.max,k,q,n,l;a=a||this.stackedYData||this.processedYData||[];d=a.length;for(l=0;l<d;l++)if(q=c[l],n=a[l],k=(v(n,!0)||e(n))&&(!b.positiveValuesOnly||n.length||0<n),q=this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||(c[l]||q)>=g&&(c[l]||q)<=f,k&&q)if(k=n.length)for(;k--;)null!==n[k]&&(h[p++]=n[k]);else h[p++]=n;this.dataMin=\nE(h);this.dataMax=F(h)},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,b=a.stacking,c=this.xAxis,e=c.categories,d=this.yAxis,g=this.points,f=g.length,k=!!this.modifyValue,q=a.pointPlacement,n=\"between\"===q||v(q),l=a.threshold,r=a.startFromThreshold?l:0,B,y,t,G,D=Number.MAX_VALUE;\"between\"===q&&(q=.5);v(q)&&(q*=J(a.pointRange||c.pointRange));for(a=0;a<f;a++){var K=g[a],A=K.x,C=K.y;y=K.low;var E=b&&d.stacks[(this.negStacks&&C<(r?0:l)?\"-\":\"\")+this.stackKey],\nF;d.positiveValuesOnly&&null!==C&&0>=C&&(K.isNull=!0);K.plotX=B=m(Math.min(Math.max(-1E5,c.translate(A,0,0,0,1,q,\"flags\"===this.type)),1E5));b&&this.visible&&!K.isNull&&E&&E[A]&&(G=this.getStackIndicator(G,A,this.index),F=E[A],C=F.points[G.key],y=C[0],C=C[1],y===r&&G.key===E[A].base&&(y=J(l,d.min)),d.positiveValuesOnly&&0>=y&&(y=null),K.total=K.stackTotal=F.total,K.percentage=F.total&&K.y/F.total*100,K.stackY=C,F.setOffset(this.pointXOffset||0,this.barW||0));K.yBottom=u(y)?d.translate(y,0,1,0,1):\nnull;k&&(C=this.modifyValue(C,K));K.plotY=y=\"number\"===typeof C&&Infinity!==C?Math.min(Math.max(-1E5,d.translate(C,0,1,0,1)),1E5):void 0;K.isInside=void 0!==y&&0<=y&&y<=d.len&&0<=B&&B<=c.len;K.clientX=n?m(c.translate(A,0,0,0,1,q)):B;K.negative=K.y<(l||0);K.category=e&&void 0!==e[K.x]?e[K.x]:K.x;K.isNull||(void 0!==t&&(D=Math.min(D,Math.abs(B-t))),t=B);K.zone=this.zones.length&&K.getZone()}this.closestPointRangePx=D},getValidPoints:function(a,c){var e=this.chart;return b(a||this.points||[],function(a){return c&&\n!e.isInsidePlot(a.plotX,a.plotY,e.inverted)?!1:!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,e=b.renderer,d=b.inverted,p=this.clipBox,g=p||b.clipBox,f=this.sharedClipKey||[\"_sharedClip\",a&&a.duration,a&&a.easing,g.height,c.xAxis,c.yAxis].join(),k=b[f],q=b[f+\"m\"];k||(a&&(g.width=0,b[f+\"m\"]=q=e.clipRect(-99,d?-b.plotLeft:-b.plotTop,99,d?b.chartWidth:b.chartHeight)),b[f]=k=e.clipRect(g),k.count={length:0});a&&!k.count[this.index]&&(k.count[this.index]=!0,k.count.length+=1);!1!==c.clip&&\n(this.group.clip(a||p?k:b.clipRect),this.markerGroup.clip(q),this.sharedClipKey=f);a||(k.count[this.index]&&(delete k.count[this.index],--k.count.length),0===k.count.length&&f&&b[f]&&(p||(b[f]=b[f].destroy()),b[f+\"m\"]&&(b[f+\"m\"]=b[f+\"m\"].destroy())))},animate:function(a){var b=this.chart,c=A(this.options.animation),e;a?this.setClip(c):(e=this.sharedClipKey,(a=b[e])&&a.animate({width:b.plotSizeX},c),b[e+\"m\"]&&b[e+\"m\"].animate({width:b.plotSizeX+99},c),this.animate=null)},afterAnimate:function(){this.setClip();\nk(this,\"afterAnimate\");this.finishedAnimating=!0},drawPoints:function(){var a=this.points,b=this.chart,c,e,d,f,g=this.options.marker,k,q,n,l,m=this[this.specialGroup]||this.markerGroup,r=J(g.enabled,this.xAxis.isRadial?!0:null,this.closestPointRangePx>=2*g.radius);if(!1!==g.enabled||this._hasPointMarkers)for(e=0;e<a.length;e++)d=a[e],c=d.plotY,f=d.graphic,k=d.marker||{},q=!!d.marker,n=r&&void 0===k.enabled||k.enabled,l=d.isInside,n&&v(c)&&null!==d.y?(c=J(k.symbol,this.symbol),d.hasImage=0===c.indexOf(\"url\"),\nn=this.markerAttribs(d,d.selected&&\"select\"),f?f[l?\"show\":\"hide\"](!0).animate(n):l&&(0<n.width||d.hasImage)&&(d.graphic=f=b.renderer.symbol(c,n.x,n.y,n.width,n.height,q?k:g).add(m)),f&&f.attr(this.pointAttribs(d,d.selected&&\"select\")),f&&f.addClass(d.getClassName(),!0)):f&&(d.graphic=f.destroy())},markerAttribs:function(a,b){var c=this.options.marker,e=a.marker||{},d=J(e.radius,c.radius);b&&(c=c.states[b],b=e.states&&e.states[b],d=J(b&&b.radius,c&&c.radius,d+(c&&c.radiusPlus||0)));a.hasImage&&(d=\n0);a={x:Math.floor(a.plotX)-d,y:a.plotY-d};d&&(a.width=a.height=2*d);return a},pointAttribs:function(a,b){var c=this.options.marker,e=a&&a.options,d=e&&e.marker||{},f=this.color,g=e&&e.color,p=a&&a.color,e=J(d.lineWidth,c.lineWidth);a=a&&a.zone&&a.zone.color;f=g||a||p||f;a=d.fillColor||c.fillColor||f;f=d.lineColor||c.lineColor||f;b&&(c=c.states[b],b=d.states&&d.states[b]||{},e=J(b.lineWidth,c.lineWidth,e+J(b.lineWidthPlus,c.lineWidthPlus,0)),a=b.fillColor||c.fillColor||a,f=b.lineColor||c.lineColor||\nf);return{stroke:f,\"stroke-width\":e,fill:a}},destroy:function(){var a=this,b=a.chart,e=/AppleWebKit\\/533/.test(K.navigator.userAgent),d,h,f=a.data||[],n,l;k(a,\"destroy\");c(a);t(a.axisTypes||[],function(b){(l=a[b])&&l.series&&(g(l.series,a),l.isDirty=l.forceRedraw=!0)});a.legendItem&&a.chart.legend.destroyItem(a);for(h=f.length;h--;)(n=f[h])&&n.destroy&&n.destroy();a.points=null;clearTimeout(a.animationTimeout);D(a,function(a,b){a instanceof q&&!a.survive&&(d=e&&\"group\"===b?\"hide\":\"destroy\",a[d]())});\nb.hoverSeries===a&&(b.hoverSeries=null);g(b.series,a);b.orderSeries();D(a,function(b,c){delete a[c]})},getGraphPath:function(a,b,c){var e=this,d=e.options,f=d.step,g,p=[],k=[],q;a=a||e.points;(g=a.reversed)&&a.reverse();(f={right:1,center:2}[f]||f&&3)&&g&&(f=4-f);!d.connectNulls||b||c||(a=this.getValidPoints(a));t(a,function(h,g){var n=h.plotX,l=h.plotY,m=a[g-1];(h.leftCliff||m&&m.rightCliff)&&!c&&(q=!0);h.isNull&&!u(b)&&0<g?q=!d.connectNulls:h.isNull&&!b?q=!0:(0===g||q?g=[\"M\",h.plotX,h.plotY]:e.getPointSpline?\ng=e.getPointSpline(a,h,g):f?(g=1===f?[\"L\",m.plotX,l]:2===f?[\"L\",(m.plotX+n)/2,m.plotY,\"L\",(m.plotX+n)/2,l]:[\"L\",n,m.plotY],g.push(\"L\",n,l)):g=[\"L\",n,l],k.push(h.x),f&&k.push(h.x),p.push.apply(p,g),q=!1)});p.xMap=k;return e.graphPath=p},drawGraph:function(){var a=this,b=this.options,c=(this.gappedPath||this.getGraphPath).call(this),e=[[\"graph\",\"highcharts-graph\",b.lineColor||this.color,b.dashStyle]];t(this.zones,function(c,d){e.push([\"zone-graph-\"+d,\"highcharts-graph highcharts-zone-graph-\"+d+\" \"+\n(c.className||\"\"),c.color||a.color,c.dashStyle||b.dashStyle])});t(e,function(e,d){var h=e[0],f=a[h];f?(f.endX=c.xMap,f.animate({d:c})):c.length&&(a[h]=a.chart.renderer.path(c).addClass(e[1]).attr({zIndex:1}).add(a.group),f={stroke:e[2],\"stroke-width\":b.lineWidth,fill:a.fillGraph&&a.color||\"none\"},e[3]?f.dashstyle=e[3]:\"square\"!==b.linecap&&(f[\"stroke-linecap\"]=f[\"stroke-linejoin\"]=\"round\"),f=a[h].attr(f).shadow(2>d&&b.shadow));f&&(f.startX=c.xMap,f.isArea=c.isArea)})},applyZones:function(){var a=\nthis,b=this.chart,c=b.renderer,e=this.zones,d,f,g=this.clips||[],k,q=this.graph,n=this.area,l=Math.max(b.chartWidth,b.chartHeight),m=this[(this.zoneAxis||\"y\")+\"Axis\"],r,v,B=b.inverted,y,u,G,D,K=!1;e.length&&(q||n)&&m&&void 0!==m.min&&(v=m.reversed,y=m.horiz,q&&q.hide(),n&&n.hide(),r=m.getExtremes(),t(e,function(e,h){d=v?y?b.plotWidth:0:y?0:m.toPixels(r.min);d=Math.min(Math.max(J(f,d),0),l);f=Math.min(Math.max(Math.round(m.toPixels(J(e.value,r.max),!0)),0),l);K&&(d=f=m.toPixels(r.max));u=Math.abs(d-\nf);G=Math.min(d,f);D=Math.max(d,f);m.isXAxis?(k={x:B?D:G,y:0,width:u,height:l},y||(k.x=b.plotHeight-k.x)):(k={x:0,y:B?D:G,width:l,height:u},y&&(k.y=b.plotWidth-k.y));B&&c.isVML&&(k=m.isXAxis?{x:0,y:v?G:D,height:k.width,width:b.chartWidth}:{x:k.y-b.plotLeft-b.spacingBox.x,y:0,width:k.height,height:b.chartHeight});g[h]?g[h].animate(k):(g[h]=c.clipRect(k),q&&a[\"zone-graph-\"+h].clip(g[h]),n&&a[\"zone-area-\"+h].clip(g[h]));K=e.value>r.max}),this.clips=g)},invertGroups:function(a){function b(){t([\"group\",\n\"markerGroup\"],function(b){c[b]&&(e.renderer.isVML&&c[b].attr({width:c.yAxis.len,height:c.xAxis.len}),c[b].width=c.yAxis.len,c[b].height=c.xAxis.len,c[b].invert(a))})}var c=this,e=c.chart,d;c.xAxis&&(d=C(e,\"resize\",b),C(c,\"destroy\",d),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,e,d){var h=this[a],f=!h;f&&(this[a]=h=this.chart.renderer.g().attr({zIndex:e||.1}).add(d));h.addClass(\"highcharts-\"+b+\" highcharts-series-\"+this.index+\" highcharts-\"+this.type+\"-series highcharts-color-\"+this.colorIndex+\n\" \"+(this.options.className||\"\"),!0);h.attr({visibility:c})[f?\"attr\":\"animate\"](this.getPlotBox());return h},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,e=a.options,d=!!a.animate&&b.renderer.isSVG&&A(e.animation).duration,f=a.visible?\"inherit\":\"hidden\",g=e.zIndex,k=a.hasRendered,q=b.seriesGroup,n=b.inverted;c=a.plotGroup(\"group\",\n\"series\",f,g,q);a.markerGroup=a.plotGroup(\"markerGroup\",\"markers\",f,g,q);d&&a.animate(!0);c.inverted=a.isCartesian?n:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(n);!1===e.clip||a.sharedClipKey||k||c.clip(b.clipRect);d&&a.animate();k||(a.animationTimeout=B(function(){a.afterAnimate()},d));a.isDirty=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,\nb=this.isDirty||this.isDirtyData,c=this.group,e=this.xAxis,d=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:J(e&&e.left,a.plotLeft),translateY:J(d&&d.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdAxisArray:[\"clientX\",\"plotY\"],searchPoint:function(a,b){var c=this.xAxis,e=this.yAxis,d=this.chart.inverted;return this.searchKDTree({clientX:d?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:d?e.len-a.chartX+e.pos:a.chartY-e.pos},b)},\nbuildKDTree:function(){function a(c,e,d){var h,f;if(f=c&&c.length)return h=b.kdAxisArray[e%d],c.sort(function(a,b){return a[h]-b[h]}),f=Math.floor(f/2),{point:c[f],left:a(c.slice(0,f),e+1,d),right:a(c.slice(f+1),e+1,d)}}this.buildingKdTree=!0;var b=this,c=-1<b.options.findNearestPointBy.indexOf(\"y\")?2:1;delete b.kdTree;B(function(){b.kdTree=a(b.getValidPoints(null,!b.directTouch),c,c);b.buildingKdTree=!1},b.options.kdNow?0:1)},searchKDTree:function(a,b){function c(a,b,h,k){var p=b.point,q=e.kdAxisArray[h%\nk],n,l,m=p;l=u(a[d])&&u(p[d])?Math.pow(a[d]-p[d],2):null;n=u(a[f])&&u(p[f])?Math.pow(a[f]-p[f],2):null;n=(l||0)+(n||0);p.dist=u(n)?Math.sqrt(n):Number.MAX_VALUE;p.distX=u(l)?Math.sqrt(l):Number.MAX_VALUE;q=a[q]-p[q];n=0>q?\"left\":\"right\";l=0>q?\"right\":\"left\";b[n]&&(n=c(a,b[n],h+1,k),m=n[g]<m[g]?n:p);b[l]&&Math.sqrt(q*q)<m[g]&&(a=c(a,b[l],h+1,k),m=a[g]<m[g]?a:m);return m}var e=this,d=this.kdAxisArray[0],f=this.kdAxisArray[1],g=b?\"distX\":\"dist\";b=-1<e.options.findNearestPointBy.indexOf(\"y\")?2:1;this.kdTree||\nthis.buildingKdTree||this.buildKDTree();if(this.kdTree)return c(a,this.kdTree,b,b)}})})(M);(function(a){var C=a.Axis,A=a.Chart,F=a.correctFloat,E=a.defined,m=a.destroyObjectProperties,f=a.each,l=a.format,r=a.objectEach,u=a.pick,t=a.Series;a.StackItem=function(a,d,f,b,e){var g=a.chart.inverted;this.axis=a;this.isNegative=f;this.options=d;this.x=b;this.total=null;this.points={};this.stack=e;this.rightCliff=this.leftCliff=0;this.alignOptions={align:d.align||(g?f?\"left\":\"right\":\"center\"),verticalAlign:d.verticalAlign||\n(g?\"middle\":f?\"bottom\":\"top\"),y:u(d.y,g?4:f?14:-6),x:u(d.x,g?f?-6:6:0)};this.textAlign=d.textAlign||(g?f?\"right\":\"left\":\"center\")};a.StackItem.prototype={destroy:function(){m(this,this.axis)},render:function(a){var d=this.options,f=d.format,f=f?l(f,this):d.formatter.call(this);this.label?this.label.attr({text:f,visibility:\"hidden\"}):this.label=this.axis.chart.renderer.text(f,null,null,d.useHTML).css(d.style).attr({align:this.textAlign,rotation:d.rotation,visibility:\"hidden\"}).add(a)},setOffset:function(a,\nd){var f=this.axis,b=f.chart,e=f.translate(f.usePercentage?100:this.total,0,0,0,1),f=f.translate(0),f=Math.abs(e-f);a=b.xAxis[0].translate(this.x)+a;e=this.getStackBox(b,this,a,e,d,f);if(d=this.label)d.align(this.alignOptions,null,e),e=d.alignAttr,d[!1===this.options.crop||b.isInsidePlot(e.x,e.y)?\"show\":\"hide\"](!0)},getStackBox:function(a,d,f,b,e,l){var g=d.axis.reversed,k=a.inverted;a=a.plotHeight;d=d.isNegative&&!g||!d.isNegative&&g;return{x:k?d?b:b-l:f,y:k?a-f-e:d?a-b-l:a-b,width:k?l:e,height:k?\ne:l}}};A.prototype.getStacks=function(){var a=this;f(a.yAxis,function(a){a.stacks&&a.hasVisibleSeries&&(a.oldStacks=a.stacks)});f(a.series,function(d){!d.options.stacking||!0!==d.visible&&!1!==a.options.chart.ignoreHiddenSeries||(d.stackKey=d.type+u(d.options.stack,\"\"))})};C.prototype.buildStacks=function(){var a=this.series,d=u(this.options.reversedStacks,!0),f=a.length,b;if(!this.isXAxis){this.usePercentage=!1;for(b=f;b--;)a[d?b:f-b-1].setStackedPoints();if(this.usePercentage)for(b=0;b<f;b++)a[b].setPercentStacks()}};\nC.prototype.renderStackTotals=function(){var a=this.chart,d=a.renderer,f=this.stacks,b=this.stackTotalGroup;b||(this.stackTotalGroup=b=d.g(\"stack-labels\").attr({visibility:\"visible\",zIndex:6}).add());b.translate(a.plotLeft,a.plotTop);r(f,function(a){r(a,function(a){a.render(b)})})};C.prototype.resetStacks=function(){var a=this,d=a.stacks;a.isXAxis||r(d,function(d){r(d,function(b,e){b.touched<a.stacksTouched?(b.destroy(),delete d[e]):(b.total=null,b.cum=null)})})};C.prototype.cleanStacks=function(){var a;\nthis.isXAxis||(this.oldStacks&&(a=this.stacks=this.oldStacks),r(a,function(a){r(a,function(a){a.cum=a.total})}))};t.prototype.setStackedPoints=function(){if(this.options.stacking&&(!0===this.visible||!1===this.chart.options.chart.ignoreHiddenSeries)){var f=this.processedXData,d=this.processedYData,k=[],b=d.length,e=this.options,l=e.threshold,m=e.startFromThreshold?l:0,n=e.stack,e=e.stacking,r=this.stackKey,t=\"-\"+r,c=this.negStacks,G=this.yAxis,q=G.stacks,B=G.oldStacks,K,p,z,I,A,h,w;G.stacksTouched+=\n1;for(A=0;A<b;A++)h=f[A],w=d[A],K=this.getStackIndicator(K,h,this.index),I=K.key,z=(p=c&&w<(m?0:l))?t:r,q[z]||(q[z]={}),q[z][h]||(B[z]&&B[z][h]?(q[z][h]=B[z][h],q[z][h].total=null):q[z][h]=new a.StackItem(G,G.options.stackLabels,p,h,n)),z=q[z][h],null!==w&&(z.points[I]=z.points[this.index]=[u(z.cum,m)],E(z.cum)||(z.base=I),z.touched=G.stacksTouched,0<K.index&&!1===this.singleStacks&&(z.points[I][0]=z.points[this.index+\",\"+h+\",0\"][0])),\"percent\"===e?(p=p?r:t,c&&q[p]&&q[p][h]?(p=q[p][h],z.total=p.total=\nMath.max(p.total,z.total)+Math.abs(w)||0):z.total=F(z.total+(Math.abs(w)||0))):z.total=F(z.total+(w||0)),z.cum=u(z.cum,m)+(w||0),null!==w&&(z.points[I].push(z.cum),k[A]=z.cum);\"percent\"===e&&(G.usePercentage=!0);this.stackedYData=k;G.oldStacks={}}};t.prototype.setPercentStacks=function(){var a=this,d=a.stackKey,k=a.yAxis.stacks,b=a.processedXData,e;f([d,\"-\"+d],function(d){for(var f=b.length,g,l;f--;)if(g=b[f],e=a.getStackIndicator(e,g,a.index,d),g=(l=k[d]&&k[d][g])&&l.points[e.key])l=l.total?100/\nl.total:0,g[0]=F(g[0]*l),g[1]=F(g[1]*l),a.stackedYData[f]=g[1]})};t.prototype.getStackIndicator=function(a,d,f,b){!E(a)||a.x!==d||b&&a.key!==b?a={x:d,index:0,key:b}:a.index++;a.key=[f,d,a.index].join();return a}})(M);(function(a){var C=a.addEvent,A=a.animate,F=a.Axis,E=a.createElement,m=a.css,f=a.defined,l=a.each,r=a.erase,u=a.extend,t=a.fireEvent,g=a.inArray,d=a.isNumber,k=a.isObject,b=a.isArray,e=a.merge,v=a.objectEach,y=a.pick,n=a.Point,D=a.Series,J=a.seriesTypes,c=a.setAnimation,G=a.splat;u(a.Chart.prototype,\n{addSeries:function(a,b,c){var e,d=this;a&&(b=y(b,!0),t(d,\"addSeries\",{options:a},function(){e=d.initSeries(a);d.isDirtyLegend=!0;d.linkSeries();b&&d.redraw(c)}));return e},addAxis:function(a,b,c,d){var f=b?\"xAxis\":\"yAxis\",g=this.options;a=e(a,{index:this[f].length,isX:b});b=new F(this,a);g[f]=G(g[f]||{});g[f].push(a);y(c,!0)&&this.redraw(d);return b},showLoading:function(a){var b=this,c=b.options,e=b.loadingDiv,d=c.loading,f=function(){e&&m(e,{left:b.plotLeft+\"px\",top:b.plotTop+\"px\",width:b.plotWidth+\n\"px\",height:b.plotHeight+\"px\"})};e||(b.loadingDiv=e=E(\"div\",{className:\"highcharts-loading highcharts-loading-hidden\"},null,b.container),b.loadingSpan=E(\"span\",{className:\"highcharts-loading-inner\"},null,e),C(b,\"redraw\",f));e.className=\"highcharts-loading\";b.loadingSpan.innerHTML=a||c.lang.loading;m(e,u(d.style,{zIndex:10}));m(b.loadingSpan,d.labelStyle);b.loadingShown||(m(e,{opacity:0,display:\"\"}),A(e,{opacity:d.style.opacity||.5},{duration:d.showDuration||0}));b.loadingShown=!0;f()},hideLoading:function(){var a=\nthis.options,b=this.loadingDiv;b&&(b.className=\"highcharts-loading highcharts-loading-hidden\",A(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){m(b,{display:\"none\"})}}));this.loadingShown=!1},propsRequireDirtyBox:\"backgroundColor borderColor borderWidth margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow\".split(\" \"),\npropsRequireUpdateSeries:\"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions tooltip\".split(\" \"),update:function(a,b,c){var k=this,n={credits:\"addCredits\",title:\"setTitle\",subtitle:\"setSubtitle\"},q=a.chart,m,h,r=[];if(q){e(!0,k.options.chart,q);\"className\"in q&&k.setClassName(q.className);if(\"inverted\"in q||\"polar\"in q)k.propFromSeries(),m=!0;\"alignTicks\"in q&&(m=!0);v(q,function(a,b){-1!==g(\"chart.\"+b,k.propsRequireUpdateSeries)&&(h=!0);-1!==g(b,k.propsRequireDirtyBox)&&\n(k.isDirtyBox=!0)});\"style\"in q&&k.renderer.setStyle(q.style)}a.colors&&(this.options.colors=a.colors);a.plotOptions&&e(!0,this.options.plotOptions,a.plotOptions);v(a,function(a,b){if(k[b]&&\"function\"===typeof k[b].update)k[b].update(a,!1);else if(\"function\"===typeof k[n[b]])k[n[b]](a);\"chart\"!==b&&-1!==g(b,k.propsRequireUpdateSeries)&&(h=!0)});l(\"xAxis yAxis zAxis series colorAxis pane\".split(\" \"),function(b){a[b]&&(l(G(a[b]),function(a,e){(e=f(a.id)&&k.get(a.id)||k[b][e])&&e.coll===b&&(e.update(a,\n!1),c&&(e.touched=!0));if(!e&&c)if(\"series\"===b)k.addSeries(a,!1).touched=!0;else if(\"xAxis\"===b||\"yAxis\"===b)k.addAxis(a,\"xAxis\"===b,!1).touched=!0}),c&&l(k[b],function(a){a.touched?delete a.touched:r.push(a)}))});l(r,function(a){a.remove(!1)});m&&l(k.axes,function(a){a.update({},!1)});h&&l(k.series,function(a){a.update({},!1)});a.loading&&e(!0,k.options.loading,a.loading);m=q&&q.width;q=q&&q.height;d(m)&&m!==k.chartWidth||d(q)&&q!==k.chartHeight?k.setSize(m,q):y(b,!0)&&k.redraw()},setSubtitle:function(a){this.setTitle(void 0,\na)}});u(n.prototype,{update:function(a,b,c,e){function d(){f.applyOptions(a);null===f.y&&h&&(f.graphic=h.destroy());k(a,!0)&&(h&&h.element&&a&&a.marker&&void 0!==a.marker.symbol&&(f.graphic=h.destroy()),a&&a.dataLabels&&f.dataLabel&&(f.dataLabel=f.dataLabel.destroy()));p=f.index;g.updateParallelArrays(f,p);q.data[p]=k(q.data[p],!0)||k(a,!0)?f.options:a;g.isDirty=g.isDirtyData=!0;!g.fixedBox&&g.hasCartesianSeries&&(l.isDirtyBox=!0);\"point\"===q.legendType&&(l.isDirtyLegend=!0);b&&l.redraw(c)}var f=\nthis,g=f.series,h=f.graphic,p,l=g.chart,q=g.options;b=y(b,!0);!1===e?d():f.firePointEvent(\"update\",{options:a},d)},remove:function(a,b){this.series.removePoint(g(this,this.series.data),a,b)}});u(D.prototype,{addPoint:function(a,b,c,e){var d=this.options,f=this.data,g=this.chart,h=this.xAxis,h=h&&h.hasNames&&h.names,k=d.data,p,l,q=this.xData,n,m;b=y(b,!0);p={series:this};this.pointClass.prototype.applyOptions.apply(p,[a]);m=p.x;n=q.length;if(this.requireSorting&&m<q[n-1])for(l=!0;n&&q[n-1]>m;)n--;\nthis.updateParallelArrays(p,\"splice\",n,0,0);this.updateParallelArrays(p,n);h&&p.name&&(h[m]=p.name);k.splice(n,0,a);l&&(this.data.splice(n,0,null),this.processData());\"point\"===d.legendType&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(p,\"shift\"),k.shift()));this.isDirtyData=this.isDirty=!0;b&&g.redraw(e)},removePoint:function(a,b,e){var d=this,f=d.data,g=f[a],k=d.points,h=d.chart,l=function(){k&&k.length===f.length&&k.splice(a,1);f.splice(a,1);\nd.options.data.splice(a,1);d.updateParallelArrays(g||{series:d},\"splice\",a,1);g&&g.destroy();d.isDirty=!0;d.isDirtyData=!0;b&&h.redraw()};c(e,h);b=y(b,!0);g?g.firePointEvent(\"remove\",null,l):l()},remove:function(a,b,c){function e(){d.destroy();f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();y(a,!0)&&f.redraw(b)}var d=this,f=d.chart;!1!==c?t(d,\"remove\",null,e):e()},update:function(a,b){var c=this,d=c.chart,f=c.userOptions,g=c.oldType||c.type,k=a.type||f.type||d.options.chart.type,h=J[g].prototype,n,\nq=[\"group\",\"markerGroup\",\"dataLabelsGroup\",\"navigatorSeries\",\"baseSeries\"],m=c.finishedAnimating&&{animation:!1};if(Object.keys&&\"data\"===Object.keys(a).toString())return this.setData(a.data,b);if(k&&k!==g||void 0!==a.zIndex)q.length=0;l(q,function(a){q[a]=c[a];delete c[a]});a=e(f,m,{index:c.index,pointStart:c.xData[0]},{data:c.options.data},a);c.remove(!1,null,!1);for(n in h)c[n]=void 0;u(c,J[k||g].prototype);l(q,function(a){c[a]=q[a]});c.init(d,a);c.oldType=g;d.linkSeries();y(b,!0)&&d.redraw(!1)}});\nu(F.prototype,{update:function(a,b){var c=this.chart;a=c.options[this.coll][this.options.index]=e(this.userOptions,a);this.destroy(!0);this.init(c,u(a,{events:void 0}));c.isDirtyBox=!0;y(b,!0)&&c.redraw()},remove:function(a){for(var c=this.chart,e=this.coll,d=this.series,f=d.length;f--;)d[f]&&d[f].remove(!1);r(c.axes,this);r(c[e],this);b(c.options[e])?c.options[e].splice(this.options.index,1):delete c.options[e];l(c[e],function(a,b){a.options.index=b});this.destroy();c.isDirtyBox=!0;y(a,!0)&&c.redraw()},\nsetTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}})})(M);(function(a){var C=a.color,A=a.each,F=a.map,E=a.pick,m=a.Series,f=a.seriesType;f(\"area\",\"line\",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(f){var l=[],m=[],t=this.xAxis,g=this.yAxis,d=g.stacks[this.stackKey],k={},b=this.index,e=g.series,v=e.length,y,n=E(g.options.reversedStacks,!0)?1:-1,D;f=f||this.points;if(this.options.stacking){for(D=0;D<f.length;D++)k[f[D].x]=\nf[D];a.objectEach(d,function(a,b){null!==a.total&&m.push(b)});m.sort(function(a,b){return a-b});y=F(e,function(){return this.visible});A(m,function(a,c){var e=0,f,r;if(k[a]&&!k[a].isNull)l.push(k[a]),A([-1,1],function(e){var g=1===e?\"rightNull\":\"leftNull\",l=0,q=d[m[c+e]];if(q)for(D=b;0<=D&&D<v;)f=q.points[D],f||(D===b?k[a][g]=!0:y[D]&&(r=d[a].points[D])&&(l-=r[1]-r[0])),D+=n;k[a][1===e?\"rightCliff\":\"leftCliff\"]=l});else{for(D=b;0<=D&&D<v;){if(f=d[a].points[D]){e=f[1];break}D+=n}e=g.translate(e,0,\n1,0,1);l.push({isNull:!0,plotX:t.translate(a,0,0,0,1),x:a,plotY:e,yBottom:e})}})}return l},getGraphPath:function(a){var f=m.prototype.getGraphPath,l=this.options,t=l.stacking,g=this.yAxis,d,k,b=[],e=[],v=this.index,y,n=g.stacks[this.stackKey],D=l.threshold,A=g.getThreshold(l.threshold),c,l=l.connectNulls||\"percent\"===t,G=function(c,d,f){var k=a[c];c=t&&n[k.x].points[v];var l=k[f+\"Null\"]||0;f=k[f+\"Cliff\"]||0;var q,m,k=!0;f||l?(q=(l?c[0]:c[1])+f,m=c[0]+f,k=!!l):!t&&a[d]&&a[d].isNull&&(q=m=D);void 0!==\nq&&(e.push({plotX:y,plotY:null===q?A:g.getThreshold(q),isNull:k,isCliff:!0}),b.push({plotX:y,plotY:null===m?A:g.getThreshold(m),doCurve:!1}))};a=a||this.points;t&&(a=this.getStackPoints(a));for(d=0;d<a.length;d++)if(k=a[d].isNull,y=E(a[d].rectPlotX,a[d].plotX),c=E(a[d].yBottom,A),!k||l)l||G(d,d-1,\"left\"),k&&!t&&l||(e.push(a[d]),b.push({x:d,plotX:y,plotY:c})),l||G(d,d+1,\"right\");d=f.call(this,e,!0,!0);b.reversed=!0;k=f.call(this,b,!0,!0);k.length&&(k[0]=\"L\");k=d.concat(k);f=f.call(this,e,!1,l);k.xMap=\nd.xMap;this.areaPath=k;return f},drawGraph:function(){this.areaPath=[];m.prototype.drawGraph.apply(this);var a=this,f=this.areaPath,u=this.options,t=[[\"area\",\"highcharts-area\",this.color,u.fillColor]];A(this.zones,function(f,d){t.push([\"zone-area-\"+d,\"highcharts-area highcharts-zone-area-\"+d+\" \"+f.className,f.color||a.color,f.fillColor||u.fillColor])});A(t,function(g){var d=g[0],k=a[d];k?(k.endX=f.xMap,k.animate({d:f})):(k=a[d]=a.chart.renderer.path(f).addClass(g[1]).attr({fill:E(g[3],C(g[2]).setOpacity(E(u.fillOpacity,\n.75)).get()),zIndex:0}).add(a.group),k.isArea=!0);k.startX=f.xMap;k.shiftUnit=u.step?2:1})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle})})(M);(function(a){var C=a.pick;a=a.seriesType;a(\"spline\",\"line\",{},{getPointSpline:function(a,F,E){var m=F.plotX,f=F.plotY,l=a[E-1];E=a[E+1];var r,u,t,g;if(l&&!l.isNull&&!1!==l.doCurve&&!F.isCliff&&E&&!E.isNull&&!1!==E.doCurve&&!F.isCliff){a=l.plotY;t=E.plotX;E=E.plotY;var d=0;r=(1.5*m+l.plotX)/2.5;u=(1.5*f+a)/2.5;t=(1.5*m+t)/2.5;g=(1.5*f+E)/2.5;t!==r&&(d=\n(g-u)*(t-m)/(t-r)+f-g);u+=d;g+=d;u>a&&u>f?(u=Math.max(a,f),g=2*f-u):u<a&&u<f&&(u=Math.min(a,f),g=2*f-u);g>E&&g>f?(g=Math.max(E,f),u=2*f-g):g<E&&g<f&&(g=Math.min(E,f),u=2*f-g);F.rightContX=t;F.rightContY=g}F=[\"C\",C(l.rightContX,l.plotX),C(l.rightContY,l.plotY),C(r,m),C(u,f),m,f];l.rightContX=l.rightContY=null;return F}})})(M);(function(a){var C=a.seriesTypes.area.prototype,A=a.seriesType;A(\"areaspline\",\"spline\",a.defaultPlotOptions.area,{getStackPoints:C.getStackPoints,getGraphPath:C.getGraphPath,\ndrawGraph:C.drawGraph,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle})})(M);(function(a){var C=a.animObject,A=a.color,F=a.each,E=a.extend,m=a.isNumber,f=a.merge,l=a.pick,r=a.Series,u=a.seriesType,t=a.svg;u(\"column\",\"line\",{borderRadius:0,crisp:!0,groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{halo:!1,brightness:.1,shadow:!1},select:{color:\"#cccccc\",borderColor:\"#000000\",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},\nsoftThreshold:!1,startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0,borderColor:\"#ffffff\"},{cropShoulder:0,directTouch:!0,trackerGroups:[\"group\",\"dataLabelsGroup\"],negStacks:!0,init:function(){r.prototype.init.apply(this,arguments);var a=this,d=a.chart;d.hasRendered&&F(d.series,function(d){d.type===a.type&&(d.isDirty=!0)})},getColumnMetrics:function(){var a=this,d=a.options,f=a.xAxis,b=a.yAxis,e=f.reversed,m,r={},n=0;!1===d.grouping?n=1:F(a.chart.series,function(c){var e=c.options,\nd=c.yAxis,f;c.type!==a.type||!c.visible&&a.chart.options.chart.ignoreHiddenSeries||b.len!==d.len||b.pos!==d.pos||(e.stacking?(m=c.stackKey,void 0===r[m]&&(r[m]=n++),f=r[m]):!1!==e.grouping&&(f=n++),c.columnIndex=f)});var t=Math.min(Math.abs(f.transA)*(f.ordinalSlope||d.pointRange||f.closestPointRange||f.tickInterval||1),f.len),u=t*d.groupPadding,c=(t-2*u)/(n||1),d=Math.min(d.maxPointWidth||f.len,l(d.pointWidth,c*(1-2*d.pointPadding)));a.columnMetrics={width:d,offset:(c-d)/2+(u+((a.columnIndex||0)+\n(e?1:0))*c-t/2)*(e?-1:1)};return a.columnMetrics},crispCol:function(a,d,f,b){var e=this.chart,g=this.borderWidth,k=-(g%2?.5:0),g=g%2?.5:1;e.inverted&&e.renderer.isVML&&(g+=1);this.options.crisp&&(f=Math.round(a+f)+k,a=Math.round(a)+k,f-=a);b=Math.round(d+b)+g;k=.5>=Math.abs(d)&&.5<b;d=Math.round(d)+g;b-=d;k&&b&&(--d,b+=1);return{x:a,y:d,width:f,height:b}},translate:function(){var a=this,d=a.chart,f=a.options,b=a.dense=2>a.closestPointRange*a.xAxis.transA,b=a.borderWidth=l(f.borderWidth,b?0:1),e=a.yAxis,\nm=a.translatedThreshold=e.getThreshold(f.threshold),t=l(f.minPointLength,5),n=a.getColumnMetrics(),u=n.width,A=a.barW=Math.max(u,1+2*b),c=a.pointXOffset=n.offset;d.inverted&&(m-=.5);f.pointPadding&&(A=Math.ceil(A));r.prototype.translate.apply(a);F(a.points,function(b){var f=l(b.yBottom,m),g=999+Math.abs(f),g=Math.min(Math.max(-g,b.plotY),e.len+g),k=b.plotX+c,n=A,r=Math.min(g,f),v,y=Math.max(g,f)-r;Math.abs(y)<t&&t&&(y=t,v=!e.reversed&&!b.negative||e.reversed&&b.negative,r=Math.abs(r-m)>t?f-t:m-(v?\nt:0));b.barX=k;b.pointWidth=u;b.tooltipPos=d.inverted?[e.len+e.pos-d.plotLeft-g,a.xAxis.len-k-n/2,y]:[k+n/2,g+e.pos-d.plotTop,y];b.shapeType=\"rect\";b.shapeArgs=a.crispCol.apply(a,b.isNull?[k,m,n,0]:[k,r,n,y])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?\"addClass\":\"removeClass\"](\"highcharts-dense-data\")},pointAttribs:function(a,d){var g=this.options,b,e=this.pointAttrToOptions||{};b=e.stroke||\"borderColor\";var l=e[\"stroke-width\"]||\n\"borderWidth\",m=a&&a.color||this.color,n=a[b]||g[b]||this.color||m,r=a[l]||g[l]||this[l]||0,e=g.dashStyle;a&&this.zones.length&&(m=a.getZone(),m=a.options.color||m&&m.color||this.color);d&&(a=f(g.states[d],a.options.states&&a.options.states[d]||{}),d=a.brightness,m=a.color||void 0!==d&&A(m).brighten(a.brightness).get()||m,n=a[b]||n,r=a[l]||r,e=a.dashStyle||e);b={fill:m,stroke:n,\"stroke-width\":r};e&&(b.dashstyle=e);return b},drawPoints:function(){var a=this,d=this.chart,k=a.options,b=d.renderer,e=\nk.animationLimit||250,l;F(a.points,function(g){var n=g.graphic;if(m(g.plotY)&&null!==g.y){l=g.shapeArgs;if(n)n[d.pointCount<e?\"animate\":\"attr\"](f(l));else g.graphic=n=b[g.shapeType](l).add(g.group||a.group);k.borderRadius&&n.attr({r:k.borderRadius});n.attr(a.pointAttribs(g,g.selected&&\"select\")).shadow(k.shadow,null,k.stacking&&!k.borderRadius);n.addClass(g.getClassName(),!0)}else n&&(g.graphic=n.destroy())})},animate:function(a){var d=this,f=this.yAxis,b=d.options,e=this.chart.inverted,g={};t&&(a?\n(g.scaleY=.001,a=Math.min(f.pos+f.len,Math.max(f.pos,f.toPixels(b.threshold))),e?g.translateX=a-f.len:g.translateY=a,d.group.attr(g)):(g[e?\"translateX\":\"translateY\"]=f.pos,d.group.animate(g,E(C(d.options.animation),{step:function(a,b){d.group.attr({scaleY:Math.max(.001,b.pos)})}})),d.animate=null))},remove:function(){var a=this,d=a.chart;d.hasRendered&&F(d.series,function(d){d.type===a.type&&(d.isDirty=!0)});r.prototype.remove.apply(a,arguments)}})})(M);(function(a){a=a.seriesType;a(\"bar\",\"column\",\nnull,{inverted:!0})})(M);(function(a){var C=a.Series;a=a.seriesType;a(\"scatter\",\"line\",{lineWidth:0,findNearestPointBy:\"xy\",marker:{enabled:!0},tooltip:{headerFormat:'\\x3cspan style\\x3d\"color:{point.color}\"\\x3e\\u25cf\\x3c/span\\x3e \\x3cspan style\\x3d\"font-size: 0.85em\"\\x3e {series.name}\\x3c/span\\x3e\\x3cbr/\\x3e',pointFormat:\"x: \\x3cb\\x3e{point.x}\\x3c/b\\x3e\\x3cbr/\\x3ey: \\x3cb\\x3e{point.y}\\x3c/b\\x3e\\x3cbr/\\x3e\"}},{sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[\"group\",\"markerGroup\",\"dataLabelsGroup\"],\ntakeOrdinalPosition:!1,drawGraph:function(){this.options.lineWidth&&C.prototype.drawGraph.call(this)}})})(M);(function(a){var C=a.pick,A=a.relativeLength;a.CenteredSeriesMixin={getCenter:function(){var a=this.options,E=this.chart,m=2*(a.slicedOffset||0),f=E.plotWidth-2*m,E=E.plotHeight-2*m,l=a.center,l=[C(l[0],\"50%\"),C(l[1],\"50%\"),a.size||\"100%\",a.innerSize||0],r=Math.min(f,E),u,t;for(u=0;4>u;++u)t=l[u],a=2>u||2===u&&/%$/.test(t),l[u]=A(t,[f,E,r,l[2]][u])+(a?m:0);l[3]>l[2]&&(l[3]=l[2]);return l}}})(M);\n(function(a){var C=a.addEvent,A=a.defined,F=a.each,E=a.extend,m=a.inArray,f=a.noop,l=a.pick,r=a.Point,u=a.Series,t=a.seriesType,g=a.setAnimation;t(\"pie\",\"line\",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},x:0},ignoreHiddenPoint:!0,legendType:\"point\",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:\"#ffffff\",borderWidth:1,states:{hover:{brightness:.1,\nshadow:!1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:[\"group\",\"dataLabelsGroup\"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var d=this,b=d.points,e=d.startAngleRad;a||(F(b,function(a){var b=a.graphic,f=a.shapeArgs;b&&(b.attr({r:a.startR||d.center[3]/2,start:e,end:e}),b.animate({r:f.r,start:f.start,end:f.end},d.options.animation))}),d.animate=null)},updateTotals:function(){var a,f=0,b=this.points,e=b.length,g,\nl=this.options.ignoreHiddenPoint;for(a=0;a<e;a++)g=b[a],f+=l&&!g.visible?0:g.isNull?0:g.y;this.total=f;for(a=0;a<e;a++)g=b[a],g.percentage=0<f&&(g.visible||!l)?g.y/f*100:0,g.total=f},generatePoints:function(){u.prototype.generatePoints.call(this);this.updateTotals()},translate:function(a){this.generatePoints();var d=0,b=this.options,e=b.slicedOffset,f=e+(b.borderWidth||0),g,n,m,r=b.startAngle||0,c=this.startAngleRad=Math.PI/180*(r-90),r=(this.endAngleRad=Math.PI/180*(l(b.endAngle,r+360)-90))-c,t=\nthis.points,q,B=b.dataLabels.distance,b=b.ignoreHiddenPoint,u,p=t.length,z;a||(this.center=a=this.getCenter());this.getX=function(b,c,e){m=Math.asin(Math.min((b-a[1])/(a[2]/2+e.labelDistance),1));return a[0]+(c?-1:1)*Math.cos(m)*(a[2]/2+e.labelDistance)};for(u=0;u<p;u++){z=t[u];z.labelDistance=l(z.options.dataLabels&&z.options.dataLabels.distance,B);this.maxLabelDistance=Math.max(this.maxLabelDistance||0,z.labelDistance);g=c+d*r;if(!b||z.visible)d+=z.percentage/100;n=c+d*r;z.shapeType=\"arc\";z.shapeArgs=\n{x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:Math.round(1E3*g)/1E3,end:Math.round(1E3*n)/1E3};m=(n+g)/2;m>1.5*Math.PI?m-=2*Math.PI:m<-Math.PI/2&&(m+=2*Math.PI);z.slicedTranslation={translateX:Math.round(Math.cos(m)*e),translateY:Math.round(Math.sin(m)*e)};n=Math.cos(m)*a[2]/2;q=Math.sin(m)*a[2]/2;z.tooltipPos=[a[0]+.7*n,a[1]+.7*q];z.half=m<-Math.PI/2||m>Math.PI/2?1:0;z.angle=m;g=Math.min(f,z.labelDistance/5);z.labelPos=[a[0]+n+Math.cos(m)*z.labelDistance,a[1]+q+Math.sin(m)*z.labelDistance,a[0]+n+Math.cos(m)*\ng,a[1]+q+Math.sin(m)*g,a[0]+n,a[1]+q,0>z.labelDistance?\"center\":z.half?\"right\":\"left\",m]}},drawGraph:null,drawPoints:function(){var a=this,f=a.chart.renderer,b,e,g,l,n=a.options.shadow;n&&!a.shadowGroup&&(a.shadowGroup=f.g(\"shadow\").add(a.group));F(a.points,function(d){if(!d.isNull){e=d.graphic;l=d.shapeArgs;b=d.getTranslate();var k=d.shadowGroup;n&&!k&&(k=d.shadowGroup=f.g(\"shadow\").add(a.shadowGroup));k&&k.attr(b);g=a.pointAttribs(d,d.selected&&\"select\");e?e.setRadialReference(a.center).attr(g).animate(E(l,\nb)):(d.graphic=e=f[d.shapeType](l).setRadialReference(a.center).attr(b).add(a.group),d.visible||e.attr({visibility:\"hidden\"}),e.attr(g).attr({\"stroke-linejoin\":\"round\"}).shadow(n,k));e.addClass(d.getClassName())}})},searchPoint:f,sortByAngle:function(a,f){a.sort(function(a,e){return void 0!==a.angle&&(e.angle-a.angle)*f})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:a.CenteredSeriesMixin.getCenter,getSymbol:f},{init:function(){r.prototype.init.apply(this,arguments);var a=this,f;a.name=\nl(a.name,\"Slice\");f=function(b){a.slice(\"select\"===b.type)};C(a,\"select\",f);C(a,\"unselect\",f);return a},isValid:function(){return a.isNumber(this.y,!0)&&0<=this.y},setVisible:function(a,f){var b=this,e=b.series,d=e.chart,g=e.options.ignoreHiddenPoint;f=l(f,g);a!==b.visible&&(b.visible=b.options.visible=a=void 0===a?!b.visible:a,e.options.data[m(b,e.data)]=b.options,F([\"graphic\",\"dataLabel\",\"connector\",\"shadowGroup\"],function(e){if(b[e])b[e][a?\"show\":\"hide\"](!0)}),b.legendItem&&d.legend.colorizeItem(b,\na),a||\"hover\"!==b.state||b.setState(\"\"),g&&(e.isDirty=!0),f&&d.redraw())},slice:function(a,f,b){var e=this.series;g(b,e.chart);l(f,!0);this.sliced=this.options.sliced=A(a)?a:!this.sliced;e.options.data[m(this,e.data)]=this.options;this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},getTranslate:function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}},haloPath:function(a){var d=this.shapeArgs;return this.sliced||!this.visible?\n[]:this.series.chart.renderer.symbols.arc(d.x,d.y,d.r+a,d.r+a,{innerR:this.shapeArgs.r,start:d.start,end:d.end})}})})(M);(function(a){var C=a.addEvent,A=a.arrayMax,F=a.defined,E=a.each,m=a.extend,f=a.format,l=a.map,r=a.merge,u=a.noop,t=a.pick,g=a.relativeLength,d=a.Series,k=a.seriesTypes,b=a.stableSort;a.distribute=function(a,d){function e(a,b){return a.target-b.target}var f,g=!0,k=a,c=[],m;m=0;for(f=a.length;f--;)m+=a[f].size;if(m>d){b(a,function(a,b){return(b.rank||0)-(a.rank||0)});for(m=f=0;m<=\nd;)m+=a[f].size,f++;c=a.splice(f-1,a.length)}b(a,e);for(a=l(a,function(a){return{size:a.size,targets:[a.target]}});g;){for(f=a.length;f--;)g=a[f],m=(Math.min.apply(0,g.targets)+Math.max.apply(0,g.targets))/2,g.pos=Math.min(Math.max(0,m-g.size/2),d-g.size);f=a.length;for(g=!1;f--;)0<f&&a[f-1].pos+a[f-1].size>a[f].pos&&(a[f-1].size+=a[f].size,a[f-1].targets=a[f-1].targets.concat(a[f].targets),a[f-1].pos+a[f-1].size>d&&(a[f-1].pos=d-a[f-1].size),a.splice(f,1),g=!0)}f=0;E(a,function(a){var b=0;E(a.targets,\nfunction(){k[f].pos=a.pos+b;b+=k[f].size;f++})});k.push.apply(k,c);b(k,e)};d.prototype.drawDataLabels=function(){var b=this,d=b.options,g=d.dataLabels,k=b.points,l,m,c=b.hasRendered||0,u,q,B=t(g.defer,!!d.animation),A=b.chart.renderer;if(g.enabled||b._hasPointLabels)b.dlProcessOptions&&b.dlProcessOptions(g),q=b.plotGroup(\"dataLabelsGroup\",\"data-labels\",B&&!c?\"hidden\":\"visible\",g.zIndex||6),B&&(q.attr({opacity:+c}),c||C(b,\"afterAnimate\",function(){b.visible&&q.show(!0);q[d.animation?\"animate\":\"attr\"]({opacity:1},\n{duration:200})})),m=g,E(k,function(c){var e,k=c.dataLabel,n,h,p=c.connector,v=!k,B;l=c.dlOptions||c.options&&c.options.dataLabels;if(e=t(l&&l.enabled,m.enabled)&&null!==c.y)g=r(m,l),n=c.getLabelConfig(),u=g.format?f(g.format,n):g.formatter.call(n,g),B=g.style,n=g.rotation,B.color=t(g.color,B.color,b.color,\"#000000\"),\"contrast\"===B.color&&(c.contrastColor=A.getContrast(c.color||b.color),B.color=g.inside||0>t(c.labelDistance,g.distance)||d.stacking?c.contrastColor:\"#000000\"),d.cursor&&(B.cursor=d.cursor),\nh={fill:g.backgroundColor,stroke:g.borderColor,\"stroke-width\":g.borderWidth,r:g.borderRadius||0,rotation:n,padding:g.padding,zIndex:1},a.objectEach(h,function(a,b){void 0===a&&delete h[b]});!k||e&&F(u)?e&&F(u)&&(k?h.text=u:(k=c.dataLabel=A[n?\"text\":\"label\"](u,0,-9999,g.shape,null,null,g.useHTML,null,\"data-label\"),k.addClass(\"highcharts-data-label-color-\"+c.colorIndex+\" \"+(g.className||\"\")+(g.useHTML?\"highcharts-tracker\":\"\"))),k.attr(h),k.css(B).shadow(g.shadow),k.added||k.add(q),b.alignDataLabel(c,\nk,g,null,v)):(c.dataLabel=k=k.destroy(),p&&(c.connector=p.destroy()))})};d.prototype.alignDataLabel=function(a,b,d,f,g){var e=this.chart,c=e.inverted,k=t(a.plotX,-9999),l=t(a.plotY,-9999),n=b.getBBox(),r,p=d.rotation,v=d.align,u=this.visible&&(a.series.forceDL||e.isInsidePlot(k,Math.round(l),c)||f&&e.isInsidePlot(k,c?f.x+1:f.y+f.height-1,c)),y=\"justify\"===t(d.overflow,\"justify\");if(u&&(r=d.style.fontSize,r=e.renderer.fontMetrics(r,b).b,f=m({x:c?this.yAxis.len-l:k,y:Math.round(c?this.xAxis.len-k:l),\nwidth:0,height:0},f),m(d,{width:n.width,height:n.height}),p?(y=!1,k=e.renderer.rotCorr(r,p),k={x:f.x+d.x+f.width/2+k.x,y:f.y+d.y+{top:0,middle:.5,bottom:1}[d.verticalAlign]*f.height},b[g?\"attr\":\"animate\"](k).attr({align:v}),l=(p+720)%360,l=180<l&&360>l,\"left\"===v?k.y-=l?n.height:0:\"center\"===v?(k.x-=n.width/2,k.y-=n.height/2):\"right\"===v&&(k.x-=n.width,k.y-=l?0:n.height)):(b.align(d,null,f),k=b.alignAttr),y?a.isLabelJustified=this.justifyDataLabel(b,d,k,n,f,g):t(d.crop,!0)&&(u=e.isInsidePlot(k.x,\nk.y)&&e.isInsidePlot(k.x+n.width,k.y+n.height)),d.shape&&!p))b[g?\"attr\":\"animate\"]({anchorX:c?e.plotWidth-a.plotY:a.plotX,anchorY:c?e.plotHeight-a.plotX:a.plotY});u||(b.attr({y:-9999}),b.placed=!1)};d.prototype.justifyDataLabel=function(a,b,d,f,g,k){var c=this.chart,e=b.align,l=b.verticalAlign,m,n,p=a.box?0:a.padding||0;m=d.x+p;0>m&&(\"right\"===e?b.align=\"left\":b.x=-m,n=!0);m=d.x+f.width-p;m>c.plotWidth&&(\"left\"===e?b.align=\"right\":b.x=c.plotWidth-m,n=!0);m=d.y+p;0>m&&(\"bottom\"===l?b.verticalAlign=\n\"top\":b.y=-m,n=!0);m=d.y+f.height-p;m>c.plotHeight&&(\"top\"===l?b.verticalAlign=\"bottom\":b.y=c.plotHeight-m,n=!0);n&&(a.placed=!k,a.align(b,null,g));return n};k.pie&&(k.pie.prototype.drawDataLabels=function(){var b=this,f=b.data,g,k=b.chart,l=b.options.dataLabels,m=t(l.connectorPadding,10),c=t(l.connectorWidth,1),r=k.plotWidth,q=k.plotHeight,u,C=b.center,p=C[2]/2,z=C[1],I,L,h,w,M=[[],[]],H,O,Q,R,x=[0,0,0,0];b.visible&&(l.enabled||b._hasPointLabels)&&(E(f,function(a){a.dataLabel&&a.visible&&a.dataLabel.shortened&&\n(a.dataLabel.attr({width:\"auto\"}).css({width:\"auto\",textOverflow:\"clip\"}),a.dataLabel.shortened=!1)}),d.prototype.drawDataLabels.apply(b),E(f,function(a){a.dataLabel&&a.visible&&(M[a.half].push(a),a.dataLabel._pos=null)}),E(M,function(c,d){var e,f,n=c.length,v=[],u;if(n)for(b.sortByAngle(c,d-.5),0<b.maxLabelDistance&&(e=Math.max(0,z-p-b.maxLabelDistance),f=Math.min(z+p+b.maxLabelDistance,k.plotHeight),E(c,function(a){0<a.labelDistance&&a.dataLabel&&(a.top=Math.max(0,z-p-a.labelDistance),a.bottom=\nMath.min(z+p+a.labelDistance,k.plotHeight),u=a.dataLabel.getBBox().height||21,a.positionsIndex=v.push({target:a.labelPos[1]-a.top+u/2,size:u,rank:a.y})-1)}),a.distribute(v,f+u-e)),R=0;R<n;R++)g=c[R],f=g.positionsIndex,h=g.labelPos,I=g.dataLabel,Q=!1===g.visible?\"hidden\":\"inherit\",e=h[1],v&&F(v[f])?void 0===v[f].pos?Q=\"hidden\":(w=v[f].size,O=g.top+v[f].pos):O=e,delete g.positionIndex,H=l.justify?C[0]+(d?-1:1)*(p+g.labelDistance):b.getX(O<g.top+2||O>g.bottom-2?e:O,d,g),I._attr={visibility:Q,align:h[6]},\nI._pos={x:H+l.x+({left:m,right:-m}[h[6]]||0),y:O+l.y-10},h.x=H,h.y=O,t(l.crop,!0)&&(L=I.getBBox().width,e=null,H-L<m?(e=Math.round(L-H+m),x[3]=Math.max(e,x[3])):H+L>r-m&&(e=Math.round(H+L-r+m),x[1]=Math.max(e,x[1])),0>O-w/2?x[0]=Math.max(Math.round(-O+w/2),x[0]):O+w/2>q&&(x[2]=Math.max(Math.round(O+w/2-q),x[2])),I.sideOverflow=e)}),0===A(x)||this.verifyDataLabelOverflow(x))&&(this.placeDataLabels(),c&&E(this.points,function(a){var e;u=a.connector;if((I=a.dataLabel)&&I._pos&&a.visible&&0<a.labelDistance){Q=\nI._attr.visibility;if(e=!u)a.connector=u=k.renderer.path().addClass(\"highcharts-data-label-connector highcharts-color-\"+a.colorIndex).add(b.dataLabelsGroup),u.attr({\"stroke-width\":c,stroke:l.connectorColor||a.color||\"#666666\"});u[e?\"attr\":\"animate\"]({d:b.connectorPath(a.labelPos)});u.attr(\"visibility\",Q)}else u&&(a.connector=u.destroy())}))},k.pie.prototype.connectorPath=function(a){var b=a.x,d=a.y;return t(this.options.dataLabels.softConnector,!0)?[\"M\",b+(\"left\"===a[6]?5:-5),d,\"C\",b,d,2*a[2]-a[4],\n2*a[3]-a[5],a[2],a[3],\"L\",a[4],a[5]]:[\"M\",b+(\"left\"===a[6]?5:-5),d,\"L\",a[2],a[3],\"L\",a[4],a[5]]},k.pie.prototype.placeDataLabels=function(){E(this.points,function(a){var b=a.dataLabel;b&&a.visible&&((a=b._pos)?(b.sideOverflow&&(b._attr.width=b.getBBox().width-b.sideOverflow,b.css({width:b._attr.width+\"px\",textOverflow:\"ellipsis\"}),b.shortened=!0),b.attr(b._attr),b[b.moved?\"animate\":\"attr\"](a),b.moved=!0):b&&b.attr({y:-9999}))},this)},k.pie.prototype.alignDataLabel=u,k.pie.prototype.verifyDataLabelOverflow=\nfunction(a){var b=this.center,d=this.options,e=d.center,f=d.minSize||80,k,c=null!==d.size;c||(null!==e[0]?k=Math.max(b[2]-Math.max(a[1],a[3]),f):(k=Math.max(b[2]-a[1]-a[3],f),b[0]+=(a[3]-a[1])/2),null!==e[1]?k=Math.max(Math.min(k,b[2]-Math.max(a[0],a[2])),f):(k=Math.max(Math.min(k,b[2]-a[0]-a[2]),f),b[1]+=(a[0]-a[2])/2),k<b[2]?(b[2]=k,b[3]=Math.min(g(d.innerSize||0,k),k),this.translate(b),this.drawDataLabels&&this.drawDataLabels()):c=!0);return c});k.column&&(k.column.prototype.alignDataLabel=function(a,\nb,f,g,k){var e=this.chart.inverted,c=a.series,l=a.dlBox||a.shapeArgs,m=t(a.below,a.plotY>t(this.translatedThreshold,c.yAxis.len)),n=t(f.inside,!!this.options.stacking);l&&(g=r(l),0>g.y&&(g.height+=g.y,g.y=0),l=g.y+g.height-c.yAxis.len,0<l&&(g.height-=l),e&&(g={x:c.yAxis.len-g.y-g.height,y:c.xAxis.len-g.x-g.width,width:g.height,height:g.width}),n||(e?(g.x+=m?0:g.width,g.width=0):(g.y+=m?g.height:0,g.height=0)));f.align=t(f.align,!e||n?\"center\":m?\"right\":\"left\");f.verticalAlign=t(f.verticalAlign,e||\nn?\"middle\":m?\"top\":\"bottom\");d.prototype.alignDataLabel.call(this,a,b,f,g,k);a.isLabelJustified&&a.contrastColor&&a.dataLabel.css({color:a.contrastColor})})})(M);(function(a){var C=a.Chart,A=a.each,F=a.objectEach,E=a.pick,m=a.addEvent;C.prototype.callbacks.push(function(a){function f(){var f=[];A(a.yAxis||[],function(a){a.options.stackLabels&&!a.options.stackLabels.allowOverlap&&F(a.stacks,function(a){F(a,function(a){f.push(a.label)})})});A(a.series||[],function(a){var l=a.options.dataLabels,g=a.dataLabelCollections||\n[\"dataLabel\"];(l.enabled||a._hasPointLabels)&&!l.allowOverlap&&a.visible&&A(g,function(d){A(a.points,function(a){a[d]&&(a[d].labelrank=E(a.labelrank,a.shapeArgs&&a.shapeArgs.height),f.push(a[d]))})})});a.hideOverlappingLabels(f)}f();m(a,\"redraw\",f)});C.prototype.hideOverlappingLabels=function(a){var f=a.length,m,u,t,g,d,k,b,e,v,y=function(a,b,d,c,e,f,g,k){return!(e>a+d||e+g<a||f>b+c||f+k<b)};for(u=0;u<f;u++)if(m=a[u])m.oldOpacity=m.opacity,m.newOpacity=1,m.width||(t=m.getBBox(),m.width=t.width,m.height=\nt.height);a.sort(function(a,b){return(b.labelrank||0)-(a.labelrank||0)});for(u=0;u<f;u++)for(t=a[u],m=u+1;m<f;++m)if(g=a[m],t&&g&&t!==g&&t.placed&&g.placed&&0!==t.newOpacity&&0!==g.newOpacity&&(d=t.alignAttr,k=g.alignAttr,b=t.parentGroup,e=g.parentGroup,v=2*(t.box?0:t.padding||0),d=y(d.x+b.translateX,d.y+b.translateY,t.width-v,t.height-v,k.x+e.translateX,k.y+e.translateY,g.width-v,g.height-v)))(t.labelrank<g.labelrank?t:g).newOpacity=0;A(a,function(a){var b,d;a&&(d=a.newOpacity,a.oldOpacity!==d&&\na.placed&&(d?a.show(!0):b=function(){a.hide()},a.alignAttr.opacity=d,a[a.isOld?\"animate\":\"attr\"](a.alignAttr,null,b)),a.isOld=!0)})}})(M);(function(a){var C=a.addEvent,A=a.Chart,F=a.createElement,E=a.css,m=a.defaultOptions,f=a.defaultPlotOptions,l=a.each,r=a.extend,u=a.fireEvent,t=a.hasTouch,g=a.inArray,d=a.isObject,k=a.Legend,b=a.merge,e=a.pick,v=a.Point,y=a.Series,n=a.seriesTypes,D=a.svg,J;J=a.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart.pointer,d=function(a){var c=b.getPointFromEvent(a);\nvoid 0!==c&&(b.isDirectTouch=!0,c.onMouseOver(a))};l(a.points,function(a){a.graphic&&(a.graphic.element.point=a);a.dataLabel&&(a.dataLabel.div?a.dataLabel.div.point=a:a.dataLabel.element.point=a)});a._hasTracking||(l(a.trackerGroups,function(c){if(a[c]){a[c].addClass(\"highcharts-tracker\").on(\"mouseover\",d).on(\"mouseout\",function(a){b.onTrackerMouseOut(a)});if(t)a[c].on(\"touchstart\",d);a.options.cursor&&a[c].css(E).css({cursor:a.options.cursor})}}),a._hasTracking=!0)},drawTrackerGraph:function(){var a=\nthis,b=a.options,d=b.trackByArea,e=[].concat(d?a.areaPath:a.graphPath),f=e.length,g=a.chart,k=g.pointer,m=g.renderer,n=g.options.tooltip.snap,h=a.tracker,r,u=function(){if(g.hoverSeries!==a)a.onMouseOver()},v=\"rgba(192,192,192,\"+(D?.0001:.002)+\")\";if(f&&!d)for(r=f+1;r--;)\"M\"===e[r]&&e.splice(r+1,0,e[r+1]-n,e[r+2],\"L\"),(r&&\"M\"===e[r]||r===f)&&e.splice(r,0,\"L\",e[r-2]+n,e[r-1]);h?h.attr({d:e}):a.graph&&(a.tracker=m.path(e).attr({\"stroke-linejoin\":\"round\",visibility:a.visible?\"visible\":\"hidden\",stroke:v,\nfill:d?v:\"none\",\"stroke-width\":a.graph.strokeWidth()+(d?0:2*n),zIndex:2}).add(a.group),l([a.tracker,a.markerGroup],function(a){a.addClass(\"highcharts-tracker\").on(\"mouseover\",u).on(\"mouseout\",function(a){k.onTrackerMouseOut(a)});b.cursor&&a.css({cursor:b.cursor});if(t)a.on(\"touchstart\",u)}))}};n.column&&(n.column.prototype.drawTracker=J.drawTrackerPoint);n.pie&&(n.pie.prototype.drawTracker=J.drawTrackerPoint);n.scatter&&(n.scatter.prototype.drawTracker=J.drawTrackerPoint);r(k.prototype,{setItemEvents:function(a,\nd,e){var c=this,f=c.chart.renderer.boxWrapper,g=\"highcharts-legend-\"+(a.series?\"point\":\"series\")+\"-active\";(e?d:a.legendGroup).on(\"mouseover\",function(){a.setState(\"hover\");f.addClass(g);d.css(c.options.itemHoverStyle)}).on(\"mouseout\",function(){d.css(b(a.visible?c.itemStyle:c.itemHiddenStyle));f.removeClass(g);a.setState()}).on(\"click\",function(b){var c=function(){a.setVisible&&a.setVisible()};b={browserEvent:b};a.firePointEvent?a.firePointEvent(\"legendItemClick\",b,c):u(a,\"legendItemClick\",b,c)})},\ncreateCheckboxForItem:function(a){a.checkbox=F(\"input\",{type:\"checkbox\",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);C(a.checkbox,\"click\",function(b){u(a.series||a,\"checkboxClick\",{checked:b.target.checked,item:a},function(){a.select()})})}});m.legend.itemStyle.cursor=\"pointer\";r(A.prototype,{showResetZoom:function(){var a=this,b=m.lang,d=a.options.chart.resetZoomButton,e=d.theme,f=e.states,g=\"chart\"===d.relativeTo?null:\"plotBox\";this.resetZoomButton=\na.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},e,f&&f.hover).attr({align:d.position.align,title:b.resetZoomTitle}).addClass(\"highcharts-reset-zoom\").add().align(d.position,!1,g)},zoomOut:function(){var a=this;u(a,\"selection\",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var b,c=this.pointer,f=!1,g;!a||a.resetSelection?(l(this.axes,function(a){b=a.zoom()}),c.initiated=!1):l(a.xAxis.concat(a.yAxis),function(a){var d=a.axis;c[d.isXAxis?\"zoomX\":\"zoomY\"]&&(b=d.zoom(a.min,\na.max),d.displayBtn&&(f=!0))});g=this.resetZoomButton;f&&!g?this.showResetZoom():!f&&d(g)&&(this.resetZoomButton=g.destroy());b&&this.redraw(e(this.options.chart.animation,a&&a.animation,100>this.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&l(d,function(a){a.setState()});l(\"xy\"===b?[1,0]:[1],function(b){b=c[b?\"xAxis\":\"yAxis\"][0];var d=b.horiz,f=a[d?\"chartX\":\"chartY\"],d=d?\"mouseDownX\":\"mouseDownY\",g=c[d],h=(b.pointRange||0)/2,k=b.getExtremes(),l=b.toValue(g-f,!0)+h,h=b.toValue(g+\nb.len-f,!0)-h,m=h<l,g=m?h:l,l=m?l:h,h=Math.min(k.dataMin,b.toValue(b.toPixels(k.min)-b.minPixelPadding)),m=Math.max(k.dataMax,b.toValue(b.toPixels(k.max)+b.minPixelPadding)),n;n=h-g;0<n&&(l+=n,g=h);n=l-m;0<n&&(l=m,g-=n);b.series.length&&g!==k.min&&l!==k.max&&(b.setExtremes(g,l,!1,!1,{trigger:\"pan\"}),e=!0);c[d]=f});e&&c.redraw(!1);E(c.container,{cursor:\"move\"})}});r(v.prototype,{select:function(a,b){var c=this,d=c.series,f=d.chart;a=e(a,!c.selected);c.firePointEvent(a?\"select\":\"unselect\",{accumulate:b},\nfunction(){c.selected=c.options.selected=a;d.options.data[g(c,d.data)]=c.options;c.setState(a&&\"select\");b||l(f.getSelectedPoints(),function(a){a.selected&&a!==c&&(a.selected=a.options.selected=!1,d.options.data[g(a,d.data)]=a.options,a.setState(\"\"),a.firePointEvent(\"unselect\"))})})},onMouseOver:function(a){var b=this.series.chart,c=b.pointer;a=a?c.normalize(a):c.getChartCoordinatesFromPoint(this,b.inverted);c.runPointActions(a,this)},onMouseOut:function(){var a=this.series.chart;this.firePointEvent(\"mouseOut\");\nl(a.hoverPoints||[],function(a){a.setState()});a.hoverPoints=a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var c=this,d=b(c.series.options.point,c.options).events;c.events=d;a.objectEach(d,function(a,b){C(c,b,a)});this.hasImportedEvents=!0}},setState:function(a,b){var c=Math.floor(this.plotX),d=this.plotY,g=this.series,k=g.options.states[a]||{},l=f[g.type].marker&&g.options.marker,m=l&&!1===l.enabled,n=l&&l.states&&l.states[a]||{},h=!1===n.enabled,t=g.stateMarkerGraphic,u=\nthis.marker||{},v=g.chart,y=g.halo,A,C=l&&g.markerAttribs;a=a||\"\";if(!(a===this.state&&!b||this.selected&&\"select\"!==a||!1===k.enabled||a&&(h||m&&!1===n.enabled)||a&&u.states&&u.states[a]&&!1===u.states[a].enabled)){C&&(A=g.markerAttribs(this,a));if(this.graphic)this.state&&this.graphic.removeClass(\"highcharts-point-\"+this.state),a&&this.graphic.addClass(\"highcharts-point-\"+a),this.graphic.animate(g.pointAttribs(this,a),e(v.options.chart.animation,k.animation)),A&&this.graphic.animate(A,e(v.options.chart.animation,\nn.animation,l.animation)),t&&t.hide();else{if(a&&n){l=u.symbol||g.symbol;t&&t.currentSymbol!==l&&(t=t.destroy());if(t)t[b?\"animate\":\"attr\"]({x:A.x,y:A.y});else l&&(g.stateMarkerGraphic=t=v.renderer.symbol(l,A.x,A.y,A.width,A.height).add(g.markerGroup),t.currentSymbol=l);t&&t.attr(g.pointAttribs(this,a))}t&&(t[a&&v.isInsidePlot(c,d,v.inverted)?\"show\":\"hide\"](),t.element.point=this)}(c=k.halo)&&c.size?(y||(g.halo=y=v.renderer.path().add((this.graphic||t).parentGroup)),y[b?\"animate\":\"attr\"]({d:this.haloPath(c.size)}),\ny.attr({\"class\":\"highcharts-halo highcharts-color-\"+e(this.colorIndex,g.colorIndex)}),y.point=this,y.attr(r({fill:this.color||g.color,\"fill-opacity\":c.opacity,zIndex:-1},c.attributes))):y&&y.point&&y.point.haloPath&&y.animate({d:y.point.haloPath(0)});this.state=a}},haloPath:function(a){return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX)-a,this.plotY-a,2*a,2*a)}});r(y.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&\nu(this,\"mouseOver\");this.setState(\"hover\");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,d=b.tooltip,e=b.hoverPoint;b.hoverSeries=null;if(e)e.onMouseOut();this&&a.events.mouseOut&&u(this,\"mouseOut\");!d||this.stickyTracking||d.shared&&!this.noSharedTooltip||d.hide();this.setState()},setState:function(a){var b=this,c=b.options,d=b.graph,f=c.states,g=c.lineWidth,c=0;a=a||\"\";if(b.state!==a&&(l([b.group,b.markerGroup,b.dataLabelsGroup],function(c){c&&(b.state&&c.removeClass(\"highcharts-series-\"+\nb.state),a&&c.addClass(\"highcharts-series-\"+a))}),b.state=a,!f[a]||!1!==f[a].enabled)&&(a&&(g=f[a].lineWidth||g+(f[a].lineWidthPlus||0)),d&&!d.dashstyle))for(g={\"stroke-width\":g},d.animate(g,e(b.chart.options.chart.animation,f[a]&&f[a].animation));b[\"zone-graph-\"+c];)b[\"zone-graph-\"+c].attr(g),c+=1},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,k=c.visible;f=(c.visible=a=c.options.visible=c.userOptions.visible=void 0===a?!k:a)?\"show\":\"hide\";l([\"group\",\n\"dataLabelsGroup\",\"markerGroup\",\"tracker\",\"tt\"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c||(d.hoverPoint&&d.hoverPoint.series)===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&l(d.series,function(a){a.options.stacking&&a.visible&&(a.isDirty=!0)});l(c.linkedSeries,function(b){b.setVisible(a,!1)});g&&(d.isDirtyBox=!0);!1!==b&&d.redraw();u(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=void 0===\na?!this.selected:a;this.checkbox&&(this.checkbox.checked=a);u(this,a?\"select\":\"unselect\")},drawTracker:J.drawTrackerGraph})})(M);(function(a){var C=a.Chart,A=a.each,F=a.inArray,E=a.isArray,m=a.isObject,f=a.pick,l=a.splat;C.prototype.setResponsive=function(f){var l=this.options.responsive,m=[],g=this.currentResponsive;l&&l.rules&&A(l.rules,function(d){void 0===d._id&&(d._id=a.uniqueKey());this.matchResponsiveRule(d,m,f)},this);var d=a.merge.apply(0,a.map(m,function(d){return a.find(l.rules,function(a){return a._id===\nd}).chartOptions})),m=m.toString()||void 0;m!==(g&&g.ruleIds)&&(g&&this.update(g.undoOptions,f),m?(this.currentResponsive={ruleIds:m,mergedOptions:d,undoOptions:this.currentOptions(d)},this.update(d,f)):this.currentResponsive=void 0)};C.prototype.matchResponsiveRule=function(a,l){var m=a.condition;(m.callback||function(){return this.chartWidth<=f(m.maxWidth,Number.MAX_VALUE)&&this.chartHeight<=f(m.maxHeight,Number.MAX_VALUE)&&this.chartWidth>=f(m.minWidth,0)&&this.chartHeight>=f(m.minHeight,0)}).call(this)&&\nl.push(a._id)};C.prototype.currentOptions=function(f){function r(f,d,k,b){var e;a.objectEach(f,function(a,g){if(!b&&-1<F(g,[\"series\",\"xAxis\",\"yAxis\"]))for(f[g]=l(f[g]),k[g]=[],e=0;e<f[g].length;e++)d[g][e]&&(k[g][e]={},r(a[e],d[g][e],k[g][e],b+1));else m(a)?(k[g]=E(a)?[]:{},r(a,d[g]||{},k[g],b+1)):k[g]=d[g]||null})}var t={};r(f,this.options,t,0);return t}})(M);return M});\n\ndefine(\"highcharts/highcharts\", [],function(){});\n;define('highcharts', ['highcharts/highcharts'], function (main) { return main; });\n\r\n//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('moment/moment',factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\nvar basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var string, match, dayFormat,\n dateFormat, timeFormat, tzFormat;\n var timezones = {\n ' GMT': ' +0000',\n ' EDT': ' -0400',\n ' EST': ' -0500',\n ' CDT': ' -0500',\n ' CST': ' -0600',\n ' MDT': ' -0600',\n ' MST': ' -0700',\n ' PDT': ' -0700',\n ' PST': ' -0800'\n };\n var military = 'YXWVUTSRQPONZABCDEFGHIKLM';\n var timezone, timezoneIndex;\n\n string = config._i\n .replace(/\\([^\\)]*\\)|[\\n\\t]/g, ' ') // Remove comments and folding whitespace\n .replace(/(\\s\\s+)/g, ' ') // Replace multiple-spaces with a single space\n .replace(/^\\s|\\s$/g, ''); // Remove leading and trailing spaces\n match = basicRfcRegex.exec(string);\n\n if (match) {\n dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';\n dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');\n timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');\n\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n if (match[1]) { // day of week given\n var momentDate = new Date(match[2]);\n var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];\n\n if (match[1].substr(0,3) !== momentDay) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return;\n }\n }\n\n switch (match[5].length) {\n case 2: // military\n if (timezoneIndex === 0) {\n timezone = ' +0000';\n } else {\n timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;\n timezone = ((timezoneIndex < 0) ? ' -' : ' +') +\n (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';\n }\n break;\n case 4: // Zone\n timezone = timezones[match[5]];\n break;\n default: // UT or +/-9999\n timezone = timezones[' GMT'];\n }\n match[5] = timezone;\n config._i = match.splice(1).join('');\n tzFormat = ' ZZ';\n config._f = dayFormat + dateFormat + timeFormat + tzFormat;\n configFromStringAndFormat(config);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nvar ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\nfunction isDurationValid(m) {\n for (var key in m) {\n if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString() {\n if (!this.isValid()) {\n return null;\n }\n var m = this.clone().utc();\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n }\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.18.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n;define('moment', ['moment/moment'], function (main) { return main; });\n\r\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define('moment/locale/de',['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar de = moment.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn de;\n\n})));\n\r\n//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define('moment/locale/de-at',['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar deAt = moment.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn deAt;\n\n})));\n\r\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define('moment/locale/en-gb',['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enGb = moment.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enGb;\n\n})));\n\r\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define('moment/locale/it',['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar it = moment.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn it;\n\n})));\n\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define('moment-parseformat',[],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.momentParseformat = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\nvar parseFormat = require('./lib/parseformat')\nmodule.exports = parseFormat\n\n/* istanbul ignore next */\nif (typeof window !== 'undefined' && window.moment) {\n window.moment.parseFormat = parseFormat\n}\n\n},{\"./lib/parseformat\":2}],2:[function(require,module,exports){\nmodule.exports = parseFormat\n\nvar dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\nvar abbreviatedDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\nvar shortestDayNames = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nvar monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\nvar abbreviatedMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n\nvar regexDayNames = new RegExp(dayNames.join('|'), 'i')\nvar regexAbbreviatedDayNames = new RegExp(abbreviatedDayNames.join('|'), 'i')\nvar regexShortestDayNames = new RegExp('\\\\b(' + shortestDayNames.join('|') + ')\\\\b', 'i')\nvar regexMonthNames = new RegExp(monthNames.join('|'), 'i')\nvar regexAbbreviatedMonthNames = new RegExp(abbreviatedMonthNames.join('|'), 'i')\n\nvar regexFirstSecondThirdFourth = /(\\d+)(st|nd|rd|th)\\b/i\nvar regexEndian = /(\\d{1,4})([/.-])(\\d{1,2})[/.-](\\d{1,4})/\n\nvar regexTimezone = /((\\+|-)\\d\\d:?\\d\\d)$/\nvar amOrPm = '(' + ['AM?', 'PM?'].join('|') + ')'\nvar regexHoursWithLeadingZeroDigitMinutesSecondsAmPm = new RegExp('0\\\\d\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}(\\\\s*)' + amOrPm, 'i')\nvar regexHoursWithLeadingZeroDigitMinutesAmPm = new RegExp('0\\\\d\\\\:\\\\d{1,2}(\\\\s*)' + amOrPm, 'i')\nvar regexHoursWithLeadingZeroDigitAmPm = new RegExp('0\\\\d(\\\\s*)' + amOrPm, 'i')\nvar regexHoursMinutesSecondsAmPm = new RegExp('\\\\d{1,2}\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}(\\\\s*)' + amOrPm, 'i')\nvar regexHoursMinutesAmPm = new RegExp('\\\\d{1,2}\\\\:\\\\d{1,2}(\\\\s*)' + amOrPm, 'i')\nvar regexHoursAmPm = new RegExp('\\\\d{1,2}(\\\\s*)' + amOrPm, 'i')\n\nvar regexISO8601HoursWithLeadingZeroMinutesSecondsMilliseconds = /\\d{2}:\\d{2}:\\d{2}\\.\\d{3}/\nvar regexISO8601HoursWithLeadingZeroMinutesSecondsCentiSeconds = /\\d{2}:\\d{2}:\\d{2}\\.\\d{2}/\nvar regexISO8601HoursWithLeadingZeroMinutesSecondsDeciSeconds = /\\d{2}:\\d{2}:\\d{2}\\.\\d{1}/\nvar regexHoursWithLeadingZeroMinutesSeconds = /0\\d:\\d{2}:\\d{2}/\nvar regexHoursWithLeadingZeroMinutes = /0\\d:\\d{2}/\nvar regexHoursMinutesSeconds = /\\d{1,2}:\\d{2}:\\d{2}/\nvar regexHoursMinutesSecondsMilliseconds = /\\d{1,2}:\\d{2}:\\d{2}\\.\\d{3}/\nvar regexHoursMinutesSecondsCentiSeconds = /\\d{1,2}:\\d{2}:\\d{2}\\.\\d{2}/\nvar regexHoursMinutesSecondsDeciSeconds = /\\d{1,2}:\\d{2}:\\d{2}\\.\\d{1}/\nvar regexHoursMinutes = /\\d{1,2}:\\d{2}/\nvar regexYearLong = /\\d{4}/\nvar regexDayLeadingZero = /0\\d/\nvar regexDay = /\\d{1,2}/\nvar regexYearShort = /\\d{2}/\n\nvar regexDayShortMonthShort = /^([1-9])\\/([1-9]|0[1-9])$/\nvar regexDayShortMonth = /^([1-9])\\/(1[012])$/\nvar regexDayMonthShort = /^(0[1-9]|[12][0-9]|3[01])\\/([1-9])$/\nvar regexDayMonth = /^(0[1-9]|[12][0-9]|3[01])\\/(1[012]|0[1-9])$/\n\nvar regexMonthShortYearShort = /^([1-9])\\/([1-9][0-9])$/\nvar regexMonthYearShort = /^(0[1-9]|1[012])\\/([1-9][0-9])$/\n\nvar formatIncludesMonth = /([/][M]|[M][/]|[MM]|[MMMM])/\n\nvar regexFillingWords = /\\b(at)\\b/i\n\nvar regexUnixMillisecondTimestamp = /\\d{13}/\nvar regexUnixTimestamp = /\\d{10}/\n\n// option defaults\nvar defaultOrder = {\n '/': 'MDY',\n '.': 'DMY',\n '-': 'YMD'\n}\n\nfunction parseFormat (dateString, options) {\n var format = dateString.toString()\n\n // default options\n options = options || {}\n options.preferredOrder = options.preferredOrder || defaultOrder\n\n // Unix Millisecond Timestamp ☛ x\n format = format.replace(regexUnixMillisecondTimestamp, 'x')\n // Unix Timestamp ☛ X\n format = format.replace(regexUnixTimestamp, 'X')\n\n // escape filling words\n format = format.replace(regexFillingWords, '[$1]')\n\n // DAYS\n\n // Monday ☛ dddd\n format = format.replace(regexDayNames, 'dddd')\n // Mon ☛ ddd\n format = format.replace(regexAbbreviatedDayNames, 'ddd')\n // Mo ☛ dd\n format = format.replace(regexShortestDayNames, 'dd')\n\n // 1st, 2nd, 23rd ☛ do\n format = format.replace(regexFirstSecondThirdFourth, 'Do')\n\n // MONTHS\n\n // January ☛ MMMM\n format = format.replace(regexMonthNames, 'MMMM')\n // Jan ☛ MMM\n format = format.replace(regexAbbreviatedMonthNames, 'MMM')\n\n // replace endians, like 8/20/2010, 20.8.2010 or 2010-8-20\n format = format.replace(regexEndian, replaceEndian.bind(null, options))\n\n // TIME\n\n // timezone +02:00 ☛ Z\n format = format.replace(regexTimezone, 'Z')\n // 23:39:43.331 ☛ 'HH:mm:ss.SSS'\n format = format.replace(regexISO8601HoursWithLeadingZeroMinutesSecondsMilliseconds, 'HH:mm:ss.SSS')\n // 23:39:43.33 ☛ 'HH:mm:ss.SS'\n format = format.replace(regexISO8601HoursWithLeadingZeroMinutesSecondsCentiSeconds, 'HH:mm:ss.SS')\n // 23:39:43.3 ☛ 'HH:mm:ss.S'\n format = format.replace(regexISO8601HoursWithLeadingZeroMinutesSecondsDeciSeconds, 'HH:mm:ss.S')\n function replaceWithAmPm (timeFormat) {\n return function (match, whitespace, amPm) {\n return timeFormat + whitespace + (amPm[0].toUpperCase() === amPm[0] ? 'A' : 'a')\n }\n }\n // 05:30:20pm ☛ hh:mm:ssa\n format = format.replace(regexHoursWithLeadingZeroDigitMinutesSecondsAmPm, replaceWithAmPm('hh:mm:ss'))\n // 10:30:20pm ☛ h:mm:ssa\n format = format.replace(regexHoursMinutesSecondsAmPm, replaceWithAmPm('h:mm:ss'))\n // 05:30pm ☛ hh:mma\n format = format.replace(regexHoursWithLeadingZeroDigitMinutesAmPm, replaceWithAmPm('hh:mm'))\n // 10:30pm ☛ h:mma\n format = format.replace(regexHoursMinutesAmPm, replaceWithAmPm('h:mm'))\n // 05pm ☛ hha\n format = format.replace(regexHoursWithLeadingZeroDigitAmPm, replaceWithAmPm('hh'))\n // 10pm ☛ ha\n format = format.replace(regexHoursAmPm, replaceWithAmPm('h'))\n // 05:30:20 ☛ HH:mm:ss\n format = format.replace(regexHoursWithLeadingZeroMinutesSeconds, 'HH:mm:ss')\n // 5:30:20.222 ☛ H:mm:ss.SSS\n format = format.replace(regexHoursMinutesSecondsMilliseconds, 'H:mm:ss.SSS')\n // 5:30:20.22 ☛ H:mm:ss.SS\n format = format.replace(regexHoursMinutesSecondsCentiSeconds, 'H:mm:ss.SS')\n // 5:30:20.2 ☛ H:mm:ss.S\n format = format.replace(regexHoursMinutesSecondsDeciSeconds, 'H:mm:ss.S')\n // 10:30:20 ☛ H:mm:ss\n format = format.replace(regexHoursMinutesSeconds, 'H:mm:ss')\n // 05:30 ☛ H:mm\n format = format.replace(regexHoursWithLeadingZeroMinutes, 'HH:mm')\n // 10:30 ☛ HH:mm\n format = format.replace(regexHoursMinutes, 'H:mm')\n\n // do we still have numbers left?\n\n // Lets check for 4 digits first, these are years for sure\n format = format.replace(regexYearLong, 'YYYY')\n\n // check if both numbers are < 13, then it must be D/M\n format = format.replace(regexDayShortMonthShort, 'D/M')\n\n // check if first number is < 10 && last < 13, then it must be D/MM\n format = format.replace(regexDayShortMonth, 'D/MM')\n\n // check if last number is < 32 && last < 10, then it must be DD/M\n format = format.replace(regexDayMonthShort, 'DD/M')\n\n // check if both numbers are > 10, but first < 32 && last < 13, then it must be DD/MM\n format = format.replace(regexDayMonth, 'DD/MM')\n\n // check if first < 10 && last > 12, then it must be M/YY\n format = format.replace(regexMonthShortYearShort, 'M/YY')\n\n // check if first < 13 && last > 12, then it must be MM/YY\n format = format.replace(regexMonthYearShort, 'MM/YY')\n\n // to prevent 9.20 gets formated to D.Y, we format the complete date first, then go for the time\n if (format.match(formatIncludesMonth)) {\n var regexHoursDotWithLeadingZeroOrDoubleDigitMinutes = /0\\d.\\d{2}|\\d{2}.\\d{2}/\n var regexHoursDotMinutes = /\\d{1}.\\d{2}/\n\n format = format.replace(regexHoursDotWithLeadingZeroOrDoubleDigitMinutes, 'H.mm')\n format = format.replace(regexHoursDotMinutes, 'h.mm')\n }\n\n // now, the next number, if existing, must be a day\n format = format.replace(regexDayLeadingZero, 'DD')\n format = format.replace(regexDay, 'D')\n\n // last but not least, there could still be a year left\n format = format.replace(regexYearShort, 'YY')\n\n if (format.length < 1) {\n format = undefined\n }\n\n return format\n}\n\n// if we can't find an endian based on the separator, but\n// there still is a short date with day, month & year,\n// we try to make a smart decision to identify the order\nfunction replaceEndian (options, matchedPart, first, separator, second, third) {\n var parts\n var hasSingleDigit = Math.min(first.length, second.length, third.length) === 1\n var hasQuadDigit = Math.max(first.length, second.length, third.length) === 4\n var preferredOrder = typeof options.preferredOrder === 'string' ? options.preferredOrder : options.preferredOrder[separator]\n\n first = parseInt(first, 10)\n second = parseInt(second, 10)\n third = parseInt(third, 10)\n parts = [first, second, third]\n preferredOrder = preferredOrder.toUpperCase()\n\n // If first is a year, order will always be Year-Month-Day\n if (first > 31) {\n parts[0] = hasQuadDigit ? 'YYYY' : 'YY'\n parts[1] = hasSingleDigit ? 'M' : 'MM'\n parts[2] = hasSingleDigit ? 'D' : 'DD'\n return parts.join(separator)\n }\n\n // Second will never be the year. And if it is a day,\n // the order will always be Month-Day-Year\n if (second > 12) {\n parts[0] = hasSingleDigit ? 'M' : 'MM'\n parts[1] = hasSingleDigit ? 'D' : 'DD'\n parts[2] = hasQuadDigit ? 'YYYY' : 'YY'\n return parts.join(separator)\n }\n\n // if third is a year ...\n if (third > 31) {\n parts[2] = hasQuadDigit ? 'YYYY' : 'YY'\n\n // ... try to find day in first and second.\n // If found, the remaining part is the month.\n if (preferredOrder[0] === 'M' && first < 13) {\n parts[0] = hasSingleDigit ? 'M' : 'MM'\n parts[1] = hasSingleDigit ? 'D' : 'DD'\n return parts.join(separator)\n }\n parts[0] = hasSingleDigit ? 'D' : 'DD'\n parts[1] = hasSingleDigit ? 'M' : 'MM'\n return parts.join(separator)\n }\n\n // if we had no luck until here, we use the preferred order\n parts[preferredOrder.indexOf('D')] = hasSingleDigit ? 'D' : 'DD'\n parts[preferredOrder.indexOf('M')] = hasSingleDigit ? 'M' : 'MM'\n parts[preferredOrder.indexOf('Y')] = hasQuadDigit ? 'YYYY' : 'YY'\n\n return parts.join(separator)\n}\n\n},{}]},{},[1])(1)\n});\r\n/**\r\n *\r\n */\r\n(function () {\r\n /**\r\n * The **moment.js** library.\r\n *\r\n * @property moment\r\n * @type {Object}\r\n */\r\n var moment,\r\n /**\r\n * The internal **Java** date formats cache.\r\n *\r\n * @property javaDateFormats\r\n * @type {Object}\r\n */\r\n javaDateFormats = {},\r\n\r\n /**\r\n * The internal **moment.js** date formats cache.\r\n *\r\n * @property momentDateFormats\r\n * @type {Object}\r\n */\r\n momentDateFormats = {},\r\n\r\n /**\r\n * The format pattern mapping from Java format to momentjs.\r\n *\r\n * @property javaFormatMapping\r\n * @type {Object}\r\n */\r\n javaFormatMapping = {\r\n d: 'D',\r\n dd: 'DD',\r\n y: 'YYYY',\r\n yy: 'YY',\r\n yyy: 'YYYY',\r\n yyyy: 'YYYY',\r\n a: 'a',\r\n A: 'A',\r\n M: 'M',\r\n MM: 'MM',\r\n MMM: 'MMM',\r\n MMMM: 'MMMM',\r\n h: 'h',\r\n hh: 'hh',\r\n H: 'H',\r\n HH: 'HH',\r\n m: 'm',\r\n mm: 'mm',\r\n s: 's',\r\n ss: 'ss',\r\n S: 'SSS',\r\n SS: 'SSS',\r\n SSS: 'SSS',\r\n E: 'ddd',\r\n EE: 'ddd',\r\n EEE: 'ddd',\r\n EEEE: 'dddd',\r\n EEEEE: 'dddd',\r\n EEEEEE: 'dddd',\r\n D: 'DDD',\r\n w: 'W',\r\n ww: 'WW',\r\n z: 'ZZ',\r\n zzzz: 'Z',\r\n Z: 'ZZ',\r\n X: 'ZZ',\r\n XX: 'ZZ',\r\n XXX: 'Z',\r\n u: 'E'\r\n },\r\n\r\n /**\r\n * The format pattern mapping from Java format to momentjs.\r\n *\r\n * @property momentFormatMapping\r\n * @type {Object}\r\n */\r\n momentFormatMapping = {\r\n D: 'd',\r\n DD: 'dd',\r\n YY: 'yy',\r\n YYY: 'yyyy',\r\n YYYY: 'yyyy',\r\n a: 'a',\r\n A: 'A',\r\n M: 'M',\r\n MM: 'MM',\r\n MMM: 'MMM',\r\n MMMM: 'MMMM',\r\n h: 'h',\r\n hh: 'hh',\r\n H: 'H',\r\n HH: 'HH',\r\n m: 'm',\r\n mm: 'mm',\r\n s: 's',\r\n ss: 'ss',\r\n S: 'S',\r\n SS: 'S',\r\n SSS: 'S',\r\n ddd: 'E',\r\n dddd: 'EEEE',\r\n DDD: 'D',\r\n W: 'w',\r\n WW: 'ww',\r\n ZZ: 'z',\r\n Z: 'XXX',\r\n E: 'u'\r\n };\r\n\r\n function hookMoment (moment) {\r\n // register as private function (good for testing purposes)\r\n moment.fn.__translateJavaFormat = translateFormat;\r\n\r\n /**\r\n * Translates the momentjs format String to a java date format String.\r\n *\r\n * @function toJDFString\r\n * @param {String} formatString The format String to be translated.\r\n * @returns {String}\r\n */\r\n moment.fn.toMomentFormatString = function (formatString) {\r\n if (!javaDateFormats[formatString]) {\r\n javaDateFormats[formatString] = translateFormat(formatString, javaFormatMapping);\r\n }\r\n return javaDateFormats[formatString];\r\n };\r\n\r\n /**\r\n * Format the moment with the given java date format String.\r\n *\r\n * @function formatWithJDF\r\n * @param {String} formatString The format String to be translated.\r\n * @returns {String}\r\n */\r\n moment.fn.formatWithJDF = function (formatString) {\r\n return this.format(this.toMomentFormatString(formatString));\r\n };\r\n\r\n /**\r\n * Translates the momentjs format string to a java date format string\r\n *\r\n * @function toJDFString\r\n * @param {String} formatString The format String to be translated.\r\n * @returns {String}\r\n */\r\n moment.fn.toJDFString = function (formatString) {\r\n if (!momentDateFormats[formatString]) {\r\n momentDateFormats[formatString] = translateFormat(formatString, momentFormatMapping);\r\n }\r\n return momentDateFormats[formatString];\r\n };\r\n\r\n\r\n if (typeof module !== 'undefined' && module !== null) {\r\n module.exports = moment;\r\n } else {\r\n this.moment = moment;\r\n }\r\n }\r\n\r\n if (typeof this.moment === 'undefined' && typeof require !== 'undefined' && require !== null) {\r\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { //Check if the environment is Node.js\r\n hookMoment(require('moment')); //if it is, we have to require it different (without the surrounding Array)\r\n } else {\r\n require(['moment'], function (moment) {\r\n hookMoment(moment);\r\n });\r\n }\r\n } else {\r\n hookMoment(this.moment);\r\n }\r\n\r\n\r\n /**\r\n * Translates the java date format String to a momentjs format String.\r\n *\r\n * @function translateFormat\r\n * @param {String} formatString The unmodified format string\r\n * @param {Object} mapping The date format mapping object\r\n * @returns {String}\r\n */\r\n var translateFormat = function (formatString, mapping) {\r\n var len = formatString.length,\r\n i = 0,\r\n beginIndex = -1,\r\n lastChar = null,\r\n currentChar = \"\",\r\n resultString = \"\";\r\n\r\n for (; i < len; i++) {\r\n currentChar = formatString.charAt(i);\r\n\r\n if (lastChar === null || lastChar !== currentChar) {\r\n // change detected\r\n resultString = _appendMappedString(formatString, mapping, beginIndex, i, resultString);\r\n\r\n beginIndex = i;\r\n }\r\n\r\n lastChar = currentChar;\r\n }\r\n\r\n return _appendMappedString(formatString, mapping, beginIndex, i, resultString);\r\n };\r\n\r\n /**\r\n * Checks if the substring is a mapped date format pattern and adds it to the result format String.\r\n *\r\n * @function _appendMappedString\r\n * @param {String} formatString The unmodified format String.\r\n * @param {Object} mapping The date format mapping Object.\r\n * @param {Number} beginIndex The begin index of the continuous format characters.\r\n * @param {Number} currentIndex The last index of the continuous format characters.\r\n * @param {String} resultString The result format String.\r\n * @returns {String}\r\n * @private\r\n */\r\n var _appendMappedString = function (formatString, mapping, beginIndex, currentIndex, resultString) {\r\n var tempString;\r\n\r\n if (beginIndex !== -1) {\r\n tempString = formatString.substring(beginIndex, currentIndex);\r\n // check if the temporary string has a known mapping\r\n if (mapping[tempString]) {\r\n tempString = mapping[tempString];\r\n }\r\n resultString = resultString.concat(tempString);\r\n }\r\n return resultString;\r\n };\r\n\r\n}).call(this);\r\n\ndefine(\"moment-jdateformatparser\", [],function(){});\n\r\n/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.7'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-affix/affix\", [],function(){});\n;define('bootstrap-sass-affix', ['bootstrap-sass-affix/affix'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: alert.js v3.3.7\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.7'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector === '#' ? [] : selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-alert/alert\", [],function(){});\n;define('bootstrap-sass-alert', ['bootstrap-sass-alert/alert'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: button.js v3.3.7\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.7'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-button/button\", [],function(){});\n;define('bootstrap-sass-button', ['bootstrap-sass-button/button'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.7\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.7'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-carousel/carousel\", [],function(){});\n;define('bootstrap-sass-carousel', ['bootstrap-sass-carousel/carousel'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.7'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-collapse/collapse\", [],function(){});\n;define('bootstrap-sass-collapse', ['bootstrap-sass-collapse/collapse'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.7'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-dropdown/dropdown\", [],function(){});\n;define('bootstrap-sass-dropdown', ['bootstrap-sass-dropdown/dropdown'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-modal/modal\", [],function(){});\n;define('bootstrap-sass-modal', ['bootstrap-sass-modal/modal'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.7\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.7'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-scrollspy/scrollspy\", [],function(){});\n;define('bootstrap-sass-scrollspy', ['bootstrap-sass-scrollspy/scrollspy'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.7'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-tooltip/tooltip\", [],function(){});\n;define('bootstrap-sass-tooltip', ['bootstrap-sass-tooltip/tooltip'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.7'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-popover/popover\", [],function(){});\n;define('bootstrap-sass-popover', ['bootstrap-sass-popover/popover'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\ndefine(\"bootstrap-sass-transition/transition\", [],function(){});\n;define('bootstrap-sass-transition', ['bootstrap-sass-transition/transition'], function (main) { return main; });\n\r\n/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element);\n // jscs:enable requireDollarBeforejQueryAssignment\n };\n\n Tab.VERSION = '3.3.7';\n\n Tab.TRANSITION_DURATION = 150;\n\n Tab.prototype.show = function() {\n var $this = this.element;\n var $ul = $this.closest('ul:not(.dropdown-menu)');\n var selector = $this.data('target');\n if (!selector) {\n selector = $this.attr('href');\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n }\n\n window.location.hash = selector;\n\n if ($this.parent('li').hasClass('active')) return;\n\n var $previous = $ul.find('.active:last a');\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n });\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n });\n\n $previous.trigger(hideEvent);\n $this.trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return;\n\n var $target = $(selector);\n\n this.activate($this.closest('li'), $ul);\n this.activate($target, $target.parent(), function() {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n });\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n });\n });\n };//end show\n Tab.prototype.showdeeplink = function(deeplink) {\n //Change the link...\n var button = $('a[href=\"' + deeplink + '\"]').find().prevObject;\n Plugin.call(button, 'show');\n }\n\n Tab.prototype.activate = function(element, container, callback) {\n var $active = container.find('> .active');\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false);\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true);\n\n if (transition) {\n element[0].offsetWidth; // reflow for transition\n element.addClass('in');\n } else {\n element.removeClass('fade');\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true);\n }\n\n callback && callback();\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next();\n\n $active.removeClass('in');\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option, additionaldata) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.tab');\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)));\n if (typeof option == 'string') data[option](additionaldata);\n });\n }\n\n var old = $.fn.tab;\n\n $.fn.tab = Plugin;\n $.fn.tab.Constructor = Tab;\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old;\n return this;\n };\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault();\n Plugin.call($(this), 'show');\n };\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler);\n\n setTimeout(function() {\n this.hash = window.location.hash;\n if (this.hash) {\n Plugin.call($(this), 'showdeeplink', this.hash);\n }\n }, 1500);\n}(jQuery);\n\ndefine(\"bootstrap-sass-customtabs/bootstrap-sass-customtabs\", [\"jquery\"], function(){});\n;define('bootstrap-sass-customtabs', ['bootstrap-sass-customtabs/bootstrap-sass-customtabs'], function (main) { return main; });\n\r\ndefine('aurelia-validation/get-target-dom-element',[\"require\", \"exports\", \"aurelia-pal\"], function (require, exports, aurelia_pal_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Gets the DOM element associated with the data-binding. Most of the time it's\n * the binding.target but sometimes binding.target is an aurelia custom element,\n * or custom attribute which is a javascript \"class\" instance, so we need to use\n * the controller's container to retrieve the actual DOM element.\n */\n function getTargetDOMElement(binding, view) {\n var target = binding.target;\n // DOM element\n if (target instanceof Element) {\n return target;\n }\n // custom element or custom attribute\n // tslint:disable-next-line:prefer-const\n for (var i = 0, ii = view.controllers.length; i < ii; i++) {\n var controller = view.controllers[i];\n if (controller.viewModel === target) {\n var element = controller.container.get(aurelia_pal_1.DOM.Element);\n if (element) {\n return element;\n }\n throw new Error(\"Unable to locate target element for \\\"\" + binding.sourceExpression + \"\\\".\");\n }\n }\n throw new Error(\"Unable to locate target element for \\\"\" + binding.sourceExpression + \"\\\".\");\n }\n exports.getTargetDOMElement = getTargetDOMElement;\n});\n\r\ndefine('aurelia-validation/property-info',[\"require\", \"exports\", \"aurelia-binding\"], function (require, exports, aurelia_binding_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n function getObject(expression, objectExpression, source) {\n var value = objectExpression.evaluate(source, null);\n if (value === null || value === undefined || value instanceof Object) {\n return value;\n }\n // tslint:disable-next-line:max-line-length\n throw new Error(\"The '\" + objectExpression + \"' part of '\" + expression + \"' evaluates to \" + value + \" instead of an object, null or undefined.\");\n }\n /**\n * Retrieves the object and property name for the specified expression.\n * @param expression The expression\n * @param source The scope\n */\n function getPropertyInfo(expression, source) {\n var originalExpression = expression;\n while (expression instanceof aurelia_binding_1.BindingBehavior || expression instanceof aurelia_binding_1.ValueConverter) {\n expression = expression.expression;\n }\n var object;\n var propertyName;\n if (expression instanceof aurelia_binding_1.AccessScope) {\n object = aurelia_binding_1.getContextFor(expression.name, source, expression.ancestor);\n propertyName = expression.name;\n }\n else if (expression instanceof aurelia_binding_1.AccessMember) {\n object = getObject(originalExpression, expression.object, source);\n propertyName = expression.name;\n }\n else if (expression instanceof aurelia_binding_1.AccessKeyed) {\n object = getObject(originalExpression, expression.object, source);\n propertyName = expression.key.evaluate(source);\n }\n else {\n throw new Error(\"Expression '\" + originalExpression + \"' is not compatible with the validate binding-behavior.\");\n }\n if (object === null || object === undefined) {\n return null;\n }\n return { object: object, propertyName: propertyName };\n }\n exports.getPropertyInfo = getPropertyInfo;\n});\n\r\ndefine('aurelia-validation/property-accessor-parser',[\"require\", \"exports\", \"aurelia-binding\", \"./util\"], function (require, exports, aurelia_binding_1, util_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n var PropertyAccessorParser = (function () {\n function PropertyAccessorParser(parser) {\n this.parser = parser;\n }\n PropertyAccessorParser.prototype.parse = function (property) {\n if (util_1.isString(property)) {\n return property;\n }\n var accessorText = getAccessorExpression(property.toString());\n var accessor = this.parser.parse(accessorText);\n if (accessor instanceof aurelia_binding_1.AccessScope\n || accessor instanceof aurelia_binding_1.AccessMember && accessor.object instanceof aurelia_binding_1.AccessScope) {\n return accessor.name;\n }\n throw new Error(\"Invalid property expression: \\\"\" + accessor + \"\\\"\");\n };\n PropertyAccessorParser.inject = [aurelia_binding_1.Parser];\n return PropertyAccessorParser;\n }());\n exports.PropertyAccessorParser = PropertyAccessorParser;\n function getAccessorExpression(fn) {\n /* tslint:disable:max-line-length */\n var classic = /^function\\s*\\([$_\\w\\d]+\\)\\s*\\{(?:\\s*\"use strict\";)?\\s*(?:[$_\\w\\d.['\"\\]+;]+)?\\s*return\\s+[$_\\w\\d]+\\.([$_\\w\\d]+)\\s*;?\\s*\\}$/;\n /* tslint:enable:max-line-length */\n var arrow = /^\\(?[$_\\w\\d]+\\)?\\s*=>\\s*[$_\\w\\d]+\\.([$_\\w\\d]+)$/;\n var match = classic.exec(fn) || arrow.exec(fn);\n if (match === null) {\n throw new Error(\"Unable to parse accessor function:\\n\" + fn);\n }\n return match[1];\n }\n exports.getAccessorExpression = getAccessorExpression;\n});\n\r\ndefine('aurelia-validation/util',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n function isString(value) {\n return Object.prototype.toString.call(value) === '[object String]';\n }\n exports.isString = isString;\n});\n\r\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\ndefine('aurelia-validation/validate-binding-behavior',[\"require\", \"exports\", \"aurelia-task-queue\", \"./validate-trigger\", \"./validate-binding-behavior-base\"], function (require, exports, aurelia_task_queue_1, validate_trigger_1, validate_binding_behavior_base_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Binding behavior. Indicates the bound property should be validated\n * when the validate trigger specified by the associated controller's\n * validateTrigger property occurs.\n */\n var ValidateBindingBehavior = (function (_super) {\n __extends(ValidateBindingBehavior, _super);\n function ValidateBindingBehavior() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValidateBindingBehavior.prototype.getValidateTrigger = function (controller) {\n return controller.validateTrigger;\n };\n ValidateBindingBehavior.inject = [aurelia_task_queue_1.TaskQueue];\n return ValidateBindingBehavior;\n }(validate_binding_behavior_base_1.ValidateBindingBehaviorBase));\n exports.ValidateBindingBehavior = ValidateBindingBehavior;\n /**\n * Binding behavior. Indicates the bound property will be validated\n * manually, by calling controller.validate(). No automatic validation\n * triggered by data-entry or blur will occur.\n */\n var ValidateManuallyBindingBehavior = (function (_super) {\n __extends(ValidateManuallyBindingBehavior, _super);\n function ValidateManuallyBindingBehavior() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValidateManuallyBindingBehavior.prototype.getValidateTrigger = function () {\n return validate_trigger_1.validateTrigger.manual;\n };\n ValidateManuallyBindingBehavior.inject = [aurelia_task_queue_1.TaskQueue];\n return ValidateManuallyBindingBehavior;\n }(validate_binding_behavior_base_1.ValidateBindingBehaviorBase));\n exports.ValidateManuallyBindingBehavior = ValidateManuallyBindingBehavior;\n /**\n * Binding behavior. Indicates the bound property should be validated\n * when the associated element blurs.\n */\n var ValidateOnBlurBindingBehavior = (function (_super) {\n __extends(ValidateOnBlurBindingBehavior, _super);\n function ValidateOnBlurBindingBehavior() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValidateOnBlurBindingBehavior.prototype.getValidateTrigger = function () {\n return validate_trigger_1.validateTrigger.blur;\n };\n ValidateOnBlurBindingBehavior.inject = [aurelia_task_queue_1.TaskQueue];\n return ValidateOnBlurBindingBehavior;\n }(validate_binding_behavior_base_1.ValidateBindingBehaviorBase));\n exports.ValidateOnBlurBindingBehavior = ValidateOnBlurBindingBehavior;\n /**\n * Binding behavior. Indicates the bound property should be validated\n * when the associated element is changed by the user, causing a change\n * to the model.\n */\n var ValidateOnChangeBindingBehavior = (function (_super) {\n __extends(ValidateOnChangeBindingBehavior, _super);\n function ValidateOnChangeBindingBehavior() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValidateOnChangeBindingBehavior.prototype.getValidateTrigger = function () {\n return validate_trigger_1.validateTrigger.change;\n };\n ValidateOnChangeBindingBehavior.inject = [aurelia_task_queue_1.TaskQueue];\n return ValidateOnChangeBindingBehavior;\n }(validate_binding_behavior_base_1.ValidateBindingBehaviorBase));\n exports.ValidateOnChangeBindingBehavior = ValidateOnChangeBindingBehavior;\n /**\n * Binding behavior. Indicates the bound property should be validated\n * when the associated element blurs or is changed by the user, causing\n * a change to the model.\n */\n var ValidateOnChangeOrBlurBindingBehavior = (function (_super) {\n __extends(ValidateOnChangeOrBlurBindingBehavior, _super);\n function ValidateOnChangeOrBlurBindingBehavior() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValidateOnChangeOrBlurBindingBehavior.prototype.getValidateTrigger = function () {\n return validate_trigger_1.validateTrigger.changeOrBlur;\n };\n ValidateOnChangeOrBlurBindingBehavior.inject = [aurelia_task_queue_1.TaskQueue];\n return ValidateOnChangeOrBlurBindingBehavior;\n }(validate_binding_behavior_base_1.ValidateBindingBehaviorBase));\n exports.ValidateOnChangeOrBlurBindingBehavior = ValidateOnChangeOrBlurBindingBehavior;\n});\n\r\ndefine('aurelia-validation/validate-trigger',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Validation triggers.\n */\n var validateTrigger;\n (function (validateTrigger) {\n /**\n * Manual validation. Use the controller's `validate()` and `reset()` methods\n * to validate all bindings.\n */\n validateTrigger[validateTrigger[\"manual\"] = 0] = \"manual\";\n /**\n * Validate the binding when the binding's target element fires a DOM \"blur\" event.\n */\n validateTrigger[validateTrigger[\"blur\"] = 1] = \"blur\";\n /**\n * Validate the binding when it updates the model due to a change in the view.\n */\n validateTrigger[validateTrigger[\"change\"] = 2] = \"change\";\n /**\n * Validate the binding when the binding's target element fires a DOM \"blur\" event and\n * when it updates the model due to a change in the view.\n */\n validateTrigger[validateTrigger[\"changeOrBlur\"] = 3] = \"changeOrBlur\";\n })(validateTrigger = exports.validateTrigger || (exports.validateTrigger = {}));\n});\n\r\ndefine('aurelia-validation/validate-binding-behavior-base',[\"require\", \"exports\", \"aurelia-dependency-injection\", \"./validation-controller\", \"./validate-trigger\", \"./get-target-dom-element\"], function (require, exports, aurelia_dependency_injection_1, validation_controller_1, validate_trigger_1, get_target_dom_element_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Binding behavior. Indicates the bound property should be validated.\n */\n var ValidateBindingBehaviorBase = (function () {\n function ValidateBindingBehaviorBase(taskQueue) {\n this.taskQueue = taskQueue;\n }\n ValidateBindingBehaviorBase.prototype.bind = function (binding, source, rulesOrController, rules) {\n var _this = this;\n // identify the target element.\n var target = get_target_dom_element_1.getTargetDOMElement(binding, source);\n // locate the controller.\n var controller;\n if (rulesOrController instanceof validation_controller_1.ValidationController) {\n controller = rulesOrController;\n }\n else {\n controller = source.container.get(aurelia_dependency_injection_1.Optional.of(validation_controller_1.ValidationController));\n rules = rulesOrController;\n }\n if (controller === null) {\n throw new Error(\"A ValidationController has not been registered.\");\n }\n controller.registerBinding(binding, target, rules);\n binding.validationController = controller;\n var trigger = this.getValidateTrigger(controller);\n // tslint:disable-next-line:no-bitwise\n if (trigger & validate_trigger_1.validateTrigger.change) {\n binding.standardUpdateSource = binding.updateSource;\n // tslint:disable-next-line:only-arrow-functions\n // tslint:disable-next-line:space-before-function-paren\n binding.updateSource = function (value) {\n this.standardUpdateSource(value);\n this.validationController.validateBinding(this);\n };\n }\n // tslint:disable-next-line:no-bitwise\n if (trigger & validate_trigger_1.validateTrigger.blur) {\n binding.validateBlurHandler = function () {\n _this.taskQueue.queueMicroTask(function () { return controller.validateBinding(binding); });\n };\n binding.validateTarget = target;\n target.addEventListener('blur', binding.validateBlurHandler);\n }\n if (trigger !== validate_trigger_1.validateTrigger.manual) {\n binding.standardUpdateTarget = binding.updateTarget;\n // tslint:disable-next-line:only-arrow-functions\n // tslint:disable-next-line:space-before-function-paren\n binding.updateTarget = function (value) {\n this.standardUpdateTarget(value);\n this.validationController.resetBinding(this);\n };\n }\n };\n ValidateBindingBehaviorBase.prototype.unbind = function (binding) {\n // reset the binding to it's original state.\n if (binding.standardUpdateSource) {\n binding.updateSource = binding.standardUpdateSource;\n binding.standardUpdateSource = null;\n }\n if (binding.standardUpdateTarget) {\n binding.updateTarget = binding.standardUpdateTarget;\n binding.standardUpdateTarget = null;\n }\n if (binding.validateBlurHandler) {\n binding.validateTarget.removeEventListener('blur', binding.validateBlurHandler);\n binding.validateBlurHandler = null;\n binding.validateTarget = null;\n }\n binding.validationController.unregisterBinding(binding);\n binding.validationController = null;\n };\n return ValidateBindingBehaviorBase;\n }());\n exports.ValidateBindingBehaviorBase = ValidateBindingBehaviorBase;\n});\n\r\ndefine('aurelia-validation/validation-controller',[\"require\", \"exports\", \"./validator\", \"./validate-trigger\", \"./property-info\", \"./validate-result\", \"./property-accessor-parser\", \"./validate-event\"], function (require, exports, validator_1, validate_trigger_1, property_info_1, validate_result_1, property_accessor_parser_1, validate_event_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Orchestrates validation.\n * Manages a set of bindings, renderers and objects.\n * Exposes the current list of validation results for binding purposes.\n */\n var ValidationController = (function () {\n function ValidationController(validator, propertyParser) {\n this.validator = validator;\n this.propertyParser = propertyParser;\n // Registered bindings (via the validate binding behavior)\n this.bindings = new Map();\n // Renderers that have been added to the controller instance.\n this.renderers = [];\n /**\n * Validation results that have been rendered by the controller.\n */\n this.results = [];\n /**\n * Validation errors that have been rendered by the controller.\n */\n this.errors = [];\n /**\n * Whether the controller is currently validating.\n */\n this.validating = false;\n // Elements related to validation results that have been rendered.\n this.elements = new Map();\n // Objects that have been added to the controller instance (entity-style validation).\n this.objects = new Map();\n /**\n * The trigger that will invoke automatic validation of a property used in a binding.\n */\n this.validateTrigger = validate_trigger_1.validateTrigger.blur;\n // Promise that resolves when validation has completed.\n this.finishValidating = Promise.resolve();\n this.eventCallbacks = [];\n }\n /**\n * Subscribe to controller validate and reset events. These events occur when the\n * controller's \"validate\"\" and \"reset\" methods are called.\n * @param callback The callback to be invoked when the controller validates or resets.\n */\n ValidationController.prototype.subscribe = function (callback) {\n var _this = this;\n this.eventCallbacks.push(callback);\n return {\n dispose: function () {\n var index = _this.eventCallbacks.indexOf(callback);\n if (index === -1) {\n return;\n }\n _this.eventCallbacks.splice(index, 1);\n }\n };\n };\n /**\n * Adds an object to the set of objects that should be validated when validate is called.\n * @param object The object.\n * @param rules Optional. The rules. If rules aren't supplied the Validator implementation will lookup the rules.\n */\n ValidationController.prototype.addObject = function (object, rules) {\n this.objects.set(object, rules);\n };\n /**\n * Removes an object from the set of objects that should be validated when validate is called.\n * @param object The object.\n */\n ValidationController.prototype.removeObject = function (object) {\n this.objects.delete(object);\n this.processResultDelta('reset', this.results.filter(function (result) { return result.object === object; }), []);\n };\n /**\n * Adds and renders an error.\n */\n ValidationController.prototype.addError = function (message, object, propertyName) {\n if (propertyName === void 0) { propertyName = null; }\n var resolvedPropertyName;\n if (propertyName === null) {\n resolvedPropertyName = propertyName;\n }\n else {\n resolvedPropertyName = this.propertyParser.parse(propertyName);\n }\n var result = new validate_result_1.ValidateResult({ __manuallyAdded__: true }, object, resolvedPropertyName, false, message);\n this.processResultDelta('validate', [], [result]);\n return result;\n };\n /**\n * Removes and unrenders an error.\n */\n ValidationController.prototype.removeError = function (result) {\n if (this.results.indexOf(result) !== -1) {\n this.processResultDelta('reset', [result], []);\n }\n };\n /**\n * Adds a renderer.\n * @param renderer The renderer.\n */\n ValidationController.prototype.addRenderer = function (renderer) {\n var _this = this;\n this.renderers.push(renderer);\n renderer.render({\n kind: 'validate',\n render: this.results.map(function (result) { return ({ result: result, elements: _this.elements.get(result) }); }),\n unrender: []\n });\n };\n /**\n * Removes a renderer.\n * @param renderer The renderer.\n */\n ValidationController.prototype.removeRenderer = function (renderer) {\n var _this = this;\n this.renderers.splice(this.renderers.indexOf(renderer), 1);\n renderer.render({\n kind: 'reset',\n render: [],\n unrender: this.results.map(function (result) { return ({ result: result, elements: _this.elements.get(result) }); })\n });\n };\n /**\n * Registers a binding with the controller.\n * @param binding The binding instance.\n * @param target The DOM element.\n * @param rules (optional) rules associated with the binding. Validator implementation specific.\n */\n ValidationController.prototype.registerBinding = function (binding, target, rules) {\n this.bindings.set(binding, { target: target, rules: rules, propertyInfo: null });\n };\n /**\n * Unregisters a binding with the controller.\n * @param binding The binding instance.\n */\n ValidationController.prototype.unregisterBinding = function (binding) {\n this.resetBinding(binding);\n this.bindings.delete(binding);\n };\n /**\n * Interprets the instruction and returns a predicate that will identify\n * relevant results in the list of rendered validation results.\n */\n ValidationController.prototype.getInstructionPredicate = function (instruction) {\n var _this = this;\n if (instruction) {\n var object_1 = instruction.object, propertyName_1 = instruction.propertyName, rules_1 = instruction.rules;\n var predicate_1;\n if (instruction.propertyName) {\n predicate_1 = function (x) { return x.object === object_1 && x.propertyName === propertyName_1; };\n }\n else {\n predicate_1 = function (x) { return x.object === object_1; };\n }\n if (rules_1) {\n return function (x) { return predicate_1(x) && _this.validator.ruleExists(rules_1, x.rule); };\n }\n return predicate_1;\n }\n else {\n return function () { return true; };\n }\n };\n /**\n * Validates and renders results.\n * @param instruction Optional. Instructions on what to validate. If undefined, all\n * objects and bindings will be validated.\n */\n ValidationController.prototype.validate = function (instruction) {\n var _this = this;\n // Get a function that will process the validation instruction.\n var execute;\n if (instruction) {\n // tslint:disable-next-line:prefer-const\n var object_2 = instruction.object, propertyName_2 = instruction.propertyName, rules_2 = instruction.rules;\n // if rules were not specified, check the object map.\n rules_2 = rules_2 || this.objects.get(object_2);\n // property specified?\n if (instruction.propertyName === undefined) {\n // validate the specified object.\n execute = function () { return _this.validator.validateObject(object_2, rules_2); };\n }\n else {\n // validate the specified property.\n execute = function () { return _this.validator.validateProperty(object_2, propertyName_2, rules_2); };\n }\n }\n else {\n // validate all objects and bindings.\n execute = function () {\n var promises = [];\n for (var _i = 0, _a = Array.from(_this.objects); _i < _a.length; _i++) {\n var _b = _a[_i], object = _b[0], rules = _b[1];\n promises.push(_this.validator.validateObject(object, rules));\n }\n for (var _c = 0, _d = Array.from(_this.bindings); _c < _d.length; _c++) {\n var _e = _d[_c], binding = _e[0], rules = _e[1].rules;\n var propertyInfo = property_info_1.getPropertyInfo(binding.sourceExpression, binding.source);\n if (!propertyInfo || _this.objects.has(propertyInfo.object)) {\n continue;\n }\n promises.push(_this.validator.validateProperty(propertyInfo.object, propertyInfo.propertyName, rules));\n }\n return Promise.all(promises).then(function (resultSets) { return resultSets.reduce(function (a, b) { return a.concat(b); }, []); });\n };\n }\n // Wait for any existing validation to finish, execute the instruction, render the results.\n this.validating = true;\n var returnPromise = this.finishValidating\n .then(execute)\n .then(function (newResults) {\n var predicate = _this.getInstructionPredicate(instruction);\n var oldResults = _this.results.filter(predicate);\n _this.processResultDelta('validate', oldResults, newResults);\n if (returnPromise === _this.finishValidating) {\n _this.validating = false;\n }\n var result = {\n instruction: instruction,\n valid: newResults.find(function (x) { return !x.valid; }) === undefined,\n results: newResults\n };\n _this.invokeCallbacks(instruction, result);\n return result;\n })\n .catch(function (exception) {\n // recover, to enable subsequent calls to validate()\n _this.validating = false;\n _this.finishValidating = Promise.resolve();\n return Promise.reject(exception);\n });\n this.finishValidating = returnPromise;\n return returnPromise;\n };\n /**\n * Resets any rendered validation results (unrenders).\n * @param instruction Optional. Instructions on what to reset. If unspecified all rendered results\n * will be unrendered.\n */\n ValidationController.prototype.reset = function (instruction) {\n var predicate = this.getInstructionPredicate(instruction);\n var oldResults = this.results.filter(predicate);\n this.processResultDelta('reset', oldResults, []);\n this.invokeCallbacks(instruction, null);\n };\n /**\n * Gets the elements associated with an object and propertyName (if any).\n */\n ValidationController.prototype.getAssociatedElements = function (_a) {\n var object = _a.object, propertyName = _a.propertyName;\n var elements = [];\n for (var _i = 0, _b = Array.from(this.bindings); _i < _b.length; _i++) {\n var _c = _b[_i], binding = _c[0], target = _c[1].target;\n var propertyInfo = property_info_1.getPropertyInfo(binding.sourceExpression, binding.source);\n if (propertyInfo && propertyInfo.object === object && propertyInfo.propertyName === propertyName) {\n elements.push(target);\n }\n }\n return elements;\n };\n ValidationController.prototype.processResultDelta = function (kind, oldResults, newResults) {\n // prepare the instruction.\n var instruction = {\n kind: kind,\n render: [],\n unrender: []\n };\n // create a shallow copy of newResults so we can mutate it without causing side-effects.\n newResults = newResults.slice(0);\n var _loop_1 = function (oldResult) {\n // get the elements associated with the old result.\n var elements = this_1.elements.get(oldResult);\n // remove the old result from the element map.\n this_1.elements.delete(oldResult);\n // create the unrender instruction.\n instruction.unrender.push({ result: oldResult, elements: elements });\n // determine if there's a corresponding new result for the old result we are unrendering.\n var newResultIndex = newResults.findIndex(function (x) { return x.rule === oldResult.rule && x.object === oldResult.object && x.propertyName === oldResult.propertyName; });\n if (newResultIndex === -1) {\n // no corresponding new result... simple remove.\n this_1.results.splice(this_1.results.indexOf(oldResult), 1);\n if (!oldResult.valid) {\n this_1.errors.splice(this_1.errors.indexOf(oldResult), 1);\n }\n }\n else {\n // there is a corresponding new result...\n var newResult = newResults.splice(newResultIndex, 1)[0];\n // get the elements that are associated with the new result.\n var elements_1 = this_1.getAssociatedElements(newResult);\n this_1.elements.set(newResult, elements_1);\n // create a render instruction for the new result.\n instruction.render.push({ result: newResult, elements: elements_1 });\n // do an in-place replacement of the old result with the new result.\n // this ensures any repeats bound to this.results will not thrash.\n this_1.results.splice(this_1.results.indexOf(oldResult), 1, newResult);\n if (!oldResult.valid && newResult.valid) {\n this_1.errors.splice(this_1.errors.indexOf(oldResult), 1);\n }\n else if (!oldResult.valid && !newResult.valid) {\n this_1.errors.splice(this_1.errors.indexOf(oldResult), 1, newResult);\n }\n else if (!newResult.valid) {\n this_1.errors.push(newResult);\n }\n }\n };\n var this_1 = this;\n // create unrender instructions from the old results.\n for (var _i = 0, oldResults_1 = oldResults; _i < oldResults_1.length; _i++) {\n var oldResult = oldResults_1[_i];\n _loop_1(oldResult);\n }\n // create render instructions from the remaining new results.\n for (var _a = 0, newResults_1 = newResults; _a < newResults_1.length; _a++) {\n var result = newResults_1[_a];\n var elements = this.getAssociatedElements(result);\n instruction.render.push({ result: result, elements: elements });\n this.elements.set(result, elements);\n this.results.push(result);\n if (!result.valid) {\n this.errors.push(result);\n }\n }\n // render.\n for (var _b = 0, _c = this.renderers; _b < _c.length; _b++) {\n var renderer = _c[_b];\n renderer.render(instruction);\n }\n };\n /**\n * Validates the property associated with a binding.\n */\n ValidationController.prototype.validateBinding = function (binding) {\n if (!binding.isBound) {\n return;\n }\n var propertyInfo = property_info_1.getPropertyInfo(binding.sourceExpression, binding.source);\n var rules;\n var registeredBinding = this.bindings.get(binding);\n if (registeredBinding) {\n rules = registeredBinding.rules;\n registeredBinding.propertyInfo = propertyInfo;\n }\n if (!propertyInfo) {\n return;\n }\n var object = propertyInfo.object, propertyName = propertyInfo.propertyName;\n this.validate({ object: object, propertyName: propertyName, rules: rules });\n };\n /**\n * Resets the results for a property associated with a binding.\n */\n ValidationController.prototype.resetBinding = function (binding) {\n var registeredBinding = this.bindings.get(binding);\n var propertyInfo = property_info_1.getPropertyInfo(binding.sourceExpression, binding.source);\n if (!propertyInfo && registeredBinding) {\n propertyInfo = registeredBinding.propertyInfo;\n }\n if (registeredBinding) {\n registeredBinding.propertyInfo = null;\n }\n if (!propertyInfo) {\n return;\n }\n var object = propertyInfo.object, propertyName = propertyInfo.propertyName;\n this.reset({ object: object, propertyName: propertyName });\n };\n /**\n * Changes the controller's validateTrigger.\n * @param newTrigger The new validateTrigger\n */\n ValidationController.prototype.changeTrigger = function (newTrigger) {\n this.validateTrigger = newTrigger;\n var bindings = Array.from(this.bindings.keys());\n for (var _i = 0, bindings_1 = bindings; _i < bindings_1.length; _i++) {\n var binding = bindings_1[_i];\n var source = binding.source;\n binding.unbind();\n binding.bind(source);\n }\n };\n /**\n * Revalidates the controller's current set of errors.\n */\n ValidationController.prototype.revalidateErrors = function () {\n for (var _i = 0, _a = this.errors; _i < _a.length; _i++) {\n var _b = _a[_i], object = _b.object, propertyName = _b.propertyName, rule = _b.rule;\n if (rule.__manuallyAdded__) {\n continue;\n }\n var rules = [rule];\n this.validate({ object: object, propertyName: propertyName, rules: rules });\n }\n };\n ValidationController.prototype.invokeCallbacks = function (instruction, result) {\n if (this.eventCallbacks.length === 0) {\n return;\n }\n var event = new validate_event_1.ValidateEvent(result ? 'validate' : 'reset', this.errors, this.results, instruction || null, result);\n for (var i = 0; i < this.eventCallbacks.length; i++) {\n this.eventCallbacks[i](event);\n }\n };\n ValidationController.inject = [validator_1.Validator, property_accessor_parser_1.PropertyAccessorParser];\n return ValidationController;\n }());\n exports.ValidationController = ValidationController;\n});\n\r\ndefine('aurelia-validation/validator',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Validates objects and properties.\n */\n var Validator = (function () {\n function Validator() {\n }\n return Validator;\n }());\n exports.Validator = Validator;\n});\n\r\ndefine('aurelia-validation/validate-result',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * The result of validating an individual validation rule.\n */\n var ValidateResult = (function () {\n /**\n * @param rule The rule associated with the result. Validator implementation specific.\n * @param object The object that was validated.\n * @param propertyName The name of the property that was validated.\n * @param error The error, if the result is a validation error.\n */\n function ValidateResult(rule, object, propertyName, valid, message) {\n if (message === void 0) { message = null; }\n this.rule = rule;\n this.object = object;\n this.propertyName = propertyName;\n this.valid = valid;\n this.message = message;\n this.id = ValidateResult.nextId++;\n }\n ValidateResult.prototype.toString = function () {\n return this.valid ? 'Valid.' : this.message;\n };\n ValidateResult.nextId = 0;\n return ValidateResult;\n }());\n exports.ValidateResult = ValidateResult;\n});\n\r\ndefine('aurelia-validation/validate-event',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n var ValidateEvent = (function () {\n function ValidateEvent(\n /**\n * The type of validate event. Either \"validate\" or \"reset\".\n */\n type, \n /**\n * The controller's current array of errors. For an array containing both\n * failed rules and passed rules, use the \"results\" property.\n */\n errors, \n /**\n * The controller's current array of validate results. This\n * includes both passed rules and failed rules. For an array of only failed rules,\n * use the \"errors\" property.\n */\n results, \n /**\n * The instruction passed to the \"validate\" or \"reset\" event. Will be null when\n * the controller's validate/reset method was called with no instruction argument.\n */\n instruction, \n /**\n * In events with type === \"validate\", this property will contain the result\n * of validating the instruction (see \"instruction\" property). Use the controllerValidateResult\n * to access the validate results specific to the call to \"validate\"\n * (as opposed to using the \"results\" and \"errors\" properties to access the controller's entire\n * set of results/errors).\n */\n controllerValidateResult) {\n this.type = type;\n this.errors = errors;\n this.results = results;\n this.instruction = instruction;\n this.controllerValidateResult = controllerValidateResult;\n }\n return ValidateEvent;\n }());\n exports.ValidateEvent = ValidateEvent;\n});\n\r\ndefine('aurelia-validation/validation-controller-factory',[\"require\", \"exports\", \"./validation-controller\", \"./validator\", \"./property-accessor-parser\"], function (require, exports, validation_controller_1, validator_1, property_accessor_parser_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Creates ValidationController instances.\n */\n var ValidationControllerFactory = (function () {\n function ValidationControllerFactory(container) {\n this.container = container;\n }\n ValidationControllerFactory.get = function (container) {\n return new ValidationControllerFactory(container);\n };\n /**\n * Creates a new controller instance.\n */\n ValidationControllerFactory.prototype.create = function (validator) {\n if (!validator) {\n validator = this.container.get(validator_1.Validator);\n }\n var propertyParser = this.container.get(property_accessor_parser_1.PropertyAccessorParser);\n return new validation_controller_1.ValidationController(validator, propertyParser);\n };\n /**\n * Creates a new controller and registers it in the current element's container so that it's\n * available to the validate binding behavior and renderers.\n */\n ValidationControllerFactory.prototype.createForCurrentScope = function (validator) {\n var controller = this.create(validator);\n this.container.registerInstance(validation_controller_1.ValidationController, controller);\n return controller;\n };\n return ValidationControllerFactory;\n }());\n exports.ValidationControllerFactory = ValidationControllerFactory;\n ValidationControllerFactory['protocol:aurelia:resolver'] = true;\n});\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\ndefine('aurelia-validation/validation-errors-custom-attribute',[\"require\", \"exports\", \"aurelia-binding\", \"aurelia-dependency-injection\", \"aurelia-templating\", \"./validation-controller\", \"aurelia-pal\"], function (require, exports, aurelia_binding_1, aurelia_dependency_injection_1, aurelia_templating_1, validation_controller_1, aurelia_pal_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n var ValidationErrorsCustomAttribute = (function () {\n function ValidationErrorsCustomAttribute(boundaryElement, controllerAccessor) {\n this.boundaryElement = boundaryElement;\n this.controllerAccessor = controllerAccessor;\n this.controller = null;\n this.errors = [];\n this.errorsInternal = [];\n }\n ValidationErrorsCustomAttribute.prototype.sort = function () {\n this.errorsInternal.sort(function (a, b) {\n if (a.targets[0] === b.targets[0]) {\n return 0;\n }\n // tslint:disable-next-line:no-bitwise\n return a.targets[0].compareDocumentPosition(b.targets[0]) & 2 ? 1 : -1;\n });\n };\n ValidationErrorsCustomAttribute.prototype.interestingElements = function (elements) {\n var _this = this;\n return elements.filter(function (e) { return _this.boundaryElement.contains(e); });\n };\n ValidationErrorsCustomAttribute.prototype.render = function (instruction) {\n var _loop_1 = function (result) {\n var index = this_1.errorsInternal.findIndex(function (x) { return x.error === result; });\n if (index !== -1) {\n this_1.errorsInternal.splice(index, 1);\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = instruction.unrender; _i < _a.length; _i++) {\n var result = _a[_i].result;\n _loop_1(result);\n }\n for (var _b = 0, _c = instruction.render; _b < _c.length; _b++) {\n var _d = _c[_b], result = _d.result, elements = _d.elements;\n if (result.valid) {\n continue;\n }\n var targets = this.interestingElements(elements);\n if (targets.length) {\n this.errorsInternal.push({ error: result, targets: targets });\n }\n }\n this.sort();\n this.errors = this.errorsInternal;\n };\n ValidationErrorsCustomAttribute.prototype.bind = function () {\n if (!this.controller) {\n this.controller = this.controllerAccessor();\n }\n // this will call render() with the side-effect of updating this.errors\n this.controller.addRenderer(this);\n };\n ValidationErrorsCustomAttribute.prototype.unbind = function () {\n if (this.controller) {\n this.controller.removeRenderer(this);\n }\n };\n ValidationErrorsCustomAttribute.inject = [aurelia_pal_1.DOM.Element, aurelia_dependency_injection_1.Lazy.of(validation_controller_1.ValidationController)];\n __decorate([\n aurelia_templating_1.bindable({ defaultBindingMode: aurelia_binding_1.bindingMode.oneWay })\n ], ValidationErrorsCustomAttribute.prototype, \"controller\", void 0);\n __decorate([\n aurelia_templating_1.bindable({ primaryProperty: true, defaultBindingMode: aurelia_binding_1.bindingMode.twoWay })\n ], ValidationErrorsCustomAttribute.prototype, \"errors\", void 0);\n ValidationErrorsCustomAttribute = __decorate([\n aurelia_templating_1.customAttribute('validation-errors')\n ], ValidationErrorsCustomAttribute);\n return ValidationErrorsCustomAttribute;\n }());\n exports.ValidationErrorsCustomAttribute = ValidationErrorsCustomAttribute;\n});\n\r\ndefine('aurelia-validation/validation-renderer-custom-attribute',[\"require\", \"exports\", \"./validation-controller\"], function (require, exports, validation_controller_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n var ValidationRendererCustomAttribute = (function () {\n function ValidationRendererCustomAttribute() {\n }\n ValidationRendererCustomAttribute.prototype.created = function (view) {\n this.container = view.container;\n };\n ValidationRendererCustomAttribute.prototype.bind = function () {\n this.controller = this.container.get(validation_controller_1.ValidationController);\n this.renderer = this.container.get(this.value);\n this.controller.addRenderer(this.renderer);\n };\n ValidationRendererCustomAttribute.prototype.unbind = function () {\n this.controller.removeRenderer(this.renderer);\n this.controller = null;\n this.renderer = null;\n };\n return ValidationRendererCustomAttribute;\n }());\n exports.ValidationRendererCustomAttribute = ValidationRendererCustomAttribute;\n});\n\r\ndefine('aurelia-validation/implementation/rules',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Sets, unsets and retrieves rules on an object or constructor function.\n */\n var Rules = (function () {\n function Rules() {\n }\n /**\n * Applies the rules to a target.\n */\n Rules.set = function (target, rules) {\n if (target instanceof Function) {\n target = target.prototype;\n }\n Object.defineProperty(target, Rules.key, { enumerable: false, configurable: false, writable: true, value: rules });\n };\n /**\n * Removes rules from a target.\n */\n Rules.unset = function (target) {\n if (target instanceof Function) {\n target = target.prototype;\n }\n target[Rules.key] = null;\n };\n /**\n * Retrieves the target's rules.\n */\n Rules.get = function (target) {\n return target[Rules.key] || null;\n };\n /**\n * The name of the property that stores the rules.\n */\n Rules.key = '__rules__';\n return Rules;\n }());\n exports.Rules = Rules;\n});\n\r\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\ndefine('aurelia-validation/implementation/standard-validator',[\"require\", \"exports\", \"aurelia-templating\", \"../validator\", \"../validate-result\", \"./rules\", \"./validation-messages\"], function (require, exports, aurelia_templating_1, validator_1, validate_result_1, rules_1, validation_messages_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Validates.\n * Responsible for validating objects and properties.\n */\n var StandardValidator = (function (_super) {\n __extends(StandardValidator, _super);\n function StandardValidator(messageProvider, resources) {\n var _this = _super.call(this) || this;\n _this.messageProvider = messageProvider;\n _this.lookupFunctions = resources.lookupFunctions;\n _this.getDisplayName = messageProvider.getDisplayName.bind(messageProvider);\n return _this;\n }\n /**\n * Validates the specified property.\n * @param object The object to validate.\n * @param propertyName The name of the property to validate.\n * @param rules Optional. If unspecified, the rules will be looked up using the metadata\n * for the object created by ValidationRules....on(class/object)\n */\n StandardValidator.prototype.validateProperty = function (object, propertyName, rules) {\n return this.validate(object, propertyName, rules || null);\n };\n /**\n * Validates all rules for specified object and it's properties.\n * @param object The object to validate.\n * @param rules Optional. If unspecified, the rules will be looked up using the metadata\n * for the object created by ValidationRules....on(class/object)\n */\n StandardValidator.prototype.validateObject = function (object, rules) {\n return this.validate(object, null, rules || null);\n };\n /**\n * Determines whether a rule exists in a set of rules.\n * @param rules The rules to search.\n * @parem rule The rule to find.\n */\n StandardValidator.prototype.ruleExists = function (rules, rule) {\n var i = rules.length;\n while (i--) {\n if (rules[i].indexOf(rule) !== -1) {\n return true;\n }\n }\n return false;\n };\n StandardValidator.prototype.getMessage = function (rule, object, value) {\n var expression = rule.message || this.messageProvider.getMessage(rule.messageKey);\n // tslint:disable-next-line:prefer-const\n var _a = rule.property, propertyName = _a.name, displayName = _a.displayName;\n if (propertyName !== null) {\n displayName = this.messageProvider.getDisplayName(propertyName, displayName);\n }\n var overrideContext = {\n $displayName: displayName,\n $propertyName: propertyName,\n $value: value,\n $object: object,\n $config: rule.config,\n // returns the name of a given property, given just the property name (irrespective of the property's displayName)\n // split on capital letters, first letter ensured to be capitalized\n $getDisplayName: this.getDisplayName\n };\n return expression.evaluate({ bindingContext: object, overrideContext: overrideContext }, this.lookupFunctions);\n };\n StandardValidator.prototype.validateRuleSequence = function (object, propertyName, ruleSequence, sequence, results) {\n var _this = this;\n // are we validating all properties or a single property?\n var validateAllProperties = propertyName === null || propertyName === undefined;\n var rules = ruleSequence[sequence];\n var allValid = true;\n // validate each rule.\n var promises = [];\n var _loop_1 = function (i) {\n var rule = rules[i];\n // is the rule related to the property we're validating.\n if (!validateAllProperties && rule.property.name !== propertyName) {\n return \"continue\";\n }\n // is this a conditional rule? is the condition met?\n if (rule.when && !rule.when(object)) {\n return \"continue\";\n }\n // validate.\n var value = rule.property.name === null ? object : object[rule.property.name];\n var promiseOrBoolean = rule.condition(value, object);\n if (!(promiseOrBoolean instanceof Promise)) {\n promiseOrBoolean = Promise.resolve(promiseOrBoolean);\n }\n promises.push(promiseOrBoolean.then(function (valid) {\n var message = valid ? null : _this.getMessage(rule, object, value);\n results.push(new validate_result_1.ValidateResult(rule, object, rule.property.name, valid, message));\n allValid = allValid && valid;\n return valid;\n }));\n };\n for (var i = 0; i < rules.length; i++) {\n _loop_1(i);\n }\n return Promise.all(promises)\n .then(function () {\n sequence++;\n if (allValid && sequence < ruleSequence.length) {\n return _this.validateRuleSequence(object, propertyName, ruleSequence, sequence, results);\n }\n return results;\n });\n };\n StandardValidator.prototype.validate = function (object, propertyName, rules) {\n // rules specified?\n if (!rules) {\n // no. attempt to locate the rules.\n rules = rules_1.Rules.get(object);\n }\n // any rules?\n if (!rules) {\n return Promise.resolve([]);\n }\n return this.validateRuleSequence(object, propertyName, rules, 0, []);\n };\n StandardValidator.inject = [validation_messages_1.ValidationMessageProvider, aurelia_templating_1.ViewResources];\n return StandardValidator;\n }(validator_1.Validator));\n exports.StandardValidator = StandardValidator;\n});\n\r\ndefine('aurelia-validation/implementation/validation-messages',[\"require\", \"exports\", \"./validation-message-parser\"], function (require, exports, validation_message_parser_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Dictionary of validation messages. [messageKey]: messageExpression\n */\n exports.validationMessages = {\n /**\n * The default validation message. Used with rules that have no standard message.\n */\n default: \"${$displayName} is invalid.\",\n required: \"${$displayName} is required.\",\n matches: \"${$displayName} is not correctly formatted.\",\n email: \"${$displayName} is not a valid email.\",\n minLength: \"${$displayName} must be at least ${$config.length} character${$config.length === 1 ? '' : 's'}.\",\n maxLength: \"${$displayName} cannot be longer than ${$config.length} character${$config.length === 1 ? '' : 's'}.\",\n minItems: \"${$displayName} must contain at least ${$config.count} item${$config.count === 1 ? '' : 's'}.\",\n maxItems: \"${$displayName} cannot contain more than ${$config.count} item${$config.count === 1 ? '' : 's'}.\",\n equals: \"${$displayName} must be ${$config.expectedValue}.\",\n };\n /**\n * Retrieves validation messages and property display names.\n */\n var ValidationMessageProvider = (function () {\n function ValidationMessageProvider(parser) {\n this.parser = parser;\n }\n /**\n * Returns a message binding expression that corresponds to the key.\n * @param key The message key.\n */\n ValidationMessageProvider.prototype.getMessage = function (key) {\n var message;\n if (key in exports.validationMessages) {\n message = exports.validationMessages[key];\n }\n else {\n message = exports.validationMessages['default'];\n }\n return this.parser.parse(message);\n };\n /**\n * Formulates a property display name using the property name and the configured\n * displayName (if provided).\n * Override this with your own custom logic.\n * @param propertyName The property name.\n */\n ValidationMessageProvider.prototype.getDisplayName = function (propertyName, displayName) {\n if (displayName !== null && displayName !== undefined) {\n return (displayName instanceof Function) ? displayName() : displayName;\n }\n // split on upper-case letters.\n var words = propertyName.split(/(?=[A-Z])/).join(' ');\n // capitalize first letter.\n return words.charAt(0).toUpperCase() + words.slice(1);\n };\n ValidationMessageProvider.inject = [validation_message_parser_1.ValidationMessageParser];\n return ValidationMessageProvider;\n }());\n exports.ValidationMessageProvider = ValidationMessageProvider;\n});\n\r\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\ndefine('aurelia-validation/implementation/validation-message-parser',[\"require\", \"exports\", \"aurelia-binding\", \"aurelia-templating\", \"aurelia-logging\", \"./expression-visitor\"], function (require, exports, aurelia_binding_1, aurelia_templating_1, LogManager, expression_visitor_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n var ValidationMessageParser = (function () {\n function ValidationMessageParser(bindinqLanguage) {\n this.bindinqLanguage = bindinqLanguage;\n this.emptyStringExpression = new aurelia_binding_1.LiteralString('');\n this.nullExpression = new aurelia_binding_1.LiteralPrimitive(null);\n this.undefinedExpression = new aurelia_binding_1.LiteralPrimitive(undefined);\n this.cache = {};\n }\n ValidationMessageParser.prototype.parse = function (message) {\n if (this.cache[message] !== undefined) {\n return this.cache[message];\n }\n var parts = this.bindinqLanguage.parseInterpolation(null, message);\n if (parts === null) {\n return new aurelia_binding_1.LiteralString(message);\n }\n var expression = new aurelia_binding_1.LiteralString(parts[0]);\n for (var i = 1; i < parts.length; i += 2) {\n expression = new aurelia_binding_1.Binary('+', expression, new aurelia_binding_1.Binary('+', this.coalesce(parts[i]), new aurelia_binding_1.LiteralString(parts[i + 1])));\n }\n MessageExpressionValidator.validate(expression, message);\n this.cache[message] = expression;\n return expression;\n };\n ValidationMessageParser.prototype.coalesce = function (part) {\n // part === null || part === undefined ? '' : part\n return new aurelia_binding_1.Conditional(new aurelia_binding_1.Binary('||', new aurelia_binding_1.Binary('===', part, this.nullExpression), new aurelia_binding_1.Binary('===', part, this.undefinedExpression)), this.emptyStringExpression, new aurelia_binding_1.CallMember(part, 'toString', []));\n };\n ValidationMessageParser.inject = [aurelia_templating_1.BindingLanguage];\n return ValidationMessageParser;\n }());\n exports.ValidationMessageParser = ValidationMessageParser;\n var MessageExpressionValidator = (function (_super) {\n __extends(MessageExpressionValidator, _super);\n function MessageExpressionValidator(originalMessage) {\n var _this = _super.call(this) || this;\n _this.originalMessage = originalMessage;\n return _this;\n }\n MessageExpressionValidator.validate = function (expression, originalMessage) {\n var visitor = new MessageExpressionValidator(originalMessage);\n expression.accept(visitor);\n };\n MessageExpressionValidator.prototype.visitAccessScope = function (access) {\n if (access.ancestor !== 0) {\n throw new Error('$parent is not permitted in validation message expressions.');\n }\n if (['displayName', 'propertyName', 'value', 'object', 'config', 'getDisplayName'].indexOf(access.name) !== -1) {\n LogManager.getLogger('aurelia-validation')\n .warn(\"Did you mean to use \\\"$\" + access.name + \"\\\" instead of \\\"\" + access.name + \"\\\" in this validation message template: \\\"\" + this.originalMessage + \"\\\"?\");\n }\n };\n return MessageExpressionValidator;\n }(expression_visitor_1.ExpressionVisitor));\n exports.MessageExpressionValidator = MessageExpressionValidator;\n});\n\r\ndefine('aurelia-validation/implementation/expression-visitor',[\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n // tslint:disable:no-empty\n var ExpressionVisitor = (function () {\n function ExpressionVisitor() {\n }\n ExpressionVisitor.prototype.visitChain = function (chain) {\n this.visitArgs(chain.expressions);\n };\n ExpressionVisitor.prototype.visitBindingBehavior = function (behavior) {\n behavior.expression.accept(this);\n this.visitArgs(behavior.args);\n };\n ExpressionVisitor.prototype.visitValueConverter = function (converter) {\n converter.expression.accept(this);\n this.visitArgs(converter.args);\n };\n ExpressionVisitor.prototype.visitAssign = function (assign) {\n assign.target.accept(this);\n assign.value.accept(this);\n };\n ExpressionVisitor.prototype.visitConditional = function (conditional) {\n conditional.condition.accept(this);\n conditional.yes.accept(this);\n conditional.no.accept(this);\n };\n ExpressionVisitor.prototype.visitAccessThis = function (access) {\n access.ancestor = access.ancestor;\n };\n ExpressionVisitor.prototype.visitAccessScope = function (access) {\n access.name = access.name;\n };\n ExpressionVisitor.prototype.visitAccessMember = function (access) {\n access.object.accept(this);\n };\n ExpressionVisitor.prototype.visitAccessKeyed = function (access) {\n access.object.accept(this);\n access.key.accept(this);\n };\n ExpressionVisitor.prototype.visitCallScope = function (call) {\n this.visitArgs(call.args);\n };\n ExpressionVisitor.prototype.visitCallFunction = function (call) {\n call.func.accept(this);\n this.visitArgs(call.args);\n };\n ExpressionVisitor.prototype.visitCallMember = function (call) {\n call.object.accept(this);\n this.visitArgs(call.args);\n };\n ExpressionVisitor.prototype.visitPrefix = function (prefix) {\n prefix.expression.accept(this);\n };\n ExpressionVisitor.prototype.visitBinary = function (binary) {\n binary.left.accept(this);\n binary.right.accept(this);\n };\n ExpressionVisitor.prototype.visitLiteralPrimitive = function (literal) {\n literal.value = literal.value;\n };\n ExpressionVisitor.prototype.visitLiteralArray = function (literal) {\n this.visitArgs(literal.elements);\n };\n ExpressionVisitor.prototype.visitLiteralObject = function (literal) {\n this.visitArgs(literal.values);\n };\n ExpressionVisitor.prototype.visitLiteralString = function (literal) {\n literal.value = literal.value;\n };\n ExpressionVisitor.prototype.visitArgs = function (args) {\n for (var i = 0; i < args.length; i++) {\n args[i].accept(this);\n }\n };\n return ExpressionVisitor;\n }());\n exports.ExpressionVisitor = ExpressionVisitor;\n});\n\r\ndefine('aurelia-validation/implementation/validation-rules',[\"require\", \"exports\", \"./rules\", \"./validation-messages\", \"../util\"], function (require, exports, rules_1, validation_messages_1, util_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n /**\n * Part of the fluent rule API. Enables customizing property rules.\n */\n var FluentRuleCustomizer = (function () {\n function FluentRuleCustomizer(property, condition, config, fluentEnsure, fluentRules, parsers) {\n if (config === void 0) { config = {}; }\n this.fluentEnsure = fluentEnsure;\n this.fluentRules = fluentRules;\n this.parsers = parsers;\n this.rule = {\n property: property,\n condition: condition,\n config: config,\n when: null,\n messageKey: 'default',\n message: null,\n sequence: fluentRules.sequence\n };\n this.fluentEnsure._addRule(this.rule);\n }\n /**\n * Validate subsequent rules after previously declared rules have\n * been validated successfully. Use to postpone validation of costly\n * rules until less expensive rules pass validation.\n */\n FluentRuleCustomizer.prototype.then = function () {\n this.fluentRules.sequence++;\n return this;\n };\n /**\n * Specifies the key to use when looking up the rule's validation message.\n */\n FluentRuleCustomizer.prototype.withMessageKey = function (key) {\n this.rule.messageKey = key;\n this.rule.message = null;\n return this;\n };\n /**\n * Specifies rule's validation message.\n */\n FluentRuleCustomizer.prototype.withMessage = function (message) {\n this.rule.messageKey = 'custom';\n this.rule.message = this.parsers.message.parse(message);\n return this;\n };\n /**\n * Specifies a condition that must be met before attempting to validate the rule.\n * @param condition A function that accepts the object as a parameter and returns true\n * or false whether the rule should be evaluated.\n */\n FluentRuleCustomizer.prototype.when = function (condition) {\n this.rule.when = condition;\n return this;\n };\n /**\n * Tags the rule instance, enabling the rule to be found easily\n * using ValidationRules.taggedRules(rules, tag)\n */\n FluentRuleCustomizer.prototype.tag = function (tag) {\n this.rule.tag = tag;\n return this;\n };\n ///// FluentEnsure APIs /////\n /**\n * Target a property with validation rules.\n * @param property The property to target. Can be the property name or a property accessor function.\n */\n FluentRuleCustomizer.prototype.ensure = function (subject) {\n return this.fluentEnsure.ensure(subject);\n };\n /**\n * Targets an object with validation rules.\n */\n FluentRuleCustomizer.prototype.ensureObject = function () {\n return this.fluentEnsure.ensureObject();\n };\n Object.defineProperty(FluentRuleCustomizer.prototype, \"rules\", {\n /**\n * Rules that have been defined using the fluent API.\n */\n get: function () {\n return this.fluentEnsure.rules;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Applies the rules to a class or object, making them discoverable by the StandardValidator.\n * @param target A class or object.\n */\n FluentRuleCustomizer.prototype.on = function (target) {\n return this.fluentEnsure.on(target);\n };\n ///////// FluentRules APIs /////////\n /**\n * Applies an ad-hoc rule function to the ensured property or object.\n * @param condition The function to validate the rule.\n * Will be called with two arguments, the property value and the object.\n * Should return a boolean or a Promise that resolves to a boolean.\n */\n FluentRuleCustomizer.prototype.satisfies = function (condition, config) {\n return this.fluentRules.satisfies(condition, config);\n };\n /**\n * Applies a rule by name.\n * @param name The name of the custom or standard rule.\n * @param args The rule's arguments.\n */\n FluentRuleCustomizer.prototype.satisfiesRule = function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_a = this.fluentRules).satisfiesRule.apply(_a, [name].concat(args));\n var _a;\n };\n /**\n * Applies the \"required\" rule to the property.\n * The value cannot be null, undefined or whitespace.\n */\n FluentRuleCustomizer.prototype.required = function () {\n return this.fluentRules.required();\n };\n /**\n * Applies the \"matches\" rule to the property.\n * Value must match the specified regular expression.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRuleCustomizer.prototype.matches = function (regex) {\n return this.fluentRules.matches(regex);\n };\n /**\n * Applies the \"email\" rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRuleCustomizer.prototype.email = function () {\n return this.fluentRules.email();\n };\n /**\n * Applies the \"minLength\" STRING validation rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRuleCustomizer.prototype.minLength = function (length) {\n return this.fluentRules.minLength(length);\n };\n /**\n * Applies the \"maxLength\" STRING validation rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRuleCustomizer.prototype.maxLength = function (length) {\n return this.fluentRules.maxLength(length);\n };\n /**\n * Applies the \"minItems\" ARRAY validation rule to the property.\n * null and undefined values are considered valid.\n */\n FluentRuleCustomizer.prototype.minItems = function (count) {\n return this.fluentRules.minItems(count);\n };\n /**\n * Applies the \"maxItems\" ARRAY validation rule to the property.\n * null and undefined values are considered valid.\n */\n FluentRuleCustomizer.prototype.maxItems = function (count) {\n return this.fluentRules.maxItems(count);\n };\n /**\n * Applies the \"equals\" validation rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRuleCustomizer.prototype.equals = function (expectedValue) {\n return this.fluentRules.equals(expectedValue);\n };\n return FluentRuleCustomizer;\n }());\n exports.FluentRuleCustomizer = FluentRuleCustomizer;\n /**\n * Part of the fluent rule API. Enables applying rules to properties and objects.\n */\n var FluentRules = (function () {\n function FluentRules(fluentEnsure, parsers, property) {\n this.fluentEnsure = fluentEnsure;\n this.parsers = parsers;\n this.property = property;\n /**\n * Current rule sequence number. Used to postpone evaluation of rules until rules\n * with lower sequence number have successfully validated. The \"then\" fluent API method\n * manages this property, there's usually no need to set it directly.\n */\n this.sequence = 0;\n }\n /**\n * Sets the display name of the ensured property.\n */\n FluentRules.prototype.displayName = function (name) {\n this.property.displayName = name;\n return this;\n };\n /**\n * Applies an ad-hoc rule function to the ensured property or object.\n * @param condition The function to validate the rule.\n * Will be called with two arguments, the property value and the object.\n * Should return a boolean or a Promise that resolves to a boolean.\n */\n FluentRules.prototype.satisfies = function (condition, config) {\n return new FluentRuleCustomizer(this.property, condition, config, this.fluentEnsure, this, this.parsers);\n };\n /**\n * Applies a rule by name.\n * @param name The name of the custom or standard rule.\n * @param args The rule's arguments.\n */\n FluentRules.prototype.satisfiesRule = function (name) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var rule = FluentRules.customRules[name];\n if (!rule) {\n // standard rule?\n rule = this[name];\n if (rule instanceof Function) {\n return rule.call.apply(rule, [this].concat(args));\n }\n throw new Error(\"Rule with name \\\"\" + name + \"\\\" does not exist.\");\n }\n var config = rule.argsToConfig ? rule.argsToConfig.apply(rule, args) : undefined;\n return this.satisfies(function (value, obj) {\n return (_a = rule.condition).call.apply(_a, [_this, value, obj].concat(args));\n var _a;\n }, config)\n .withMessageKey(name);\n };\n /**\n * Applies the \"required\" rule to the property.\n * The value cannot be null, undefined or whitespace.\n */\n FluentRules.prototype.required = function () {\n return this.satisfies(function (value) {\n return value !== null\n && value !== undefined\n && !(util_1.isString(value) && !/\\S/.test(value));\n }).withMessageKey('required');\n };\n /**\n * Applies the \"matches\" rule to the property.\n * Value must match the specified regular expression.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRules.prototype.matches = function (regex) {\n return this.satisfies(function (value) { return value === null || value === undefined || value.length === 0 || regex.test(value); })\n .withMessageKey('matches');\n };\n /**\n * Applies the \"email\" rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRules.prototype.email = function () {\n // regex from https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n /* tslint:disable:max-line-length */\n return this.matches(/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/)\n .withMessageKey('email');\n };\n /**\n * Applies the \"minLength\" STRING validation rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRules.prototype.minLength = function (length) {\n return this.satisfies(function (value) { return value === null || value === undefined || value.length === 0 || value.length >= length; }, { length: length })\n .withMessageKey('minLength');\n };\n /**\n * Applies the \"maxLength\" STRING validation rule to the property.\n * null, undefined and empty-string values are considered valid.\n */\n FluentRules.prototype.maxLength = function (length) {\n return this.satisfies(function (value) { return value === null || value === undefined || value.length === 0 || value.length <= length; }, { length: length })\n .withMessageKey('maxLength');\n };\n /**\n * Applies the \"minItems\" ARRAY validation rule to the property.\n * null and undefined values are considered valid.\n */\n FluentRules.prototype.minItems = function (count) {\n return this.satisfies(function (value) { return value === null || value === undefined || value.length >= count; }, { count: count })\n .withMessageKey('minItems');\n };\n /**\n * Applies the \"maxItems\" ARRAY validation rule to the property.\n * null and undefined values are considered valid.\n */\n FluentRules.prototype.maxItems = function (count) {\n return this.satisfies(function (value) { return value === null || value === undefined || value.length <= count; }, { count: count })\n .withMessageKey('maxItems');\n };\n /**\n * Applies the \"equals\" validation rule to the property.\n * null and undefined values are considered valid.\n */\n FluentRules.prototype.equals = function (expectedValue) {\n return this.satisfies(function (value) { return value === null || value === undefined || value === '' || value === expectedValue; }, { expectedValue: expectedValue })\n .withMessageKey('equals');\n };\n FluentRules.customRules = {};\n return FluentRules;\n }());\n exports.FluentRules = FluentRules;\n /**\n * Part of the fluent rule API. Enables targeting properties and objects with rules.\n */\n var FluentEnsure = (function () {\n function FluentEnsure(parsers) {\n this.parsers = parsers;\n /**\n * Rules that have been defined using the fluent API.\n */\n this.rules = [];\n }\n /**\n * Target a property with validation rules.\n * @param property The property to target. Can be the property name or a property accessor\n * function.\n */\n FluentEnsure.prototype.ensure = function (property) {\n this.assertInitialized();\n var name = this.parsers.property.parse(property);\n var fluentRules = new FluentRules(this, this.parsers, { name: name, displayName: null });\n return this.mergeRules(fluentRules, name);\n };\n /**\n * Targets an object with validation rules.\n */\n FluentEnsure.prototype.ensureObject = function () {\n this.assertInitialized();\n var fluentRules = new FluentRules(this, this.parsers, { name: null, displayName: null });\n return this.mergeRules(fluentRules, null);\n };\n /**\n * Applies the rules to a class or object, making them discoverable by the StandardValidator.\n * @param target A class or object.\n */\n FluentEnsure.prototype.on = function (target) {\n rules_1.Rules.set(target, this.rules);\n return this;\n };\n /**\n * Adds a rule definition to the sequenced ruleset.\n * @internal\n */\n FluentEnsure.prototype._addRule = function (rule) {\n while (this.rules.length < rule.sequence + 1) {\n this.rules.push([]);\n }\n this.rules[rule.sequence].push(rule);\n };\n FluentEnsure.prototype.assertInitialized = function () {\n if (this.parsers) {\n return;\n }\n throw new Error(\"Did you forget to add \\\".plugin('aurelia-validation')\\\" to your main.js?\");\n };\n FluentEnsure.prototype.mergeRules = function (fluentRules, propertyName) {\n var existingRules = this.rules.find(function (r) { return r.length > 0 && r[0].property.name === propertyName; });\n if (existingRules) {\n var rule = existingRules[existingRules.length - 1];\n fluentRules.sequence = rule.sequence;\n if (rule.property.displayName !== null) {\n fluentRules = fluentRules.displayName(rule.property.displayName);\n }\n }\n return fluentRules;\n };\n return FluentEnsure;\n }());\n exports.FluentEnsure = FluentEnsure;\n /**\n * Fluent rule definition API.\n */\n var ValidationRules = (function () {\n function ValidationRules() {\n }\n ValidationRules.initialize = function (messageParser, propertyParser) {\n this.parsers = {\n message: messageParser,\n property: propertyParser\n };\n };\n /**\n * Target a property with validation rules.\n * @param property The property to target. Can be the property name or a property accessor function.\n */\n ValidationRules.ensure = function (property) {\n return new FluentEnsure(ValidationRules.parsers).ensure(property);\n };\n /**\n * Targets an object with validation rules.\n */\n ValidationRules.ensureObject = function () {\n return new FluentEnsure(ValidationRules.parsers).ensureObject();\n };\n /**\n * Defines a custom rule.\n * @param name The name of the custom rule. Also serves as the message key.\n * @param condition The rule function.\n * @param message The message expression\n * @param argsToConfig A function that maps the rule's arguments to a \"config\"\n * object that can be used when evaluating the message expression.\n */\n ValidationRules.customRule = function (name, condition, message, argsToConfig) {\n validation_messages_1.validationMessages[name] = message;\n FluentRules.customRules[name] = { condition: condition, argsToConfig: argsToConfig };\n };\n /**\n * Returns rules with the matching tag.\n * @param rules The rules to search.\n * @param tag The tag to search for.\n */\n ValidationRules.taggedRules = function (rules, tag) {\n return rules.map(function (x) { return x.filter(function (r) { return r.tag === tag; }); });\n };\n /**\n * Returns rules that have no tag.\n * @param rules The rules to search.\n */\n ValidationRules.untaggedRules = function (rules) {\n return rules.map(function (x) { return x.filter(function (r) { return r.tag === undefined; }); });\n };\n /**\n * Removes the rules from a class or object.\n * @param target A class or object.\n */\n ValidationRules.off = function (target) {\n rules_1.Rules.unset(target);\n };\n return ValidationRules;\n }());\n exports.ValidationRules = ValidationRules;\n});\n\r\n!function ($) {\n\n \"use strict\";\n\n // TABCOLLAPSE CLASS DEFINITION\n // ======================\n\n var TabCollapse = function (el, options) {\n this.options = options;\n this.$tabs = $(el);\n\n this._accordionVisible = false; //content is attached to tabs at first\n this._initAccordion();\n this._checkStateOnResize();\n\n\n // checkState() has gone to setTimeout for making it possible to attach listeners to\n // shown-accordion.bs.tabcollapse event on page load.\n // See https://github.com/flatlogic/bootstrap-tabcollapse/issues/23\n var that = this;\n setTimeout(function() {\n that.checkState();\n }, 0);\n };\n\n TabCollapse.DEFAULTS = {\n accordionClass: 'visible-xs',\n tabsClass: 'hidden-xs',\n accordionTemplate: function(heading, groupId, parentId, active) {\n return '<div class=\"panel panel-default\">' +\n ' <div class=\"panel-heading\">' +\n ' <h4 class=\"panel-title\">' +\n ' </h4>' +\n ' </div>' +\n ' <div id=\"' + groupId + '\" class=\"panel-collapse collapse ' + (active ? 'in' : '') + '\">' +\n ' <div class=\"panel-body js-tabcollapse-panel-body\">' +\n ' </div>' +\n ' </div>' +\n '</div>'\n\n }\n };\n\n TabCollapse.prototype.checkState = function(){\n if (this.$tabs.is(':visible') && this._accordionVisible){\n this.showTabs();\n this._accordionVisible = false;\n } else if (this.$accordion.is(':visible') && !this._accordionVisible){\n this.showAccordion();\n this._accordionVisible = true;\n }\n };\n\n TabCollapse.prototype.showTabs = function(){\n var view = this;\n this.$tabs.trigger($.Event('show-tabs.bs.tabcollapse'));\n\n var $panelHeadings = this.$accordion.find('.js-tabcollapse-panel-heading').detach();\n\n $panelHeadings.each(function() {\n var $panelHeading = $(this),\n $parentLi = $panelHeading.data('bs.tabcollapse.parentLi');\n\n var $oldHeading = view._panelHeadingToTabHeading($panelHeading);\n\n $parentLi.removeClass('active');\n if ($parentLi.parent().hasClass('dropdown-menu') && !$parentLi.siblings('li').hasClass('active')) {\n $parentLi.parent().parent().removeClass('active');\n }\n\n if (!$oldHeading.hasClass('collapsed')) {\n $parentLi.addClass('active');\n if ($parentLi.parent().hasClass('dropdown-menu')) {\n $parentLi.parent().parent().addClass('active');\n }\n } else {\n $oldHeading.removeClass('collapsed');\n }\n\n $parentLi.append($panelHeading);\n });\n\n if (!$('li').hasClass('active')) {\n $('li').first().addClass('active')\n }\n\n var $panelBodies = this.$accordion.find('.js-tabcollapse-panel-body');\n $panelBodies.each(function(){\n var $panelBody = $(this),\n $tabPane = $panelBody.data('bs.tabcollapse.tabpane');\n $tabPane.append($panelBody.contents().detach());\n });\n this.$accordion.html('');\n\n if(this.options.updateLinks) {\n var $tabContents = this.getTabContentElement();\n $tabContents.find('[data-toggle-was=\"tab\"], [data-toggle-was=\"pill\"]').each(function() {\n var $el = $(this);\n var href = $el.attr('href').replace(/-collapse$/g, '');\n $el.attr({\n 'data-toggle': $el.attr('data-toggle-was'),\n 'data-toggle-was': '',\n 'data-parent': '',\n href: href\n });\n });\n }\n\n this.$tabs.trigger($.Event('shown-tabs.bs.tabcollapse'));\n };\n\n TabCollapse.prototype.getTabContentElement = function(){\n var $tabContents = $(this.options.tabContentSelector);\n if($tabContents.length === 0) {\n $tabContents = this.$tabs.siblings('.tab-content');\n }\n return $tabContents;\n };\n\n TabCollapse.prototype.showAccordion = function(){\n this.$tabs.trigger($.Event('show-accordion.bs.tabcollapse'));\n\n var $headings = this.$tabs.find('li:not(.dropdown) [data-toggle=\"tab\"], li:not(.dropdown) [data-toggle=\"pill\"]'),\n view = this;\n $headings.each(function(){\n var $heading = $(this),\n $parentLi = $heading.parent();\n $heading.data('bs.tabcollapse.parentLi', $parentLi);\n view.$accordion.append(view._createAccordionGroup(view.$accordion.attr('id'), $heading.detach()));\n });\n\n if(this.options.updateLinks) {\n var parentId = this.$accordion.attr('id');\n var $selector = this.$accordion.find('.js-tabcollapse-panel-body');\n $selector.find('[data-toggle=\"tab\"], [data-toggle=\"pill\"]').each(function() {\n var $el = $(this);\n var href = $el.attr('href') + '-collapse';\n $el.attr({\n 'data-toggle-was': $el.attr('data-toggle'),\n 'data-toggle': 'collapse',\n 'data-parent': '#' + parentId,\n href: href\n });\n });\n }\n\n this.$tabs.trigger($.Event('shown-accordion.bs.tabcollapse'));\n };\n\n TabCollapse.prototype._panelHeadingToTabHeading = function($heading) {\n var href = $heading.attr('href').replace(/-collapse$/g, '');\n $heading.attr({\n 'data-toggle': 'tab',\n 'href': href,\n 'data-parent': ''\n });\n return $heading;\n };\n\n TabCollapse.prototype._tabHeadingToPanelHeading = function($heading, groupId, parentId, active) {\n $heading.addClass('js-tabcollapse-panel-heading ' + (active ? '' : 'collapsed'));\n $heading.attr({\n 'data-toggle': 'collapse',\n 'data-parent': '#' + parentId,\n 'href': '#' + groupId\n });\n return $heading;\n };\n\n TabCollapse.prototype._checkStateOnResize = function(){\n var view = this;\n $(window).resize(function(){\n clearTimeout(view._resizeTimeout);\n view._resizeTimeout = setTimeout(function(){\n view.checkState();\n }, 100);\n });\n };\n\n\n TabCollapse.prototype._initAccordion = function(){\n var randomString = function() {\n var result = \"\",\n possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for( var i=0; i < 5; i++ ) {\n result += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return result;\n };\n\n var srcId = this.$tabs.attr('id'),\n accordionId = (srcId ? srcId : randomString()) + '-accordion';\n\n this.$accordion = $('<div class=\"panel-group ' + this.options.accordionClass + '\" id=\"' + accordionId +'\"></div>');\n this.$tabs.after(this.$accordion);\n this.$tabs.addClass(this.options.tabsClass);\n this.getTabContentElement().addClass(this.options.tabsClass);\n };\n\n TabCollapse.prototype._createAccordionGroup = function(parentId, $heading){\n var tabSelector = $heading.attr('data-target'),\n active = $heading.data('bs.tabcollapse.parentLi').is('.active');\n\n if (!tabSelector) {\n tabSelector = $heading.attr('href');\n tabSelector = tabSelector && tabSelector.replace(/.*(?=#[^\\s]*$)/, ''); //strip for ie7\n }\n\n var $tabPane = $(tabSelector),\n groupId = $tabPane.attr('id') + '-collapse',\n $panel = $(this.options.accordionTemplate($heading, groupId, parentId, active));\n $panel.find('.panel-heading > .panel-title').append(this._tabHeadingToPanelHeading($heading, groupId, parentId, active));\n $panel.find('.panel-body').append($tabPane.contents().detach())\n .data('bs.tabcollapse.tabpane', $tabPane);\n\n return $panel;\n };\n\n\n\n // TABCOLLAPSE PLUGIN DEFINITION\n // =======================\n\n $.fn.tabCollapse = function (option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.tabcollapse');\n var options = $.extend({}, TabCollapse.DEFAULTS, $this.data(), typeof option === 'object' && option);\n\n if (!data) $this.data('bs.tabcollapse', new TabCollapse(this, options));\n });\n };\n\n $.fn.tabCollapse.Constructor = TabCollapse;\n\n\n}(window.jQuery);\n\ndefine(\"bootstrap-tabcollapse\", [],function(){});\n\r\n/**\n * Owl Carousel v2.2.0\n * Copyright 2013-2016 David Deutsch\n * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)\n */\n/**\n * Owl carousel\n * @version 2.1.6\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n * @todo Lazy Load Icon\n * @todo prevent animationend bubling\n * @todo itemsScaleUp\n * @todo Test Zepto\n * @todo stagePadding calculate wrong active classes\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates a carousel.\n\t * @class The Owl Carousel.\n\t * @public\n\t * @param {HTMLElement|jQuery} element - The element to create the carousel for.\n\t * @param {Object} [options] - The options\n\t */\n\tfunction Owl(element, options) {\n\n\t\t/**\n\t\t * Current settings for the carousel.\n\t\t * @public\n\t\t */\n\t\tthis.settings = null;\n\n\t\t/**\n\t\t * Current options set by the caller including defaults.\n\t\t * @public\n\t\t */\n\t\tthis.options = $.extend({}, Owl.Defaults, options);\n\n\t\t/**\n\t\t * Plugin element.\n\t\t * @public\n\t\t */\n\t\tthis.$element = $(element);\n\n\t\t/**\n\t\t * Proxied event handlers.\n\t\t * @protected\n\t\t */\n\t\tthis._handlers = {};\n\n\t\t/**\n\t\t * References to the running plugins of this carousel.\n\t\t * @protected\n\t\t */\n\t\tthis._plugins = {};\n\n\t\t/**\n\t\t * Currently suppressed events to prevent them from beeing retriggered.\n\t\t * @protected\n\t\t */\n\t\tthis._supress = {};\n\n\t\t/**\n\t\t * Absolute current position.\n\t\t * @protected\n\t\t */\n\t\tthis._current = null;\n\n\t\t/**\n\t\t * Animation speed in milliseconds.\n\t\t * @protected\n\t\t */\n\t\tthis._speed = null;\n\n\t\t/**\n\t\t * Coordinates of all items in pixel.\n\t\t * @todo The name of this member is missleading.\n\t\t * @protected\n\t\t */\n\t\tthis._coordinates = [];\n\n\t\t/**\n\t\t * Current breakpoint.\n\t\t * @todo Real media queries would be nice.\n\t\t * @protected\n\t\t */\n\t\tthis._breakpoint = null;\n\n\t\t/**\n\t\t * Current width of the plugin element.\n\t\t */\n\t\tthis._width = null;\n\n\t\t/**\n\t\t * All real items.\n\t\t * @protected\n\t\t */\n\t\tthis._items = [];\n\n\t\t/**\n\t\t * All cloned items.\n\t\t * @protected\n\t\t */\n\t\tthis._clones = [];\n\n\t\t/**\n\t\t * Merge values of all items.\n\t\t * @todo Maybe this could be part of a plugin.\n\t\t * @protected\n\t\t */\n\t\tthis._mergers = [];\n\n\t\t/**\n\t\t * Widths of all items.\n\t\t */\n\t\tthis._widths = [];\n\n\t\t/**\n\t\t * Invalidated parts within the update process.\n\t\t * @protected\n\t\t */\n\t\tthis._invalidated = {};\n\n\t\t/**\n\t\t * Ordered list of workers for the update process.\n\t\t * @protected\n\t\t */\n\t\tthis._pipe = [];\n\n\t\t/**\n\t\t * Current state information for the drag operation.\n\t\t * @todo #261\n\t\t * @protected\n\t\t */\n\t\tthis._drag = {\n\t\t\ttime: null,\n\t\t\ttarget: null,\n\t\t\tpointer: null,\n\t\t\tstage: {\n\t\t\t\tstart: null,\n\t\t\t\tcurrent: null\n\t\t\t},\n\t\t\tdirection: null\n\t\t};\n\n\t\t/**\n\t\t * Current state information and their tags.\n\t\t * @type {Object}\n\t\t * @protected\n\t\t */\n\t\tthis._states = {\n\t\t\tcurrent: {},\n\t\t\ttags: {\n\t\t\t\t'initializing': [ 'busy' ],\n\t\t\t\t'animating': [ 'busy' ],\n\t\t\t\t'dragging': [ 'interacting' ]\n\t\t\t}\n\t\t};\n\n\t\t$.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {\n\t\t\tthis._handlers[handler] = $.proxy(this[handler], this);\n\t\t}, this));\n\n\t\t$.each(Owl.Plugins, $.proxy(function(key, plugin) {\n\t\t\tthis._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\n\t\t\t\t= new plugin(this);\n\t\t}, this));\n\n\t\t$.each(Owl.Workers, $.proxy(function(priority, worker) {\n\t\t\tthis._pipe.push({\n\t\t\t\t'filter': worker.filter,\n\t\t\t\t'run': $.proxy(worker.run, this)\n\t\t\t});\n\t\t}, this));\n\n\t\tthis.setup();\n\t\tthis.initialize();\n\t}\n\n\t/**\n\t * Default options for the carousel.\n\t * @public\n\t */\n\tOwl.Defaults = {\n\t\titems: 3,\n\t\tloop: false,\n\t\tcenter: false,\n\t\trewind: false,\n\n\t\tmouseDrag: true,\n\t\ttouchDrag: true,\n\t\tpullDrag: true,\n\t\tfreeDrag: false,\n\n\t\tmargin: 0,\n\t\tstagePadding: 0,\n\n\t\tmerge: false,\n\t\tmergeFit: true,\n\t\tautoWidth: false,\n\n\t\tstartPosition: 0,\n\t\trtl: false,\n\n\t\tsmartSpeed: 250,\n\t\tfluidSpeed: false,\n\t\tdragEndSpeed: false,\n\n\t\tresponsive: {},\n\t\tresponsiveRefreshRate: 200,\n\t\tresponsiveBaseElement: window,\n\n\t\tfallbackEasing: 'swing',\n\n\t\tinfo: false,\n\n\t\tnestedItemSelector: false,\n\t\titemElement: 'div',\n\t\tstageElement: 'div',\n\n\t\trefreshClass: 'owl-refresh',\n\t\tloadedClass: 'owl-loaded',\n\t\tloadingClass: 'owl-loading',\n\t\trtlClass: 'owl-rtl',\n\t\tresponsiveClass: 'owl-responsive',\n\t\tdragClass: 'owl-drag',\n\t\titemClass: 'owl-item',\n\t\tstageClass: 'owl-stage',\n\t\tstageOuterClass: 'owl-stage-outer',\n\t\tgrabClass: 'owl-grab'\n\t};\n\n\t/**\n\t * Enumeration for width.\n\t * @public\n\t * @readonly\n\t * @enum {String}\n\t */\n\tOwl.Width = {\n\t\tDefault: 'default',\n\t\tInner: 'inner',\n\t\tOuter: 'outer'\n\t};\n\n\t/**\n\t * Enumeration for types.\n\t * @public\n\t * @readonly\n\t * @enum {String}\n\t */\n\tOwl.Type = {\n\t\tEvent: 'event',\n\t\tState: 'state'\n\t};\n\n\t/**\n\t * Contains all registered plugins.\n\t * @public\n\t */\n\tOwl.Plugins = {};\n\n\t/**\n\t * List of workers involved in the update process.\n\t */\n\tOwl.Workers = [ {\n\t\tfilter: [ 'width', 'settings' ],\n\t\trun: function() {\n\t\t\tthis._width = this.$element.width();\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tcache.current = this._items && this._items[this.relative(this._current)];\n\t\t}\n\t}, {\n\t\tfilter: [ 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tthis.$stage.children('.cloned').remove();\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tvar margin = this.settings.margin || '',\n\t\t\t\tgrid = !this.settings.autoWidth,\n\t\t\t\trtl = this.settings.rtl,\n\t\t\t\tcss = {\n\t\t\t\t\t'width': 'auto',\n\t\t\t\t\t'margin-left': rtl ? margin : '',\n\t\t\t\t\t'margin-right': rtl ? '' : margin\n\t\t\t\t};\n\n\t\t\t!grid && this.$stage.children().css(css);\n\n\t\t\tcache.css = css;\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tvar width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\n\t\t\t\tmerge = null,\n\t\t\t\titerator = this._items.length,\n\t\t\t\tgrid = !this.settings.autoWidth,\n\t\t\t\twidths = [];\n\n\t\t\tcache.items = {\n\t\t\t\tmerge: false,\n\t\t\t\twidth: width\n\t\t\t};\n\n\t\t\twhile (iterator--) {\n\t\t\t\tmerge = this._mergers[iterator];\n\t\t\t\tmerge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\n\n\t\t\t\tcache.items.merge = merge > 1 || cache.items.merge;\n\n\t\t\t\twidths[iterator] = !grid ? this._items[iterator].width() : width * merge;\n\t\t\t}\n\n\t\t\tthis._widths = widths;\n\t\t}\n\t}, {\n\t\tfilter: [ 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar clones = [],\n\t\t\t\titems = this._items,\n\t\t\t\tsettings = this.settings,\n\t\t\t\tview = Math.max(settings.items * 2, 4),\n\t\t\t\tsize = Math.ceil(items.length / 2) * 2,\n\t\t\t\trepeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\n\t\t\t\tappend = '',\n\t\t\t\tprepend = '';\n\n\t\t\trepeat /= 2;\n\n\t\t\twhile (repeat--) {\n\t\t\t\tclones.push(this.normalize(clones.length / 2, true));\n\t\t\t\tappend = append + items[clones[clones.length - 1]][0].outerHTML;\n\t\t\t\tclones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\n\t\t\t\tprepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\n\t\t\t}\n\n\t\t\tthis._clones = clones;\n\n\t\t\t$(append).addClass('cloned').appendTo(this.$stage);\n\t\t\t$(prepend).addClass('cloned').prependTo(this.$stage);\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\n\t\t\t\tsize = this._clones.length + this._items.length,\n\t\t\t\titerator = -1,\n\t\t\t\tprevious = 0,\n\t\t\t\tcurrent = 0,\n\t\t\t\tcoordinates = [];\n\n\t\t\twhile (++iterator < size) {\n\t\t\t\tprevious = coordinates[iterator - 1] || 0;\n\t\t\t\tcurrent = this._widths[this.relative(iterator)] + this.settings.margin;\n\t\t\t\tcoordinates.push(previous + current * rtl);\n\t\t\t}\n\n\t\t\tthis._coordinates = coordinates;\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar padding = this.settings.stagePadding,\n\t\t\t\tcoordinates = this._coordinates,\n\t\t\t\tcss = {\n\t\t\t\t\t'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\n\t\t\t\t\t'padding-left': padding || '',\n\t\t\t\t\t'padding-right': padding || ''\n\t\t\t\t};\n\n\t\t\tthis.$stage.css(css);\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tvar iterator = this._coordinates.length,\n\t\t\t\tgrid = !this.settings.autoWidth,\n\t\t\t\titems = this.$stage.children();\n\n\t\t\tif (grid && cache.items.merge) {\n\t\t\t\twhile (iterator--) {\n\t\t\t\t\tcache.css.width = this._widths[this.relative(iterator)];\n\t\t\t\t\titems.eq(iterator).css(cache.css);\n\t\t\t\t}\n\t\t\t} else if (grid) {\n\t\t\t\tcache.css.width = cache.items.width;\n\t\t\t\titems.css(cache.css);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tfilter: [ 'items' ],\n\t\trun: function() {\n\t\t\tthis._coordinates.length < 1 && this.$stage.removeAttr('style');\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tcache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\n\t\t\tcache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\n\t\t\tthis.reset(cache.current);\n\t\t}\n\t}, {\n\t\tfilter: [ 'position' ],\n\t\trun: function() {\n\t\t\tthis.animate(this.coordinates(this._current));\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'position', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\n\t\t\t\tpadding = this.settings.stagePadding * 2,\n\t\t\t\tbegin = this.coordinates(this.current()) + padding,\n\t\t\t\tend = begin + this.width() * rtl,\n\t\t\t\tinner, outer, matches = [], i, n;\n\n\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\n\t\t\t\tinner = this._coordinates[i - 1] || 0;\n\t\t\t\touter = Math.abs(this._coordinates[i]) + padding * rtl;\n\n\t\t\t\tif ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\n\t\t\t\t\t|| (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\n\t\t\t\t\tmatches.push(i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.$stage.children('.active').removeClass('active');\n\t\t\tthis.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\n\n\t\t\tif (this.settings.center) {\n\t\t\t\tthis.$stage.children('.center').removeClass('center');\n\t\t\t\tthis.$stage.children().eq(this.current()).addClass('center');\n\t\t\t}\n\t\t}\n\t} ];\n\n\t/**\n\t * Initializes the carousel.\n\t * @protected\n\t */\n\tOwl.prototype.initialize = function() {\n\t\tthis.enter('initializing');\n\t\tthis.trigger('initialize');\n\n\t\tthis.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\n\n\t\tif (this.settings.autoWidth && !this.is('pre-loading')) {\n\t\t\tvar imgs, nestedSelector, width;\n\t\t\timgs = this.$element.find('img');\n\t\t\tnestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\n\t\t\twidth = this.$element.children(nestedSelector).width();\n\n\t\t\tif (imgs.length && width <= 0) {\n\t\t\t\tthis.preloadAutoWidthImages(imgs);\n\t\t\t}\n\t\t}\n\n\t\tthis.$element.addClass(this.options.loadingClass);\n\n\t\t// create stage\n\t\tthis.$stage = $('<' + this.settings.stageElement + ' class=\"' + this.settings.stageClass + '\"/>')\n\t\t\t.wrap('<div class=\"' + this.settings.stageOuterClass + '\"/>');\n\n\t\t// append stage\n\t\tthis.$element.append(this.$stage.parent());\n\n\t\t// append content\n\t\tthis.replace(this.$element.children().not(this.$stage.parent()));\n\n\t\t// check visibility\n\t\tif (this.$element.is(':visible')) {\n\t\t\t// update view\n\t\t\tthis.refresh();\n\t\t} else {\n\t\t\t// invalidate width\n\t\t\tthis.invalidate('width');\n\t\t}\n\n\t\tthis.$element\n\t\t\t.removeClass(this.options.loadingClass)\n\t\t\t.addClass(this.options.loadedClass);\n\n\t\t// register event handlers\n\t\tthis.registerEventHandlers();\n\n\t\tthis.leave('initializing');\n\t\tthis.trigger('initialized');\n\t};\n\n\t/**\n\t * Setups the current settings.\n\t * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\n\t * @todo Support for media queries by using `matchMedia` would be nice.\n\t * @public\n\t */\n\tOwl.prototype.setup = function() {\n\t\tvar viewport = this.viewport(),\n\t\t\toverwrites = this.options.responsive,\n\t\t\tmatch = -1,\n\t\t\tsettings = null;\n\n\t\tif (!overwrites) {\n\t\t\tsettings = $.extend({}, this.options);\n\t\t} else {\n\t\t\t$.each(overwrites, function(breakpoint) {\n\t\t\t\tif (breakpoint <= viewport && breakpoint > match) {\n\t\t\t\t\tmatch = Number(breakpoint);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsettings = $.extend({}, this.options, overwrites[match]);\n\t\t\tif (typeof settings.stagePadding === 'function') {\n\t\t\t\tsettings.stagePadding = settings.stagePadding();\n\t\t\t}\n\t\t\tdelete settings.responsive;\n\n\t\t\t// responsive class\n\t\t\tif (settings.responsiveClass) {\n\t\t\t\tthis.$element.attr('class',\n\t\t\t\t\tthis.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.trigger('change', { property: { name: 'settings', value: settings } });\n\t\tthis._breakpoint = match;\n\t\tthis.settings = settings;\n\t\tthis.invalidate('settings');\n\t\tthis.trigger('changed', { property: { name: 'settings', value: this.settings } });\n\t};\n\n\t/**\n\t * Updates option logic if necessery.\n\t * @protected\n\t */\n\tOwl.prototype.optionsLogic = function() {\n\t\tif (this.settings.autoWidth) {\n\t\t\tthis.settings.stagePadding = false;\n\t\t\tthis.settings.merge = false;\n\t\t}\n\t};\n\n\t/**\n\t * Prepares an item before add.\n\t * @todo Rename event parameter `content` to `item`.\n\t * @protected\n\t * @returns {jQuery|HTMLElement} - The item container.\n\t */\n\tOwl.prototype.prepare = function(item) {\n\t\tvar event = this.trigger('prepare', { content: item });\n\n\t\tif (!event.data) {\n\t\t\tevent.data = $('<' + this.settings.itemElement + '/>')\n\t\t\t\t.addClass(this.options.itemClass).append(item)\n\t\t}\n\n\t\tthis.trigger('prepared', { content: event.data });\n\n\t\treturn event.data;\n\t};\n\n\t/**\n\t * Updates the view.\n\t * @public\n\t */\n\tOwl.prototype.update = function() {\n\t\tvar i = 0,\n\t\t\tn = this._pipe.length,\n\t\t\tfilter = $.proxy(function(p) { return this[p] }, this._invalidated),\n\t\t\tcache = {};\n\n\t\twhile (i < n) {\n\t\t\tif (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\n\t\t\t\tthis._pipe[i].run(cache);\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\n\t\tthis._invalidated = {};\n\n\t\t!this.is('valid') && this.enter('valid');\n\t};\n\n\t/**\n\t * Gets the width of the view.\n\t * @public\n\t * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\n\t * @returns {Number} - The width of the view in pixel.\n\t */\n\tOwl.prototype.width = function(dimension) {\n\t\tdimension = dimension || Owl.Width.Default;\n\t\tswitch (dimension) {\n\t\t\tcase Owl.Width.Inner:\n\t\t\tcase Owl.Width.Outer:\n\t\t\t\treturn this._width;\n\t\t\tdefault:\n\t\t\t\treturn this._width - this.settings.stagePadding * 2 + this.settings.margin;\n\t\t}\n\t};\n\n\t/**\n\t * Refreshes the carousel primarily for adaptive purposes.\n\t * @public\n\t */\n\tOwl.prototype.refresh = function() {\n\t\tthis.enter('refreshing');\n\t\tthis.trigger('refresh');\n\n\t\tthis.setup();\n\n\t\tthis.optionsLogic();\n\n\t\tthis.$element.addClass(this.options.refreshClass);\n\n\t\tthis.update();\n\n\t\tthis.$element.removeClass(this.options.refreshClass);\n\n\t\tthis.leave('refreshing');\n\t\tthis.trigger('refreshed');\n\t};\n\n\t/**\n\t * Checks window `resize` event.\n\t * @protected\n\t */\n\tOwl.prototype.onThrottledResize = function() {\n\t\twindow.clearTimeout(this.resizeTimer);\n\t\tthis.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\n\t};\n\n\t/**\n\t * Checks window `resize` event.\n\t * @protected\n\t */\n\tOwl.prototype.onResize = function() {\n\t\tif (!this._items.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._width === this.$element.width()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.$element.is(':visible')) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.enter('resizing');\n\n\t\tif (this.trigger('resize').isDefaultPrevented()) {\n\t\t\tthis.leave('resizing');\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.invalidate('width');\n\n\t\tthis.refresh();\n\n\t\tthis.leave('resizing');\n\t\tthis.trigger('resized');\n\t};\n\n\t/**\n\t * Registers event handlers.\n\t * @todo Check `msPointerEnabled`\n\t * @todo #261\n\t * @protected\n\t */\n\tOwl.prototype.registerEventHandlers = function() {\n\t\tif ($.support.transition) {\n\t\t\tthis.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\n\t\t}\n\n\t\tif (this.settings.responsive !== false) {\n\t\t\tthis.on(window, 'resize', this._handlers.onThrottledResize);\n\t\t}\n\n\t\tif (this.settings.mouseDrag) {\n\t\t\tthis.$element.addClass(this.options.dragClass);\n\t\t\tthis.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\n\t\t\tthis.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });\n\t\t}\n\n\t\tif (this.settings.touchDrag){\n\t\t\tthis.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\n\t\t\tthis.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\n\t\t}\n\t};\n\n\t/**\n\t * Handles `touchstart` and `mousedown` events.\n\t * @todo Horizontal swipe threshold as option\n\t * @todo #261\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragStart = function(event) {\n\t\tvar stage = null;\n\n\t\tif (event.which === 3) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ($.support.transform) {\n\t\t\tstage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\n\t\t\tstage = {\n\t\t\t\tx: stage[stage.length === 16 ? 12 : 4],\n\t\t\t\ty: stage[stage.length === 16 ? 13 : 5]\n\t\t\t};\n\t\t} else {\n\t\t\tstage = this.$stage.position();\n\t\t\tstage = {\n\t\t\t\tx: this.settings.rtl ?\n\t\t\t\t\tstage.left + this.$stage.width() - this.width() + this.settings.margin :\n\t\t\t\t\tstage.left,\n\t\t\t\ty: stage.top\n\t\t\t};\n\t\t}\n\n\t\tif (this.is('animating')) {\n\t\t\t$.support.transform ? this.animate(stage.x) : this.$stage.stop()\n\t\t\tthis.invalidate('position');\n\t\t}\n\n\t\tthis.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\n\n\t\tthis.speed(0);\n\n\t\tthis._drag.time = new Date().getTime();\n\t\tthis._drag.target = $(event.target);\n\t\tthis._drag.stage.start = stage;\n\t\tthis._drag.stage.current = stage;\n\t\tthis._drag.pointer = this.pointer(event);\n\n\t\t$(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\n\n\t\t$(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {\n\t\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event));\n\n\t\t\t$(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\n\n\t\t\tif (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tthis.enter('dragging');\n\t\t\tthis.trigger('drag');\n\t\t}, this));\n\t};\n\n\t/**\n\t * Handles the `touchmove` and `mousemove` events.\n\t * @todo #261\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragMove = function(event) {\n\t\tvar minimum = null,\n\t\t\tmaximum = null,\n\t\t\tpull = null,\n\t\t\tdelta = this.difference(this._drag.pointer, this.pointer(event)),\n\t\t\tstage = this.difference(this._drag.stage.start, delta);\n\n\t\tif (!this.is('dragging')) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tif (this.settings.loop) {\n\t\t\tminimum = this.coordinates(this.minimum());\n\t\t\tmaximum = this.coordinates(this.maximum() + 1) - minimum;\n\t\t\tstage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\n\t\t} else {\n\t\t\tminimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\n\t\t\tmaximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\n\t\t\tpull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\n\t\t\tstage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\n\t\t}\n\n\t\tthis._drag.stage.current = stage;\n\n\t\tthis.animate(stage.x);\n\t};\n\n\t/**\n\t * Handles the `touchend` and `mouseup` events.\n\t * @todo #261\n\t * @todo Threshold for click event\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragEnd = function(event) {\n\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event)),\n\t\t\tstage = this._drag.stage.current,\n\t\t\tdirection = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\n\n\t\t$(document).off('.owl.core');\n\n\t\tthis.$element.removeClass(this.options.grabClass);\n\n\t\tif (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\n\t\t\tthis.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\n\t\t\tthis.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\n\t\t\tthis.invalidate('position');\n\t\t\tthis.update();\n\n\t\t\tthis._drag.direction = direction;\n\n\t\t\tif (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\n\t\t\t\tthis._drag.target.one('click.owl.core', function() { return false; });\n\t\t\t}\n\t\t}\n\n\t\tif (!this.is('dragging')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.leave('dragging');\n\t\tthis.trigger('dragged');\n\t};\n\n\t/**\n\t * Gets absolute position of the closest item for a coordinate.\n\t * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\n\t * @protected\n\t * @param {Number} coordinate - The coordinate in pixel.\n\t * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\n\t * @return {Number} - The absolute position of the closest item.\n\t */\n\tOwl.prototype.closest = function(coordinate, direction) {\n\t\tvar position = -1,\n\t\t\tpull = 30,\n\t\t\twidth = this.width(),\n\t\t\tcoordinates = this.coordinates();\n\n\t\tif (!this.settings.freeDrag) {\n\t\t\t// check closest item\n\t\t\t$.each(coordinates, $.proxy(function(index, value) {\n\t\t\t\t// on a left pull, check on current index\n\t\t\t\tif (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\n\t\t\t\t\tposition = index;\n\t\t\t\t// on a right pull, check on previous index\n\t\t\t\t// to do so, subtract width from value and set position = index + 1\n\t\t\t\t} else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\n\t\t\t\t\tposition = index + 1;\n\t\t\t\t} else if (this.op(coordinate, '<', value)\n\t\t\t\t\t&& this.op(coordinate, '>', coordinates[index + 1] || value - width)) {\n\t\t\t\t\tposition = direction === 'left' ? index + 1 : index;\n\t\t\t\t}\n\t\t\t\treturn position === -1;\n\t\t\t}, this));\n\t\t}\n\n\t\tif (!this.settings.loop) {\n\t\t\t// non loop boundries\n\t\t\tif (this.op(coordinate, '>', coordinates[this.minimum()])) {\n\t\t\t\tposition = coordinate = this.minimum();\n\t\t\t} else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\n\t\t\t\tposition = coordinate = this.maximum();\n\t\t\t}\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Animates the stage.\n\t * @todo #270\n\t * @public\n\t * @param {Number} coordinate - The coordinate in pixels.\n\t */\n\tOwl.prototype.animate = function(coordinate) {\n\t\tvar animate = this.speed() > 0;\n\n\t\tthis.is('animating') && this.onTransitionEnd();\n\n\t\tif (animate) {\n\t\t\tthis.enter('animating');\n\t\t\tthis.trigger('translate');\n\t\t}\n\n\t\tif ($.support.transform3d && $.support.transition) {\n\t\t\tthis.$stage.css({\n\t\t\t\ttransform: 'translate3d(' + coordinate + 'px,0px,0px)',\n\t\t\t\ttransition: (this.speed() / 1000) + 's'\n\t\t\t});\n\t\t} else if (animate) {\n\t\t\tthis.$stage.animate({\n\t\t\t\tleft: coordinate + 'px'\n\t\t\t}, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\n\t\t} else {\n\t\t\tthis.$stage.css({\n\t\t\t\tleft: coordinate + 'px'\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Checks whether the carousel is in a specific state or not.\n\t * @param {String} state - The state to check.\n\t * @returns {Boolean} - The flag which indicates if the carousel is busy.\n\t */\n\tOwl.prototype.is = function(state) {\n\t\treturn this._states.current[state] && this._states.current[state] > 0;\n\t};\n\n\t/**\n\t * Sets the absolute position of the current item.\n\t * @public\n\t * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\n\t * @returns {Number} - The absolute position of the current item.\n\t */\n\tOwl.prototype.current = function(position) {\n\t\tif (position === undefined) {\n\t\t\treturn this._current;\n\t\t}\n\n\t\tif (this._items.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tposition = this.normalize(position);\n\n\t\tif (this._current !== position) {\n\t\t\tvar event = this.trigger('change', { property: { name: 'position', value: position } });\n\n\t\t\tif (event.data !== undefined) {\n\t\t\t\tposition = this.normalize(event.data);\n\t\t\t}\n\n\t\t\tthis._current = position;\n\n\t\t\tthis.invalidate('position');\n\n\t\t\tthis.trigger('changed', { property: { name: 'position', value: this._current } });\n\t\t}\n\n\t\treturn this._current;\n\t};\n\n\t/**\n\t * Invalidates the given part of the update routine.\n\t * @param {String} [part] - The part to invalidate.\n\t * @returns {Array.<String>} - The invalidated parts.\n\t */\n\tOwl.prototype.invalidate = function(part) {\n\t\tif ($.type(part) === 'string') {\n\t\t\tthis._invalidated[part] = true;\n\t\t\tthis.is('valid') && this.leave('valid');\n\t\t}\n\t\treturn $.map(this._invalidated, function(v, i) { return i });\n\t};\n\n\t/**\n\t * Resets the absolute position of the current item.\n\t * @public\n\t * @param {Number} position - The absolute position of the new item.\n\t */\n\tOwl.prototype.reset = function(position) {\n\t\tposition = this.normalize(position);\n\n\t\tif (position === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._speed = 0;\n\t\tthis._current = position;\n\n\t\tthis.suppress([ 'translate', 'translated' ]);\n\n\t\tthis.animate(this.coordinates(position));\n\n\t\tthis.release([ 'translate', 'translated' ]);\n\t};\n\n\t/**\n\t * Normalizes an absolute or a relative position of an item.\n\t * @public\n\t * @param {Number} position - The absolute or relative position to normalize.\n\t * @param {Boolean} [relative=false] - Whether the given position is relative or not.\n\t * @returns {Number} - The normalized position.\n\t */\n\tOwl.prototype.normalize = function(position, relative) {\n\t\tvar n = this._items.length,\n\t\t\tm = relative ? 0 : this._clones.length;\n\n\t\tif (!this.isNumeric(position) || n < 1) {\n\t\t\tposition = undefined;\n\t\t} else if (position < 0 || position >= n + m) {\n\t\t\tposition = ((position - m / 2) % n + n) % n + m / 2;\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Converts an absolute position of an item into a relative one.\n\t * @public\n\t * @param {Number} position - The absolute position to convert.\n\t * @returns {Number} - The converted position.\n\t */\n\tOwl.prototype.relative = function(position) {\n\t\tposition -= this._clones.length / 2;\n\t\treturn this.normalize(position, true);\n\t};\n\n\t/**\n\t * Gets the maximum position for the current item.\n\t * @public\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n\t * @returns {Number}\n\t */\n\tOwl.prototype.maximum = function(relative) {\n\t\tvar settings = this.settings,\n\t\t\tmaximum = this._coordinates.length,\n\t\t\titerator,\n\t\t\treciprocalItemsWidth,\n\t\t\telementWidth;\n\n\t\tif (settings.loop) {\n\t\t\tmaximum = this._clones.length / 2 + this._items.length - 1;\n\t\t} else if (settings.autoWidth || settings.merge) {\n\t\t\titerator = this._items.length;\n\t\t\treciprocalItemsWidth = this._items[--iterator].width();\n\t\t\telementWidth = this.$element.width();\n\t\t\twhile (iterator--) {\n\t\t\t\treciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\n\t\t\t\tif (reciprocalItemsWidth > elementWidth) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmaximum = iterator + 1;\n\t\t} else if (settings.center) {\n\t\t\tmaximum = this._items.length - 1;\n\t\t} else {\n\t\t\tmaximum = this._items.length - settings.items;\n\t\t}\n\n\t\tif (relative) {\n\t\t\tmaximum -= this._clones.length / 2;\n\t\t}\n\n\t\treturn Math.max(maximum, 0);\n\t};\n\n\t/**\n\t * Gets the minimum position for the current item.\n\t * @public\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n\t * @returns {Number}\n\t */\n\tOwl.prototype.minimum = function(relative) {\n\t\treturn relative ? 0 : this._clones.length / 2;\n\t};\n\n\t/**\n\t * Gets an item at the specified relative position.\n\t * @public\n\t * @param {Number} [position] - The relative position of the item.\n\t * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.\n\t */\n\tOwl.prototype.items = function(position) {\n\t\tif (position === undefined) {\n\t\t\treturn this._items.slice();\n\t\t}\n\n\t\tposition = this.normalize(position, true);\n\t\treturn this._items[position];\n\t};\n\n\t/**\n\t * Gets an item at the specified relative position.\n\t * @public\n\t * @param {Number} [position] - The relative position of the item.\n\t * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.\n\t */\n\tOwl.prototype.mergers = function(position) {\n\t\tif (position === undefined) {\n\t\t\treturn this._mergers.slice();\n\t\t}\n\n\t\tposition = this.normalize(position, true);\n\t\treturn this._mergers[position];\n\t};\n\n\t/**\n\t * Gets the absolute positions of clones for an item.\n\t * @public\n\t * @param {Number} [position] - The relative position of the item.\n\t * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given.\n\t */\n\tOwl.prototype.clones = function(position) {\n\t\tvar odd = this._clones.length / 2,\n\t\t\teven = odd + this._items.length,\n\t\t\tmap = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\n\n\t\tif (position === undefined) {\n\t\t\treturn $.map(this._clones, function(v, i) { return map(i) });\n\t\t}\n\n\t\treturn $.map(this._clones, function(v, i) { return v === position ? map(i) : null });\n\t};\n\n\t/**\n\t * Sets the current animation speed.\n\t * @public\n\t * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\n\t * @returns {Number} - The current animation speed in milliseconds.\n\t */\n\tOwl.prototype.speed = function(speed) {\n\t\tif (speed !== undefined) {\n\t\t\tthis._speed = speed;\n\t\t}\n\n\t\treturn this._speed;\n\t};\n\n\t/**\n\t * Gets the coordinate of an item.\n\t * @todo The name of this method is missleanding.\n\t * @public\n\t * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\n\t * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates.\n\t */\n\tOwl.prototype.coordinates = function(position) {\n\t\tvar multiplier = 1,\n\t\t\tnewPosition = position - 1,\n\t\t\tcoordinate;\n\n\t\tif (position === undefined) {\n\t\t\treturn $.map(this._coordinates, $.proxy(function(coordinate, index) {\n\t\t\t\treturn this.coordinates(index);\n\t\t\t}, this));\n\t\t}\n\n\t\tif (this.settings.center) {\n\t\t\tif (this.settings.rtl) {\n\t\t\t\tmultiplier = -1;\n\t\t\t\tnewPosition = position + 1;\n\t\t\t}\n\n\t\t\tcoordinate = this._coordinates[position];\n\t\t\tcoordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\n\t\t} else {\n\t\t\tcoordinate = this._coordinates[newPosition] || 0;\n\t\t}\n\n\t\tcoordinate = Math.ceil(coordinate);\n\n\t\treturn coordinate;\n\t};\n\n\t/**\n\t * Calculates the speed for a translation.\n\t * @protected\n\t * @param {Number} from - The absolute position of the start item.\n\t * @param {Number} to - The absolute position of the target item.\n\t * @param {Number} [factor=undefined] - The time factor in milliseconds.\n\t * @returns {Number} - The time in milliseconds for the translation.\n\t */\n\tOwl.prototype.duration = function(from, to, factor) {\n\t\tif (factor === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\n\t};\n\n\t/**\n\t * Slides to the specified item.\n\t * @public\n\t * @param {Number} position - The position of the item.\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t */\n\tOwl.prototype.to = function(position, speed) {\n\t\tvar current = this.current(),\n\t\t\trevert = null,\n\t\t\tdistance = position - this.relative(current),\n\t\t\tdirection = (distance > 0) - (distance < 0),\n\t\t\titems = this._items.length,\n\t\t\tminimum = this.minimum(),\n\t\t\tmaximum = this.maximum();\n\n\t\tif (this.settings.loop) {\n\t\t\tif (!this.settings.rewind && Math.abs(distance) > items / 2) {\n\t\t\t\tdistance += direction * -1 * items;\n\t\t\t}\n\n\t\t\tposition = current + distance;\n\t\t\trevert = ((position - minimum) % items + items) % items + minimum;\n\n\t\t\tif (revert !== position && revert - distance <= maximum && revert - distance > 0) {\n\t\t\t\tcurrent = revert - distance;\n\t\t\t\tposition = revert;\n\t\t\t\tthis.reset(current);\n\t\t\t}\n\t\t} else if (this.settings.rewind) {\n\t\t\tmaximum += 1;\n\t\t\tposition = (position % maximum + maximum) % maximum;\n\t\t} else {\n\t\t\tposition = Math.max(minimum, Math.min(maximum, position));\n\t\t}\n\n\t\tthis.speed(this.duration(current, position, speed));\n\t\tthis.current(position);\n\n\t\tif (this.$element.is(':visible')) {\n\t\t\tthis.update();\n\t\t}\n\t};\n\n\t/**\n\t * Slides to the next item.\n\t * @public\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t */\n\tOwl.prototype.next = function(speed) {\n\t\tspeed = speed || false;\n\t\tthis.to(this.relative(this.current()) + 1, speed);\n\t};\n\n\t/**\n\t * Slides to the previous item.\n\t * @public\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t */\n\tOwl.prototype.prev = function(speed) {\n\t\tspeed = speed || false;\n\t\tthis.to(this.relative(this.current()) - 1, speed);\n\t};\n\n\t/**\n\t * Handles the end of an animation.\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onTransitionEnd = function(event) {\n\n\t\t// if css2 animation then event object is undefined\n\t\tif (event !== undefined) {\n\t\t\tevent.stopPropagation();\n\n\t\t\t// Catch only owl-stage transitionEnd event\n\t\t\tif ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.leave('animating');\n\t\tthis.trigger('translated');\n\t};\n\n\t/**\n\t * Gets viewport width.\n\t * @protected\n\t * @return {Number} - The width in pixel.\n\t */\n\tOwl.prototype.viewport = function() {\n\t\tvar width;\n\t\tif (this.options.responsiveBaseElement !== window) {\n\t\t\twidth = $(this.options.responsiveBaseElement).width();\n\t\t} else if (window.innerWidth) {\n\t\t\twidth = window.innerWidth;\n\t\t} else if (document.documentElement && document.documentElement.clientWidth) {\n\t\t\twidth = document.documentElement.clientWidth;\n\t\t} else {\n\t\t\tthrow 'Can not detect viewport width.';\n\t\t}\n\t\treturn width;\n\t};\n\n\t/**\n\t * Replaces the current content.\n\t * @public\n\t * @param {HTMLElement|jQuery|String} content - The new content.\n\t */\n\tOwl.prototype.replace = function(content) {\n\t\tthis.$stage.empty();\n\t\tthis._items = [];\n\n\t\tif (content) {\n\t\t\tcontent = (content instanceof jQuery) ? content : $(content);\n\t\t}\n\n\t\tif (this.settings.nestedItemSelector) {\n\t\t\tcontent = content.find('.' + this.settings.nestedItemSelector);\n\t\t}\n\n\t\tcontent.filter(function() {\n\t\t\treturn this.nodeType === 1;\n\t\t}).each($.proxy(function(index, item) {\n\t\t\titem = this.prepare(item);\n\t\t\tthis.$stage.append(item);\n\t\t\tthis._items.push(item);\n\t\t\tthis._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t}, this));\n\n\t\tthis.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\n\n\t\tthis.invalidate('items');\n\t};\n\n\t/**\n\t * Adds an item.\n\t * @todo Use `item` instead of `content` for the event arguments.\n\t * @public\n\t * @param {HTMLElement|jQuery|String} content - The item content to add.\n\t * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\n\t */\n\tOwl.prototype.add = function(content, position) {\n\t\tvar current = this.relative(this._current);\n\n\t\tposition = position === undefined ? this._items.length : this.normalize(position, true);\n\t\tcontent = content instanceof jQuery ? content : $(content);\n\n\t\tthis.trigger('add', { content: content, position: position });\n\n\t\tcontent = this.prepare(content);\n\n\t\tif (this._items.length === 0 || position === this._items.length) {\n\t\t\tthis._items.length === 0 && this.$stage.append(content);\n\t\t\tthis._items.length !== 0 && this._items[position - 1].after(content);\n\t\t\tthis._items.push(content);\n\t\t\tthis._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t} else {\n\t\t\tthis._items[position].before(content);\n\t\t\tthis._items.splice(position, 0, content);\n\t\t\tthis._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t}\n\n\t\tthis._items[current] && this.reset(this._items[current].index());\n\n\t\tthis.invalidate('items');\n\n\t\tthis.trigger('added', { content: content, position: position });\n\t};\n\n\t/**\n\t * Removes an item by its position.\n\t * @todo Use `item` instead of `content` for the event arguments.\n\t * @public\n\t * @param {Number} position - The relative position of the item to remove.\n\t */\n\tOwl.prototype.remove = function(position) {\n\t\tposition = this.normalize(position, true);\n\n\t\tif (position === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.trigger('remove', { content: this._items[position], position: position });\n\n\t\tthis._items[position].remove();\n\t\tthis._items.splice(position, 1);\n\t\tthis._mergers.splice(position, 1);\n\n\t\tthis.invalidate('items');\n\n\t\tthis.trigger('removed', { content: null, position: position });\n\t};\n\n\t/**\n\t * Preloads images with auto width.\n\t * @todo Replace by a more generic approach\n\t * @protected\n\t */\n\tOwl.prototype.preloadAutoWidthImages = function(images) {\n\t\timages.each($.proxy(function(i, element) {\n\t\t\tthis.enter('pre-loading');\n\t\t\telement = $(element);\n\t\t\t$(new Image()).one('load', $.proxy(function(e) {\n\t\t\t\telement.attr('src', e.target.src);\n\t\t\t\telement.css('opacity', 1);\n\t\t\t\tthis.leave('pre-loading');\n\t\t\t\t!this.is('pre-loading') && !this.is('initializing') && this.refresh();\n\t\t\t}, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\n\t\t}, this));\n\t};\n\n\t/**\n\t * Destroys the carousel.\n\t * @public\n\t */\n\tOwl.prototype.destroy = function() {\n\n\t\tthis.$element.off('.owl.core');\n\t\tthis.$stage.off('.owl.core');\n\t\t$(document).off('.owl.core');\n\n\t\tif (this.settings.responsive !== false) {\n\t\t\twindow.clearTimeout(this.resizeTimer);\n\t\t\tthis.off(window, 'resize', this._handlers.onThrottledResize);\n\t\t}\n\n\t\tfor (var i in this._plugins) {\n\t\t\tthis._plugins[i].destroy();\n\t\t}\n\n\t\tthis.$stage.children('.cloned').remove();\n\n\t\tthis.$stage.unwrap();\n\t\tthis.$stage.children().contents().unwrap();\n\t\tthis.$stage.children().unwrap();\n\n\t\tthis.$element\n\t\t\t.removeClass(this.options.refreshClass)\n\t\t\t.removeClass(this.options.loadingClass)\n\t\t\t.removeClass(this.options.loadedClass)\n\t\t\t.removeClass(this.options.rtlClass)\n\t\t\t.removeClass(this.options.dragClass)\n\t\t\t.removeClass(this.options.grabClass)\n\t\t\t.attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\n\t\t\t.removeData('owl.carousel');\n\t};\n\n\t/**\n\t * Operators to calculate right-to-left and left-to-right.\n\t * @protected\n\t * @param {Number} [a] - The left side operand.\n\t * @param {String} [o] - The operator.\n\t * @param {Number} [b] - The right side operand.\n\t */\n\tOwl.prototype.op = function(a, o, b) {\n\t\tvar rtl = this.settings.rtl;\n\t\tswitch (o) {\n\t\t\tcase '<':\n\t\t\t\treturn rtl ? a > b : a < b;\n\t\t\tcase '>':\n\t\t\t\treturn rtl ? a < b : a > b;\n\t\t\tcase '>=':\n\t\t\t\treturn rtl ? a <= b : a >= b;\n\t\t\tcase '<=':\n\t\t\t\treturn rtl ? a >= b : a <= b;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t/**\n\t * Attaches to an internal event.\n\t * @protected\n\t * @param {HTMLElement} element - The event source.\n\t * @param {String} event - The event name.\n\t * @param {Function} listener - The event handler to attach.\n\t * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\n\t */\n\tOwl.prototype.on = function(element, event, listener, capture) {\n\t\tif (element.addEventListener) {\n\t\t\telement.addEventListener(event, listener, capture);\n\t\t} else if (element.attachEvent) {\n\t\t\telement.attachEvent('on' + event, listener);\n\t\t}\n\t};\n\n\t/**\n\t * Detaches from an internal event.\n\t * @protected\n\t * @param {HTMLElement} element - The event source.\n\t * @param {String} event - The event name.\n\t * @param {Function} listener - The attached event handler to detach.\n\t * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\n\t */\n\tOwl.prototype.off = function(element, event, listener, capture) {\n\t\tif (element.removeEventListener) {\n\t\t\telement.removeEventListener(event, listener, capture);\n\t\t} else if (element.detachEvent) {\n\t\t\telement.detachEvent('on' + event, listener);\n\t\t}\n\t};\n\n\t/**\n\t * Triggers a public event.\n\t * @todo Remove `status`, `relatedTarget` should be used instead.\n\t * @protected\n\t * @param {String} name - The event name.\n\t * @param {*} [data=null] - The event data.\n\t * @param {String} [namespace=carousel] - The event namespace.\n\t * @param {String} [state] - The state which is associated with the event.\n\t * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\n\t * @returns {Event} - The event arguments.\n\t */\n\tOwl.prototype.trigger = function(name, data, namespace, state, enter) {\n\t\tvar status = {\n\t\t\titem: { count: this._items.length, index: this.current() }\n\t\t}, handler = $.camelCase(\n\t\t\t$.grep([ 'on', name, namespace ], function(v) { return v })\n\t\t\t\t.join('-').toLowerCase()\n\t\t), event = $.Event(\n\t\t\t[ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),\n\t\t\t$.extend({ relatedTarget: this }, status, data)\n\t\t);\n\n\t\tif (!this._supress[name]) {\n\t\t\t$.each(this._plugins, function(name, plugin) {\n\t\t\t\tif (plugin.onTrigger) {\n\t\t\t\t\tplugin.onTrigger(event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.register({ type: Owl.Type.Event, name: name });\n\t\t\tthis.$element.trigger(event);\n\n\t\t\tif (this.settings && typeof this.settings[handler] === 'function') {\n\t\t\t\tthis.settings[handler].call(this, event);\n\t\t\t}\n\t\t}\n\n\t\treturn event;\n\t};\n\n\t/**\n\t * Enters a state.\n\t * @param name - The state name.\n\t */\n\tOwl.prototype.enter = function(name) {\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\n\t\t\tif (this._states.current[name] === undefined) {\n\t\t\t\tthis._states.current[name] = 0;\n\t\t\t}\n\n\t\t\tthis._states.current[name]++;\n\t\t}, this));\n\t};\n\n\t/**\n\t * Leaves a state.\n\t * @param name - The state name.\n\t */\n\tOwl.prototype.leave = function(name) {\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\n\t\t\tthis._states.current[name]--;\n\t\t}, this));\n\t};\n\n\t/**\n\t * Registers an event or state.\n\t * @public\n\t * @param {Object} object - The event or state to register.\n\t */\n\tOwl.prototype.register = function(object) {\n\t\tif (object.type === Owl.Type.Event) {\n\t\t\tif (!$.event.special[object.name]) {\n\t\t\t\t$.event.special[object.name] = {};\n\t\t\t}\n\n\t\t\tif (!$.event.special[object.name].owl) {\n\t\t\t\tvar _default = $.event.special[object.name]._default;\n\t\t\t\t$.event.special[object.name]._default = function(e) {\n\t\t\t\t\tif (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\n\t\t\t\t\t\treturn _default.apply(this, arguments);\n\t\t\t\t\t}\n\t\t\t\t\treturn e.namespace && e.namespace.indexOf('owl') > -1;\n\t\t\t\t};\n\t\t\t\t$.event.special[object.name].owl = true;\n\t\t\t}\n\t\t} else if (object.type === Owl.Type.State) {\n\t\t\tif (!this._states.tags[object.name]) {\n\t\t\t\tthis._states.tags[object.name] = object.tags;\n\t\t\t} else {\n\t\t\t\tthis._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\n\t\t\t}\n\n\t\t\tthis._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {\n\t\t\t\treturn $.inArray(tag, this._states.tags[object.name]) === i;\n\t\t\t}, this));\n\t\t}\n\t};\n\n\t/**\n\t * Suppresses events.\n\t * @protected\n\t * @param {Array.<String>} events - The events to suppress.\n\t */\n\tOwl.prototype.suppress = function(events) {\n\t\t$.each(events, $.proxy(function(index, event) {\n\t\t\tthis._supress[event] = true;\n\t\t}, this));\n\t};\n\n\t/**\n\t * Releases suppressed events.\n\t * @protected\n\t * @param {Array.<String>} events - The events to release.\n\t */\n\tOwl.prototype.release = function(events) {\n\t\t$.each(events, $.proxy(function(index, event) {\n\t\t\tdelete this._supress[event];\n\t\t}, this));\n\t};\n\n\t/**\n\t * Gets unified pointer coordinates from event.\n\t * @todo #261\n\t * @protected\n\t * @param {Event} - The `mousedown` or `touchstart` event.\n\t * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\n\t */\n\tOwl.prototype.pointer = function(event) {\n\t\tvar result = { x: null, y: null };\n\n\t\tevent = event.originalEvent || event || window.event;\n\n\t\tevent = event.touches && event.touches.length ?\n\t\t\tevent.touches[0] : event.changedTouches && event.changedTouches.length ?\n\t\t\t\tevent.changedTouches[0] : event;\n\n\t\tif (event.pageX) {\n\t\t\tresult.x = event.pageX;\n\t\t\tresult.y = event.pageY;\n\t\t} else {\n\t\t\tresult.x = event.clientX;\n\t\t\tresult.y = event.clientY;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t/**\n\t * Determines if the input is a Number or something that can be coerced to a Number\n\t * @protected\n\t * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\n\t * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\n\t */\n\tOwl.prototype.isNumeric = function(number) {\n\t\treturn !isNaN(parseFloat(number));\n\t};\n\n\t/**\n\t * Gets the difference of two vectors.\n\t * @todo #261\n\t * @protected\n\t * @param {Object} - The first vector.\n\t * @param {Object} - The second vector.\n\t * @returns {Object} - The difference.\n\t */\n\tOwl.prototype.difference = function(first, second) {\n\t\treturn {\n\t\t\tx: first.x - second.x,\n\t\t\ty: first.y - second.y\n\t\t};\n\t};\n\n\t/**\n\t * The jQuery Plugin for the Owl Carousel\n\t * @todo Navigation plugin `next` and `prev`\n\t * @public\n\t */\n\t$.fn.owlCarousel = function(option) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\t\treturn this.each(function() {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('owl.carousel');\n\n\t\t\tif (!data) {\n\t\t\t\tdata = new Owl(this, typeof option == 'object' && option);\n\t\t\t\t$this.data('owl.carousel', data);\n\n\t\t\t\t$.each([\n\t\t\t\t\t'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\n\t\t\t\t], function(i, event) {\n\t\t\t\t\tdata.register({ type: Owl.Type.Event, name: event });\n\t\t\t\t\tdata.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {\n\t\t\t\t\t\tif (e.namespace && e.relatedTarget !== this) {\n\t\t\t\t\t\t\tthis.suppress([ event ]);\n\t\t\t\t\t\t\tdata[event].apply(this, [].slice.call(arguments, 1));\n\t\t\t\t\t\t\tthis.release([ event ]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, data));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (typeof option == 'string' && option.charAt(0) !== '_') {\n\t\t\t\tdata[option].apply(data, args);\n\t\t\t}\n\t\t});\n\t};\n\n\t/**\n\t * The constructor for the jQuery Plugin\n\t * @public\n\t */\n\t$.fn.owlCarousel.Constructor = Owl;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * AutoRefresh Plugin\n * @version 2.1.0\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the auto refresh plugin.\n\t * @class The Auto Refresh Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar AutoRefresh = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Refresh interval.\n\t\t * @protected\n\t\t * @type {number}\n\t\t */\n\t\tthis._interval = null;\n\n\t\t/**\n\t\t * Whether the element is currently visible or not.\n\t\t * @protected\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._visible = null;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoRefresh) {\n\t\t\t\t\tthis.watch();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAutoRefresh.Defaults = {\n\t\tautoRefresh: true,\n\t\tautoRefreshInterval: 500\n\t};\n\n\t/**\n\t * Watches the element.\n\t */\n\tAutoRefresh.prototype.watch = function() {\n\t\tif (this._interval) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._visible = this._core.$element.is(':visible');\n\t\tthis._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\n\t};\n\n\t/**\n\t * Refreshes the element.\n\t */\n\tAutoRefresh.prototype.refresh = function() {\n\t\tif (this._core.$element.is(':visible') === this._visible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._visible = !this._visible;\n\n\t\tthis._core.$element.toggleClass('owl-hidden', !this._visible);\n\n\t\tthis._visible && (this._core.invalidate('width') && this._core.refresh());\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tAutoRefresh.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\twindow.clearInterval(this._interval);\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Lazy Plugin\n * @version 2.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the lazy plugin.\n\t * @class The Lazy Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Lazy = function(carousel) {\n\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Already loaded items.\n\t\t * @protected\n\t\t * @type {Array.<jQuery>}\n\t\t */\n\t\tthis._loaded = [];\n\n\t\t/**\n\t\t * Event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (!e.namespace) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!this._core.settings || !this._core.settings.lazyLoad) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ((e.property && e.property.name == 'position') || e.type == 'initialized') {\n\t\t\t\t\tvar settings = this._core.settings,\n\t\t\t\t\t\tn = (settings.center && Math.ceil(settings.items / 2) || settings.items),\n\t\t\t\t\t\ti = ((settings.center && n * -1) || 0),\n\t\t\t\t\t\tposition = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\n\t\t\t\t\t\tclones = this._core.clones().length,\n\t\t\t\t\t\tload = $.proxy(function(i, v) { this.load(v) }, this);\n\n\t\t\t\t\twhile (i++ < n) {\n\t\t\t\t\t\tthis.load(clones / 2 + this._core.relative(position));\n\t\t\t\t\t\tclones && $.each(this._core.clones(this._core.relative(position)), load);\n\t\t\t\t\t\tposition++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set the default options\n\t\tthis._core.options = $.extend({}, Lazy.Defaults, this._core.options);\n\n\t\t// register event handler\n\t\tthis._core.$element.on(this._handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tLazy.Defaults = {\n\t\tlazyLoad: false\n\t};\n\n\t/**\n\t * Loads all resources of an item at the specified position.\n\t * @param {Number} position - The absolute position of the item.\n\t * @protected\n\t */\n\tLazy.prototype.load = function(position) {\n\t\tvar $item = this._core.$stage.children().eq(position),\n\t\t\t$elements = $item && $item.find('.owl-lazy');\n\n\t\tif (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\t$elements.each($.proxy(function(index, element) {\n\t\t\tvar $element = $(element), image,\n\t\t\t\turl = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');\n\n\t\t\tthis._core.trigger('load', { element: $element, url: url }, 'lazy');\n\n\t\t\tif ($element.is('img')) {\n\t\t\t\t$element.one('load.owl.lazy', $.proxy(function() {\n\t\t\t\t\t$element.css('opacity', 1);\n\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\n\t\t\t\t}, this)).attr('src', url);\n\t\t\t} else {\n\t\t\t\timage = new Image();\n\t\t\t\timage.onload = $.proxy(function() {\n\t\t\t\t\t$element.css({\n\t\t\t\t\t\t'background-image': 'url(' + url + ')',\n\t\t\t\t\t\t'opacity': '1'\n\t\t\t\t\t});\n\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\n\t\t\t\t}, this);\n\t\t\t\timage.src = url;\n\t\t\t}\n\t\t}, this));\n\n\t\tthis._loaded.push($item.get(0));\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tLazy.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this.handlers) {\n\t\t\tthis._core.$element.off(handler, this.handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * AutoHeight Plugin\n * @version 2.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the auto height plugin.\n\t * @class The Auto Height Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar AutoHeight = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight) {\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'loaded.owl.lazy': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight\n\t\t\t\t\t&& e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAutoHeight.Defaults = {\n\t\tautoHeight: false,\n\t\tautoHeightClass: 'owl-height'\n\t};\n\n\t/**\n\t * Updates the view.\n\t */\n\tAutoHeight.prototype.update = function() {\n\t\tvar start = this._core._current,\n\t\t\tend = start + this._core.settings.items,\n\t\t\tvisible = this._core.$stage.children().toArray().slice(start, end),\n\t\t\theights = [],\n\t\t\tmaxheight = 0;\n\n\t\t$.each(visible, function(index, item) {\n\t\t\theights.push($(item).height());\n\t\t});\n\n\t\tmaxheight = Math.max.apply(null, heights);\n\n\t\tthis._core.$stage.parent()\n\t\t\t.height(maxheight)\n\t\t\t.addClass(this._core.settings.autoHeightClass);\n\t};\n\n\tAutoHeight.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Video Plugin\n * @version 2.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the video plugin.\n\t * @class The Video Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Video = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Cache all video URLs.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._videos = {};\n\n\t\t/**\n\t\t * Current playing item.\n\t\t * @protected\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis._playing = null;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @todo The cloned content removale is too late\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'resize.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.video && this.isInFullScreen()) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.is('resizing')) {\n\t\t\t\t\tthis._core.$stage.find('.cloned .owl-video-frame').remove();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name === 'position' && this._playing) {\n\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (!e.namespace) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar $element = $(e.content).find('.owl-video');\n\n\t\t\t\tif ($element.length) {\n\t\t\t\t\t$element.css('display', 'none');\n\t\t\t\t\tthis.fetch($element, $(e.content));\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Video.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\n\t\tthis._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {\n\t\t\tthis.play(e);\n\t\t}, this));\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tVideo.Defaults = {\n\t\tvideo: false,\n\t\tvideoHeight: false,\n\t\tvideoWidth: false\n\t};\n\n\t/**\n\t * Gets the video ID and the type (YouTube/Vimeo/vzaar only).\n\t * @protected\n\t * @param {jQuery} target - The target containing the video data.\n\t * @param {jQuery} item - The item containing the video.\n\t */\n\tVideo.prototype.fetch = function(target, item) {\n\t\t\tvar type = (function() {\n\t\t\t\t\tif (target.attr('data-vimeo-id')) {\n\t\t\t\t\t\treturn 'vimeo';\n\t\t\t\t\t} else if (target.attr('data-vzaar-id')) {\n\t\t\t\t\t\treturn 'vzaar'\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn 'youtube';\n\t\t\t\t\t}\n\t\t\t\t})(),\n\t\t\t\tid = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\n\t\t\t\twidth = target.attr('data-width') || this._core.settings.videoWidth,\n\t\t\t\theight = target.attr('data-height') || this._core.settings.videoHeight,\n\t\t\t\turl = target.attr('href');\n\n\t\tif (url) {\n\n\t\t\t/*\n\t\t\t\t\tParses the id's out of the following urls (and probably more):\n\t\t\t\t\thttps://www.youtube.com/watch?v=:id\n\t\t\t\t\thttps://youtu.be/:id\n\t\t\t\t\thttps://vimeo.com/:id\n\t\t\t\t\thttps://vimeo.com/channels/:channel/:id\n\t\t\t\t\thttps://vimeo.com/groups/:group/videos/:id\n\t\t\t\t\thttps://app.vzaar.com/videos/:id\n\n\t\t\t\t\tVisual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\n\t\t\t*/\n\n\t\t\tid = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\n\n\t\t\tif (id[3].indexOf('youtu') > -1) {\n\t\t\t\ttype = 'youtube';\n\t\t\t} else if (id[3].indexOf('vimeo') > -1) {\n\t\t\t\ttype = 'vimeo';\n\t\t\t} else if (id[3].indexOf('vzaar') > -1) {\n\t\t\t\ttype = 'vzaar';\n\t\t\t} else {\n\t\t\t\tthrow new Error('Video URL not supported.');\n\t\t\t}\n\t\t\tid = id[6];\n\t\t} else {\n\t\t\tthrow new Error('Missing video URL.');\n\t\t}\n\n\t\tthis._videos[url] = {\n\t\t\ttype: type,\n\t\t\tid: id,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\titem.attr('data-video', url);\n\n\t\tthis.thumbnail(target, this._videos[url]);\n\t};\n\n\t/**\n\t * Creates video thumbnail.\n\t * @protected\n\t * @param {jQuery} target - The target containing the video data.\n\t * @param {Object} info - The video info object.\n\t * @see `fetch`\n\t */\n\tVideo.prototype.thumbnail = function(target, video) {\n\t\tvar tnLink,\n\t\t\ticon,\n\t\t\tpath,\n\t\t\tdimensions = video.width && video.height ? 'style=\"width:' + video.width + 'px;height:' + video.height + 'px;\"' : '',\n\t\t\tcustomTn = target.find('img'),\n\t\t\tsrcType = 'src',\n\t\t\tlazyClass = '',\n\t\t\tsettings = this._core.settings,\n\t\t\tcreate = function(path) {\n\t\t\t\ticon = '<div class=\"owl-video-play-icon\"></div>';\n\n\t\t\t\tif (settings.lazyLoad) {\n\t\t\t\t\ttnLink = '<div class=\"owl-video-tn ' + lazyClass + '\" ' + srcType + '=\"' + path + '\"></div>';\n\t\t\t\t} else {\n\t\t\t\t\ttnLink = '<div class=\"owl-video-tn\" style=\"opacity:1;background-image:url(' + path + ')\"></div>';\n\t\t\t\t}\n\t\t\t\ttarget.after(tnLink);\n\t\t\t\ttarget.after(icon);\n\t\t\t};\n\n\t\t// wrap video content into owl-video-wrapper div\n\t\ttarget.wrap('<div class=\"owl-video-wrapper\"' + dimensions + '></div>');\n\n\t\tif (this._core.settings.lazyLoad) {\n\t\t\tsrcType = 'data-src';\n\t\t\tlazyClass = 'owl-lazy';\n\t\t}\n\n\t\t// custom thumbnail\n\t\tif (customTn.length) {\n\t\t\tcreate(customTn.attr(srcType));\n\t\t\tcustomTn.remove();\n\t\t\treturn false;\n\t\t}\n\n\t\tif (video.type === 'youtube') {\n\t\t\tpath = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\n\t\t\tcreate(path);\n\t\t} else if (video.type === 'vimeo') {\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: '//vimeo.com/api/v2/video/' + video.id + '.json',\n\t\t\t\tjsonp: 'callback',\n\t\t\t\tdataType: 'jsonp',\n\t\t\t\tsuccess: function(data) {\n\t\t\t\t\tpath = data[0].thumbnail_large;\n\t\t\t\t\tcreate(path);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (video.type === 'vzaar') {\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: '//vzaar.com/api/videos/' + video.id + '.json',\n\t\t\t\tjsonp: 'callback',\n\t\t\t\tdataType: 'jsonp',\n\t\t\t\tsuccess: function(data) {\n\t\t\t\t\tpath = data.framegrab_url;\n\t\t\t\t\tcreate(path);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Stops the current video.\n\t * @public\n\t */\n\tVideo.prototype.stop = function() {\n\t\tthis._core.trigger('stop', null, 'video');\n\t\tthis._playing.find('.owl-video-frame').remove();\n\t\tthis._playing.removeClass('owl-video-playing');\n\t\tthis._playing = null;\n\t\tthis._core.leave('playing');\n\t\tthis._core.trigger('stopped', null, 'video');\n\t};\n\n\t/**\n\t * Starts the current video.\n\t * @public\n\t * @param {Event} event - The event arguments.\n\t */\n\tVideo.prototype.play = function(event) {\n\t\tvar target = $(event.target),\n\t\t\titem = target.closest('.' + this._core.settings.itemClass),\n\t\t\tvideo = this._videos[item.attr('data-video')],\n\t\t\twidth = video.width || '100%',\n\t\t\theight = video.height || this._core.$stage.height(),\n\t\t\thtml;\n\n\t\tif (this._playing) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._core.enter('playing');\n\t\tthis._core.trigger('play', null, 'video');\n\n\t\titem = this._core.items(this._core.relative(item.index()));\n\n\t\tthis._core.reset(item.index());\n\n\t\tif (video.type === 'youtube') {\n\t\t\thtml = '<iframe width=\"' + width + '\" height=\"' + height + '\" src=\"//www.youtube.com/embed/' +\n\t\t\t\tvideo.id + '?autoplay=1&v=' + video.id + '\" frameborder=\"0\" allowfullscreen></iframe>';\n\t\t} else if (video.type === 'vimeo') {\n\t\t\thtml = '<iframe src=\"//player.vimeo.com/video/' + video.id +\n\t\t\t\t'?autoplay=1\" width=\"' + width + '\" height=\"' + height +\n\t\t\t\t'\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';\n\t\t} else if (video.type === 'vzaar') {\n\t\t\thtml = '<iframe frameborder=\"0\"' + 'height=\"' + height + '\"' + 'width=\"' + width +\n\t\t\t\t'\" allowfullscreen mozallowfullscreen webkitAllowFullScreen ' +\n\t\t\t\t'src=\"//view.vzaar.com/' + video.id + '/player?autoplay=true\"></iframe>';\n\t\t}\n\n\t\t$('<div class=\"owl-video-frame\">' + html + '</div>').insertAfter(item.find('.owl-video'));\n\n\t\tthis._playing = item.addClass('owl-video-playing');\n\t};\n\n\t/**\n\t * Checks whether an video is currently in full screen mode or not.\n\t * @todo Bad style because looks like a readonly method but changes members.\n\t * @protected\n\t * @returns {Boolean}\n\t */\n\tVideo.prototype.isInFullScreen = function() {\n\t\tvar element = document.fullscreenElement || document.mozFullScreenElement ||\n\t\t\t\tdocument.webkitFullscreenElement;\n\n\t\treturn element && $(element).parent().hasClass('owl-video-frame');\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tVideo.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tthis._core.$element.off('click.owl.video');\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Video = Video;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Animate Plugin\n * @version 2.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the animate plugin.\n\t * @class The Navigation Plugin\n\t * @param {Owl} scope - The Owl Carousel\n\t */\n\tvar Animate = function(scope) {\n\t\tthis.core = scope;\n\t\tthis.core.options = $.extend({}, Animate.Defaults, this.core.options);\n\t\tthis.swapping = true;\n\t\tthis.previous = undefined;\n\t\tthis.next = undefined;\n\n\t\tthis.handlers = {\n\t\t\t'change.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\n\t\t\t\t\tthis.previous = this.core.current();\n\t\t\t\t\tthis.next = e.property.value;\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.swapping = e.type == 'translated';\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'translate.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\n\t\t\t\t\tthis.swap();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\tthis.core.$element.on(this.handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAnimate.Defaults = {\n\t\tanimateOut: false,\n\t\tanimateIn: false\n\t};\n\n\t/**\n\t * Toggles the animation classes whenever an translations starts.\n\t * @protected\n\t * @returns {Boolean|undefined}\n\t */\n\tAnimate.prototype.swap = function() {\n\n\t\tif (this.core.settings.items !== 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!$.support.animation || !$.support.transition) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.core.speed(0);\n\n\t\tvar left,\n\t\t\tclear = $.proxy(this.clear, this),\n\t\t\tprevious = this.core.$stage.children().eq(this.previous),\n\t\t\tnext = this.core.$stage.children().eq(this.next),\n\t\t\tincoming = this.core.settings.animateIn,\n\t\t\toutgoing = this.core.settings.animateOut;\n\n\t\tif (this.core.current() === this.previous) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (outgoing) {\n\t\t\tleft = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\n\t\t\tprevious.one($.support.animation.end, clear)\n\t\t\t\t.css( { 'left': left + 'px' } )\n\t\t\t\t.addClass('animated owl-animated-out')\n\t\t\t\t.addClass(outgoing);\n\t\t}\n\n\t\tif (incoming) {\n\t\t\tnext.one($.support.animation.end, clear)\n\t\t\t\t.addClass('animated owl-animated-in')\n\t\t\t\t.addClass(incoming);\n\t\t}\n\t};\n\n\tAnimate.prototype.clear = function(e) {\n\t\t$(e.target).css( { 'left': '' } )\n\t\t\t.removeClass('animated owl-animated-out owl-animated-in')\n\t\t\t.removeClass(this.core.settings.animateIn)\n\t\t\t.removeClass(this.core.settings.animateOut);\n\t\tthis.core.onTransitionEnd();\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tAnimate.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this.handlers) {\n\t\t\tthis.core.$element.off(handler, this.handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Autoplay Plugin\n * @version 2.1.0\n * @author Bartosz Wojciechowski\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the autoplay plugin.\n\t * @class The Autoplay Plugin\n\t * @param {Owl} scope - The Owl Carousel\n\t */\n\tvar Autoplay = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * The autoplay timeout.\n\t\t * @type {Timeout}\n\t\t */\n\t\tthis._timeout = null;\n\n\t\t/**\n\t\t * Indicates whenever the autoplay is paused.\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._paused = false;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name === 'settings') {\n\t\t\t\t\tif (this._core.settings.autoplay) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.namespace && e.property.name === 'position') {\n\t\t\t\t\t//console.log('play?', e);\n\t\t\t\t\tif (this._core.settings.autoplay) {\n\t\t\t\t\t\tthis._setAutoPlayInterval();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoplay) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.play(t, s);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'stop.owl.autoplay': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'mouseleave.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'touchstart.owl.core': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'touchend.owl.core': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAutoplay.Defaults = {\n\t\tautoplay: false,\n\t\tautoplayTimeout: 5000,\n\t\tautoplayHoverPause: false,\n\t\tautoplaySpeed: false\n\t};\n\n\t/**\n\t * Starts the autoplay.\n\t * @public\n\t * @param {Number} [timeout] - The interval before the next animation starts.\n\t * @param {Number} [speed] - The animation speed for the animations.\n\t */\n\tAutoplay.prototype.play = function(timeout, speed) {\n\t\tthis._paused = false;\n\n\t\tif (this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._core.enter('rotating');\n\n\t\tthis._setAutoPlayInterval();\n\t};\n\n\t/**\n\t * Gets a new timeout\n\t * @private\n\t * @param {Number} [timeout] - The interval before the next animation starts.\n\t * @param {Number} [speed] - The animation speed for the animations.\n\t * @return {Timeout}\n\t */\n\tAutoplay.prototype._getNextTimeout = function(timeout, speed) {\n\t\tif ( this._timeout ) {\n\t\t\twindow.clearTimeout(this._timeout);\n\t\t}\n\t\treturn window.setTimeout($.proxy(function() {\n\t\t\tif (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._core.next(speed || this._core.settings.autoplaySpeed);\n\t\t}, this), timeout || this._core.settings.autoplayTimeout);\n\t};\n\n\t/**\n\t * Sets autoplay in motion.\n\t * @private\n\t */\n\tAutoplay.prototype._setAutoPlayInterval = function() {\n\t\tthis._timeout = this._getNextTimeout();\n\t};\n\n\t/**\n\t * Stops the autoplay.\n\t * @public\n\t */\n\tAutoplay.prototype.stop = function() {\n\t\tif (!this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.clearTimeout(this._timeout);\n\t\tthis._core.leave('rotating');\n\t};\n\n\t/**\n\t * Stops the autoplay.\n\t * @public\n\t */\n\tAutoplay.prototype.pause = function() {\n\t\tif (!this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._paused = true;\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tAutoplay.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tthis.stop();\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Navigation Plugin\n * @version 2.1.0\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\t'use strict';\n\n\t/**\n\t * Creates the navigation plugin.\n\t * @class The Navigation Plugin\n\t * @param {Owl} carousel - The Owl Carousel.\n\t */\n\tvar Navigation = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Indicates whether the plugin is initialized or not.\n\t\t * @protected\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._initialized = false;\n\n\t\t/**\n\t\t * The current paging indexes.\n\t\t * @protected\n\t\t * @type {Array}\n\t\t */\n\t\tthis._pages = [];\n\n\t\t/**\n\t\t * All DOM elements of the user interface.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._controls = {};\n\n\t\t/**\n\t\t * Markup for an indicator.\n\t\t * @protected\n\t\t * @type {Array.<String>}\n\t\t */\n\t\tthis._templates = [];\n\n\t\t/**\n\t\t * The carousel element.\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis.$element = this._core.$element;\n\n\t\t/**\n\t\t * Overridden methods of the carousel.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._overrides = {\n\t\t\tnext: this._core.next,\n\t\t\tprev: this._core.prev,\n\t\t\tto: this._core.to\n\t\t};\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.push('<div class=\"' + this._core.settings.dotClass + '\">' +\n\t\t\t\t\t\t$(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '</div>');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'added.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 0, this._templates.pop());\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'remove.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 1);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\n\t\t\t\t\tthis.draw();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && !this._initialized) {\n\t\t\t\t\tthis._core.trigger('initialize', null, 'navigation');\n\t\t\t\t\tthis.initialize();\n\t\t\t\t\tthis.update();\n\t\t\t\t\tthis.draw();\n\t\t\t\t\tthis._initialized = true;\n\t\t\t\t\tthis._core.trigger('initialized', null, 'navigation');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._initialized) {\n\t\t\t\t\tthis._core.trigger('refresh', null, 'navigation');\n\t\t\t\t\tthis.update();\n\t\t\t\t\tthis.draw();\n\t\t\t\t\tthis._core.trigger('refreshed', null, 'navigation');\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Navigation.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis.$element.on(this._handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t * @todo Rename `slideBy` to `navBy`\n\t */\n\tNavigation.Defaults = {\n\t\tnav: false,\n\t\tnavText: [ 'prev', 'next' ],\n\t\tnavSpeed: false,\n\t\tnavElement: 'div',\n\t\tnavContainer: false,\n\t\tnavContainerClass: 'owl-nav',\n\t\tnavClass: [ 'owl-prev', 'owl-next' ],\n\t\tslideBy: 1,\n\t\tdotClass: 'owl-dot',\n\t\tdotsClass: 'owl-dots',\n\t\tdots: true,\n\t\tdotsEach: false,\n\t\tdotsData: false,\n\t\tdotsSpeed: false,\n\t\tdotsContainer: false\n\t};\n\n\t/**\n\t * Initializes the layout of the plugin and extends the carousel.\n\t * @protected\n\t */\n\tNavigation.prototype.initialize = function() {\n\t\tvar override,\n\t\t\tsettings = this._core.settings;\n\n\t\t// create DOM structure for relative navigation\n\t\tthis._controls.$relative = (settings.navContainer ? $(settings.navContainer)\n\t\t\t: $('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\n\n\t\tthis._controls.$previous = $('<' + settings.navElement + '>')\n\t\t\t.addClass(settings.navClass[0])\n\t\t\t.html(settings.navText[0])\n\t\t\t.prependTo(this._controls.$relative)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.prev(settings.navSpeed);\n\t\t\t}, this));\n\t\tthis._controls.$next = $('<' + settings.navElement + '>')\n\t\t\t.addClass(settings.navClass[1])\n\t\t\t.html(settings.navText[1])\n\t\t\t.appendTo(this._controls.$relative)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.next(settings.navSpeed);\n\t\t\t}, this));\n\n\t\t// create DOM structure for absolute navigation\n\t\tif (!settings.dotsData) {\n\t\t\tthis._templates = [ $('<div>')\n\t\t\t\t.addClass(settings.dotClass)\n\t\t\t\t.append($('<span>'))\n\t\t\t\t.prop('outerHTML') ];\n\t\t}\n\n\t\tthis._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\n\t\t\t: $('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\n\n\t\tthis._controls.$absolute.on('click', 'div', $.proxy(function(e) {\n\t\t\tvar index = $(e.target).parent().is(this._controls.$absolute)\n\t\t\t\t? $(e.target).index() : $(e.target).parent().index();\n\n\t\t\te.preventDefault();\n\n\t\t\tthis.to(index, settings.dotsSpeed);\n\t\t}, this));\n\n\t\t// override public methods of the carousel\n\t\tfor (override in this._overrides) {\n\t\t\tthis._core[override] = $.proxy(this[override], this);\n\t\t}\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @protected\n\t */\n\tNavigation.prototype.destroy = function() {\n\t\tvar handler, control, property, override;\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (control in this._controls) {\n\t\t\tthis._controls[control].remove();\n\t\t}\n\t\tfor (override in this.overides) {\n\t\t\tthis._core[override] = this._overrides[override];\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t/**\n\t * Updates the internal state.\n\t * @protected\n\t */\n\tNavigation.prototype.update = function() {\n\t\tvar i, j, k,\n\t\t\tlower = this._core.clones().length / 2,\n\t\t\tupper = lower + this._core.items().length,\n\t\t\tmaximum = this._core.maximum(true),\n\t\t\tsettings = this._core.settings,\n\t\t\tsize = settings.center || settings.autoWidth || settings.dotsData\n\t\t\t\t? 1 : settings.dotsEach || settings.items;\n\n\t\tif (settings.slideBy !== 'page') {\n\t\t\tsettings.slideBy = Math.min(settings.slideBy, settings.items);\n\t\t}\n\n\t\tif (settings.dots || settings.slideBy == 'page') {\n\t\t\tthis._pages = [];\n\n\t\t\tfor (i = lower, j = 0, k = 0; i < upper; i++) {\n\t\t\t\tif (j >= size || j === 0) {\n\t\t\t\t\tthis._pages.push({\n\t\t\t\t\t\tstart: Math.min(maximum, i - lower),\n\t\t\t\t\t\tend: i - lower + size - 1\n\t\t\t\t\t});\n\t\t\t\t\tif (Math.min(maximum, i - lower) === maximum) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tj = 0, ++k;\n\t\t\t\t}\n\t\t\t\tj += this._core.mergers(this._core.relative(i));\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Draws the user interface.\n\t * @todo The option `dotsData` wont work.\n\t * @protected\n\t */\n\tNavigation.prototype.draw = function() {\n\t\tvar difference,\n\t\t\tsettings = this._core.settings,\n\t\t\tdisabled = this._core.items().length <= settings.items,\n\t\t\tindex = this._core.relative(this._core.current()),\n\t\t\tloop = settings.loop || settings.rewind;\n\n\t\tthis._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\n\n\t\tif (settings.nav) {\n\t\t\tthis._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\n\t\t\tthis._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\n\t\t}\n\n\t\tthis._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\n\n\t\tif (settings.dots) {\n\t\t\tdifference = this._pages.length - this._controls.$absolute.children().length;\n\n\t\t\tif (settings.dotsData && difference !== 0) {\n\t\t\t\tthis._controls.$absolute.html(this._templates.join(''));\n\t\t\t} else if (difference > 0) {\n\t\t\t\tthis._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\n\t\t\t} else if (difference < 0) {\n\t\t\t\tthis._controls.$absolute.children().slice(difference).remove();\n\t\t\t}\n\n\t\t\tthis._controls.$absolute.find('.active').removeClass('active');\n\t\t\tthis._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\n\t\t}\n\t};\n\n\t/**\n\t * Extends event data.\n\t * @protected\n\t * @param {Event} event - The event object which gets thrown.\n\t */\n\tNavigation.prototype.onTrigger = function(event) {\n\t\tvar settings = this._core.settings;\n\n\t\tevent.page = {\n\t\t\tindex: $.inArray(this.current(), this._pages),\n\t\t\tcount: this._pages.length,\n\t\t\tsize: settings && (settings.center || settings.autoWidth || settings.dotsData\n\t\t\t\t? 1 : settings.dotsEach || settings.items)\n\t\t};\n\t};\n\n\t/**\n\t * Gets the current page position of the carousel.\n\t * @protected\n\t * @returns {Number}\n\t */\n\tNavigation.prototype.current = function() {\n\t\tvar current = this._core.relative(this._core.current());\n\t\treturn $.grep(this._pages, $.proxy(function(page, index) {\n\t\t\treturn page.start <= current && page.end >= current;\n\t\t}, this)).pop();\n\t};\n\n\t/**\n\t * Gets the current succesor/predecessor position.\n\t * @protected\n\t * @returns {Number}\n\t */\n\tNavigation.prototype.getPosition = function(successor) {\n\t\tvar position, length,\n\t\t\tsettings = this._core.settings;\n\n\t\tif (settings.slideBy == 'page') {\n\t\t\tposition = $.inArray(this.current(), this._pages);\n\t\t\tlength = this._pages.length;\n\t\t\tsuccessor ? ++position : --position;\n\t\t\tposition = this._pages[((position % length) + length) % length].start;\n\t\t} else {\n\t\t\tposition = this._core.relative(this._core.current());\n\t\t\tlength = this._core.items().length;\n\t\t\tsuccessor ? position += settings.slideBy : position -= settings.slideBy;\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Slides to the next item or page.\n\t * @public\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t */\n\tNavigation.prototype.next = function(speed) {\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\n\t};\n\n\t/**\n\t * Slides to the previous item or page.\n\t * @public\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t */\n\tNavigation.prototype.prev = function(speed) {\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\n\t};\n\n\t/**\n\t * Slides to the specified item or page.\n\t * @public\n\t * @param {Number} position - The position of the item or page.\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\n\t */\n\tNavigation.prototype.to = function(position, speed, standard) {\n\t\tvar length;\n\n\t\tif (!standard && this._pages.length) {\n\t\t\tlength = this._pages.length;\n\t\t\t$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\n\t\t} else {\n\t\t\t$.proxy(this._overrides.to, this._core)(position, speed);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Hash Plugin\n * @version 2.1.0\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\t'use strict';\n\n\t/**\n\t * Creates the hash plugin.\n\t * @class The Hash Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Hash = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Hash index for the items.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._hashes = {};\n\n\t\t/**\n\t\t * The carousel element.\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis.$element = this._core.$element;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.startPosition === 'URLHash') {\n\t\t\t\t\t$(window).trigger('hashchange.owl.navigation');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tvar hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash');\n\n\t\t\t\t\tif (!hash) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._hashes[hash] = e.content;\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name === 'position') {\n\t\t\t\t\tvar current = this._core.items(this._core.relative(this._core.current())),\n\t\t\t\t\t\thash = $.map(this._hashes, function(item, hash) {\n\t\t\t\t\t\t\treturn item === current ? hash : null;\n\t\t\t\t\t\t}).join();\n\n\t\t\t\t\tif (!hash || window.location.hash.slice(1) === hash) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\twindow.location.hash = hash;\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Hash.Defaults, this._core.options);\n\n\t\t// register the event handlers\n\t\tthis.$element.on(this._handlers);\n\n\t\t// register event listener for hash navigation\n\t\t$(window).on('hashchange.owl.navigation', $.proxy(function(e) {\n\t\t\tvar hash = window.location.hash.substring(1),\n\t\t\t\titems = this._core.$stage.children(),\n\t\t\t\tposition = this._hashes[hash] && items.index(this._hashes[hash]);\n\n\t\t\tif (position === undefined || position === this._core.current()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._core.to(this._core.relative(position), false, true);\n\t\t}, this));\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tHash.Defaults = {\n\t\tURLhashListener: false\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tHash.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\t$(window).off('hashchange.owl.navigation');\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Hash = Hash;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Support Plugin\n *\n * @version 2.1.0\n * @author Vivid Planet Software GmbH\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\tvar style = $('<support>').get(0).style,\n\t\tprefixes = 'Webkit Moz O ms'.split(' '),\n\t\tevents = {\n\t\t\ttransition: {\n\t\t\t\tend: {\n\t\t\t\t\tWebkitTransition: 'webkitTransitionEnd',\n\t\t\t\t\tMozTransition: 'transitionend',\n\t\t\t\t\tOTransition: 'oTransitionEnd',\n\t\t\t\t\ttransition: 'transitionend'\n\t\t\t\t}\n\t\t\t},\n\t\t\tanimation: {\n\t\t\t\tend: {\n\t\t\t\t\tWebkitAnimation: 'webkitAnimationEnd',\n\t\t\t\t\tMozAnimation: 'animationend',\n\t\t\t\t\tOAnimation: 'oAnimationEnd',\n\t\t\t\t\tanimation: 'animationend'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttests = {\n\t\t\tcsstransforms: function() {\n\t\t\t\treturn !!test('transform');\n\t\t\t},\n\t\t\tcsstransforms3d: function() {\n\t\t\t\treturn !!test('perspective');\n\t\t\t},\n\t\t\tcsstransitions: function() {\n\t\t\t\treturn !!test('transition');\n\t\t\t},\n\t\t\tcssanimations: function() {\n\t\t\t\treturn !!test('animation');\n\t\t\t}\n\t\t};\n\n\tfunction test(property, prefixed) {\n\t\tvar result = false,\n\t\t\tupper = property.charAt(0).toUpperCase() + property.slice(1);\n\n\t\t$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {\n\t\t\tif (style[property] !== undefined) {\n\t\t\t\tresult = prefixed ? property : true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction prefixed(property) {\n\t\treturn test(property, true);\n\t}\n\n\tif (tests.csstransitions()) {\n\t\t/* jshint -W053 */\n\t\t$.support.transition = new String(prefixed('transition'))\n\t\t$.support.transition.end = events.transition.end[ $.support.transition ];\n\t}\n\n\tif (tests.cssanimations()) {\n\t\t/* jshint -W053 */\n\t\t$.support.animation = new String(prefixed('animation'))\n\t\t$.support.animation.end = events.animation.end[ $.support.animation ];\n\t}\n\n\tif (tests.csstransforms()) {\n\t\t/* jshint -W053 */\n\t\t$.support.transform = new String(prefixed('transform'));\n\t\t$.support.transform3d = tests.csstransforms3d();\n\t}\n\n})(window.Zepto || window.jQuery, window, document);\n\ndefine(\"owl.carousel\", [],function(){});\n\r\ndefine('responsive-toolkit',['require','exports','module'],function (require, exports, module) {/*!\n * Responsive Bootstrap Toolkit\n * Author: Maciej Gurban\n * License: MIT\n * Version: 2.6.3 (2016-06-21)\n * Origin: https://github.com/maciej-gurban/responsive-bootstrap-toolkit\n */\nvar ResponsiveBootstrapToolkit = (function($){\n\n // Internal methods\n var internal = {\n\n /**\n * Breakpoint detection divs for each framework version\n */\n detectionDivs: {\n // Bootstrap 3\n bootstrap: {\n 'xs': $('<div class=\"device-xs visible-xs visible-xs-block\"></div>'),\n 'sm': $('<div class=\"device-sm visible-sm visible-sm-block\"></div>'),\n 'md': $('<div class=\"device-md visible-md visible-md-block\"></div>'),\n 'lg': $('<div class=\"device-lg visible-lg visible-lg-block\"></div>')\n },\n // Foundation 5\n foundation: {\n 'small': $('<div class=\"device-xs show-for-small-only\"></div>'),\n 'medium': $('<div class=\"device-sm show-for-medium-only\"></div>'),\n 'large': $('<div class=\"device-md show-for-large-only\"></div>'),\n 'xlarge': $('<div class=\"device-lg show-for-xlarge-only\"></div>')\n }\n },\n\n /**\n * Append visibility divs after DOM laoded\n */\n applyDetectionDivs: function() {\n $(document).ready(function(){\n $.each(self.breakpoints, function(alias){\n self.breakpoints[alias].appendTo('.responsive-bootstrap-toolkit');\n });\n });\n },\n\n /**\n * Determines whether passed string is a parsable expression\n */\n isAnExpression: function( str ) {\n return (str.charAt(0) == '<' || str.charAt(0) == '>');\n },\n\n /**\n * Splits the expression in into <|> [=] alias\n */\n splitExpression: function( str ) {\n\n // Used operator\n var operator = str.charAt(0);\n // Include breakpoint equal to alias?\n var orEqual = (str.charAt(1) == '=') ? true : false;\n\n /**\n * Index at which breakpoint name starts.\n *\n * For: >sm, index = 1\n * For: >=sm, index = 2\n */\n var index = 1 + (orEqual ? 1 : 0);\n\n /**\n * The remaining part of the expression, after the operator, will be treated as the\n * breakpoint name to compare with\n */\n var breakpointName = str.slice(index);\n\n return {\n operator: operator,\n orEqual: orEqual,\n breakpointName: breakpointName\n };\n },\n\n /**\n * Returns true if currently active breakpoint matches the expression\n */\n isAnyActive: function( breakpoints ) {\n var found = false;\n $.each(breakpoints, function( index, alias ) {\n // Once first breakpoint matches, return true and break out of the loop\n if( self.breakpoints[ alias ].is(':visible') ) {\n found = true;\n return false;\n }\n });\n return found;\n },\n\n /**\n * Determines whether current breakpoint matches the expression given\n */\n isMatchingExpression: function( str ) {\n\n var expression = internal.splitExpression( str );\n\n // Get names of all breakpoints\n var breakpointList = Object.keys(self.breakpoints);\n\n // Get index of sought breakpoint in the list\n var pos = breakpointList.indexOf( expression.breakpointName );\n\n // Breakpoint found\n if( pos !== -1 ) {\n\n var start = 0;\n var end = 0;\n\n /**\n * Parsing viewport.is('<=md') we interate from smallest breakpoint ('xs') and end\n * at 'md' breakpoint, indicated in the expression,\n * That makes: start = 0, end = 2 (index of 'md' breakpoint)\n *\n * Parsing viewport.is('<md') we start at index 'xs' breakpoint, and end at\n * 'sm' breakpoint, one before 'md'.\n * Which makes: start = 0, end = 1\n */\n if( expression.operator == '<' ) {\n start = 0;\n end = expression.orEqual ? ++pos : pos;\n }\n /**\n * Parsing viewport.is('>=sm') we interate from breakpoint 'sm' and end at the end\n * of breakpoint list.\n * That makes: start = 1, end = undefined\n *\n * Parsing viewport.is('>sm') we start at breakpoint 'md' and end at the end of\n * breakpoint list.\n * Which makes: start = 2, end = undefined\n */\n if( expression.operator == '>' ) {\n start = expression.orEqual ? pos : ++pos;\n end = undefined;\n }\n\n var acceptedBreakpoints = breakpointList.slice(start, end);\n\n return internal.isAnyActive( acceptedBreakpoints );\n\n }\n }\n\n };\n\n // Public methods and properties\n var self = {\n\n /**\n * Determines default debouncing interval of 'changed' method\n */\n interval: 300,\n\n /**\n *\n */\n framework: null,\n\n /**\n * Breakpoint aliases, listed from smallest to biggest\n */\n breakpoints: null,\n\n /**\n * Returns true if current breakpoint matches passed alias\n */\n is: function( str ) {\n if( internal.isAnExpression( str ) ) {\n return internal.isMatchingExpression( str );\n }\n return self.breakpoints[ str ] && self.breakpoints[ str ].is(':visible');\n },\n\n /**\n * Determines which framework-specific breakpoint detection divs to use\n */\n use: function( frameworkName, breakpoints ) {\n self.framework = frameworkName.toLowerCase();\n\n if( self.framework === 'bootstrap' || self.framework === 'foundation') {\n self.breakpoints = internal.detectionDivs[ self.framework ];\n } else {\n self.breakpoints = breakpoints;\n }\n\n internal.applyDetectionDivs();\n },\n\n /**\n * Returns current breakpoint alias\n */\n current: function(){\n var name = 'unrecognized';\n $.each(self.breakpoints, function(alias){\n if (self.is(alias)) {\n name = alias;\n }\n });\n return name;\n },\n\n /*\n * Waits specified number of miliseconds before executing a callback\n */\n changed: function(fn, ms) {\n var timer;\n return function(){\n clearTimeout(timer);\n timer = setTimeout(function(){\n fn();\n }, ms || self.interval);\n };\n }\n\n };\n\n // Create a placeholder\n $(document).ready(function(){\n $('<div class=\"responsive-bootstrap-toolkit\"></div>').appendTo('body');\n });\n\n if( self.framework === null ) {\n self.use('bootstrap');\n }\n\n return self;\n\n})(jQuery);\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = ResponsiveBootstrapToolkit;\n}\n\n});\n\r\n// Exports\ndefine('aurelia-validation/aurelia-validation',[\"require\", \"exports\", \"./get-target-dom-element\", \"./property-info\", \"./property-accessor-parser\", \"./validate-binding-behavior\", \"./validate-event\", \"./validate-result\", \"./validate-trigger\", \"./validation-controller\", \"./validation-controller-factory\", \"./validation-errors-custom-attribute\", \"./validation-renderer-custom-attribute\", \"./validator\", \"./implementation/rules\", \"./implementation/standard-validator\", \"./implementation/validation-messages\", \"./implementation/validation-message-parser\", \"./implementation/validation-rules\", \"aurelia-pal\", \"./validator\", \"./implementation/standard-validator\", \"./implementation/validation-message-parser\", \"./property-accessor-parser\", \"./implementation/validation-rules\"], function (require, exports, get_target_dom_element_1, property_info_1, property_accessor_parser_1, validate_binding_behavior_1, validate_event_1, validate_result_1, validate_trigger_1, validation_controller_1, validation_controller_factory_1, validation_errors_custom_attribute_1, validation_renderer_custom_attribute_1, validator_1, rules_1, standard_validator_1, validation_messages_1, validation_message_parser_1, validation_rules_1, aurelia_pal_1, validator_2, standard_validator_2, validation_message_parser_2, property_accessor_parser_2, validation_rules_2) {\n \"use strict\";\n function __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n Object.defineProperty(exports, \"__esModule\", { value: true });\n __export(get_target_dom_element_1);\n __export(property_info_1);\n __export(property_accessor_parser_1);\n __export(validate_binding_behavior_1);\n __export(validate_event_1);\n __export(validate_result_1);\n __export(validate_trigger_1);\n __export(validation_controller_1);\n __export(validation_controller_factory_1);\n __export(validation_errors_custom_attribute_1);\n __export(validation_renderer_custom_attribute_1);\n __export(validator_1);\n __export(rules_1);\n __export(standard_validator_1);\n __export(validation_messages_1);\n __export(validation_message_parser_1);\n __export(validation_rules_1);\n /**\n * Aurelia Validation Configuration API\n */\n var AureliaValidationConfiguration = (function () {\n function AureliaValidationConfiguration() {\n this.validatorType = standard_validator_2.StandardValidator;\n }\n /**\n * Use a custom Validator implementation.\n */\n AureliaValidationConfiguration.prototype.customValidator = function (type) {\n this.validatorType = type;\n };\n /**\n * Applies the configuration.\n */\n AureliaValidationConfiguration.prototype.apply = function (container) {\n var validator = container.get(this.validatorType);\n container.registerInstance(validator_2.Validator, validator);\n };\n return AureliaValidationConfiguration;\n }());\n exports.AureliaValidationConfiguration = AureliaValidationConfiguration;\n /**\n * Configures the plugin.\n */\n function configure(frameworkConfig, callback) {\n // the fluent rule definition API needs the parser to translate messages\n // to interpolation expressions.\n var messageParser = frameworkConfig.container.get(validation_message_parser_2.ValidationMessageParser);\n var propertyParser = frameworkConfig.container.get(property_accessor_parser_2.PropertyAccessorParser);\n validation_rules_2.ValidationRules.initialize(messageParser, propertyParser);\n // configure...\n var config = new AureliaValidationConfiguration();\n if (callback instanceof Function) {\n callback(config);\n }\n config.apply(frameworkConfig.container);\n // globalize the behaviors.\n if (frameworkConfig.globalResources) {\n frameworkConfig.globalResources(aurelia_pal_1.PLATFORM.moduleName('./validate-binding-behavior'), aurelia_pal_1.PLATFORM.moduleName('./validation-errors-custom-attribute'), aurelia_pal_1.PLATFORM.moduleName('./validation-renderer-custom-attribute'));\n }\n }\n exports.configure = configure;\n});\n;define('aurelia-validation', ['aurelia-validation/aurelia-validation'], function (main) { return main; });\n\r\nfunction _aureliaConfigureModuleLoader(){requirejs.config({\"baseUrl\":\"src/\",\"paths\":{\"root\":\"src\",\"text\":\"../node_modules/requirejs-text/text\",\"aurelia-route-recognizer\":\"..\\\\node_modules\\\\aurelia-route-recognizer\\\\dist\\\\amd\\\\aurelia-route-recognizer\",\"aurelia-binding\":\"..\\\\node_modules\\\\aurelia-binding\\\\dist\\\\amd\\\\aurelia-binding\",\"aurelia-router\":\"..\\\\node_modules\\\\aurelia-router\\\\dist\\\\amd\\\\aurelia-router\",\"aurelia-bootstrapper\":\"..\\\\node_modules\\\\aurelia-bootstrapper\\\\dist\\\\amd\\\\aurelia-bootstrapper\",\"aurelia-dependency-injection\":\"..\\\\node_modules\\\\aurelia-dependency-injection\\\\dist\\\\amd\\\\aurelia-dependency-injection\",\"aurelia-history\":\"..\\\\node_modules\\\\aurelia-history\\\\dist\\\\amd\\\\aurelia-history\",\"aurelia-event-aggregator\":\"..\\\\node_modules\\\\aurelia-event-aggregator\\\\dist\\\\amd\\\\aurelia-event-aggregator\",\"aurelia-history-browser\":\"..\\\\node_modules\\\\aurelia-history-browser\\\\dist\\\\amd\\\\aurelia-history-browser\",\"aurelia-fetch-client\":\"..\\\\node_modules\\\\aurelia-fetch-client\\\\dist\\\\amd\\\\aurelia-fetch-client\",\"aurelia-framework\":\"..\\\\node_modules\\\\aurelia-framework\\\\dist\\\\amd\\\\aurelia-framework\",\"aurelia-loader\":\"..\\\\node_modules\\\\aurelia-loader\\\\dist\\\\amd\\\\aurelia-loader\",\"aurelia-loader-default\":\"..\\\\node_modules\\\\aurelia-loader-default\\\\dist\\\\amd\\\\aurelia-loader-default\",\"aurelia-logging\":\"..\\\\node_modules\\\\aurelia-logging\\\\dist\\\\amd\\\\aurelia-logging\",\"aurelia-logging-console\":\"..\\\\node_modules\\\\aurelia-logging-console\\\\dist\\\\amd\\\\aurelia-logging-console\",\"aurelia-metadata\":\"..\\\\node_modules\\\\aurelia-metadata\\\\dist\\\\amd\\\\aurelia-metadata\",\"aurelia-pal\":\"..\\\\node_modules\\\\aurelia-pal\\\\dist\\\\amd\\\\aurelia-pal\",\"aurelia-pal-browser\":\"..\\\\node_modules\\\\aurelia-pal-browser\\\\dist\\\\amd\\\\aurelia-pal-browser\",\"aurelia-path\":\"..\\\\node_modules\\\\aurelia-path\\\\dist\\\\amd\\\\aurelia-path\",\"redux\":\"../node_modules/redux/dist/redux.min\",\"aurelia-task-queue\":\"..\\\\node_modules\\\\aurelia-task-queue\\\\dist\\\\amd\\\\aurelia-task-queue\",\"aurelia-templating\":\"..\\\\node_modules\\\\aurelia-templating\\\\dist\\\\amd\\\\aurelia-templating\",\"aurelia-templating-binding\":\"..\\\\node_modules\\\\aurelia-templating-binding\\\\dist\\\\amd\\\\aurelia-templating-binding\",\"jquery\":\"..\\\\node_modules\\\\jquery\\\\dist\\\\jquery\",\"moment-parseformat\":\"../node_modules/moment-parseformat/dist/moment-parseformat\",\"moment-jdateformatparser\":\"../node_modules/moment-jdateformatparser/moment-jdateformatparser\",\"bootstrap-tabcollapse\":\"..\\\\node_modules\\\\bootstrap-tabcollapse\\\\bootstrap-tabcollapse\",\"owl.carousel\":\"..\\\\node_modules\\\\owl.carousel\\\\dist\\\\owl.carousel\",\"responsive-toolkit\":\"..\\\\node_modules\\\\responsive-toolkit\\\\src\\\\bootstrap-toolkit\",\"web-platform-app\":\"/assets/js/web-platform-app\",\"web-platform-etf\":\"/assets/js/web-platform-etf\",\"web-platform-gw\":\"/assets/js/web-platform-gw\",\"web-platform-us-retail\":\"/assets/js/web-platform-us-retail\",\"local-test\":\"/assets/js/local-test\"},\"packages\":[{\"name\":\"aurelia-templating-router\",\"location\":\"../node_modules/aurelia-templating-router/dist/amd\",\"main\":\"aurelia-templating-router\"},{\"name\":\"aurelia-testing\",\"location\":\"../node_modules/aurelia-testing/dist/amd\",\"main\":\"aurelia-testing\"},{\"name\":\"aurelia-templating-resources\",\"location\":\"../node_modules/aurelia-templating-resources/dist/amd\",\"main\":\"aurelia-templating-resources\"},{\"name\":\"lodash\",\"location\":\"../node_modules/lodash\",\"main\":\"noop\"},{\"name\":\"aurelia-polyfills\",\"location\":\"../static-assets/js/\",\"main\":\"aurelia-polyfills\"},{\"name\":\"jquery-ui\",\"location\":\"../static-assets/js/\",\"main\":\"jquery-ui\"},{\"name\":\"highcharts\",\"location\":\"../node_modules/highcharts\",\"main\":\"highcharts\"},{\"name\":\"moment\",\"location\":\"../node_modules/moment\",\"main\":\"moment\"},{\"name\":\"bootstrap-sass-affix\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"affix\"},{\"name\":\"bootstrap-sass-alert\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"alert\"},{\"name\":\"bootstrap-sass-button\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"button\"},{\"name\":\"bootstrap-sass-carousel\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"carousel\"},{\"name\":\"bootstrap-sass-collapse\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"collapse\"},{\"name\":\"bootstrap-sass-dropdown\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"dropdown\"},{\"name\":\"bootstrap-sass-modal\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"modal\"},{\"name\":\"bootstrap-sass-scrollspy\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"scrollspy\"},{\"name\":\"bootstrap-sass-tooltip\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"tooltip\"},{\"name\":\"bootstrap-sass-popover\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"popover\"},{\"name\":\"bootstrap-sass-transition\",\"location\":\"../node_modules/bootstrap-sass/assets/javascripts/bootstrap\",\"main\":\"transition\"},{\"name\":\"bootstrap-sass-customtabs\",\"location\":\"../static-assets/js/\",\"main\":\"bootstrap-sass-customtabs\"},{\"name\":\"aurelia-validation\",\"location\":\"../node_modules/aurelia-validation/dist/amd\",\"main\":\"aurelia-validation\"}],\"stubModules\":[\"text\"],\"shim\":{\"jquery-ui\":{\"deps\":[\"jquery\"]},\"bootstrap-sass-customtabs\":{\"deps\":[\"jquery\"]}},\"waitSeconds\":60,\"bundles\":{\"web-platform-app\":[\"environment\",\"lib/component-base\",\"lib/data-service\",\"lib/date-formatter\",\"lib/general.reducer\",\"lib/paging-utils\",\"lib/redux-component-base\",\"lib/rest-api\",\"lib/sort-utils\",\"lib/test-utils\",\"lib/url-utils\",\"configuration/common/configure\",\"configuration/common/http\",\"configuration/common/marketing-reducers\",\"configuration/common/middleware\",\"components/common/index\",\"configuration/il8n/currency\",\"configuration/il8n/highcharts-il8n\",\"configuration/il8n/moment-il8n\",\"components/common/attributes/ft-tooltip\",\"components/common/elements/ft-info-modal\",\"components/common/value-converters/ft-filename-from-folders\",\"components/common/value-converters/ft-filter\",\"components/common/value-converters/ft-json\",\"components/common/value-converters/ft-length\",\"components/common/value-converters/ft-sort\",\"components/common/value-converters/ft-type-ahead-filter\",\"components/marketing/common/index\",\"components/marketing/grids/index\",\"components/marketing/layouts/index\",\"components/marketing/lib/combine-marketing-reducers\",\"components/marketing/lib/marketing-labels.reducer\",\"components/marketing/lists/index\",\"components/marketing/video/index\",\"components/products/common/index\",\"components/products/lib/combine-products-reducers\",\"components/products/lib/date-utils\",\"components/products/lib/map-state-utils\",\"components/products/lib/reducer-utils\",\"components/products/lib/top-level-product-component-base\",\"components/products/ppss/ft-ppss-table-base\",\"components/common/elements/ft-back-to-top/ft-back-to-top\",\"components/common/elements/charting/ft-charts-configs\",\"components/common/elements/ft-carousel/ft-carousel-navigation\",\"components/common/elements/ft-carousel/ft-carousel\",\"components/common/elements/ft-date-dropdown/ft-date-dropdown\",\"components/common/elements/ft-form/ft-form-input-validation\",\"components/common/elements/ft-datepicker/ft-datepicker\",\"components/common/elements/ft-historical-modal/ft-historical-modal\",\"components/common/elements/ft-label/ft-label\",\"components/common/elements/ft-modal/ft-modal\",\"components/common/elements/ft-modal-inline/ft-modal-inline\",\"components/common/elements/ft-owl-carousel/ft-owl-carousel\",\"components/common/elements/ft-owl-tabbed/ft-owl-tabbed\",\"components/common/elements/ft-pagination/ft-pagination\",\"components/common/elements/ft-prefix-or-dash/ft-prefix-or-dash\",\"components/common/elements/ft-range-slider/ft-range-slider\",\"components/common/elements/ft-spinner/ft-spinner\",\"components/common/elements/ft-tab-collapse/ft-tab-collapse\",\"components/common/elements/ft-th-sortable/ft-th-sortable\",\"components/common/elements/ft-visual-hint/ft-visual-hint\",\"components/marketing/common/value-converters/ft-format-grid-cell\",\"components/marketing/common/value-converters/ft-format-subscription-input-names\",\"components/marketing/grids/ft-grid-filter/ft-grid-filter\",\"components/marketing/grids/ft-grid-filter-dropdown/ft-grid-filter-dropdown\",\"components/marketing/grids/ft-grid-filter-form/ft-grid-filter-form\",\"components/marketing/layouts/ft-choose-subscription/dynamic-expression-binding-behavior\",\"components/marketing/layouts/ft-choose-subscription/expression-rebaser\",\"components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step1\",\"components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step2\",\"components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step3\",\"components/marketing/layouts/ft-choose-subscription/ft-choose-subscription\",\"components/marketing/layouts/ft-lump-sum-calculator/ft-lump-sum-calculator\",\"components/marketing/layouts/ft-pension-calculator/ft-pension-calculator-step1\",\"components/marketing/layouts/ft-pension-calculator/ft-pension-calculator-step2\",\"components/marketing/layouts/ft-pension-calculator/ft-pension-calculator\",\"components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs-content\",\"components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs-label\",\"components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs\",\"components/marketing/lists/ft-document-lister/ft-document-lister-cell\",\"components/marketing/lists/ft-document-lister/ft-document-lister-dynamic-link\",\"components/marketing/lists/ft-document-lister/ft-document-lister-group-row\",\"components/marketing/lists/ft-document-lister/ft-document-lister-group\",\"components/marketing/lists/ft-document-lister/ft-document-lister-link\",\"components/marketing/lists/ft-document-lister/ft-document-lister-mobilelink\",\"components/marketing/lists/ft-document-lister/ft-document-lister\",\"components/marketing/lists/ft-report-archive-a/ft-report-archive-a\",\"components/marketing/lists/ft-report-archive-b/ft-report-archive-b\",\"components/marketing/lists/ft-report-archive-c/ft-report-archive-c\",\"components/marketing/lists/ft-report-archive-d/ft-report-archive-d\",\"components/marketing/video/ft-video-switch/ft-video-switch\",\"components/products/common/attributes/ft-share-class-refresh-listener\",\"components/products/common/attributes/share-class-link-listener\",\"components/products/common/util/show-element\",\"components/products/common/util/utils-config\",\"components/products/common/util/utils-fund-details\",\"components/products/common/util/utils-pricing-distribution\",\"components/products/common/util/utils\",\"components/products/common/value-converters/ft-dash-if-empty\",\"components/products/common/value-converters/ft-format-currency\",\"components/products/common/value-converters/ft-format-date-or-dash\",\"components/products/common/value-converters/ft-format-percentage\",\"components/products/common/value-converters/ft-format-style-width-percent\",\"components/products/common/value-converters/ft-normalize-space\",\"components/products/common/value-converters/ft-range-with-percent\",\"components/products/common/value-converters/ft-replace-dash-with\",\"components/products/common/value-converters/ft-with-dollar-or-dash\",\"components/products/lib/decorators/config-decorator\",\"components/products/overview/ft-fund-ratings/ft-fund-ratings\",\"components/products/overview/ft-fund-static-bar/ft-fund-static-bar\",\"components/products/overview/ft-performance-snapshot/ft-performance-snapshot\",\"components/products/performance/ft-calendar-year-returns/ft-calendar-year-returns\",\"components/products/performance/ft-calendar-year-returns/ft-calendar-year-tab\",\"components/products/performance/ft-discrete-returns/ft-discrete-returns\",\"components/products/performance/ft-performance-annualised/ft-performance-annualised\",\"components/products/performance/ft-performance-cumulative/ft-performance-cumulative\",\"components/products/performance/ft-performance-risk-statistics/ft-performance-risk-statistics\",\"components/products/performance/util/util\",\"components/products/portfolio/common/ft-generic-chart-component-base\",\"components/products/portfolio/common/ft-generic-hierarchical-component-base\",\"components/products/portfolio/ft-market-capitalisation/ft-market-capitalisation\",\"components/products/portfolio/ft-portfolio-allocation/ft-portfolio-allocation\",\"components/products/portfolio/ft-portfolio-no-data-message/ft-portfolio-no-data-message\",\"components/products/portfolio/ft-top-exposures/ft-top-exposures\",\"components/products/portfolio/util/hierarchical-utils\",\"components/products/portfolio/util/key-value-row-utils\",\"components/products/portfolio/util/risk-and-analysis-special-utils\",\"components/products/portfolio/util/util\",\"components/products/ppss/ft-find-a-fund/ft-find-a-fund\",\"components/products/ppss/ft-find-a-fund-btn/ft-find-a-fund-btn\",\"components/products/ppss/ft-ppss/ft-ppss\",\"components/products/ppss/ft-ppss-etf/ft-ppss-etf\",\"components/products/ppss/ft-ppss-favorite/ft-ppss-favorite\",\"components/products/ppss/ft-ppss-fund-filter/ft-ppss-fund-filter\",\"components/products/ppss/ft-ppss-fund-identifiers/ft-ppss-fund-identifiers\",\"components/products/ppss/ft-ppss-fund-name/ft-ppss-fund-name\",\"components/products/ppss/ft-ppss-performance/ft-ppss-performance-cell\",\"components/products/ppss/ft-ppss-performance/ft-ppss-performance\",\"components/products/ppss/ft-ppss-ratings/ft-ppss-ratings\",\"components/products/ppss/ft-ppss-search-box/ft-ppss-search-box\",\"components/products/ppss/ft-ppss-tab-header/ft-ppss-tab-header\",\"components/products/ppss/ft-ppss-table-toolbar/ft-ppss-table-toolbar\",\"components/products/ppss/ft-ppss-yield/ft-ppss-yield-row\",\"components/products/ppss/ft-ppss-yield/ft-ppss-yield\",\"components/products/pricing-distribution/ft-dividends/ft-dividends\",\"components/products/pricing-distribution/ft-dividends-historical/ft-dividends-historical\",\"components/products/pricing-distribution/ft-nav-high-low/ft-nav-high-low\",\"components/products/pricing-distribution/ft-price-chart/ft-price-chart\",\"components/products/pricing-distribution/ft-price-historical/ft-price-historical\",\"components/products/pricing-distribution/ft-pricing-distribution/ft-pricing-distribution\",\"components/products/pricing-distribution/ft-share-prices/ft-share-prices\",\"components/products/tax/ft-german-tax/ft-german-tax\",\"components/common/elements/charting/ft-chart/ft-chart\",\"components/common/elements/charting/ft-column-chart/ft-column-chart\",\"components/common/elements/charting/ft-multi-bar-chart/ft-multi-bar-chart\",\"components/common/elements/charting/ft-pie-chart/ft-pie-chart\",\"components/common/elements/charting/ft-bar-chart/ft-bar-chart\",\"components/common/elements/charting/ft-performance-cumulative-chart/ft-performance-cumulative-chart\",\"components/common/elements/ft-date-dropdown/lib/date-dropdown.reducer\",\"components/common/elements/ft-modal/lib/ft-modal.reducer\",\"components/marketing/common/elements/ft-gateway/ft-gateway\",\"components/marketing/common/elements/ft-multi-select-bar/ft-multi-select-bar\",\"components/marketing/common/elements/ft-responsive-table-flow/ft-responsive-table-flow-document\",\"components/marketing/common/elements/ft-responsive-table-flow/ft-responsive-table-flow\",\"components/marketing/common/elements/ft-type-ahead-search/ft-type-ahead-search\",\"components/marketing/grids/ft-grid-filter/lib/grid-filter.reducer\",\"components/marketing/grids/ft-grid-filter-form/lib/grid-filter-form.reducer\",\"components/marketing/layouts/ft-choose-subscription/lib/ft-choose-subscription.reducer\",\"components/products/common/elements/ft-caveats/ft-caveats\",\"components/products/common/elements/ft-dropdown/ft-dropdown\",\"components/products/common/elements/ft-footnote/ft-footnote\",\"components/products/common/elements/ft-fund-alert/ft-fund-alert-base\",\"components/products/common/elements/ft-fund-alert/ft-fund-alert\",\"components/products/common/elements/ft-fund-alert-banner/ft-fund-alert-banner\",\"components/products/common/elements/ft-labels/ft-labels\",\"components/products/common/elements/ft-proximal/ft-proximal\",\"components/products/common/elements/ft-share-class-filter/ft-share-class-filter\",\"components/products/lib/reducers/fund-config/config-loader.reducer\",\"components/products/lib/reducers/fund-details/fund-details.reducer\",\"components/products/lib/reducers/caveats/caveats.reducer\",\"components/products/overview/en-us-retails/ft-fund-mmfr-stable-nav-header/ft-fund-mmfr-stable-nav-header\",\"components/products/lib/reducers/labels/label-loader.reducer\",\"components/products/overview/en-us-retails/ft-fund-nav-header/ft-fund-nav-header\",\"components/products/overview/en-us-retails/ft-fund-price-header/ft-fund-price-header\",\"components/products/performance/ft-calendar-year-returns/lib/calendar-utils\",\"components/products/performance/ft-calendar-year-returns/lib/calendar-year-returns.reducer\",\"components/products/performance/ft-discrete-returns/lib/discrete-returns-utils\",\"components/products/performance/ft-discrete-returns/lib/discrete-returns.reducer\",\"components/products/performance/ft-performance-annualised/lib/performance-annualised-utils\",\"components/products/performance/ft-performance-annualised/lib/performance-annualised.reducer\",\"components/products/performance/ft-performance-cumulative/lib/performance-cumulative-utils\",\"components/products/performance/ft-performance-cumulative/lib/performance-cumulative.reducer\",\"components/products/portfolio/ft-portfolio-no-data-message/lib/portfolio-no-data-message.reducer\",\"components/products/ppss/ft-ppss/lib/ppss.reducer\",\"components/products/ppss/ft-find-a-fund/lib/find-a-fund.reducer\",\"components/products/pricing-distribution/ft-pricing-distribution/lib/pricing-distribution.reducer\",\"components/products/pricing-distribution/ft-pricing-distribution/lib/utils\",\"components/products/tax/ft-german-tax/lib/tax.reducer\",\"components/marketing/lists/ft-report-archive-c/lib/intl/report-archive-c.reducer\",\"components/products/common/elements/ft-caveats/lib/caveat-utils\",\"components/products/common/elements/ft-caveats/lib/caveats.reducer\",\"components/products/common/elements/ft-share-class-filter/lib/share-class-filter.reducer\",\"components/products/overview/ft-fund-information/lib/common/fund-information.reducer\",\"components/products/overview/ft-fund-static-bar/lib/gw-etf/fund-static-bar.reducer\",\"components/common/elements/ft-legal-jump-link\",\"components/common/elements/charting/ft-chart\",\"components/products/overview/ft-performance-snapshot/annualised-snapshot\",\"components/products/overview/ft-performance-snapshot/calendar-year-snapshot\",\"components/products/overview/ft-performance-snapshot/cumulative-snapshot-alternative\",\"components/products/overview/ft-performance-snapshot/cumulative-snapshot\",\"components/products/overview/ft-performance-snapshot/discrete-snapshot\",\"components/products/portfolio/common/ft-generic-exposure-component\",\"components/products/ppss/ft-ppss-ratings/ft-ppss-ratings-row\"],\"web-platform-etf\":[\"configuration/etf-gb/main\",\"configuration/etf/beans\",\"configuration/etf/components\",\"configuration/etf/main\",\"configuration/etf/reducers\",\"configuration/etf/state\",\"components/products/overview/ft-fund-information/etf/ft-fund-information\",\"components/products/overview/ft-trading-information/etf/ft-trading-information\",\"components/products/performance/ft-backtested-performance-annualised/etf/ft-backtested-performance-annualised\",\"components/products/performance/ft-backtested-performance-calendar/etf/ft-backtested-performance-calendar\",\"components/products/performance/ft-backtested-performance-cumulative/etf/ft-backtested-performance-cumulative\",\"components/products/performance/ft-calendar-year-returns/etf/ft-calendar-year-returns\",\"components/products/performance/ft-performance-annualised/etf/ft-performance-annualised\",\"components/products/portfolio/ft-geographic-allocation/etf/ft-geographic-allocation\",\"components/products/portfolio/ft-holdings/etf/ft-holdings\",\"components/products/portfolio/ft-portfolio-statistics-and-positions/etf/ft-portfolio-statistics-and-positions\",\"components/products/portfolio/ft-sector-allocation/etf/ft-sector-allocation\",\"components/products/portfolio/lib/etf/portfolio-chart.reducer\",\"components/products/tax/ft-german-tax/etf/ft-german-tax\",\"components/products/overview/ft-fund-information/lib/etf/fund-information.reducer\",\"components/products/overview/ft-fund-information/lib/etf-gb/fund-information.reducer\",\"components/products/overview/ft-trading-information/etf/lib/ft-trading-information.reducer\",\"components/products/performance/ft-backtested-performance-annualised/lib/etf/backtested-performance-annualised.reducer\",\"components/products/performance/ft-backtested-performance-calendar/lib/etf/backtested-performance-calendar.reducer\",\"components/products/performance/ft-backtested-performance-cumulative/lib/etf/backtested-performance-cumulative.reducer\",\"components/products/performance/ft-calendar-year-returns/lib/etf/calendar-year-returns.reducer\",\"components/products/performance/ft-discrete-returns/lib/etf/discrete-returns.reducer\",\"components/products/performance/ft-performance-annualised/lib/etf/performance-annualised.reducer\",\"components/products/performance/ft-performance-cumulative/lib/etf/performance-cumulative.reducer\",\"components/products/portfolio/ft-holdings/etf/lib/holdings.reducer\",\"components/products/portfolio/ft-portfolio-statistics-and-positions/lib/etf/portfolio-statistics-and-positions.reducer\",\"components/products/ppss/ft-ppss/lib/etf/ppss.reducer\",\"components/products/pricing-distribution/ft-pricing-distribution/lib/etf/pricing-distribution.reducer\",\"components/products/tax/ft-german-tax/lib/etf/german-tax.reducer\",\"components/products/overview/ft-trading-information/etf/lib/etf/trading-information.reducer\",\"components/products/portfolio/ft-geographic-allocation/etf/lib/etf/geographic-allocation.reducer\",\"components/products/portfolio/ft-holdings/etf/lib/etf/holdings.reducer\"],\"web-platform-gw\":[\"configuration/en-gb/main\",\"configuration/gw/beans\",\"configuration/gw/components\",\"configuration/gw/main\",\"configuration/gw/reducers\",\"configuration/gw/state\",\"components/products/overview/ft-fund-information/gw/ft-fund-information\",\"components/products/portfolio/ft-asset-allocation/gw/ft-asset-allocation\",\"components/products/portfolio/ft-asset-class-exposure/gw/ft-asset-class-exposure\",\"components/products/portfolio/ft-average-portfolio-exposure/gw/ft-average-portfolio-exposure\",\"components/products/portfolio/ft-currency-breakdown/gw/ft-currency-breakdown\",\"components/products/portfolio/ft-fund-measures/gw/ft-fund-measures\",\"components/products/portfolio/ft-geographic-breakdown/gw/ft-geographic-breakdown\",\"components/products/portfolio/ft-geographic-exposure/gw/ft-geographic-exposure\",\"components/products/portfolio/ft-manager-roster/gw/ft-manager-roster\",\"components/products/portfolio/ft-portfolio-exposure/gw/ft-portfolio-exposure\",\"components/products/portfolio/ft-portfolio-risk-and-return-analysis/gw/ft-portfolio-risk-and-return-analysis\",\"components/products/portfolio/ft-portfolio-statistics-and-positions/gw/ft-portfolio-statistics-and-positions\",\"components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-actual\",\"components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-forecast\",\"components/products/portfolio/ft-sector-allocation/gw/ft-sector-allocation\",\"components/products/portfolio/ft-sector-exposure/gw/ft-sector-exposure\",\"components/products/portfolio/ft-security-type-exposure/gw/ft-security-type-exposure\",\"components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/ft-top-risk-allocation-by-asset-class\",\"components/products/portfolio/ft-top-ten-holdings/gw/ft-top-ten-holdings\",\"components/products/portfolio/ft-value-at-risk/gw/ft-value-at-risk\",\"components/products/portfolio/lib/gw/portfolio-chart.reducer\",\"components/products/portfolio/ft-strategy-breakdown/gw/ft-strategy-breakdown\",\"components/marketing/lists/ft-document-lister/lib/gw/ft-document-lister.reducer\",\"components/marketing/lists/ft-report-archive-a/lib/gw/report-archive-a.reducer\",\"components/marketing/lists/ft-report-archive-b/lib/gw/report-archive-b.reducer\",\"components/marketing/video/ft-video-switch/lib/gw/ft-video-switch.reducer\",\"components/products/overview/ft-fund-information/lib/en-gb/fund-information.reducer\",\"components/products/overview/ft-fund-information/lib/gw/fund-information.reducer\",\"components/products/overview/ft-fund-ratings/lib/gw/fund-ratings.reducer\",\"components/products/performance/ft-calendar-year-returns/lib/gw/calendar-year-returns.reducer\",\"components/products/performance/ft-discrete-returns/lib/gw/discrete-returns.reducer\",\"components/products/performance/ft-performance-annualised/lib/gw/performance-annualised.reducer\",\"components/products/performance/ft-performance-cumulative/lib/gw/performance-cumulative.reducer\",\"components/products/performance/ft-performance-risk-statistics/lib/gw/performance-risk-statistics.reducer\",\"components/products/portfolio/ft-fund-measures/gw/lib/fund-measures.reducer\",\"components/products/portfolio/ft-portfolio-statistics-and-positions/lib/gw/portfolio-statistics-and-positions.reducer\",\"components/products/portfolio/ft-risk-contribution/lib/gw/risk-contribution.reducer\",\"components/products/portfolio/ft-security-type-exposure/lib/gw/security-type-exposure.reducer\",\"components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/lib/top-risk-allocation-by-asset-class.reducer\",\"components/products/portfolio/ft-value-at-risk/gw/lib/value-at-risk.reducer\",\"components/products/ppss/ft-ppss/lib/gw/ppss.reducer\",\"components/products/pricing-distribution/ft-pricing-distribution/lib/gw/pricing-distribution.reducer\",\"components/products/tax/ft-german-tax/lib/gw/german-tax.reducer\",\"components/marketing/common/elements/ft-multi-select-bar/lib/gw/ft-multi-select-bar.reducer\",\"components/marketing/common/elements/ft-type-ahead-search/lib/gw/ft-type-ahead-search.reducer\",\"components/products/common/elements/ft-fund-alert/lib/gw/fund-alert.reducer\",\"components/products/portfolio/ft-manager-roster/gw/lib/gw/manager-roster.reducer\",\"components/products/portfolio/ft-sector-exposure/gw/lib/gw/sector-exposure.reducer\"],\"web-platform-us-retail\":[\"configuration/en-us-retail/beans\",\"configuration/en-us-retail/components\",\"configuration/en-us-retail/main\",\"configuration/en-us-retail/state\",\"components/products/lib/en-us-retail/product-configuration-reducer\",\"components/products/distributions/en-us-retail/ft-distributions/ft-distribution-rate-at-breakpoint\",\"components/products/distributions/en-us-retail/ft-distributions/ft-distributions\",\"components/products/distributions/en-us-retail/ft-distributions/ft-rates-and-yields\",\"components/products/distributions/en-us-retail/ft-distributions/ft-yield-rows\",\"components/products/distributions/en-us-retail/ft-distributions-ytd/ft-distributions-ytd\",\"components/products/historical/en-us-retail/ft-historical-cumulative-total-returns/ft-historical-cumulative-total-returns\",\"components/products/historical/en-us-retail/ft-historical-average-annual-total-returns/ft-historical-average-annual-total-returns\",\"components/products/overview/ft-fund-static-bar/en-us-retail/ft-fund-static-bar\",\"components/products/performance/en-us-retail/ft-after-tax-average-annual-returns/ft-after-tax-average-annual-returns\",\"components/products/performance/en-us-retail/ft-average-annual-total-returns/ft-average-annual-total-returns\",\"components/products/performance/en-us-retail/ft-expenses-volatility-benchmarks/ft-expenses-volatility-benchmarks\",\"components/products/performance/ft-calendar-year-returns/en-us-retail/ft-calendar-year-returns\",\"components/products/performance/ft-performance-cumulative/en-us-retail/ft-performance-cumulative\",\"components/products/portfolio/en-us-retail/ft-asset-mix/ft-asset-mix\",\"components/products/portfolio/en-us-retail/ft-category-fund-list/ft-category-fund-list\",\"components/products/portfolio/en-us-retail/ft-asset-class-exposure/ft-asset-class-exposure\",\"components/products/portfolio/en-us-retail/ft-commodities-sector-breakdown/ft-commodities-sector-breakdown\",\"components/products/portfolio/en-us-retail/ft-coupon-rate-breakdown/ft-coupon-rate-breakdown\",\"components/products/portfolio/en-us-retail/ft-credit-quality-exposure/ft-credit-quality-exposure\",\"components/products/portfolio/en-us-retail/ft-currency-distribution/ft-currency-distribution\",\"components/products/portfolio/en-us-retail/ft-fixed-income-sector-breakdown/ft-fixed-income-sector-breakdown\",\"components/products/portfolio/en-us-retail/ft-geographic-exposure/ft-geographic-exposure\",\"components/products/portfolio/en-us-retail/ft-manager-roster/ft-manager-allocation-contents\",\"components/products/portfolio/en-us-retail/ft-manager-roster/ft-manager-name-or-modal\",\"components/products/portfolio/en-us-retail/ft-manager-roster/ft-manager-roster-contents\",\"components/products/portfolio/en-us-retail/ft-manager-roster/ft-manager-roster\",\"components/products/portfolio/en-us-retail/ft-maturity-breakdown/ft-maturity-breakdown\",\"components/products/portfolio/en-us-retail/ft-quality-breakdown/ft-quality-breakdown-table\",\"components/products/portfolio/en-us-retail/ft-quality-breakdown/ft-quality-breakdown\",\"components/products/portfolio/en-us-retail/ft-sector-breakdown/ft-sector-breakdown\",\"components/products/portfolio/en-us-retail/ft-sector-exposure/ft-sector-exposure\",\"components/products/portfolio/en-us-retail/ft-statistics-and-positions/ft-statistics-and-positions\",\"components/products/portfolio/en-us-retail/ft-strategy-breakdown/ft-strategy-breakdown\",\"components/products/portfolio/en-us-retail/ft-top-exposures/ft-top-exposures-display\",\"components/products/portfolio/en-us-retail/ft-top-exposures/ft-top-exposures\",\"components/products/portfolio/ft-geographic-breakdown/en-us-retail/ft-geographic-breakdown\",\"components/products/portfolio/ft-portfolio-statistics-and-positions/en-us-retail/ft-portfolio-statistics-and-positions\",\"components/products/portfolio/ft-top-ten-holdings/en-us-retail/ft-top-ten-holdings\",\"components/products/ppss/ft-ppss-performance/en-us-retail/ft-ppss-performance-row\",\"components/products/ppss/ft-ppss-performance/en-us-retail/ft-ppss-performance\",\"components/products/tax/en-us-retail/ft-additional-tax-information/ft-additional-tax-information\",\"components/products/tax/en-us-retail/ft-tax-information/ft-tax-information\",\"components/products/pricing/en-us-retail/ft-daily-prices-and-breakpoints/ft-daily-prices-and-breakpoints\",\"components/products/pricing/en-us-retail/ft-pricing-at-nav/ft-pricing-at-nav\",\"components/products/historical/en-us-retail/ft-historical-cumulative-total-returns/lib/historical-cumulative-total-returns.reducer\",\"components/products/historical/en-us-retail/ft-historical-average-annual-total-returns/lib/historical-average-annual-total-returns.reducer\",\"components/products/performance/en-us-retail/ft-after-tax-average-annual-returns/lib/after-tax-average-annual-returns.reducer\",\"components/products/performance/en-us-retail/ft-average-annual-total-returns/lib/average-annual-total-returns.reducer\",\"components/products/performance/ft-calendar-year-returns/lib/en-us-retail/calendar-year-returns-labels.reducer\",\"components/products/performance/ft-calendar-year-returns/lib/en-us-retail/calendar-year-returns.reducer\",\"components/products/performance/ft-performance-cumulative/lib/en-us-retail/performance-cumulative.reducer\",\"components/products/portfolio/en-us-retail/ft-statistics-and-positions/lib/statistics-and-positions.config\",\"components/products/portfolio/en-us-retail/ft-statistics-and-positions/lib/statistics-and-positions\",\"components/products/portfolio/en-us-retail/ft-statistics-and-positions/lib/statistics-and-positions.not\",\"components/products/portfolio/ft-geographic-breakdown/lib/en-us-retail/geographic-breakdown.reducer\",\"components/products/portfolio/ft-portfolio-statistics-and-positions/lib/en-us-retail/portfolio-statistics-and-positions.reducer\",\"components/products/ppss/ft-ppss/lib/en-us-retail/ppss.reducer\",\"components/products/tax/en-us-retail/ft-tax-information/lib/tax-information\",\"components/products/tax/en-us-retail/ft-tax-information/lib/tax-labels-reducer\",\"components/products/pricing/en-us-retail/ft-pricing-at-nav/charting/ft-pricing-at-nav-chart\",\"components/products/pricing/en-us-retail/ft-pricing-at-nav/lib/pricing-at-nav\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/caveats.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distribution-rate-at-breakpoint.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distribution-rate.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distributions-combine.reducers\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distributions-configuration.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distributions-first.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distributions-labels.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/distributions-ytd.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/seven-days-yield.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/tax-equivalent-distribution-rate-nav-pop.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/tax-equivalent-distribution-rate.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/tax-equivalent-yield-state-city.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/tax-equivalent-yield.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/thirty-days-yield.reducer\",\"components/products/distributions/en-us-retail/ft-distributions/lib/en-us-retail/util\",\"components/products/historical/en-us-retail/ft-historical-cumulative-total-returns/lib/en-us-retail/historical-cumulative-total-returns.reducer\",\"components/products/historical/en-us-retail/ft-historical-average-annual-total-returns/lib/en-us-retail/historical-average-annual-total-returns.reducer\",\"components/products/overview/ft-fund-static-bar/en-us-retail/lib/en-us-retail/fund-static-bar.reducer\",\"components/products/performance/en-us-retail/ft-after-tax-average-annual-returns/lib/en-us-retail/after-tax-average-annual-returns.reducer\",\"components/products/performance/en-us-retail/ft-average-annual-total-returns/lib/en-us-retail/average-annual-total-returns.config\",\"components/products/performance/en-us-retail/ft-average-annual-total-returns/lib/en-us-retail/average-annual-total-returns.reducer\",\"components/products/performance/en-us-retail/ft-expenses-volatility-benchmarks/lib/en-us-retail/expenses-volatility-benchmarks.reducer\",\"components/products/portfolio/en-us-retail/ft-asset-mix/lib/en-us-retail/asset-mix\",\"components/products/portfolio/en-us-retail/ft-asset-class-exposure/lib/en-us-retail/asset-class-exposure.config\",\"components/products/portfolio/en-us-retail/ft-asset-class-exposure/lib/en-us-retail/asset-class-exposure.reducer\",\"components/products/portfolio/en-us-retail/ft-commodities-sector-breakdown/lib/en-us-retail/commodities-sector-breakdown.config\",\"components/products/portfolio/en-us-retail/ft-commodities-sector-breakdown/lib/en-us-retail/commodities-sector-breakdown.reducer\",\"components/products/portfolio/en-us-retail/ft-coupon-rate-breakdown/lib/en-us-retail/coupon-rate-breakdown-labels.reducer\",\"components/products/portfolio/en-us-retail/ft-coupon-rate-breakdown/lib/en-us-retail/coupon-rate-breakdown.reducer\",\"components/products/portfolio/en-us-retail/ft-credit-quality-exposure/lib/en-us-retail/credit-quality-exposure.reducer\",\"components/products/portfolio/en-us-retail/ft-currency-distribution/lib/en-us-retail/currency-distribution.config\",\"components/products/portfolio/en-us-retail/ft-currency-distribution/lib/en-us-retail/currency-distribution.reducer\",\"components/products/portfolio/en-us-retail/ft-fixed-income-sector-breakdown/lib/en-us-retail/fixed-income-sector-breakdown.config\",\"components/products/portfolio/en-us-retail/ft-fixed-income-sector-breakdown/lib/en-us-retail/fixed-income-sector-breakdown.reducer\",\"components/products/portfolio/en-us-retail/ft-geographic-exposure/lib/en-us-retail/geographic-exposure\",\"components/products/portfolio/en-us-retail/ft-manager-roster/lib/en-us-retail/manager-roster.reducer\",\"components/products/portfolio/en-us-retail/ft-maturity-breakdown/lib/en-us-retail/maturity-breakdown-labels.reducer\",\"components/products/portfolio/en-us-retail/ft-maturity-breakdown/lib/en-us-retail/maturity-breakdown.reducer\",\"components/products/portfolio/en-us-retail/ft-quality-breakdown/lib/en-us-retail/quality-breakdown\",\"components/products/portfolio/en-us-retail/ft-sector-breakdown/lib/en-us-retail/sector-breakdown\",\"components/products/portfolio/en-us-retail/ft-sector-exposure/lib/en-us-retail/sector-exposure.reducer\",\"components/products/portfolio/en-us-retail/ft-strategy-breakdown/lib/en-us-retail/strategy-breakdown-labels.reducer\",\"components/products/portfolio/en-us-retail/ft-strategy-breakdown/lib/en-us-retail/strategy-breakdown.reducer\",\"components/products/portfolio/en-us-retail/ft-top-exposures/lib/en-us-retail/top-exposures-labels.reducer\",\"components/products/portfolio/en-us-retail/ft-top-exposures/lib/en-us-retail/top-exposures.reducer\",\"components/products/portfolio/ft-top-ten-holdings/en-us-retail/lib/en-us-retail/top-ten-holdings.reducer\",\"components/products/tax/en-us-retail/ft-additional-tax-information/lib/en-us-retail/additional-tax-information\",\"components/products/pricing/en-us-retail/ft-daily-prices-and-breakpoints/lib/en-us-retail/daily-prices-and-breakpoints\",\"components/products/pricing/en-us-retail/ft-pricing-at-nav/lib/en-us-retail/pricing-at-nav-labels\",\"components/products/pricing/en-us-retail/ft-pricing-at-nav/lib/en-us-retail/pricing-at-nav\",\"components/products/portfolio/en-us-retail/ft-credit-quality-exposure/ft-credit-quality-exposure-table\"],\"local-test\":[\"components/test/index\",\"components/test/docs/docs-router\",\"components/test/docs/docs\",\"components/test/docs/ft-doc\",\"components/test/docs/main\",\"components/test/elements/ft-full-width-page-no-panel\",\"components/test/elements/ft-full-width-page\",\"components/test/elements/ft-header\",\"components/test/elements/ft-breadcrumbs\",\"components/test/elements/ft-footer\",\"components/test/elements/ft-fund-tabs\",\"components/test/elements/ft-fund-title\",\"aurelia-route-recognizer\",\"aurelia-router\",\"aurelia-history\",\"aurelia-history-browser\",\"aurelia-templating-router\",\"aurelia-templating-router/route-loader\",\"aurelia-templating-router/router-view\",\"aurelia-templating-router/route-href\"]}})}","define('environment',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = {\n debug: true,\n testing: true,\n cssRoot: 'http://pattern-library.corp.frk.com',\n version: 'build: local, ver: 1.0.1, bt: 2017/09/28 09:45 GMT+0100'\n };\n});\r\ndefine('lib/component-base',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ComponentBase = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var ComponentBase = exports.ComponentBase = function () {\n function ComponentBase() {\n _classCallCheck(this, ComponentBase);\n\n this.logger = _aureliaFramework.LogManager.getLogger(this.constructor.name);\n }\n\n ComponentBase.prototype.getLabel = function getLabel(labelId) {\n if (!this.label) {\n this.logger.error('No label data found, label should be set');\n return '[!!' + labelId + ']';\n }\n if (this.label.get) {\n var label = this.label.get(labelId);\n return label !== undefined ? label : '[' + labelId + ']';\n }\n return '[' + labelId + ']';\n };\n\n return ComponentBase;\n }();\n});\r\ndefine('lib/data-service',['exports', 'aurelia-framework', 'aurelia-fetch-client'], function (exports, _aureliaFramework, _aureliaFetchClient) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataService = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var PAGE_JSON_CLASS = 'page-json';var DataService = exports.DataService = (_dec = (0, _aureliaFramework.inject)(_aureliaFetchClient.HttpClient, 'Beans', 'REST'), _dec(_class = function () {\n function DataService(http, beansConfiguration, restApi) {\n _classCallCheck(this, DataService);\n\n this._cache = {};\n this._preloaded = false;\n this._postProcessor = null;\n\n this.http = http;\n this.beansConfiguration = beansConfiguration;\n this.restApi = restApi;\n this.logger = _aureliaFramework.LogManager.getLogger('DataService');\n this._preloadFromPage();\n }\n\n DataService.prototype.getBean = function getBean(bean) {\n var url = void 0;\n if (bean.bid !== bean.cid) {\n url = this.restApi.getRestUrl(bean);\n } else {\n url = bean.bid;\n }\n return this.getBeanFromUrl(bean, url);\n };\n\n DataService.prototype.getBeanFromUrl = function getBeanFromUrl(bean, url) {\n var _this = this;\n\n if (this._cache[url] !== undefined) {\n if (this._cache[url] instanceof Promise) {\n this.logger.debug('requested previously but not yet available: ' + url);\n return this._cache[url];\n }\n this.logger.debug('Loaded from cache: ' + url);\n return Promise.resolve(this._cache[url]);\n }\n this.logger.debug('Loading via http: ' + url);\n return this._cache[url] = this.http.fetch(url, {\n credentials: 'same-origin'\n }).then(this._checkStatus).then(function (json) {\n return json.json();\n }).then(function (data) {\n _this.logger.debug('Loaded via http: ' + url);\n var json = _this._postProcess(data);\n _this._cache[url] = json;\n return json;\n });\n };\n\n DataService.prototype.getBeans = function getBeans(beans) {\n return Promise.all(beans.map(this.getBean, this));\n };\n\n DataService.prototype._checkStatus = function _checkStatus(response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n var error = new Error(response.statusText);\n error.response = response;\n throw error;\n };\n\n DataService.prototype._postProcess = function _postProcess(bean) {\n if (this._postProcessor !== null) {\n return this._postProcessor(bean);\n }\n return bean;\n };\n\n DataService.prototype._preloadFromPage = function _preloadFromPage() {\n this.logger.debug('Loading json from page');\n\n var pageJsonNodes = document.getElementsByClassName(PAGE_JSON_CLASS);\n for (var i = 0; i < pageJsonNodes.length; i++) {\n var beans = JSON.parse(pageJsonNodes[i].innerHTML);\n var params = beans.params;\n delete beans.params;\n\n for (var beanId in beans) {\n var url = this.restApi.getRestUrlFromPageJson(beanId, beans[beanId], params);\n this._cache[url] = this._postProcess(beans[beanId]);\n this.logger.debug('Loaded from page: ' + url);\n }\n }\n this._preloaded = true;\n };\n\n return DataService;\n }()) || _class);\n});\r\ndefine('lib/date-formatter',['exports', 'moment', 'lodash/get', 'moment-parseformat', 'jquery', 'aurelia-framework'], function (exports, _moment, _get, _momentParseformat, _jquery, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = undefined;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _momentParseformat2 = _interopRequireDefault(_momentParseformat);\n\n var _jquery2 = _interopRequireDefault(_jquery);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('date-formatter');\n\n var DateFormatter = function () {\n function DateFormatter() {\n _classCallCheck(this, DateFormatter);\n\n var config = (0, _jquery2.default)('#site-config');\n\n if ((0, _get2.default)(config, '0.attributes.long-date') && (0, _get2.default)(config, '0.attributes.short-date')) {\n this.configData = {\n longDate: config[0].attributes['long-date'].value,\n shortDate: config[0].attributes['short-date'].value\n };\n } else {\n this.configData = {\n longDate: 'dd MMMM yyyy',\n shortDate: 'dd.MM.yyyy'\n };\n }\n }\n\n DateFormatter.prototype.convertDateFormat = function convertDateFormat(originalDate, toFormat) {\n var fromDate = originalDate;\n var formatToChangeTo = toFormat === 'L' ? this.getDateFormatLong() : this.getDateFormatShort();\n\n var originalformat = (0, _momentParseformat2.default)(fromDate);\n var momentFormatted = (0, _moment2.default)(fromDate, originalformat);\n var convertToMomentFormat = (0, _moment2.default)().toMomentFormatString(formatToChangeTo);\n\n var val = momentFormatted.formatWithJDF(convertToMomentFormat).toString();\n logger.info('date-formatter value', val);\n return val;\n };\n\n DateFormatter.prototype.getDateFormats = function getDateFormats() {\n return this.configData;\n };\n\n DateFormatter.prototype.getDateFormatLong = function getDateFormatLong() {\n return this.configData.longDate;\n };\n\n DateFormatter.prototype.getDateFormatShort = function getDateFormatShort() {\n return this.configData.shortDate;\n };\n\n return DateFormatter;\n }();\n\n exports.default = DateFormatter;\n});\r\ndefine('lib/general.reducer',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.general = general;\n function general() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n default:\n return state;\n }\n }\n});\r\ndefine('lib/paging-utils',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getPagingInfo = getPagingInfo;\n exports.calculatePagingWithEllipsis = calculatePagingWithEllipsis;\n function getPagingInfo(totalRecords) {\n var pageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n var pageNumber = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var hasRecords = totalRecords > 0;\n var totalPages = Math.ceil(totalRecords / pageSize);\n\n if (pageNumber > totalPages) {\n pageNumber = totalPages;\n }\n var firstPage = hasRecords && pageNumber >= 1 ? 1 : null;\n var previousPage = hasRecords && pageNumber > 1 ? pageNumber - 1 : null;\n var nextPage = hasRecords && pageNumber < totalPages ? pageNumber + 1 : null;\n var lastPage = hasRecords && pageNumber <= totalPages ? totalPages : null;\n var pages = Array.from(new Array(totalPages));\n pages = pages.map(function (notUsed, index) {\n return _pageDetails(totalRecords, pageSize, index + 1);\n });\n return {\n totalPages: totalPages,\n pages: pages,\n totalRecords: totalRecords,\n firstPage: firstPage,\n previousPage: previousPage,\n nextPage: nextPage,\n lastPage: lastPage,\n currentPage: hasRecords ? pages[pageNumber - 1] : null,\n firstRecord: hasRecords ? 1 : 0,\n lastRecord: totalRecords\n };\n }\n\n function calculatePagingWithEllipsis(pagingInfo) {\n var maxNumberOfElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n var truncatedToShow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n\n if (pagingInfo.totalPages <= maxNumberOfElements) {\n return pagingInfo.pages;\n }\n var pagingElementsTmp = [];\n var hasLeftEllipsis = pagingInfo.currentPage.page > truncatedToShow + 3;\n var hasRightEllipsis = pagingInfo.totalPages - pagingInfo.currentPage.page > truncatedToShow + 2;\n var leftPaddingElements = truncatedToShow;\n if (!hasRightEllipsis) {\n leftPaddingElements += truncatedToShow - pagingInfo.totalPages + pagingInfo.currentPage.page + 2;\n }\n if (!hasLeftEllipsis) {\n leftPaddingElements += 1;\n }\n var rightPaddingElements = truncatedToShow;\n if (!hasLeftEllipsis) {\n rightPaddingElements += truncatedToShow - pagingInfo.currentPage.page + 3;\n }\n if (!hasRightEllipsis) {\n rightPaddingElements += 1;\n }\n\n var startIndex = pagingInfo.currentPage.page - leftPaddingElements - 1;\n startIndex = startIndex < 1 ? 1 : startIndex;\n\n var endIndex = pagingInfo.currentPage.page + rightPaddingElements;\n endIndex = endIndex > pagingInfo.totalPages - 1 ? pagingInfo.totalPages - 1 : endIndex;\n\n pagingElementsTmp.push(pagingInfo.pages[0]);\n if (hasLeftEllipsis) {\n pagingElementsTmp.push({ isEllipsis: true, page: 'e' });\n }\n for (var c = startIndex; c < endIndex; c++) {\n pagingElementsTmp.push(pagingInfo.pages[c]);\n }\n if (hasRightEllipsis) {\n pagingElementsTmp.push({ isEllipsis: true, page: 'e' });\n }\n pagingElementsTmp.push(pagingInfo.pages[pagingInfo.totalPages - 1]);\n return pagingElementsTmp;\n }\n\n function _pageDetails(totalRecords, pageSize, page) {\n return {\n page: page,\n startRecord: 1 + page * pageSize - pageSize,\n endRecord: Math.min(totalRecords, page * pageSize),\n isEllipsis: false\n };\n }\n});\r\ndefine('lib/redux-component-base',['exports', './component-base'], function (exports, _componentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ReduxComponentBase = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ReduxComponentBase = exports.ReduxComponentBase = function (_ComponentBase) {\n _inherits(ReduxComponentBase, _ComponentBase);\n\n function ReduxComponentBase(store) {\n _classCallCheck(this, ReduxComponentBase);\n\n var _this = _possibleConstructorReturn(this, _ComponentBase.call(this));\n\n _this.unsubscribeFromStore = null;\n\n _this.dispatch = store.dispatch;\n\n if (typeof _this.mapState === 'function') {\n _this.unsubscribeFromStore = store.subscribe(function () {\n var newState = store.getState();\n if (_this.populateData && newState.products.app.currentFundId && _this.fundId !== newState.products.app.currentFundId) {\n _this.fundId = newState.products.app.currentFundId;\n _this.populateData();\n } else {\n _this.mapState(newState);\n }\n });\n }\n return _this;\n }\n\n ReduxComponentBase.prototype.unbind = function unbind() {\n if (this.unsubscribeFromStore) {\n this.unsubscribeFromStore();\n }\n };\n\n return ReduxComponentBase;\n }(_componentBase.ComponentBase);\n});\r\ndefine('lib/rest-api',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RestApi = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var RestApi = exports.RestApi = function () {\n function RestApi(beanConfig, site, segment, dataServiceConfig) {\n _classCallCheck(this, RestApi);\n\n this.beanConfig = beanConfig;\n this.site = site;\n this.segment = segment;\n this.dataServiceConfig = dataServiceConfig;\n this.logger = _aureliaFramework.LogManager.getLogger('rest-api');\n this.logger.debug('restApi initiated');\n }\n\n RestApi.prototype.getRestUrl = function getRestUrl(bean) {\n var _this = this;\n\n var url = this.getUrlBase();\n\n if (this.beanConfig.bean[bean.bid]) {\n var parameters = this.beanConfig.bean[bean.bid].parameters;\n\n if (parameters) {\n if (parameters.get('fundId')) {\n if (bean.fundId === undefined) {\n throw new Error('fundId must be defined on bean');\n }\n url += bean.fundId + '/';\n }\n if (parameters.get('shareClassCode')) {\n if (bean.shareClassCode === undefined) {\n throw new Error('shareClassCode must be defined on bean');\n }\n url += bean.shareClassCode + '/';\n }\n if (parameters.get('cmsTypeId')) {\n if (bean.cmsTypeId === undefined) {\n throw new Error('cmsTypeId must be defined on bean');\n }\n url += bean.cmsTypeId + '/';\n }\n url += bean.bid;\n var amp = '?';\n parameters.forEach(function (paramName, varName) {\n if (bean[varName] !== undefined) {\n if (!['fundId', 'shareClassCode', 'cmsTypeId'].includes(varName)) {\n url += amp + paramName + '=' + bean[varName];\n amp = '&';\n }\n } else {\n _this.logger.error('undefined parameter value for bean: no param found called: ' + varName + ' for bean: ' + bean.bid);\n }\n });\n }\n } else {\n url += bean.bid;\n }\n return url;\n };\n\n RestApi.prototype.getRestUrlFromPageJson = function getRestUrlFromPageJson(bid, params) {\n var _this2 = this;\n\n var url = this.getUrlBase();\n\n if (this.beanConfig.bean[bid]) {\n var parameters = this.beanConfig.bean[bid].parameters;\n\n if (parameters && params) {\n if (parameters.get('fundId')) {\n if (params.FundID !== undefined) {\n url += params.FundID + '/';\n } else {\n this.logger.error('no FundID parameter set in page json');\n }\n }\n url += bid;\n var amp = '?';\n parameters.forEach(function (value, key) {\n if (params[value] !== undefined) {\n if (value !== 'FundID') {\n url += amp + value + '=' + params[value];\n amp = '&';\n }\n } else {\n _this2.logger.error('undefined parameter value for page json bean: no param found called: ' + key + ' for bean: ' + bid);\n }\n });\n }\n } else {\n url = bid;\n }\n return url;\n };\n\n RestApi.prototype.getUrlBase = function getUrlBase() {\n return '/' + this.site + '/' + this.segment + '/data/' + this.dataServiceConfig + '/';\n };\n\n return RestApi;\n }();\n});\r\ndefine('lib/sort-utils',['exports', 'lodash/get', 'moment', 'aurelia-framework', 'lodash/cloneDeep', './../components/products/lib/reducer-utils'], function (exports, _get, _moment, _aureliaFramework, _cloneDeep, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.createCompare = createCompare;\n exports.toggleSortFilters = toggleSortFilters;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('sort-utils');\n function createCompare(dataKey, direction) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var dir = direction === 'DESC' ? -1 : 1;\n if (options.isNumeric) {\n return _createNumericCompare(dataKey, dir, options.secondaryCompare);\n }\n if (options.isDate) {\n return _createDateCompare(dataKey, dir, options.dateFormat, options.secondaryCompare);\n }\n return _createStringCompare(dataKey, dir, options.secondaryCompare);\n }\n\n function _createNumericCompare(dataKey, dir, secondaryCompare) {\n return function (a, b) {\n var aParsed = (0, _get2.default)(a, dataKey, '');\n var bParsed = (0, _get2.default)(b, dataKey, '');\n aParsed = typeof aParsed !== 'number' ? (0, _reducerUtils.parseNumber)(aParsed) : aParsed;\n bParsed = typeof bParsed !== 'number' ? (0, _reducerUtils.parseNumber)(bParsed) : bParsed;\n if (isNaN(aParsed) && isNaN(bParsed) || aParsed === bParsed) {\n return secondaryCompare ? secondaryCompare(a, b) : 0;\n }\n if (isNaN(aParsed)) {\n return 1;\n }\n if (isNaN(bParsed)) {\n return -1;\n }\n return (aParsed - bParsed) * dir;\n };\n }\n\n function _createStringCompare(dataKey, dir, secondaryCompare) {\n var dashes = ['\\u2014', '&#8212;', '-', ''];\n return function (a, b) {\n var aVal = (0, _get2.default)(a, dataKey, '').toString();\n var bVal = (0, _get2.default)(b, dataKey, '').toString();\n var result = aVal.localeCompare(bVal) * dir;\n if (result === 0 && secondaryCompare) return secondaryCompare(a, b);\n if (dashes.includes(aVal)) return 1;\n if (dashes.includes(bVal)) return -1;\n return result;\n };\n }\n\n function _createDateCompare(dataKey, dir, format, secondaryCompare) {\n if (format === 'YYYY-MM-DD') {\n logger.warn('Date Sorting YYYY-MM-DD Format, x1000 faster to do string sorting');\n }\n return function (a, b) {\n var aParsed = (0, _moment2.default)((0, _get2.default)(a, dataKey), format).valueOf();\n var bParsed = (0, _moment2.default)((0, _get2.default)(b, dataKey), format).valueOf();\n if (isNaN(aParsed) && isNaN(bParsed) || aParsed === bParsed) return secondaryCompare ? secondaryCompare(a, b) : 0;\n if (isNaN(aParsed)) return 1;\n if (isNaN(bParsed)) return -1;\n return (aParsed - bParsed) * dir;\n };\n }\n\n function toggleSortFilters(sortFilters, filterName) {\n sortFilters = (0, _cloneDeep2.default)(sortFilters);\n var sortColumn = sortFilters[filterName];\n if (sortColumn) {\n switch (sortColumn.direction) {\n case 'ASC':\n sortColumn.direction = 'DESC';\n break;\n case 'DESC':\n sortColumn.direction = 'ASC';\n break;\n default:\n sortColumn.direction = sortColumn.isNumeric ? 'DESC' : 'ASC';\n }\n }\n\n for (var columnName in sortFilters) {\n if (sortFilters.hasOwnProperty(columnName) && columnName !== filterName) {\n sortFilters[columnName].direction = null;\n }\n }\n\n return sortFilters;\n }\n});\r\ndefine('lib/test-utils',['exports', 'aurelia-pal', 'jquery'], function (exports, _aureliaPal, _jquery) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.simulateInputChange = simulateInputChange;\n exports.wait = wait;\n exports.getJSONFixture = getJSONFixture;\n exports.getEndlessObject = getEndlessObject;\n exports.getMockStore = getMockStore;\n exports.getTextArray = getTextArray;\n function simulateInputChange(element, value) {\n element.value = value;\n element.dispatchEvent(_aureliaPal.DOM.createCustomEvent('change', { bubbles: true }));\n return new Promise(setTimeout);\n }\n\n function wait() {\n var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n return function () {\n return new Promise(function (resolve) {\n setTimeout(resolve, delay);\n });\n };\n }\n\n function getJSONFixture(filename) {\n var result = (0, _jquery.ajax)({\n url: '/base/src' + filename,\n async: false\n });\n return result.responseJSON;\n }\n\n function getEndlessObject() {\n return new Proxy({}, {\n get: function get(target, name) {\n if (name === 'push' || name === 'slice') {\n return function () {\n return [];\n };\n }\n return getEndlessObject();\n }\n });\n }\n\n function getMockStore() {\n var mockState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var mockStore = {\n dispatch: function dispatch(action) {\n expect(action.type).toBeDefined();\n },\n subscribe: function subscribe(callback) {\n return function () {};\n },\n getState: function getState() {\n return mockState;\n }\n };\n spyOn(mockStore, 'dispatch');\n return mockStore;\n }\n\n function getTextArray($jqueryElements) {\n return Array.from($jqueryElements.map(function (index, th) {\n return $(th).text().trim().replace(/[ ]+/, ' ');\n }));\n }\n});\r\ndefine('lib/url-utils',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseUrlQuery = parseUrlQuery;\n function parseUrlQuery(queryString, pathname) {\n var params = {};\n var hash = void 0;\n\n if (queryString) {\n var hashes = queryString.slice(1).split('&');\n for (var i = 0; i < hashes.length; i++) {\n if (!hashes[i]) {\n continue;\n }\n hash = hashes[i].split('=');\n params[decodeURIComponent(hash[0]).replace(/\\+/g, ' ')] = decodeURIComponent(hash[1]).replace(/\\+/g, ' ');\n }\n }\n var sefParams = pathname.match(/\\/(\\d+)\\/((.{1,3})\\/)?/);\n if (sefParams) {\n params.FundID = sefParams[1] || params.FundID;\n if (sefParams.length === 4) {\n params.ShareClass = sefParams[3] || params.ShareClass;\n }\n }\n return params;\n }\n});\r\ndefine('configuration/common/configure',['exports', '../../environment', './http', 'redux', '../../lib/rest-api', '../../lib/data-service', '../../lib/url-utils', './middleware', 'lodash/get', '../il8n/highcharts-il8n', '../il8n/moment-il8n', 'aurelia-pal'], function (exports, _environment, _http, _redux, _restApi, _dataService, _urlUtils, _middleware, _get, _highchartsIl8n, _momentIl8n, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.commonConfigure = commonConfigure;\n exports.getInitialState = getInitialState;\n\n var _environment2 = _interopRequireDefault(_environment);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function commonConfigure(aurelia, config) {\n Promise.config({\n longStackTraces: false,\n warnings: {\n wForgottenReturn: false\n }\n });\n\n aurelia.use.globalResources(config.components);\n\n var site = (0, _get2.default)(config, 'state.general.site.site', '');\n var segment = (0, _get2.default)(config, 'state.general.segment', 'investor');\n\n var locale = (0, _get2.default)(config, 'state.general.site.locale', null);\n\n var debug = config.state.general.params.debug;\n if (debug === 'componentdata' || debug === 'web-platform') {\n _environment2.default.debug = true;\n }\n if (_environment2.default.debug) {\n aurelia.use.developmentLogging();\n }\n\n aurelia.use.defaultBindingLanguage().defaultResources().eventAggregator().plugin('aurelia-validation').feature('components/common').feature('components/products/common').feature('components/marketing/common').feature('components/marketing/grids').feature('components/marketing/layouts').feature('components/marketing/lists').feature('components/marketing/video');\n\n if (_environment2.default.testing) {\n aurelia.use.plugin('aurelia-testing');\n aurelia.use.feature('components/test');\n }\n\n if (_environment2.default.version) {\n aurelia.logger.info('FT Web Platform Version: ' + _environment2.default.version);\n _aureliaPal.PLATFORM.global.ftWebPlatformVersion = _environment2.default.version;\n }\n\n if (locale) {\n (0, _momentIl8n.setLocale)(locale);\n (0, _highchartsIl8n.setLocale)(locale);\n }\n\n var initialiserActions = ['POPULATE_CAVEATS_SUCCESS', 'LOAD_LABELS_MARKETING_SUCCESS'];\n if (config.state.general.params.FundID) {\n initialiserActions = initialiserActions.concat(['LOAD_LABELS_SUCCESS', 'LOAD_CONFIGURATION_SUCCESS']);\n }\n var restApi = new _restApi.RestApi(config.beans, site, segment, config.dataServiceConf);\n var dataService = new _dataService.DataService(_http.http, config.beans, restApi);\n var store = (0, _redux.createStore)((0, _redux.combineReducers)(config.reducers), config.state, _redux.applyMiddleware.apply(undefined, (0, _middleware.getMiddleware)(dataService, initialiserActions)));\n\n aurelia.container.registerInstance('Store', store);\n aurelia.container.registerInstance('REST', restApi);\n aurelia.container.registerInstance('Beans', config.beans);\n aurelia.container.registerInstance(_dataService.DataService, dataService);\n\n if (config.state.general.params.FundID) {\n store.dispatch({\n type: 'POPULATE_FUND_DETAILS',\n beans: config.beans.component.fundDetails,\n fundId: config.state.general.params.FundID,\n segment: config.state.general.segment\n });\n store.dispatch({\n type: 'LOAD_CONFIGURATION',\n beans: config.beans.component.configuration,\n segment: config.state.general.segment\n });\n store.dispatch({\n type: 'POPULATE_CAVEATS',\n beans: config.beans.component.caveatsFund,\n fundId: config.state.general.params.FundID,\n segment: config.state.general.segment\n });\n } else {\n store.dispatch({\n type: 'POPULATE_CAVEATS',\n beans: config.beans.component.caveats,\n segment: config.state.general.segment\n });\n }\n store.dispatch({\n type: 'LOAD_LABELS',\n beans: config.beans.component.labels,\n debug: config.state.general.params.debug\n });\n store.dispatch({\n type: 'LOAD_LABELS_MARKETING',\n beans: config.beans.component.labelsMarketing\n });\n\n aurelia.start().then(function () {\n return aurelia.enhance();\n });\n }\n\n function getInitialState() {\n var siteConfigEl = document.getElementById('site-config');\n var pathname = window.location.pathname;\n var hostname = window.location.hostname;\n var queryString = window.location.search;\n var state = {\n general: {\n site: _getSiteConfig(siteConfigEl),\n params: (0, _urlUtils.parseUrlQuery)(queryString, pathname),\n path: pathname,\n hostname: hostname,\n user: {\n loggedIn: false,\n actor: 'FA',\n actorPub: 'FA'\n }\n },\n products: {\n app: {\n currentFundId: 0,\n currentShareClass: '',\n distributions: {\n visibleElementLevel: new Map(),\n visibleElementLevelCaveats: new Map()\n },\n holdings: {\n paging: {\n currentPage: 1,\n pageSize: 20\n },\n search: {\n fields: ['ticker', 'isin', 'holdingName', 'sector'],\n searchString: ''\n },\n sort: {\n columns: new Map([['TICKER', { dataKey: 'ticker', direction: null, isNumeric: false }], ['ISIN', { dataKey: 'isin', direction: null, isNumeric: false }], ['HOLDING_NAME', { dataKey: 'holdingName', direction: null, isNumeric: false }], ['SECTOR', { dataKey: 'sector', direction: null, isNumeric: false }], ['WEIGHT', { dataKey: 'weight', direction: 'DESC', isNumeric: true }], ['MARKET_VALUE', { dataKey: 'marketValue', direction: null, isNumeric: true }], ['NOTIONAL_VALUE', { dataKey: 'notionalValue', direction: null, isNumeric: true }]])\n }\n },\n modal: {},\n ppss: {\n findAFund: {\n searchString: '',\n searchProperties: [{ name: 'FUND_NAME_FULL', dataKey: 'fundNameFull' }]\n },\n config: {\n showPerformanceTab: true,\n showEtfTab: false,\n showFundIdentifiersTab: false,\n showYieldTab: false,\n showRatingsTab: false,\n showKeywordsFilter: false,\n showPerformanceToggle: true,\n showYtdTotalReturnAtNAV: true,\n showSalesChargeToggle: false,\n showExpensesAndSalesInfo: false,\n showFavorites: false,\n showPeriodEnd: false,\n showMorningStarColumn: false,\n showTer: true,\n showOngoingCharges: false,\n performanceViewOptions: [{ name: 'AVG_ANNUAL_MONTHLY', labelKey: 'avg-annual' }, { name: 'CALENDAR_YEAR_QUARTERLY', labelKey: 'calendar-year' }, { name: 'CUMULATIVE_MONTHLY', labelKey: 'cumulative' }, { name: 'DISCRETE_QUARTERLY', labelKey: 'discrete-annual' }],\n fundIdentifiers: [],\n allFundIdentifiers: [{ name: 'FUND_NUMBER', dataKey: 'fundId', labelKey: 'fund-number' }, { name: 'TA_ID', dataKey: 'taId', labelKey: 'ta-id' }, { name: 'ISIN', dataKey: 'isin', labelKey: 'isin' }, { name: 'CUSIP', dataKey: 'cusip', labelKey: 'cusip' }, { name: 'REUTERS', dataKey: 'reuters', labelKey: 'reuters' }, { name: 'BLOOMBERG', dataKey: 'bloomberg', labelKey: 'bloomberg' }, { name: 'WKN', dataKey: 'wkn', labelKey: 'wkn' }, { name: 'SEDOL', dataKey: 'sedol', labelKey: 'sedol' }, { name: 'MERRILL_LYNCH', dataKey: 'merrillLynchId', labelKey: 'merrill-lynch' }, { name: 'VLN', dataKey: 'vln', labelKey: 'vln' }, { name: 'MEXID', dataKey: 'mexid', labelKey: 'mexid' }, { name: 'RFI', dataKey: 'rfi', labelKey: 'rfi' }, { name: 'APRI', dataKey: 'apri', labelKey: 'apri' }, { name: 'ARSN', dataKey: 'arsn', labelKey: 'arsn' }, { name: 'FUND_CODE', dataKey: 'fundCode', labelKey: 'fund-code' }, { name: 'FRONT_END', dataKey: 'frontEnd', labelKey: 'front-end' }, { name: 'LOW_LOAD', dataKey: 'lowLoad', labelKey: 'low-load' }, { name: 'DSC', dataKey: 'dsc', labelKey: 'dsc' }, { name: 'DB_CODE', dataKey: 'dbCode', labelKey: 'db-code' }],\n allDropdowns: [{\n name: 'ASSET_CLASS',\n labelKey: 'assetclass',\n dataKey: 'assetClass',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'ASSET_CLASS_TAXONOMY',\n labelKey: 'assetclasstaxonomy',\n dataKey: 'assetClassTaxonomy',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'CLASS_GEOGRAPHY',\n labelKey: 'class-geography',\n dataKey: 'classGeography',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'CLASS_STRATEGY',\n labelKey: 'class-strategy',\n dataKey: 'classStrategy',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'CURRENCY',\n labelKey: 'currency',\n dataKey: 'currency',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'DISTRIBUTION',\n labelKey: 'distribution',\n dataKey: 'distribution',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'MS_FUND_CATEGORY',\n labelKey: 'fundcategory',\n dataKey: 'msFundCategory',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'INVESTMENT_VEHICLE',\n labelKey: 'investment-vehicle',\n dataKey: 'investmentVehicle',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'MORNINGSTAR_RATING',\n labelKey: 'morningstar-rating',\n dataKey: 'mStarRatingOverall',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'REPORTING_STATUS',\n labelKey: 'reporting-status',\n dataKey: 'reportingStatus',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'SHARE_CLASS',\n labelKey: 'shareclass',\n optionPrefixLabel: 'share-class',\n dataKey: 'shareClassFeeStructure',\n selected: { value: 'ALL', label: 'All' }\n }]\n },\n currentTable: 'PERFORMANCE',\n display: {\n performanceView: 'CUMULATIVE_MONTHLY',\n includeSalesCharges: false,\n periodEnd: 'QUARTER_END' },\n filters: {\n dropdowns: []\n },\n sort: {\n columns: new Map([['FUND_NUMBER', { dataKey: 'fundId', direction: null, isNumeric: true }], ['TA_ID', { dataKey: 'taId', direction: null, isNumeric: true }], ['FUND_NAME', { dataKey: 'fundNameFull', direction: 'ASC', isNumeric: false }], ['ASSET_CLASS', { dataKey: 'assetClass', direction: null, isNumeric: false }], ['NAV', { dataKey: 'nav', direction: null, isNumeric: true }], ['NAV_CHANGE', { dataKey: 'navChange', direction: null, isNumeric: true }], ['CURRENCY', { dataKey: 'currency', direction: null, isNumeric: false }], ['MSTAR_OVERALL', { dataKey: 'mStarRatingOverall', direction: null, isNumeric: true }], ['INCOME_USE', { dataKey: 'incomeUse', direction: null, isNumeric: false }], ['DOMICILE', { dataKey: 'domicile', direction: null, isNumeric: false }], ['INCEPTION_DATE', { dataKey: 'inceptionDate', direction: null, isDate: true }], ['PERFORMANCE_INCEPTION_DATE', { dataKey: 'performanceInceptionDate', direction: null, isDate: true }], ['YTD_TOTAL_RETURN_AT_NAV', { dataKey: 'ytdTotalReturnAtNav', direction: null, isNumeric: true }], ['AUM', { dataKey: 'aum', direction: null, isNumeric: true }], ['TER', { dataKey: 'ter', direction: null, isNumeric: true }], ['ONGOING_CHARGES', { dataKey: 'ongoingCharges', direction: null, isNumeric: true }], ['AVG_ANNUAL_1YR', { baseDataKey: 'avgAnn1YearReturn', direction: null, isNumeric: true }], ['AVG_ANNUAL_3YR', { baseDataKey: 'avgAnn3YearReturn', direction: null, isNumeric: true }], ['AVG_ANNUAL_5YR', { baseDataKey: 'avgAnn5YearReturn', direction: null, isNumeric: true }], ['AVG_ANNUAL_10YR', { baseDataKey: 'avgAnn10YearReturn', direction: null, isNumeric: true }], ['AVG_ANNUAL_INC', { baseDataKey: 'avgAnnSinceIncReturn', direction: null, isNumeric: true }], ['CALENDAR_YEAR_YTD', { baseDataKey: 'cumulativeRetYtd', direction: null, isNumeric: true }], ['CALENDAR_YEAR_1YR', { baseDataKey: 'calendarYear1yrReturn', direction: null, isNumeric: true }], ['CALENDAR_YEAR_2YR', { baseDataKey: 'calendarYear2yrReturn', direction: null, isNumeric: true }], ['CALENDAR_YEAR_3YR', { baseDataKey: 'calendarYear3yrReturn', direction: null, isNumeric: true }], ['CALENDAR_YEAR_4YR', { baseDataKey: 'calendarYear4yrReturn', direction: null, isNumeric: true }], ['CALENDAR_YEAR_5YR', { baseDataKey: 'calendarYear5yrReturn', direction: null, isNumeric: true }], ['CUMULATIVE_YTD', { baseDataKey: 'cumulativeRetYtd', direction: null, isNumeric: true }], ['CUMULATIVE_1YR', { baseDataKey: 'cumulativeRet1yr', direction: null, isNumeric: true }], ['CUMULATIVE_3YR', { baseDataKey: 'cumulativeRet3yr', direction: null, isNumeric: true }], ['CUMULATIVE_5YR', { baseDataKey: 'cumulativeRet5yr', direction: null, isNumeric: true }], ['CUMULATIVE_10YR', { baseDataKey: 'cumulativeRet10yr', direction: null, isNumeric: true }], ['CUMULATIVE_INC', { baseDataKey: 'cumulativeRetInc', direction: null, isNumeric: true }], ['DISCRETE_1YR', { baseDataKey: 'discreteAnnual1yr', direction: null, isNumeric: true }], ['DISCRETE_2YR', { baseDataKey: 'discreteAnnual2yr', direction: null, isNumeric: true }], ['DISCRETE_3YR', { baseDataKey: 'discreteAnnual3yr', direction: null, isNumeric: true }], ['DISCRETE_4YR', { baseDataKey: 'discreteAnnual4yr', direction: null, isNumeric: true }], ['DISCRETE_5YR', { baseDataKey: 'discreteAnnual5yr', direction: null, isNumeric: true }], ['ISIN', { dataKey: 'isin', direction: null, isNumeric: false }], ['CUSIP', { dataKey: 'cusip', direction: null, isNumeric: false }], ['REUTERS', { dataKey: 'reuters', direction: null, isNumeric: false }], ['BLOOMBERG', { dataKey: 'bloomberg', direction: null, isNumeric: false }], ['WKN', { dataKey: 'wkn', direction: null, isNumeric: false }], ['SEDOL', { dataKey: 'sedol', direction: null, isNumeric: false }], ['MERRILL_LYNCH', { dataKey: 'merrillLynchId', direction: null, isNumeric: false }], ['VLN', { dataKey: 'vln', direction: null, isNumeric: false }], ['MEXID', { dataKey: 'mexid', direction: null, isNumeric: false }], ['RFI', { dataKey: 'rfi', direction: null, isNumeric: false }], ['APRI', { dataKey: 'apri', direction: null, isNumeric: false }], ['ARSN', { dataKey: 'arsn', direction: null, isNumeric: false }], ['FUND_CODE', { dataKey: 'fundCode', direction: null, isNumeric: false }], ['FRONT_END', { dataKey: 'frontEnd', direction: null, isNumeric: false }], ['LOW_LOAD', { dataKey: 'lowLoad', direction: null, isNumeric: false }], ['DSC', { dataKey: 'dsc', direction: null, isNumeric: false }], ['DB_CODE', { dataKey: 'dbCode', direction: null, isNumeric: false }]]),\n\n secondary: {\n dataKey: 'fundNameFull',\n direction: 'ASC',\n isNumeric: false\n }\n }\n },\n performance: {\n averageAnnualTotalReturns: {\n currentTab: 'MONTH_END'\n },\n afterTaxAverageAnnualReturns: {\n currentTab: 'MONTHLY'\n },\n performanceCumulative: {\n currentTab: 'PC_1YR'\n }\n },\n pricingDistribution: {\n navTable: {\n selectedDateRange: 'ONE_MONTH'\n },\n priceTable: {\n selectedDateRange: 'ONE_MONTH'\n },\n priceChart: {\n selectedDateRange: 'ONE_MONTH'\n },\n showHighLowOnDate: true,\n paging: {\n currentPage: 1,\n pageSize: 10\n },\n historicalDistributions: {\n loading: false\n }\n },\n tax: {\n config: {\n allDropdowns: [{\n name: 'INVESTMENT_VEHICLE',\n labelKey: 'investment-vehicle',\n dataKey: 'investmentVehicle',\n selected: { value: 'ALL', label: 'All' }\n }, {\n name: 'FUND_NAME',\n labelKey: 'fund-name-class',\n dataKey: 'fundShareClassName',\n selected: { value: 'ALL', label: 'All' }\n }]\n },\n filters: {\n dropdowns: []\n },\n sort: {\n columns: new Map([['FUND_NAME', { dataKey: 'fundShareClassName', direction: 'ASC', isNumeric: false }], ['TA_ID', { dataKey: 'taId', direction: null, isNumeric: false }], ['ISIN', { dataKey: 'isin', direction: null, isNumeric: false }], ['CURRENCY', { dataKey: 'currency', direction: null, isNumeric: false }], ['NAV', { dataKey: 'nav', direction: null, isNumeric: true }], ['REDEMPTION_PRICE', { dataKey: 'redemptionPrice', direction: null, isNumeric: true }], ['INTERIM_PROFIT', { dataKey: 'interimProfit', direction: null, isNumeric: true }], ['ESTG', { dataKey: 'equityGainEstG', direction: null, isNumeric: true }], ['KSTG', { dataKey: 'equityGainKstG', direction: null, isNumeric: true }], ['REAL_ESTATE_PROFIT', { dataKey: 'realEstateProfit', direction: null, isNumeric: true }], ['ACCUMULATED_DIVIDEND_INCOME', { dataKey: 'accumulatedDividendIncome', direction: null, isNumeric: true }]]),\n\n secondary: {\n dataKey: 'fundShareClassName',\n direction: 'ASC',\n isNumeric: false\n }\n }\n },\n registeredFootnotePlacements: [],\n visibleFootnotes: []\n },\n footnotes: [],\n legalInfo: [],\n proximals: [],\n funds: {}\n },\n marketing: {\n app: {\n grid: {\n defaults: {\n cardsPerPage: 4,\n numVisibleCards: 0,\n filters: [],\n showViewToggle: true,\n currentView: 'GRID',\n columns: []\n },\n grids: {}\n }\n }\n }\n };\n\n state.products.app.currentShareClass = state.general.params.ShareClass;\n state.general.segment = (0, _get2.default)(state, 'general.site.segment', 'investor');\n return state;\n }\n\n function _getSiteConfig(siteConfigEl) {\n var siteConfig = {\n name: '',\n\n locale: 'en'\n };\n if (siteConfigEl && siteConfigEl.hasAttributes()) {\n var attrs = siteConfigEl.attributes;\n for (var i = 0; i < attrs.length; i++) {\n siteConfig[attrs[i].name] = attrs[i].value;\n }\n }\n\n if (siteConfig['hide-site']) {\n siteConfig.hiddenSites = siteConfig['hide-site'].split(',').map(function (hs) {\n return hs.trim();\n });\n }\n\n return siteConfig;\n }\n});\r\ndefine('configuration/common/http',['exports', 'aurelia-fetch-client', 'aurelia-framework'], function (exports, _aureliaFetchClient, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.http = undefined;\n var http = exports.http = new _aureliaFetchClient.HttpClient();\n var httpLogger = _aureliaFramework.LogManager.getLogger('Http');\n\n http.configure(function (x) {\n x.withInterceptor({\n request: function request(message) {\n httpLogger.debug('Requesting ' + message.method + ' ' + message.url);\n return message;\n },\n requestError: function requestError(error) {\n httpLogger.error('Request error ' + error.method + ' ' + error.url);\n throw error;\n },\n response: function response(message) {\n httpLogger.debug('Received ' + message.status + ' ' + message.url);\n return message;\n },\n responseError: function responseError(error) {\n httpLogger.error('Receive error ' + error.status + ' ' + error.url);\n throw error;\n }\n });\n });\n});\r\ndefine('configuration/common/marketing-reducers',['exports', '../../components/marketing/lib/combine-marketing-reducers', '../../components/marketing/lib/marketing-labels.reducer', '../../components/marketing/grids/ft-grid-filter/lib/grid-filter.reducer', '../../components/marketing/grids/ft-grid-filter-form/lib/grid-filter-form.reducer', '../../components/marketing/lists/ft-report-archive-a/lib/gw/report-archive-a.reducer', '../../components/marketing/lists/ft-report-archive-b/lib/gw/report-archive-b.reducer', '../../components/marketing/video/ft-video-switch/lib/gw/ft-video-switch.reducer', '../../components/marketing/lists/ft-document-lister/lib/gw/ft-document-lister.reducer', '../../components/marketing/common/elements/ft-type-ahead-search/lib/gw/ft-type-ahead-search.reducer', '../../components/marketing/common/elements/ft-multi-select-bar/lib/gw/ft-multi-select-bar.reducer', '../../components/marketing/layouts/ft-choose-subscription/lib/ft-choose-subscription.reducer'], function (exports, _combineMarketingReducers, _marketingLabels, _gridFilter, _gridFilterForm, _reportArchiveA, _reportArchiveB, _ftVideoSwitch, _ftDocumentLister, _ftTypeAheadSearch, _ftMultiSelectBar, _ftChooseSubscription) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.marketingReducers = undefined;\n var marketingReducers = exports.marketingReducers = (0, _combineMarketingReducers.combineMarketingReducers)([_marketingLabels.marketingLabels, _gridFilter.gridFilter, _gridFilterForm.gridFilterForm, _reportArchiveA.reportArchiveA, _reportArchiveB.reportArchiveB, _ftVideoSwitch.ftVideoSwitch, _ftDocumentLister.ftDocumentLister, _ftTypeAheadSearch.ftTypeAheadSearch, _ftMultiSelectBar.ftMultiSelectBar, _ftChooseSubscription.subscriptionChooser]);\n});\r\ndefine('configuration/common/middleware',['exports', '../../environment', 'aurelia-framework'], function (exports, _environment, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getMiddleware = getMiddleware;\n\n var _environment2 = _interopRequireDefault(_environment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function getMiddleware(dataService, initialiserActions) {\n var middleware = [beanMiddleware(dataService), initialiser(initialiserActions), deduplicateFootnotes()];\n if (_environment2.default.debug) {\n var logger = _aureliaFramework.LogManager.getLogger('redux');\n middleware.push(reduxLogger(logger), crashReporter(logger));\n }\n\n return middleware;\n }\n\n var beanMiddleware = function beanMiddleware(dataService) {\n return function (store) {\n return function (next) {\n return function (action) {\n next(action);\n\n if (action.beans !== undefined) {\n dataService.getBeans(action.beans.map(function (bean) {\n return Object.assign({ bid: bean }, action);\n })).then(function (json) {\n store.dispatch(Object.assign({}, action, {\n type: action.type + '_SUCCESS',\n json: json,\n beans: undefined\n }));\n return true;\n }).catch(function (e) {\n store.dispatch(Object.assign({}, action, {\n type: action.type + '_ERROR',\n beans: undefined,\n error: e\n }));\n return true;\n });\n } else {}\n };\n };\n };\n };\n\n var reduxLogger = function reduxLogger(logger) {\n return function (store) {\n return function (next) {\n return function (action) {\n logger.debug('dispatching ' + action.type, action);\n var result = next(action);\n logger.debug('next state', store.getState());\n return result;\n };\n };\n };\n };\n\n var crashReporter = function crashReporter(logger) {\n return function (store) {\n return function (next) {\n return function (action) {\n try {\n return next(action);\n } catch (err) {\n logger.error('Caught an exception!', err);\n throw err;\n }\n };\n };\n };\n };\n\n var deduplicateFootnotes = function deduplicateFootnotes() {\n return function (store) {\n return function (next) {\n return function (action) {\n if (action.type !== 'REGISTER_FOOTNOTE') {\n return next(action);\n }\n\n if (!store.getState().products.app.registeredFootnotePlacements.find(function (rfp) {\n return rfp.key === action.key;\n })) {\n return next(action);\n }\n };\n };\n };\n };\n\n var initialiser = function initialiser(initialiserActions) {\n var initialiserActionList = initialiserActions;\n var waitingForInitialisation = [];\n return function (store) {\n return function (next) {\n return function (action) {\n if (initialiserActionList.length > 0) {\n if (action.type.endsWith('_ERROR') && initialiserActionList.includes(action.type.replace('_ERROR', '_SUCCESS'))) {\n action.type = action.type.replace('_ERROR', '_SUCCESS');\n }\n if (action.type.endsWith('_SUCCESS')) {\n if (!initialiserActionList.includes(action.type)) {\n waitingForInitialisation.push(action);\n return false;\n }\n initialiserActionList.splice(initialiserActionList.indexOf(action.type), 1);\n if (initialiserActionList.length === 0) {\n waitingForInitialisation.forEach(function (a) {\n return store.dispatch(a);\n });\n waitingForInitialisation = [];\n }\n }\n }\n return next(action);\n };\n };\n };\n };\n});\r\ndefine('components/common/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./attributes/ft-tooltip', './elements/ft-back-to-top/ft-back-to-top', './elements/charting/ft-bar-chart/ft-bar-chart', './elements/charting/ft-multi-bar-chart/ft-multi-bar-chart', './elements/charting/ft-chart/ft-chart', './elements/charting/ft-column-chart/ft-column-chart', './elements/charting/ft-performance-cumulative-chart/ft-performance-cumulative-chart', './elements/charting/ft-pie-chart/ft-pie-chart', './elements/ft-date-dropdown/ft-date-dropdown', './elements/ft-datepicker/ft-datepicker', './elements/ft-info-modal', './elements/ft-label/ft-label', './elements/ft-pagination/ft-pagination', './elements/ft-legal-jump-link.html', './elements/ft-modal/ft-modal', './elements/ft-modal-inline/ft-modal-inline', './elements/ft-prefix-or-dash/ft-prefix-or-dash', './elements/ft-th-sortable/ft-th-sortable', './elements/ft-carousel/ft-carousel', './elements/ft-owl-carousel/ft-owl-carousel', './elements/ft-owl-tabbed/ft-owl-tabbed', './elements/ft-spinner/ft-spinner', './elements/ft-visual-hint/ft-visual-hint', './value-converters/ft-filter', './value-converters/ft-length', './value-converters/ft-type-ahead-filter', './value-converters/ft-sort', './value-converters/ft-json', './value-converters/ft-filename-from-folders', './elements/ft-range-slider/ft-range-slider', './elements/ft-tab-collapse/ft-tab-collapse', './elements/ft-form/ft-form-input-validation']);\n }\n});\r\ndefine('configuration/il8n/currency',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var symbols = exports.symbols = new Map([['CNH', 'CNH'], ['CNY', '¥'], ['CHF', 'CHF'], ['EUR', '€'], ['GBP', '£'], ['JPY', '¥'], ['NOK', 'Kr'], ['USD', '$'], ['AED', 'د.إ'], ['ARS', '$'], ['AUD', '$'], ['BGN', 'лв'], ['BRL', 'R$'], ['BSD', '$'], ['CAD', '$'], ['CZK', 'Kč'], ['DKK', 'kr'], ['EGP', '£'], ['HKD', '$'], ['HRK', 'kn'], ['HUF', 'Ft'], ['ILS', '₪'], ['INR', '₹'], ['ISK', 'kr'], ['KRW', '₩'], ['NZD', '$'], ['PLN', 'zł'], ['RON', 'lei'], ['RSD', 'Дин.'], ['RUB', '₽'], ['RMB', '¥'], ['SEK', 'kr'], ['TRY', '₺'], ['UAH', '₴'], ['ZAR', 'R']]);\n});\r\ndefine('configuration/il8n/highcharts-il8n',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.setLocale = setLocale;\n exports.getLocale = getLocale;\n\n\n var HIGHCHARTS_DEFAULT_CONFIG = {\n decimalPoint: '.',\n thousandsSep: ','\n };\n\n var HIGHCHARTS_EUROPEAN_CONFIG = {\n decimalPoint: ',',\n thousandsSep: '.'\n };\n\n var HIGHCHARTS_LANG_CONFIG = {\n 'de-de': HIGHCHARTS_EUROPEAN_CONFIG,\n 'de-at': HIGHCHARTS_EUROPEAN_CONFIG,\n 'en': HIGHCHARTS_DEFAULT_CONFIG,\n 'en-gb': HIGHCHARTS_DEFAULT_CONFIG,\n 'it-it': HIGHCHARTS_EUROPEAN_CONFIG };\n\n var highChartsLocaleCode = 'en';\n\n function setLocale(newLocaleCode) {\n highChartsLocaleCode = newLocaleCode;\n }\n\n function getLocale() {\n return HIGHCHARTS_LANG_CONFIG[highChartsLocaleCode] ? HIGHCHARTS_LANG_CONFIG[highChartsLocaleCode] : HIGHCHARTS_DEFAULT_CONFIG;\n }\n});\r\ndefine('configuration/il8n/moment-il8n',['exports', 'moment/locale/de', 'moment/locale/de-at', 'moment/locale/en-gb', 'moment/locale/it', 'moment'], function (exports, _de, _deAt, _enGb, _it, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.setLocale = setLocale;\n\n var _de2 = _interopRequireDefault(_de);\n\n var _deAt2 = _interopRequireDefault(_deAt);\n\n var _enGb2 = _interopRequireDefault(_enGb);\n\n var _it2 = _interopRequireDefault(_it);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var MOMENT_LANG_CONFIG = {\n 'de-de': _de2.default,\n 'de-at': _deAt2.default,\n 'en': 'default-locale-hardcoded-into-framework',\n 'en-gb': _enGb2.default,\n 'it-it': _it2.default };\n\n function setLocale(newLocaleCode) {\n _moment2.default.locale(newLocaleCode);\n }\n});\r\ndefine('components/common/attributes/ft-tooltip',['exports', 'aurelia-framework', '../../../lib/redux-component-base', 'jquery', 'lodash/debounce'], function (exports, _aureliaFramework, _reduxComponentBase, _jquery, _debounce) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTooltipCustomAttribute = undefined;\n\n var _jquery2 = _interopRequireDefault(_jquery);\n\n var _debounce2 = _interopRequireDefault(_debounce);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtTooltipCustomAttribute = exports.FtTooltipCustomAttribute = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec2 = (0, _aureliaFramework.bindable)({ primaryProperty: true }), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtTooltipCustomAttribute, _ReduxComponentBase);\n\n function FtTooltipCustomAttribute(store, element) {\n _classCallCheck(this, FtTooltipCustomAttribute);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'content', _descriptor, _this);\n\n _initDefineProp(_this, 'title', _descriptor2, _this);\n\n _this.populated = false;\n _this.showCloseButton = true;\n _this.closeButtonText = '';\n _this.unsubscribeFromStore = null;\n\n _this.mapState(store.getState());\n _this.element = element;\n var $element = (0, _jquery2.default)(element);\n element.href = '#';\n var togglePopover = function togglePopover(e) {\n e.stopPropagation();\n (0, _jquery2.default)(this).popover('toggle');\n };\n $element.popover({ html: true, trigger: 'manual' }).on('click focus', (0, _debounce2.default)(togglePopover, 100)).on('blur', function (e) {\n e.stopPropagation();\n $element.popover('hide');\n });\n _this.titleChanged();\n return _this;\n }\n\n FtTooltipCustomAttribute.prototype.mapState = function mapState(newState) {\n try {\n this.label = newState.products.label;\n this.closeButtonText = this.getLabel('close');\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n FtTooltipCustomAttribute.prototype.contentChanged = function contentChanged(newValue) {\n this.element.dataset.content = newValue;\n };\n\n FtTooltipCustomAttribute.prototype.titleChanged = function titleChanged() {\n var title = this.title;\n if (this.showCloseButton) title += '<button type=\"button\" class=\"close\">' + this.closeButtonText + ' <i class=\"ft-icon ft-icon-cross\"></i></button>';\n this.element.dataset.originalTitle = title;\n };\n\n return FtTooltipCustomAttribute;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'content', [_dec2], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'title', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-info-modal',['exports', 'aurelia-framework', '../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtInfoModal = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtInfoModal = exports.FtInfoModal = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtInfoModal, _ReduxComponentBase);\n\n function FtInfoModal(store) {\n _classCallCheck(this, FtInfoModal);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'modalId', _descriptor, _this);\n\n _initDefineProp(_this, 'content', _descriptor2, _this);\n\n _initDefineProp(_this, 'srText', _descriptor3, _this);\n\n _initDefineProp(_this, 'close', _descriptor4, _this);\n\n _this.show = function (contents) {\n _this.dispatch({\n type: 'OPEN_MODAL',\n contents: contents\n });\n };\n\n return _this;\n }\n\n FtInfoModal.prototype.attached = function attached() {};\n\n return FtInfoModal;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'modalId', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'content', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'srText', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'close', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/value-converters/ft-filename-from-folders',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFilenameFromFoldersValueConverter = exports.FtFilenameFromFoldersValueConverter = function () {\n function FtFilenameFromFoldersValueConverter() {\n _classCallCheck(this, FtFilenameFromFoldersValueConverter);\n }\n\n FtFilenameFromFoldersValueConverter.prototype.toView = function toView(folderpath) {\n return folderpath.split('/').pop();\n };\n\n return FtFilenameFromFoldersValueConverter;\n }();\n});\r\ndefine('components/common/value-converters/ft-filter',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFilterValueConverter = exports.FtFilterValueConverter = function () {\n function FtFilterValueConverter() {\n _classCallCheck(this, FtFilterValueConverter);\n }\n\n FtFilterValueConverter.prototype.toView = function toView(items, key, value) {\n if (key === '' || key === undefined) return items;\n if (value === '' || value === undefined) return items;\n return items.filter(function (item) {\n return item[key] === value;\n });\n };\n\n return FtFilterValueConverter;\n }();\n});\r\ndefine('components/common/value-converters/ft-json',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtJsonValueConverter = exports.FtJsonValueConverter = function () {\n function FtJsonValueConverter() {\n _classCallCheck(this, FtJsonValueConverter);\n }\n\n FtJsonValueConverter.prototype.toView = function toView(value) {\n return value ? JSON.stringify(value, null, 2) : '';\n };\n\n return FtJsonValueConverter;\n }();\n});\r\ndefine('components/common/value-converters/ft-length',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtLengthValueConverter = exports.FtLengthValueConverter = function () {\n function FtLengthValueConverter() {\n _classCallCheck(this, FtLengthValueConverter);\n }\n\n FtLengthValueConverter.prototype.toView = function toView(value) {\n return value.length;\n };\n\n return FtLengthValueConverter;\n }();\n});\r\ndefine('components/common/value-converters/ft-sort',['exports', 'lodash/sortBy'], function (exports, _sortBy) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtSortValueConverter = undefined;\n\n var _sortBy2 = _interopRequireDefault(_sortBy);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtSortValueConverter = exports.FtSortValueConverter = function () {\n function FtSortValueConverter() {\n _classCallCheck(this, FtSortValueConverter);\n }\n\n FtSortValueConverter.prototype.toView = function toView(items, key, desc) {\n if (key === '' || key === undefined) return items;\n var sorted = (0, _sortBy2.default)(items, [key]);\n\n return sorted;\n };\n\n return FtSortValueConverter;\n }();\n});\r\ndefine('components/common/value-converters/ft-type-ahead-filter',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtTypeAheadFilterValueConverter = exports.FtTypeAheadFilterValueConverter = function () {\n function FtTypeAheadFilterValueConverter() {\n _classCallCheck(this, FtTypeAheadFilterValueConverter);\n }\n\n FtTypeAheadFilterValueConverter.prototype.toView = function toView(items, search) {\n if (search === '' || search === undefined) return items;\n return items.filter(function (item) {\n return item.label.toLowerCase().includes(search.toLowerCase()) || item.isin.toLowerCase().includes(search.toLowerCase()) || item.wkn.toLowerCase().includes(search.toLowerCase());\n });\n };\n\n return FtTypeAheadFilterValueConverter;\n }();\n});\r\ndefine('components/marketing/common/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./elements/ft-gateway/ft-gateway', './elements/ft-responsive-table-flow/ft-responsive-table-flow', './elements/ft-responsive-table-flow/ft-responsive-table-flow-document', './elements/ft-multi-select-bar/ft-multi-select-bar', './elements/ft-type-ahead-search/ft-type-ahead-search', './value-converters/ft-format-grid-cell', './value-converters/ft-format-subscription-input-names']);\n }\n});\r\ndefine('components/marketing/grids/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./ft-grid-filter/ft-grid-filter', './ft-grid-filter-dropdown/ft-grid-filter-dropdown', './ft-grid-filter-form/ft-grid-filter-form']);\n }\n});\r\ndefine('components/marketing/layouts/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./ft-choose-subscription/ft-choose-subscription', './ft-choose-subscription/ft-choose-subscription-step1', './ft-choose-subscription/ft-choose-subscription-step2', './ft-choose-subscription/ft-choose-subscription-step3', './ft-choose-subscription/dynamic-expression-binding-behavior', './ft-lump-sum-calculator/ft-lump-sum-calculator', './ft-pension-calculator/ft-pension-calculator', './ft-sticky-tabs/ft-sticky-tabs', './ft-sticky-tabs/ft-sticky-tabs-label', './ft-sticky-tabs/ft-sticky-tabs-content']);\n }\n});\r\ndefine('components/marketing/lib/combine-marketing-reducers',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.combineMarketingReducers = combineMarketingReducers;\n function combineMarketingReducers(marketingReducers) {\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n var newState = marketingReducers.reduce(function (prev, reducer) {\n return reducer(prev, action);\n }, state);\n\n return newState;\n };\n }\n});\r\ndefine('components/marketing/lib/marketing-labels.reducer',['exports', 'lodash/get'], function (exports, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.marketingLabels = marketingLabels;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function marketingLabels(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n var beanLabelData = (0, _get2.default)(labelData, 'labels');\n var label = new Map();\n\n Object.keys(beanLabelData).forEach(function (key) {\n label.set(key, beanLabelData[key]);\n });\n\n return Object.assign({}, state, {\n label: label\n });\n\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/lists/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./ft-document-lister/ft-document-lister', './ft-document-lister/ft-document-lister-cell', './ft-document-lister/ft-document-lister-dynamic-link', './ft-document-lister/ft-document-lister-group-row', './ft-document-lister/ft-document-lister-group', './ft-document-lister/ft-document-lister-link', './ft-document-lister/ft-document-lister-mobilelink', './ft-report-archive-a/ft-report-archive-a', './ft-report-archive-b/ft-report-archive-b', './ft-report-archive-c/ft-report-archive-c', './ft-report-archive-d/ft-report-archive-d']);\n }\n});\r\ndefine('components/marketing/video/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./ft-video-switch/ft-video-switch']);\n }\n});\r\ndefine('components/products/common/index',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(config) {\n config.globalResources(['./attributes/share-class-link-listener', './attributes/ft-share-class-refresh-listener', './value-converters/ft-dash-if-empty', './value-converters/ft-format-currency', './value-converters/ft-format-date-or-dash', './value-converters/ft-format-style-width-percent', './value-converters/ft-format-percentage', './value-converters/ft-normalize-space', './value-converters/ft-range-with-percent', './value-converters/ft-with-dollar-or-dash', './value-converters/ft-replace-dash-with', './elements/ft-caveats/ft-caveats', './elements/ft-dropdown/ft-dropdown', './elements/ft-footnote/ft-footnote', './elements/ft-fund-alert/ft-fund-alert', './elements/ft-fund-alert-banner/ft-fund-alert-banner', './elements/ft-labels/ft-labels', './elements/ft-share-class-filter/ft-share-class-filter', './elements/ft-proximal/ft-proximal']);\n }\n});\r\ndefine('components/products/lib/combine-products-reducers',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.combineProductsReducers = combineProductsReducers;\n function combineProductsReducers(productsReducers) {\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n var newState = productsReducers.general.reduce(function (prev, reducer) {\n return reducer(prev, action);\n }, state);\n\n var fundId = action.fundId;\n if (fundId) {\n var _Object$assign;\n\n var productSpecificData = productsReducers.specific.reduce(function (prev, reducer) {\n return reducer(prev, action, newState);\n }, newState.funds[fundId]);\n\n var funds = Object.assign({}, newState.funds, (_Object$assign = {}, _Object$assign[fundId] = productSpecificData, _Object$assign));\n\n newState = Object.assign({}, newState, { funds: funds });\n }\n return newState;\n };\n }\n});\r\ndefine('components/products/lib/date-utils',['exports', 'moment', 'aurelia-framework'], function (exports, _moment, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.formatStdDateToLocaleDay = formatStdDateToLocaleDay;\n exports.formatLocaleDateToStdDate = formatLocaleDateToStdDate;\n exports.convertMomentToJqueryFormat = convertMomentToJqueryFormat;\n exports.convertMomentToHighchartsFormat = convertMomentToHighchartsFormat;\n exports.getMomentLocaleFormat = getMomentLocaleFormat;\n exports.getJqueryLocaleFormat = getJqueryLocaleFormat;\n exports.getHighchartsLocaleFormat = getHighchartsLocaleFormat;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('reducer-utils');\n\n function formatStdDateToLocaleDay(val) {\n var useDash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!val || val === '-') {\n return useDash ? '—' : '-';\n }\n var stdDateFormatMatch = val.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})/);\n if (stdDateFormatMatch) {\n var valAsMoment = (0, _moment2.default)(val, 'YYYY-MM-DD');\n if (valAsMoment.isValid()) {\n return valAsMoment.format('L');\n }\n }\n\n var localeMoment = (0, _moment2.default)(val, 'L');\n if (localeMoment && localeMoment.isValid()) {\n logger.warn('Locale Conversion of date:', val);\n return localeMoment.format('L');\n }\n return val;\n }\n\n function formatLocaleDateToStdDate(val) {\n var useDash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!val || val === '-') {\n return useDash ? '—' : '-';\n }\n var stdDateFormatMatch = val.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})/);\n if (stdDateFormatMatch) {\n logger.warn('Std Conversion of date:', val);\n var valAsMoment = (0, _moment2.default)(val, 'YYYY-MM-DD');\n return valAsMoment.format('YYYY-MM-DD');\n }\n\n var localeMoment = (0, _moment2.default)(val, 'L');\n if (localeMoment) {\n return localeMoment.format('YYYY-MM-DD');\n }\n return val;\n }\n\n function convertMomentToJqueryFormat(momentFormat) {\n return momentFormat.replace('YYYY', 'yy').replace('YY', 'y').replace('Y', 'na').replace('Q', 'na').replace('MMMM', 'ZZ').replace('MMM', 'Z').replace('MM', 'mm').replace('M', 'm').replace('DDDD', 'oo').replace('DDD', 'o').replace('DD', 'dd').replace('D', 'd').replace('Do', 'na').replace('X', '@').replace('x', '@').replace('Z', 'M');\n }\n\n function convertMomentToHighchartsFormat(momentFormat) {\n return momentFormat.replace('YYYY', 'Z').replace('YY', '%y').replace('Y', 'na').replace('Q', 'na').replace('MMMM', '%B').replace('MMM', '%b').replace('MM', '%m').replace('M', '%m').replace('DDDD', '%j').replace('DDD', '%j').replace('DD', '%d').replace('D', '%e').replace('Do', 'na').replace('X', '%s').replace('x', '%s').replace('Z', '%Y');\n }\n\n function getMomentLocaleFormat() {\n return _moment2.default.localeData(_moment2.default.locale())._longDateFormat.L;\n }\n\n function getJqueryLocaleFormat() {\n return convertMomentToJqueryFormat(getMomentLocaleFormat());\n }\n\n function getHighchartsLocaleFormat() {\n return convertMomentToHighchartsFormat(getMomentLocaleFormat());\n }\n});\r\ndefine('components/products/lib/map-state-utils',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getFundState = getFundState;\n function getFundState(state, fundId) {\n return state.products.funds[fundId];\n }\n});\r\ndefine('components/products/lib/reducer-utils',['exports', '../../../configuration/il8n/currency', '../../../lib/sort-utils', 'lodash/uniq', 'lodash/get', 'lodash/isNull', 'lodash/kebabCase', 'lodash/camelCase', 'aurelia-framework'], function (exports, _currency, _sortUtils, _uniq, _get, _isNull, _kebabCase, _camelCase, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CLEAN_STRING_END_REGEX = exports.CLEAN_STRING_REGEX = exports.FORMAT_TYPES = undefined;\n exports.getUniqOptions = getUniqOptions;\n exports.formatCusip = formatCusip;\n exports.cleanString = cleanString;\n exports.extractCamelCaseIds = extractCamelCaseIds;\n exports.extractFormattedValue = extractFormattedValue;\n exports.extractFormattedValues = extractFormattedValues;\n exports.formatCurrency = formatCurrency;\n exports.formatPercentage = formatPercentage;\n exports.formatString = formatString;\n exports.parseNumber = parseNumber;\n exports.navDirection = navDirection;\n exports.navChangeClass = navChangeClass;\n exports.getDirectionClass = getDirectionClass;\n\n var _uniq2 = _interopRequireDefault(_uniq);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _isNull2 = _interopRequireDefault(_isNull);\n\n var _kebabCase2 = _interopRequireDefault(_kebabCase);\n\n var _camelCase2 = _interopRequireDefault(_camelCase);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('reducer-utils');\n\n function getUniqOptions(property) {\n return function (funds) {\n return (0, _uniq2.default)(funds.map(function (fund) {\n return fund[property];\n })).map(function (fund) {\n return { value: fund, label: fund };\n }).sort((0, _sortUtils.createCompare)('label', 'ASC'));\n };\n }\n\n function formatCusip(cusip) {\n return cusip.length === 9 ? cusip.substring(0, 3) + ' ' + cusip.substring(3, 6) + ' ' + cusip.substring(6) : cusip;\n }\n\n function cleanString(input) {\n return input.split('').filter(function (char) {\n var code = char.charCodeAt(0);\n return code <= 127 && ![36, 63].includes(code);\n }).join('');\n }\n\n var FORMAT_TYPES = exports.FORMAT_TYPES = {\n APPEND_CURRENCY: 'APPEND_CURRENCY',\n CURRENCY: 'CURRENCY',\n PERCENTAGE: 'PERCENTAGE',\n STRING: 'STRING',\n CONSTANT: 'CONSTANT'\n };\n\n function extractCamelCaseIds(sourceData, camelCaseIds) {\n var extractedData = {};\n camelCaseIds.forEach(function (camelCaseId) {\n var kebabCaseId = (0, _kebabCase2.default)(camelCaseId);\n var salesMapField = sourceData[kebabCaseId];\n if (!salesMapField) {\n var camelCaseFields = Object.keys(sourceData).map(function (o) {\n return (0, _camelCase2.default)(o);\n });\n logger.error('Unknown property \\'' + camelCaseId + '\\', available properties \\'' + camelCaseFields.join(',') + '\\'');\n return;\n }\n extractedData[kebabCaseId] = salesMapField;\n });\n return extractedData;\n }\n\n function extractFormattedValue(data, labelKey, config, currency) {\n var value = (0, _get2.default)(data, config.dataKey);\n var isValid = false;\n switch (config.type) {\n case FORMAT_TYPES.APPEND_CURRENCY:\n value = formatString(value, true);\n isValid = value !== '—';\n if (isValid) {\n var currencySymbol = _currency.symbols.get(currency);\n value = currencySymbol + value.replace(/ /g, '\\xa0');\n }\n break;\n case FORMAT_TYPES.CURRENCY:\n value = formatCurrency(value, currency, true);\n isValid = value !== '—';\n break;\n case FORMAT_TYPES.PERCENTAGE:\n value = formatPercentage(value, true);\n isValid = value !== '—';\n break;\n case FORMAT_TYPES.STRING:\n value = formatString(value, true);\n isValid = value !== '—';\n break;\n case FORMAT_TYPES.CONSTANT:\n value = config.dataKey;\n isValid = true;\n break;\n default:\n isValid = true;\n }\n\n var dataObj = {\n id: (0, _kebabCase2.default)(labelKey),\n val: isValid ? value : '—',\n isValid: isValid\n };\n if (config.addendumData) {\n for (var addendumAccessKey in config.addendumData) {\n if (config.addendumData.hasOwnProperty(addendumAccessKey)) {\n var addendumDataConfig = config.addendumData[addendumAccessKey];\n dataObj[addendumAccessKey] = extractFormattedValue(data, addendumAccessKey, addendumDataConfig, currency);\n }\n }\n }\n return dataObj;\n }\n\n function extractFormattedValues(data, valueMap, currency) {\n var functionLevelKeepUnavailableValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var validData = [];\n for (var labelKey in valueMap) {\n if (valueMap.hasOwnProperty(labelKey)) {\n var config = valueMap[labelKey];\n var value = extractFormattedValue(data, labelKey, config, currency);\n\n var fieldLevelKeepUnavailableValue = config.hasOwnProperty('keepUnavailableValue') ? config.keepUnavailableValue : true;\n if (value.isValid || fieldLevelKeepUnavailableValue && functionLevelKeepUnavailableValue) {\n validData.push(value);\n }\n }\n }\n return validData;\n }\n\n var REMOVE_ALL_BUT_LAST_DOT_REGEX = /([.])([0-9]+)(?=[.])/g;\n var CLEAN_STRING_REGEX = exports.CLEAN_STRING_REGEX = /[^\\d.-]+/g;\n var CLEAN_STRING_END_REGEX = exports.CLEAN_STRING_END_REGEX = /[^\\d.-]+$/g;\n\n function formatCurrency() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var currency = arguments[1];\n var useDash = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var currencySymbol = _currency.symbols.get(currency);\n if (!currencySymbol) {\n currencySymbol = '';\n }\n var stripped = val.replace(currencySymbol, '');\n var parsed = parseNumber(stripped);\n if (isNaN(parsed)) {\n return useDash ? '—' : '-';\n }\n if (parsed === 0) {\n return currencySymbol + val.replace('-', '').replace(currencySymbol, '');\n }\n if (parsed < 0) {\n return '-' + currencySymbol + val.replace('-', '').replace(currencySymbol, '');\n }\n return currencySymbol + val.replace(currencySymbol, '');\n }\n\n function formatPercentage() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var useDash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var stripped = (val + '').replace(CLEAN_STRING_END_REGEX, '').replace('%', '');\n var parsed = parseFloat(stripped);\n if (isNaN(parsed)) {\n return useDash ? '—' : '-';\n }\n return stripped + '%';\n }\n\n function formatString() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var useDash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!val || val === '-') {\n return useDash ? '—' : '-';\n }\n return val;\n }\n\n function parseNumber(val) {\n if (typeof val === 'number') {\n return val;\n }\n if ((0, _isNull2.default)(val)) {\n return 0;\n }\n var strippedNumber = val.replace(/[,]/g, '.');\n\n strippedNumber = strippedNumber.replace(REMOVE_ALL_BUT_LAST_DOT_REGEX, '$2');\n strippedNumber = strippedNumber.replace(CLEAN_STRING_REGEX, '');\n return parseFloat(strippedNumber);\n }\n\n function navDirection(val) {\n var parsed = val ? val.replace(/[^\\d.-]+/g, '') : '';\n parsed = parseNumber(parsed);\n if (isNaN(parsed)) {\n return '';\n }\n if (parsed > 0) {\n return 'GAIN';\n }\n if (parsed < 0) {\n return 'LOSS';\n }\n return 'STATIC';\n }\n\n function navChangeClass(direction) {\n switch (direction) {\n case 'GAIN':\n return 'gain';\n case 'LOSS':\n return 'loss';\n case 'STATIC':\n return 'static';\n default:\n return '';\n }\n }\n\n function getDirectionClass(directionVal) {\n if (directionVal === undefined) {\n return 'nodata';\n }\n var dlyNavChange = parseNumber(directionVal);\n if (dlyNavChange > 0) {\n return 'gain';\n } else if (dlyNavChange < 0) {\n return 'loss';\n }\n\n return 'static';\n }\n});\r\ndefine('components/products/lib/top-level-product-component-base',['exports', '../../../lib/component-base'], function (exports, _componentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TopLevelProductComponentBase = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TopLevelProductComponentBase = exports.TopLevelProductComponentBase = function (_ComponentBase) {\n _inherits(TopLevelProductComponentBase, _ComponentBase);\n\n function TopLevelProductComponentBase(store) {\n _classCallCheck(this, TopLevelProductComponentBase);\n\n var _this = _possibleConstructorReturn(this, _ComponentBase.call(this, store));\n\n _this.dispatch = store.dispatch;\n if (typeof _this.update === 'function') {\n store.subscribe(function () {\n return _this._update(store.getState());\n });\n }\n return _this;\n }\n\n TopLevelProductComponentBase.prototype._update = function _update(state) {\n var subState = this.fundId ? state.products.funds[this.fundId] : state.products;\n var newState = typeof this.selectState === 'function' ? this.selectState(subState) : subState;\n\n this.state = newState;\n this.update();\n };\n\n return TopLevelProductComponentBase;\n }(_componentBase.ComponentBase);\n});\r\ndefine('components/products/ppss/ft-ppss-table-base',['exports', 'aurelia-framework', '../../../lib/redux-component-base', 'lodash/get', 'lodash/groupBy'], function (exports, _aureliaFramework, _reduxComponentBase, _get2, _groupBy) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssTableBase = undefined;\n\n var _get3 = _interopRequireDefault(_get2);\n\n var _groupBy2 = _interopRequireDefault(_groupBy);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n\n var FtPpssTableBase = exports.FtPpssTableBase = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('funds'), _dec3 = (0, _aureliaFramework.computedFrom)('filters', 'label'), _dec4 = (0, _aureliaFramework.computedFrom)('funds'), _dec5 = (0, _aureliaFramework.computedFrom)('funds'), _dec6 = (0, _aureliaFramework.computedFrom)('funds'), _dec7 = (0, _aureliaFramework.computedFrom)('moneyFunds'), _dec8 = (0, _aureliaFramework.computedFrom)('config'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpssTableBase, _ReduxComponentBase);\n\n function FtPpssTableBase() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssTableBase);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'user', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _initDefineProp(_this, 'config', _descriptor3, _this), _initDefineProp(_this, 'funds', _descriptor4, _this), _initDefineProp(_this, 'filters', _descriptor5, _this), _initDefineProp(_this, 'sort', _descriptor6, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPpssTableBase.prototype.navChangeClass = function navChangeClass(direction) {\n switch (direction) {\n case 'GAIN':\n return 'gain';\n case 'LOSS':\n return 'loss';\n case 'STATIC':\n return 'static';\n default:\n return '';\n }\n };\n\n FtPpssTableBase.prototype.changeSort = function changeSort(name) {\n this.dispatch({\n type: 'PPSS_CHANGE_SORT',\n columnName: name\n });\n };\n\n _createClass(FtPpssTableBase, [{\n key: 'shareClassDisplayed',\n get: function get() {\n if (!this.filters.dropdowns.length) return '';\n var selected = this.filters.dropdowns.find(function (filter) {\n return filter.name === 'SHARE_CLASS';\n }).selected.label;\n return selected && this.label && this.label.get('shareclass-displayed') ? this.getLabel('shareclass-displayed').replace('<span data-view=\"share-class-displayed\">All</span>', selected) : '';\n }\n }, {\n key: 'fundsByVehicle',\n get: function get() {\n var groupedFunds = (0, _groupBy2.default)(this.funds, function (fund) {\n return fund.investmentVehicle;\n });\n return new Map(Object.keys(groupedFunds).sort().map(function (key) {\n return [key, groupedFunds[key]];\n }));\n }\n }, {\n key: 'noResultsMessage',\n get: function get() {\n return (0, _get3.default)(this, 'filters.favorites.myFavoritesOnly', false) ? this.getLabel('search.no-favorite') : this.getLabel('search.no-result');\n }\n }, {\n key: 'showNoResultsMessage',\n get: function get() {\n return this.funds && this.funds.length === 0;\n }\n }, {\n key: 'otherFunds',\n get: function get() {\n return this.funds.filter(function (fund) {\n return !fund.isMoneyFund;\n });\n }\n }, {\n key: 'moneyFunds',\n get: function get() {\n return this.funds.filter(function (fund) {\n return fund.isMoneyFund;\n });\n }\n }, {\n key: 'showMoneyFundheader',\n get: function get() {\n return this.moneyFunds && this.moneyFunds.length && this.otherFunds && this.otherFunds.length;\n }\n }, {\n key: 'searchAreaColspan',\n get: function get() {\n return this.config.showFavorites ? 4 : 3;\n }\n }]);\n\n return FtPpssTableBase;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'user', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'funds', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'fundsByVehicle', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'fundsByVehicle'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'noResultsMessage', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'noResultsMessage'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showNoResultsMessage', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'showNoResultsMessage'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'otherFunds', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'otherFunds'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'moneyFunds', [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, 'moneyFunds'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showMoneyFundheader', [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, 'showMoneyFundheader'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'searchAreaColspan', [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, 'searchAreaColspan'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-back-to-top/ft-back-to-top',['exports', 'aurelia-pal', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaPal, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtBackToTop = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtBackToTop = exports.FtBackToTop = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtBackToTop, _ReduxComponentBase);\n\n function FtBackToTop(store, beans, element) {\n _classCallCheck(this, FtBackToTop);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.$container = null;\n _this.$backToTopBtn = null;\n _this.defaults = {\n offset: '300',\n duration: '300' };\n _this.boundDisplayBtn = null;\n\n _this.$container = $(element);\n _this.boundDisplayBtn = _this.displayBtn.bind(_this);\n\n store.dispatch({\n type: 'LOAD_LABELS_MARKETING',\n beans: beans.component.labelsMarketing\n });\n return _this;\n }\n\n FtBackToTop.prototype.displayBtn = function displayBtn() {\n var shouldBeDisplayed = $(_aureliaPal.PLATFORM.global).scrollTop() > this.defaults.offset;\n if (shouldBeDisplayed) {\n this.$backToTopBtn.fadeIn(this.defaults.duration);\n } else {\n this.$backToTopBtn.fadeOut(this.defaults.duration);\n }\n };\n\n FtBackToTop.prototype.mapState = function mapState(newState) {\n if (this.isPopulated) {\n return;\n }\n\n var label = (0, _get2.default)(newState, 'marketing.label', false);\n\n if (label) {\n this.label = label;\n this.isPopulated = true;\n } else {\n this.isPopulated = false;\n }\n };\n\n FtBackToTop.prototype.scrollToTop = function scrollToTop() {\n $('html, body').animate({ scrollTop: 0 }, this.defaults.duration);\n };\n\n FtBackToTop.prototype.attached = function attached() {\n this.$backToTopBtn = this.$container.find('.back-to-top');\n this.displayBtn();\n $(_aureliaPal.PLATFORM.global).on('resize scroll', this.boundDisplayBtn);\n };\n\n FtBackToTop.prototype.detached = function detached() {\n $(_aureliaPal.PLATFORM.global).off('resize scroll', this.boundDisplayBtn);\n };\n\n return FtBackToTop;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/common/elements/charting/ft-charts-configs',['exports', 'highcharts/highcharts', 'moment', '../../../../configuration/il8n/highcharts-il8n'], function (exports, _highcharts, _moment, _highchartsIl8n) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.defaultOptions = exports.GENERIC_CHART_COLOUR = undefined;\n exports.ftChartsColors = ftChartsColors;\n\n var _highcharts2 = _interopRequireDefault(_highcharts);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var highChartsLocaleConfig = (0, _highchartsIl8n.getLocale)();\n\n Highcharts.setOptions({\n lang: {\n months: _moment2.default.months(),\n shortMonths: _moment2.default.monthsShort(),\n weekdays: _moment2.default.weekdays(),\n decimalPoint: highChartsLocaleConfig.decimalPoint,\n thousandsSep: highChartsLocaleConfig.thousandsSep\n }\n });\n\n var GENERIC_CHART_COLOUR = exports.GENERIC_CHART_COLOUR = '#a6d7f7';\n\n var defaultOptions = exports.defaultOptions = {\n credits: {\n enabled: false\n },\n exporting: {\n enabled: false\n },\n legend: {\n enabled: false\n },\n title: {\n text: ''\n },\n colors: ftChartsColors()\n };\n\n function ftChartsColors() {\n return ['#005598', '#4e9d2d', '#00a0dc', '#767676', '#ed7700', '#cb0000', '#163758', '#81bb00', '#5fc0eb', '#a7a7a7', '#f7bc00', '#ff4500', '#a5d7f5', '#bad583', '#c9c9c9', '#f6dc6b', '#ff9064', '#dbeffb', '#d3e3b0', '#e8e8e8'];\n }\n});\r\ndefine('components/common/elements/ft-carousel/ft-carousel-navigation',['exports', 'aurelia-framework', './ft-carousel', '../../../../environment'], function (exports, _aureliaFramework, _ftCarousel, _environment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCarouselNavigation = undefined;\n\n var _environment2 = _interopRequireDefault(_environment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtCarouselNavigation = exports.FtCarouselNavigation = (_dec = (0, _aureliaFramework.inject)(_ftCarousel.FtCarousel), _dec(_class = (_class2 = function () {\n function FtCarouselNavigation(carousel) {\n _classCallCheck(this, FtCarouselNavigation);\n\n _initDefineProp(this, 'direction', _descriptor, this);\n\n _initDefineProp(this, 'linkText', _descriptor2, this);\n\n this.carousel = carousel;\n this.leftLinkText = carousel.leftLinkText;\n this.rightLinkText = carousel.rightLinkText;\n }\n\n FtCarouselNavigation.prototype.attached = function attached() {\n if (this.direction === 'left') {\n this.image = _environment2.default.cssRoot + '/assets/img/carousel-navb-l.png';\n this.linkTextAfter = this.leftLinkText;\n this.slide = 'prev';\n } else {\n this.image = _environment2.default.cssRoot + '/assets/img/carousel-navb-r.png';\n this.linkTextBefore = this.rightLinkText;\n this.slide = 'next';\n }\n };\n\n return FtCarouselNavigation;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'direction', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'linkText', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-carousel/ft-carousel',['exports', 'aurelia-framework', '../../../../environment'], function (exports, _aureliaFramework, _environment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCarousel = undefined;\n\n var _environment2 = _interopRequireDefault(_environment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2;\n\n var index = 0;\n\n function getSlidesTitle(carousel) {\n var carouselTitlesArr = [];\n var carouselTitles = carousel.find('.item');\n for (var i = 0; i < carouselTitles.length; i++) {\n carouselTitlesArr.push(carouselTitles[i].getAttribute('slide-title'));\n }\n return carouselTitlesArr;\n }\n\n function getNextSlideNumber(carouselTitlesArr, currentSlideTitle) {\n var slideNr = 0;\n for (var _iterator = carouselTitlesArr, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var carouselTitle = _ref;\n\n if (carouselTitle === currentSlideTitle) {\n return slideNr;\n }\n slideNr++;\n }\n }\n\n function getNextSlide(carouselTitlesArr, slideNR) {\n var nrOfSlides = carouselTitlesArr.length;\n var nextSlideNR = parseInt(slideNR, 10) + 1;\n if (nextSlideNR > nrOfSlides - 1) nextSlideNR = 0;\n return carouselTitlesArr[nextSlideNR];\n }\n\n function getPrevSlide(carouselTitlesArr, slideNR) {\n var nrOfSlides = carouselTitlesArr.length;\n var prevSlideNR = parseInt(slideNR, 10) - 1;\n if (prevSlideNR < 0) prevSlideNR = nrOfSlides - 1;\n return carouselTitlesArr[prevSlideNR];\n }\n\n var FtCarousel = exports.FtCarousel = (_class = function () {\n function FtCarousel() {\n _classCallCheck(this, FtCarousel);\n\n _initDefineProp(this, 'leftLinkText', _descriptor, this);\n\n _initDefineProp(this, 'rightLinkText', _descriptor2, this);\n\n this.currentSlideTitle = '';\n this.numberOfSlides = 0;\n }\n\n FtCarousel.prototype.attached = function attached() {\n var _this = this;\n\n this.carouselNode.id = 'carousel-' + ++index;\n var carousel = $(this.carouselNode);\n var carouselTitles = getSlidesTitle(carousel);\n carousel.bind('slid.bs.carousel', function (e) {\n var currentSlideTitle = e.relatedTarget.getAttribute('slide-title');\n var slideNR = getNextSlideNumber(carouselTitles, currentSlideTitle);\n var nextSlide = getNextSlide(carouselTitles, slideNR);\n var prevSlide = getPrevSlide(carouselTitles, slideNR);\n _this.currentSlideTitle = currentSlideTitle;\n _this.leftLinkText = prevSlide;\n _this.rightLinkText = nextSlide;\n });\n var slides = carousel.find('.item');\n var currentSlideTitle = slides[0].getAttribute('slide-title');\n var slideNR = getNextSlideNumber(carouselTitles, currentSlideTitle);\n var nextSlide = getNextSlide(carouselTitles, slideNR);\n var prevSlide = getPrevSlide(carouselTitles, slideNR);\n this.numberOfSlides = slides.length;\n this.currentSlideTitle = currentSlideTitle;\n this.leftLinkText = prevSlide;\n this.rightLinkText = nextSlide;\n\n var path = void 0;\n _environment2.default.cssRoot ? path = _environment2.default.cssRoot : path = '';\n this.imageL = path + '/assets/img/carousel-navb-l.png';\n this.imageR = path + '/assets/img/carousel-navb-r.png';\n carousel.carousel();\n };\n\n return FtCarousel;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'leftLinkText', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'rightLinkText', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/common/elements/ft-date-dropdown/ft-date-dropdown',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'moment'], function (exports, _aureliaFramework, _reduxComponentBase, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDateDropdown = undefined;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n\n var FtDateDropdown = exports.FtDateDropdown = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtDateDropdown, _ReduxComponentBase);\n\n function FtDateDropdown(store, beans, element) {\n _classCallCheck(this, FtDateDropdown);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'startDate', _descriptor, _this);\n\n _initDefineProp(_this, 'endDate', _descriptor2, _this);\n\n _initDefineProp(_this, 'dateFormat', _descriptor3, _this);\n\n _initDefineProp(_this, 'submitType', _descriptor4, _this);\n\n _initDefineProp(_this, 'availableMonths', _descriptor5, _this);\n\n _initDefineProp(_this, 'availableYears', _descriptor6, _this);\n\n _initDefineProp(_this, 'selectedYr', _descriptor7, _this);\n\n _initDefineProp(_this, 'selectedMnth', _descriptor8, _this);\n\n _this.element = element;\n return _this;\n }\n\n FtDateDropdown.prototype.startDateChanged = function startDateChanged() {\n var startDate = this.startDate;\n var endDate = this.endDate;\n var dateFormat = this.dateFormat;\n\n var endYear = (0, _moment2.default)(endDate).get('year').toString();\n\n\n if (startDate) {\n var startYear = (0, _moment2.default)(startDate).get('year').toString();\n\n\n var yearAry = [];\n\n var monthsMap = [{ key: 0, value: 'Jan' }, { key: 1, value: 'Feb' }, { key: 3, value: 'Apr' }, { key: 4, value: 'May' }, { key: 5, value: 'Jun' }, { key: 6, value: 'Jul' }, { key: 7, value: 'Aug' }, { key: 8, value: 'Sep' }, { key: 9, value: 'Oct' }, { key: 10, value: 'Nov' }, { key: 11, value: 'Dec' }];\n\n this.availableMonths = monthsMap;\n\n switch (dateFormat) {\n case 'Y':\n case 'M-Y':\n var makeYear = startYear;\n do {\n var obj = {\n year: makeYear.toString()\n };\n yearAry.push(obj);\n makeYear++;\n } while (makeYear <= endYear);\n this.availableYears = yearAry;\n break;\n default:\n break;\n }\n }\n };\n\n FtDateDropdown.prototype.yearChange = function yearChange(clicked) {\n if (this.submitType !== 'buttons' || clicked === 'button') {\n this.dispatch({\n type: 'SET_HISTORICAL_DATE',\n year: this.selectedYr,\n month: this.selectedMnth\n });\n }\n };\n\n FtDateDropdown.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n if (!newState.app) {\n this.logger.info('meh', endDate);\n this.selectedMnth = (0, _moment2.default)(endDate).get('month');\n this.selectedYr = (0, _moment2.default)(endDate).get('year');\n }\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n return FtDateDropdown;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'startDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'endDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'dateFormat', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'submitType', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'availableMonths', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'availableYears', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'selectedYr', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, 'selectedMnth', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-form/ft-form-input-validation',['exports', 'aurelia-framework', 'aurelia-binding'], function (exports, _aureliaFramework, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFormInputValidation = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtFormInputValidation = exports.FtFormInputValidation = (_dec = (0, _aureliaFramework.inject)(_aureliaBinding.BindingEngine), _dec(_class = (_class2 = function () {\n function FtFormInputValidation(bindingEngine) {\n _classCallCheck(this, FtFormInputValidation);\n\n _initDefineProp(this, 'errors', _descriptor, this);\n\n _initDefineProp(this, 'label', _descriptor2, this);\n\n _initDefineProp(this, 'colWidth', _descriptor3, this);\n\n this.bindingEngine = bindingEngine;\n }\n\n FtFormInputValidation.prototype.attached = function attached() {\n this.colClass = this.colWidth ? 'col-xs-11 col-sm-' + this.colWidth : 'col-xs-11 col-sm-6';\n };\n\n return FtFormInputValidation;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'errors', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'colWidth', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-datepicker/ft-datepicker',['exports', 'aurelia-framework', '../../../products/lib/date-utils', '../../../../lib/component-base', 'moment', 'jquery-ui'], function (exports, _aureliaFramework, _dateUtils, _componentBase, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDatepicker = undefined;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtDatepicker = exports.FtDatepicker = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function (_ComponentBase) {\n _inherits(FtDatepicker, _ComponentBase);\n\n FtDatepicker.prototype.optionsChanged = function optionsChanged(opts) {\n if (!this.dp) {\n return;\n }\n var cleanedOptions = this.cleanOptions(opts);\n return this.dp.datepicker('option', cleanedOptions);\n };\n\n FtDatepicker.prototype.valueChanged = function valueChanged(newValue) {\n var valueAsLocale = (0, _dateUtils.formatStdDateToLocaleDay)(newValue);\n if (valueAsLocale !== this.localeValue && valueAsLocale !== '-') {\n this.localeValue = valueAsLocale;\n }\n };\n\n FtDatepicker.prototype.localeValueChanged = function localeValueChanged(newValue) {\n var localeAsStd = (0, _dateUtils.formatLocaleDateToStdDate)(newValue);\n if (localeAsStd !== this.value && localeAsStd !== '-') {\n this.value = localeAsStd;\n }\n };\n\n function FtDatepicker(element) {\n _classCallCheck(this, FtDatepicker);\n\n var _this = _possibleConstructorReturn(this, _ComponentBase.call(this));\n\n _initDefineProp(_this, 'label', _descriptor, _this);\n\n _initDefineProp(_this, 'options', _descriptor2, _this);\n\n _initDefineProp(_this, 'value', _descriptor3, _this);\n\n _initDefineProp(_this, 'localeValue', _descriptor4, _this);\n\n _this.element = element;\n _this.localeValue = (0, _dateUtils.formatStdDateToLocaleDay)(_this.value);\n return _this;\n }\n\n FtDatepicker.prototype.attached = function attached() {\n var cleanedOptions = this.cleanOptions(this.options);\n var that = this;\n this.dp = $(this.element).find('input').datepicker(cleanedOptions).on('change', function (e) {\n that.localeValue = e.target.value;\n });\n };\n\n FtDatepicker.prototype.detached = function detached() {\n this.dp.datepicker('destroy').off('change');\n };\n\n FtDatepicker.prototype.cleanOptions = function cleanOptions(opts) {\n var cleanedOpts = Object.assign({\n closeText: this.getLabel('done'),\n prevText: this.getLabel('prev'),\n nextText: this.getLabel('next'),\n currentText: this.getLabel('today'),\n changeMonth: true,\n changeYear: true,\n showOtherMonths: true,\n dayNames: _moment2.default.weekdays(),\n dayNamesMin: _moment2.default.weekdaysShort(),\n monthNames: _moment2.default.months(),\n monthNamesShort: _moment2.default.monthsShort()\n }, opts);\n\n if (!cleanedOpts.dateFormat) {\n cleanedOpts.dateFormat = (0, _dateUtils.getJqueryLocaleFormat)();\n }\n if (!cleanedOpts.minDate && cleanedOpts.minStdDate) {\n cleanedOpts.minDate = (0, _dateUtils.formatStdDateToLocaleDay)(cleanedOpts.minStdDate);\n }\n if (!cleanedOpts.maxDate && cleanedOpts.maxStdDate) {\n cleanedOpts.maxDate = (0, _dateUtils.formatStdDateToLocaleDay)(cleanedOpts.maxStdDate);\n }\n return cleanedOpts;\n };\n\n return FtDatepicker;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'options', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'value', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'localeValue', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-historical-modal/ft-historical-modal',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtHistoricalModal = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtHistoricalModal = exports.FtHistoricalModal = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtHistoricalModal, _ReduxComponentBase);\n\n function FtHistoricalModal(store, beans, element) {\n _classCallCheck(this, FtHistoricalModal);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n\n _this.dispatch({\n type: 'POPULATE_CHANGE_ME_STATE',\n\n fundId: _this.fundId\n });\n return _this;\n }\n\n FtHistoricalModal.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n return FtHistoricalModal;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/common/elements/ft-label/ft-label',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtLabel = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtLabel = exports.FtLabel = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtLabel(element) {\n _classCallCheck(this, FtLabel);\n\n _initDefineProp(this, 'label', _descriptor, this);\n\n this.element = element;\n }\n\n FtLabel.prototype.labelChanged = function labelChanged() {\n this.element.innerHTML = this.label;\n };\n\n return FtLabel;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-modal/ft-modal',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtModal = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var logger = _aureliaFramework.LogManager.getLogger('modal');\n\n var FtModal = exports.FtModal = (_dec = (0, _aureliaFramework.inject)('Store'), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtModal, _ReduxComponentBase);\n\n function FtModal(store, element) {\n _classCallCheck(this, FtModal);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.store = store;\n _this.bootstrap();\n return _this;\n }\n\n FtModal.prototype.bootstrap = function bootstrap() {\n if (this.hasBootstrapped) {\n return;\n }\n this.ftModalLabels = this.store.getState().products.ftModalLabels;\n if (!this.ftModalLabels) {\n logger.debug('Failed to load labels from state');\n return;\n }\n logger.debug('Success loading labels from state');\n this.hasBootstrapped = true;\n };\n\n FtModal.prototype.attached = function attached() {};\n\n FtModal.prototype.externalopen = function externalopen(link, newwindow) {\n var blank = newwindow ? 'target=\"_blank\"' : '';\n this.dispatch({\n type: 'OPEN_MODAL',\n title: this.ftModalLabels.externalLinkTitle,\n contents: this.ftModalLabels.externalLinkContent,\n close: this.ftModalLabels.close,\n footer: '<a href=\"' + link + '\" class=\"btn btn-primary\" ' + blank + ' >' + this.ftModalLabels.okLabel + '</a>'\n });\n };\n\n FtModal.prototype.mapState = function mapState(newState) {\n logger.debug('newState', newState);\n this.bootstrap();\n if (newState.products.app.modal.open) {\n this.modal = newState.products.app.modal;\n $(this.footerModal).modal();\n }\n };\n\n return FtModal;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/common/elements/ft-modal-inline/ft-modal-inline',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtModalInline = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtModalInline = exports.FtModalInline = (_dec = (0, _aureliaFramework.inject)('Store'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtModalInline, _ReduxComponentBase);\n\n function FtModalInline(store) {\n _classCallCheck(this, FtModalInline);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'close', _descriptor, _this);\n\n _initDefineProp(_this, 'title', _descriptor2, _this);\n\n _initDefineProp(_this, 'marketingLabels', _descriptor3, _this);\n\n _this.setLabels(store.getState());\n return _this;\n }\n\n FtModalInline.prototype.attached = function attached() {\n this.transitioning = false;\n };\n\n FtModalInline.prototype.setLabels = function setLabels(fromState) {\n try {\n this.marketingLabels = fromState.products.app.modalInlineLabels;\n } catch (e) {}\n };\n\n FtModalInline.prototype.mapState = function mapState(newState) {\n this.setLabels(newState);\n };\n\n FtModalInline.prototype.openModal = function openModal() {\n\n $(this.ftModal).modal('show');\n };\n\n return FtModalInline;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'close', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'title', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-owl-carousel/ft-owl-carousel',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var index = 0;\n\n var FtOwlCarousel = exports.FtOwlCarousel = function () {\n function FtOwlCarousel() {\n _classCallCheck(this, FtOwlCarousel);\n }\n\n FtOwlCarousel.prototype.attached = function attached() {\n this.owlCarouselNode.id = 'carousel-announcements-' + ++index;\n var owlCarousel = $(this.owlCarouselNode);\n\n owlCarousel.owlCarousel({\n loop: false,\n margin: 0,\n responsiveClass: true,\n navElement: 'i class=\"ft-icon ft-icon-right-carrot\"',\n navText: '',\n responsive: {\n 0: {\n items: 1,\n dots: true,\n nav: false\n },\n 768: {\n items: 2,\n dots: false,\n nav: true\n },\n 992: {\n items: 3,\n dots: false,\n nav: true\n },\n 1200: {\n items: 4,\n dots: false,\n nav: true\n }\n },\n onInitialized: function onInitialized() {\n $('.ft-owl-carousel').removeClass('hidden');\n }\n });\n };\n\n return FtOwlCarousel;\n }();\n});\r\ndefine('components/common/elements/ft-owl-tabbed/ft-owl-tabbed',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var index = 0;\n\n var FtOwlTabbed = exports.FtOwlTabbed = function () {\n function FtOwlTabbed() {\n _classCallCheck(this, FtOwlTabbed);\n }\n\n FtOwlTabbed.prototype.attached = function attached() {\n this.owlTabbedNode.id = 'carousel-announcements-tabbed-' + ++index;\n var owlTabbed = $(this.owlTabbedNode);\n\n function removeActiveFromOWL(owlTabbedOBJ) {\n var activeLI = owlTabbed.find('li.owl-item.active');\n activeLI.removeClass('active');\n }\n\n function removeActiveFromRole(owlTabbedOBJ) {\n var presentationTab = owlTabbed.find('li.owl-item').find('[role=\"presentation\"]');\n presentationTab.removeClass('active');\n }\n\n function tabDirectionMove(owlTabbedOBJ, direction) {\n var activeTab = owlTabbedOBJ.find('.owl-tab.active');\n var activeTabName = activeTab.find('a')[0].getAttribute('aria-controls');\n var activeTabNR = activeTabName.substring(activeTabName.length - 1);\n var tabOperator = 1;\n if (direction === 'prev') tabOperator = -1;\n var directTabName = activeTabName.substring(0, activeTabName.length - 1) + (parseInt(activeTabNR, 10) + parseInt(tabOperator, 10));\n\n return owlTabbedOBJ.find('[aria-controls=\"' + directTabName + '\"]');\n }\n\n owlTabbed.owlCarousel({\n loop: false,\n margin: 0,\n responsiveClass: true,\n navElement: 'i class=\"tabbed ft-icon ft-icon-right-carrot\"',\n navText: ['', ''],\n itemElement: 'li',\n touchDrag: false,\n mouseDrag: false,\n responsive: {\n 0: {\n items: 1,\n dots: true,\n nav: false\n },\n 768: {\n items: 2,\n dots: false,\n nav: true\n },\n 992: {\n items: 4,\n dots: false,\n nav: true\n },\n 1200: {\n items: 4,\n dots: false,\n nav: true\n }\n },\n onInitialized: function onInitialized() {\n removeActiveFromOWL(owlTabbed);\n $('.ft-owl-tabbed').removeClass('hidden');\n },\n onResized: function onResized() {\n removeActiveFromOWL(owlTabbed);\n owlTabbed.trigger('to.owl.carousel', 0);\n owlTabbed.find('[aria-controls=\"tabs-content-1\"]').trigger('click');\n }\n });\n\n var next = owlTabbed.find('.owl-next');\n var prev = owlTabbed.find('.owl-prev');\n var tabLinks = owlTabbed.find('li.owl-item').find('[role=\"presentation\"]').find('a');\n var owlDotsNav = owlTabbed.find('.owl-dots');\n tabLinks.click(function () {\n removeActiveFromRole(owlTabbed);\n });\n prev.click(function () {\n removeActiveFromOWL(owlTabbed);\n var prevTab = tabDirectionMove(owlTabbed, 'prev');\n prevTab.trigger('click');\n });\n next.click(function () {\n removeActiveFromOWL(owlTabbed);\n var nextTab = tabDirectionMove(owlTabbed, 'next');\n nextTab.trigger('click');\n });\n owlDotsNav.click(function () {\n var activatedTab = owlTabbed.find('.owl-item.active');\n var activatedTabLink = activatedTab.find('a');\n activatedTabLink.trigger('click');\n });\n };\n\n return FtOwlTabbed;\n }();\n});\r\ndefine('components/common/elements/ft-pagination/ft-pagination',['exports', 'aurelia-framework', 'lodash/noop', '../../../../lib/component-base', '../../../../lib/paging-utils'], function (exports, _aureliaFramework, _noop, _componentBase, _pagingUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPagination = undefined;\n\n var _noop2 = _interopRequireDefault(_noop);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtPagination = exports.FtPagination = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = (_class2 = function (_ComponentBase) {\n _inherits(FtPagination, _ComponentBase);\n\n function FtPagination(store, element) {\n _classCallCheck(this, FtPagination);\n\n var _this = _possibleConstructorReturn(this, _ComponentBase.call(this, store));\n\n _initDefineProp(_this, 'label', _descriptor, _this);\n\n _initDefineProp(_this, 'pagingInfo', _descriptor2, _this);\n\n _this.pagingElements = [];\n\n _initDefineProp(_this, 'goToPage', _descriptor3, _this);\n\n return _this;\n }\n\n FtPagination.prototype.pagingInfoChanged = function pagingInfoChanged(newPagingInfo) {\n this.pagingElements = (0, _pagingUtils.calculatePagingWithEllipsis)(newPagingInfo);\n };\n\n return FtPagination;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'pagingInfo', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'goToPage', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return _noop2.default;\n }\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-prefix-or-dash/ft-prefix-or-dash',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPrefixOrDash = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtPrefixOrDash = exports.FtPrefixOrDash = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtPrefixOrDash(element) {\n _classCallCheck(this, FtPrefixOrDash);\n\n _initDefineProp(this, 'prefix', _descriptor, this);\n\n _initDefineProp(this, 'val', _descriptor2, this);\n\n this.element = element;\n }\n\n FtPrefixOrDash.prototype.prefixed = function prefixed() {\n if (this.val) {\n return isNaN(this.val) ? this.val : this.prefix + this.val;\n }\n return '&#8212;';\n };\n\n FtPrefixOrDash.prototype.valChanged = function valChanged() {\n this.element.innerHTML = this.prefixed();\n };\n\n return FtPrefixOrDash;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'prefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'val', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-range-slider/ft-range-slider',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtRangeSlider = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n\n var FtRangeSlider = exports.FtRangeSlider = (_class = function () {\n function FtRangeSlider() {\n _classCallCheck(this, FtRangeSlider);\n\n _initDefineProp(this, 'label', _descriptor, this);\n\n _initDefineProp(this, 'value', _descriptor2, this);\n\n _initDefineProp(this, 'min', _descriptor3, this);\n\n _initDefineProp(this, 'max', _descriptor4, this);\n\n _initDefineProp(this, 'prefix', _descriptor5, this);\n\n _initDefineProp(this, 'suffix', _descriptor6, this);\n\n this.offset = 0;\n this.dragging = false;\n this.min = 0;\n this.max = 100;\n }\n\n FtRangeSlider.prototype.attached = function attached() {\n this.x = this.xtovalue(this.value);\n };\n\n FtRangeSlider.prototype.valueChanged = function valueChanged(newValue, oldValue) {\n if (this.bar && this.handle) {\n var newValuePerc = 100 / (this.max - this.min) * newValue;\n var x = (this.bar.offsetWidth - this.handle.offsetWidth) / 100 * newValuePerc;\n this.x = x;\n }\n };\n\n FtRangeSlider.prototype.xtovalue = function xtovalue(x) {\n var xperc = 100 / (this.bar.offsetWidth - this.handle.offsetWidth) * x;\n var v = (this.max - this.min) / 100 * xperc;\n return Math.round(v);\n };\n\n FtRangeSlider.prototype.mouseDown = function mouseDown(e) {\n var _this = this;\n\n this.offset = e.clientX - this.handle.getBoundingClientRect().left;\n this.dragging = true;\n\n window.addEventListener('mousemove', this.dragEvent = function (ev) {\n var x = ev.clientX - _this.offset - _this.bar.getBoundingClientRect().left;\n if (x > _this.bar.offsetWidth - _this.handle.offsetWidth) {\n x = _this.bar.offsetWidth - _this.handle.offsetWidth;\n }\n if (x < 0) {\n x = 0;\n }\n\n _this.x = x;\n _this.value = _this.xtovalue(x);\n });\n\n window.addEventListener('mouseup', function (ev) {\n _this.dragging = false;\n window.removeEventListener('mousemove', _this.dragEvent);\n });\n };\n\n return FtRangeSlider;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'value', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'min', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'max', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, 'prefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, 'suffix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/common/elements/ft-spinner/ft-spinner',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtSpinner = exports.FtSpinner = function FtSpinner() {\n _classCallCheck(this, FtSpinner);\n };\n});\r\ndefine('components/common/elements/ft-tab-collapse/ft-tab-collapse',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTabCollapse = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var logger = _aureliaFramework.LogManager.getLogger('ft-tab-collapse');\n\n var FtTabCollapse = exports.FtTabCollapse = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = function () {\n function FtTabCollapse(element) {\n _classCallCheck(this, FtTabCollapse);\n\n this.element = element;\n }\n\n FtTabCollapse.prototype.attached = function attached() {\n logger.debug('Adding Tab Colapse');\n $('.tabcollapse').tabCollapse();\n };\n\n return FtTabCollapse;\n }()) || _class);\n});\r\ndefine('components/common/elements/ft-th-sortable/ft-th-sortable',['exports', 'aurelia-framework', '../../../../lib/component-base'], function (exports, _aureliaFramework, _componentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtThSortable = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtThSortable = exports.FtThSortable = (_class = function (_ComponentBase) {\n _inherits(FtThSortable, _ComponentBase);\n\n function FtThSortable() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtThSortable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ComponentBase.call.apply(_ComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'title', _descriptor, _this), _initDefineProp(_this, 'sort', _descriptor2, _this), _initDefineProp(_this, 'clickCallback', _descriptor3, _this), _initDefineProp(_this, 'footnotePlacement', _descriptor4, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtThSortable, [{\n key: 'currentSortClass',\n get: function get() {\n var classes = [];\n if (this.sort && this.sort.direction) {\n classes.push('current-sort');\n }\n if (this.sort && this.sort.direction === 'ASC') {\n classes.push('sort-asc');\n }\n if (this.sort && this.sort.direction === 'DESC') {\n classes.push('sort-desc');\n }\n return classes.join(' ');\n }\n }, {\n key: 'ariaSortDirection',\n get: function get() {\n var direction = this.sort ? this.sort.direction : null;\n switch (direction) {\n case 'ASC':\n return 'ascending';\n case 'DESC':\n return 'descending';\n default:\n return 'none';\n }\n }\n }]);\n\n return FtThSortable;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'title', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'clickCallback', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'footnotePlacement', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/common/elements/ft-visual-hint/ft-visual-hint',['exports', 'aurelia-pal', 'aurelia-framework', '../../../../lib/redux-component-base', 'jquery'], function (exports, _aureliaPal, _aureliaFramework, _reduxComponentBase, _jquery) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtVisualHint = undefined;\n\n var _jquery2 = _interopRequireDefault(_jquery);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtVisualHint = exports.FtVisualHint = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtVisualHint, _ReduxComponentBase);\n\n function FtVisualHint(store, element) {\n _classCallCheck(this, FtVisualHint);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.$container = null;\n _this.$visualHint = null;\n _this.$parentContainer = null;\n _this.isDisplayed = false;\n _this.isDisabled = false;\n _this.boundDisplayHint = null;\n _this.boundFadeOutHint = null;\n\n _this.$container = (0, _jquery2.default)(element);\n _this.boundFadeOutHint = _this.fadeOutHint.bind(_this);\n _this.boundDisplayHint = _this.displayHint.bind(_this);\n return _this;\n }\n\n FtVisualHint.prototype.mapState = function mapState(newState) {\n this.displayHint();\n };\n\n FtVisualHint.prototype.shouldBeDisplayed = function shouldBeDisplayed() {\n if (!this.$parentContainer) {\n return false;\n }\n var isParentVisible = this.$parentContainer.is(':visible');\n var isParentCrushed = this.$parentContainer[0].scrollWidth > this.$parentContainer[0].clientWidth;\n return isParentVisible && isParentCrushed;\n };\n\n FtVisualHint.prototype.displayHint = function displayHint() {\n if (this.isDisabled) {\n return;\n }\n var shouldBeDisplayed = this.shouldBeDisplayed();\n if (shouldBeDisplayed) {\n this.updateVisualHintPosition();\n }\n\n if (this.isDisplayed !== shouldBeDisplayed) {\n shouldBeDisplayed ? this.$visualHint.fadeIn() : this.$visualHint.fadeOut();\n this.isDisplayed = shouldBeDisplayed;\n }\n };\n\n FtVisualHint.prototype.fadeOutHint = function fadeOutHint() {\n if (this.isDisabled) {\n return;\n }\n var shouldBeDisplayed = this.shouldBeDisplayed();\n if (shouldBeDisplayed) {\n this.updateVisualHintPosition();\n this.isDisplayed = false;\n this.isDisabled = true;\n this.$visualHint.fadeOut();\n }\n };\n\n FtVisualHint.prototype.updateVisualHintPosition = function updateVisualHintPosition() {\n var windowScrollTop = (0, _jquery2.default)(_aureliaPal.PLATFORM.global).scrollTop();\n var visualHintHeight = this.$visualHint.height();\n var parentHeight = this.$parentContainer.height();\n var parentTop = this.$parentContainer.position().top;\n var topPadding = 100;\n var verticalPadding = 16;\n\n var minTop = parentTop + verticalPadding;\n var targetTop = topPadding + windowScrollTop;\n var maxTop = parentTop + parentHeight - visualHintHeight - verticalPadding;\n\n if (targetTop < minTop) {\n targetTop = minTop;\n } else if (targetTop > maxTop) {\n targetTop = maxTop;\n }\n this.$visualHint.css('top', targetTop + 'px');\n };\n\n FtVisualHint.prototype.attached = function attached() {\n this.$parentContainer = this.$container.parent('.table-responsive');\n this.$visualHint = this.$container.find('.visual-hint-container');\n if (this.$parentContainer.length === 0) {\n this.logger.error('FtVisualHint unable to find parent .table-responsive');\n return;\n }\n\n if (this.shouldBeDisplayed()) {\n this.$visualHint.show();\n this.isDisplayed = true;\n }\n this.$parentContainer.on('click scroll', this.boundFadeOutHint);\n (0, _jquery2.default)(_aureliaPal.PLATFORM.global).on('resize scroll', this.boundDisplayHint);\n };\n\n FtVisualHint.prototype.detached = function detached() {\n this.$parentContainer.off('click scroll', this.boundFadeOutHint);\n (0, _jquery2.default)(_aureliaPal.PLATFORM.global).off('resize scroll', this.boundDisplayHint);\n };\n\n return FtVisualHint;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/marketing/common/value-converters/ft-format-grid-cell',['exports', 'aurelia-framework', 'lodash/get', '../../../../lib/date-formatter'], function (exports, _aureliaFramework, _get, _dateFormatter) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFormatGridCellValueConverter = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _dateFormatter2 = _interopRequireDefault(_dateFormatter);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var FtFormatGridCellValueConverter = exports.FtFormatGridCellValueConverter = (_dec = (0, _aureliaFramework.inject)(_dateFormatter2.default), _dec(_class = function () {\n function FtFormatGridCellValueConverter(df) {\n _classCallCheck(this, FtFormatGridCellValueConverter);\n\n this.dateFormatter = df;\n }\n\n FtFormatGridCellValueConverter.prototype.toView = function toView(data, dataKey, dateformat) {\n var val = (0, _get2.default)(data, dataKey);\n\n var urlKey = dataKey.endsWith('.value') ? dataKey.replace(/\\.value$/i, '.url') : '';\n var url = (0, _get2.default)(data, urlKey);\n\n if (dataKey === 'publishedDate' && dateformat) {\n val = this.dateFormatter.convertDateFormat(val, dateformat);\n }\n\n if (data && data.contentTypeLabels && data.contentTypeLabels.indexOf(']') === -1) {\n if (val) {\n var originalval = val.replace('-', ' ').toLowerCase();\n var contentlabelval = data.contentTypeLabels.toLowerCase();\n if (originalval === contentlabelval) {\n val = data.contentTypeLabels;\n }\n }\n }\n\n if (data && data.contentCategoriesLabel) {\n if (val) {\n var cats = val.split('|');\n cats.forEach(function (cat, i) {\n if (cat) {\n if (cat === data.contentCategoriesKey) {\n val = data.contentCategoriesLabel;\n }\n }\n }, this);\n }\n }\n\n if (typeof val === 'string') val = val.replace(/\\|/gi, '<br />');\n\n if (!val) val = '&#8212;';\n if (url) val = '<a href=\"' + url + '\">' + val + '</a>';\n\n return val;\n };\n\n return FtFormatGridCellValueConverter;\n }()) || _class);\n});\r\ndefine('components/marketing/common/value-converters/ft-format-subscription-input-names',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFormatSubscriptionInputNamesValueConverter = exports.FtFormatSubscriptionInputNamesValueConverter = function () {\n function FtFormatSubscriptionInputNamesValueConverter() {\n _classCallCheck(this, FtFormatSubscriptionInputNamesValueConverter);\n }\n\n FtFormatSubscriptionInputNamesValueConverter.prototype.toView = function toView(value, fieldType) {\n var val = fieldType + value.replace(/ /g, '');\n return val;\n };\n\n return FtFormatSubscriptionInputNamesValueConverter;\n }();\n});\r\ndefine('components/marketing/grids/ft-grid-filter/ft-grid-filter',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../../../lib/sort-utils', 'lodash/camelCase', 'lodash/get', 'moment'], function (exports, _aureliaFramework, _reduxComponentBase, _sortUtils, _camelCase, _get, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGridFilter = undefined;\n\n var _camelCase2 = _interopRequireDefault(_camelCase);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtGridFilter = exports.FtGridFilter = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec3 = (0, _aureliaFramework.computedFrom)('currentView'), _dec4 = (0, _aureliaFramework.computedFrom)('currentView'), _dec5 = (0, _aureliaFramework.computedFrom)('currentView'), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtGridFilter, _ReduxComponentBase);\n\n function FtGridFilter(store, beans, element) {\n _classCallCheck(this, FtGridFilter);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'marketingLabels', _descriptor, _this);\n\n _initDefineProp(_this, 'deepLinkFilters', _descriptor2, _this);\n\n _this.populated = false;\n _this.showFilterForm = false;\n _this.cards = [];\n _this.hasMappedState = false;\n\n _this.cid = element.getAttribute('cid') || 'cid';\n _this.store = store;\n\n if (_this.store.getState().general.params.filterby) {\n _this.deepLinkFilters = _this.store.getState().general.params.filterby.split('|');\n }\n return _this;\n }\n\n FtGridFilter.prototype.attached = function attached() {\n this.config = this.configNode.getElementsByTagName('script')[0];\n this.configData = JSON.parse(this.config.textContent);\n this.isAttached = true;\n if (this.marketingLabels) {\n this.populateGridFilter();\n }\n if (!this.hasMappedState) {\n this.mapState(this.store.getState());\n }\n };\n\n FtGridFilter.prototype.populateGridFilter = function populateGridFilter() {\n if (this.isAttached && this.marketingLabels) {\n var cardElements = Array.from(this.cardsNode.querySelectorAll('[data-fti-component=\"card\"]'));\n this.removeElements = cardElements;\n var cardData = cardElements.map(this._parseCard);\n\n var configData = this.configData;\n this.dispatch({\n type: 'POPULATE_GRID_FILTER',\n data: { cardData: cardData, configData: configData },\n cid: this.cid\n });\n }\n };\n\n FtGridFilter.prototype._parseCard = function _parseCard(card, idx) {\n var c = {\n classes: card.className.split(' ').filter(function (cls) {\n return cls !== 'hidden';\n }).join(' '),\n content: card.innerHTML.trim(),\n data: {},\n defaultOrder: idx\n };\n var attributes = Array.from(card.attributes);\n attributes.filter(function (att) {\n return !['class', 'data-fti-component'].includes(att.nodeName);\n }).filter(function (att) {\n return !att.nodeName.endsWith('-url');\n }).forEach(function (att) {\n var linkAttribute = attributes.find(function (linkAtt) {\n return linkAtt.nodeName === att.nodeName + '-url';\n });\n if (linkAttribute) {\n c.data[(0, _camelCase2.default)(att.nodeName)] = { value: att.nodeValue, url: linkAttribute.nodeValue };\n } else {\n c.data[(0, _camelCase2.default)(att.nodeName)] = att.nodeValue;\n }\n });\n return c;\n };\n\n FtGridFilter.prototype.loadMore = function loadMore() {\n this.dispatch({\n type: 'GRID_LOAD_MORE',\n cid: this.cid\n });\n };\n\n FtGridFilter.prototype.changeSort = function changeSort(name) {\n this.dispatch({\n type: 'GRID_CHANGE_SORT',\n columnName: name,\n cid: this.cid\n });\n };\n\n FtGridFilter.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n this.hasMappedState = true;\n try {\n this.marketingLabels = newState.marketing.gridFilter;\n var grid = newState.marketing.app.grid.grids[this.cid];\n if (this.marketingLabels && this.isAttached) {\n if (grid) {\n var numVisibleCards = grid.numVisibleCards;\n this.filters = grid.filters;\n this.columns = grid.columns;\n this.showViewToggle = grid.showViewToggle;\n this.currentView = grid.currentView;\n this.showFilterForm = this.showViewToggle || this.filters.length > 0 ? true : false;\n\n if (this.deepLinkFilters && this.deepLinkFilters.length > 0 && !this.deeplinkHasBeenSet) {\n this.filters.forEach(function (filter) {\n _this2.deepLinkFilters.forEach(function (deeplinkFilter) {\n filter.options.forEach(function (option) {\n if (option.value === deeplinkFilter) {\n filter.selected = deeplinkFilter;\n _this2.deeplinkHasBeenSet = true;\n }\n });\n });\n });\n }\n var cards = grid.cards.filter(this._createFilterFunction(this.filters)).sort(this._createSortFunction(this.columns));\n this.showLoadMoreBtn = cards.length > numVisibleCards;\n this.cards = cards.slice(0, numVisibleCards);\n\n this.removeElements.forEach(function (card) {\n return card.parentNode.removeChild(card);\n });\n\n this.populated = true;\n } else {\n this.populateGridFilter();\n }\n }\n } catch (e) {\n this.populated = false;\n }\n };\n\n FtGridFilter.prototype._createFilterFunction = function _createFilterFunction(filters) {\n var activeDropdowns = filters.filter(function (d) {\n return d.selected && d.type === 'DROPDOWN' && d.selected.toString().toUpperCase() !== 'ALL';\n });\n var yearDropdowns = filters.filter(function (d) {\n return d.selected && d.type === 'YEAR_DROPDOWN' && d.selected.toString().toUpperCase() !== 'ALL';\n });\n return function (card) {\n var dropdownResult = activeDropdowns.reduce(function (result, dropdown) {\n return result && (0, _get2.default)(card.data, dropdown.dataKey).split('|').includes(dropdown.selected);\n }, true);\n\n var yearDropdownResult = yearDropdowns.reduce(function (result, dropdown) {\n var parsedDate = (0, _moment2.default)((0, _get2.default)(card.data, dropdown.dataKey), dropdown.dateFormat);\n if (dropdown.selected === '12_MONTHS') {\n return result && (0, _moment2.default)().diff(parsedDate, 'years') < 1;\n }\n return result && parsedDate.year() === dropdown.selected;\n }, true);\n\n return dropdownResult && yearDropdownResult;\n };\n };\n\n FtGridFilter.prototype._createSortFunction = function _createSortFunction(columns) {\n var sortColumn = columns.find(function (col) {\n return col.direction;\n });\n return sortColumn ? (0, _sortUtils.createCompare)('data.' + sortColumn.dataKey, sortColumn.direction, sortColumn) : function (a, b) {\n return a.defaultOrder - b.defaultOrder;\n };\n };\n\n _createClass(FtGridFilter, [{\n key: 'showGridView',\n get: function get() {\n return this.currentView === 'GRID';\n }\n }, {\n key: 'showTableView',\n get: function get() {\n return this.currentView === 'TABLE';\n }\n }, {\n key: 'wrapperClass',\n get: function get() {\n return this.showGridView ? 'row' : 'panel';\n }\n }]);\n\n return FtGridFilter;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'deepLinkFilters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'showGridView', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'showGridView'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showTableView', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'showTableView'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'wrapperClass', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'wrapperClass'), _class2.prototype)), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/grids/ft-grid-filter-dropdown/ft-grid-filter-dropdown',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGridFilterDropdown = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtGridFilterDropdown = exports.FtGridFilterDropdown = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtGridFilterDropdown, _ReduxComponentBase);\n\n function FtGridFilterDropdown() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtGridFilterDropdown);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'filter', _descriptor, _this), _initDefineProp(_this, 'selected', _descriptor2, _this), _initDefineProp(_this, 'cid', _descriptor3, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtGridFilterDropdown.prototype.selectedChanged = function selectedChanged(newValue, oldValue) {\n if (newValue && this.cid) {\n this.dispatch({\n type: 'GRID_CHANGE_DROPDOWN',\n name: this.filter.name,\n newValue: newValue,\n cid: this.cid\n });\n }\n };\n\n return FtGridFilterDropdown;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'filter', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'selected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'cid', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/grids/ft-grid-filter-form/ft-grid-filter-form',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGridFilterForm = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n\n var FtGridFilterForm = exports.FtGridFilterForm = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('currentView'), _dec3 = (0, _aureliaFramework.computedFrom)('currentView'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtGridFilterForm, _ReduxComponentBase);\n\n function FtGridFilterForm(store) {\n _classCallCheck(this, FtGridFilterForm);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'filters', _descriptor, _this);\n\n _initDefineProp(_this, 'showViewToggle', _descriptor2, _this);\n\n _initDefineProp(_this, 'currentView', _descriptor3, _this);\n\n _initDefineProp(_this, 'cid', _descriptor4, _this);\n\n _initDefineProp(_this, 'marketingLabels', _descriptor5, _this);\n\n _this.marketingLabels = store.getState().marketing.gridFilter;\n return _this;\n }\n\n FtGridFilterForm.prototype.changeView = function changeView(view) {\n if (view !== this.currentView) {\n this.dispatch({\n type: 'GRID_CHANGE_VIEW',\n view: view,\n cid: this.cid\n });\n }\n };\n\n _createClass(FtGridFilterForm, [{\n key: 'gridViewClass',\n get: function get() {\n return this.currentView === 'GRID' ? 'color: rgb(178, 178, 178)' : 'color: rgb(0, 85, 152)';\n }\n }, {\n key: 'tableViewClass',\n get: function get() {\n return this.currentView === 'TABLE' ? 'color: rgb(178, 178, 178)' : 'color: rgb(0, 85, 152)';\n }\n }]);\n\n return FtGridFilterForm;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'showViewToggle', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'currentView', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'cid', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'gridViewClass', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'gridViewClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'tableViewClass', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'tableViewClass'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/dynamic-expression-binding-behavior',['exports', 'aurelia-dependency-injection', 'aurelia-binding', './expression-rebaser'], function (exports, _aureliaDependencyInjection, _aureliaBinding, _expressionRebaser) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DynamicExpressionBindingBehavior = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var DynamicExpressionBindingBehavior = exports.DynamicExpressionBindingBehavior = (_dec = (0, _aureliaDependencyInjection.inject)(_aureliaBinding.Parser), _dec(_class = function () {\n function DynamicExpressionBindingBehavior(parser) {\n _classCallCheck(this, DynamicExpressionBindingBehavior);\n\n this.parser = parser;\n }\n\n DynamicExpressionBindingBehavior.prototype.bind = function bind(binding, source, rawExpression) {\n var expression = this.parser.parse(rawExpression);\n\n expression = (0, _expressionRebaser.rebaseExpression)(expression, binding.sourceExpression);\n\n binding.originalSourceExpression = binding.sourceExpression;\n\n binding.sourceExpression = expression;\n };\n\n DynamicExpressionBindingBehavior.prototype.unbind = function unbind(binding, source) {\n binding.sourceExpression = binding.originalSourceExpression;\n binding.originalSourceExpression = null;\n };\n\n return DynamicExpressionBindingBehavior;\n }()) || _class);\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/expression-rebaser',['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExpressionRebaser = undefined;\n exports.rebaseExpression = rebaseExpression;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ExpressionRebaser = exports.ExpressionRebaser = function (_ExpressionCloner) {\n _inherits(ExpressionRebaser, _ExpressionCloner);\n\n function ExpressionRebaser(base) {\n _classCallCheck(this, ExpressionRebaser);\n\n var _this = _possibleConstructorReturn(this, _ExpressionCloner.call(this));\n\n _this.base = base;\n return _this;\n }\n\n ExpressionRebaser.prototype.visitAccessThis = function visitAccessThis(access) {\n if (access.ancestor !== 0) {\n throw new Error('$parent expressions cannot be rebased.');\n }\n return this.base;\n };\n\n ExpressionRebaser.prototype.visitAccessScope = function visitAccessScope(access) {\n if (access.ancestor !== 0) {\n throw new Error('$parent expressions cannot be rebased.');\n }\n return new _aureliaBinding.AccessMember(this.base, access.name);\n };\n\n ExpressionRebaser.prototype.visitCallScope = function visitCallScope(call) {\n if (call.ancestor !== 0) {\n throw new Error('$parent expressions cannot be rebased.');\n }\n return new _aureliaBinding.CallMember(this.base, call.name, this.cloneExpressionArray(call.args));\n };\n\n return ExpressionRebaser;\n }(_aureliaBinding.ExpressionCloner);\n\n function rebaseExpression(expression, baseExpression) {\n var visitor = new ExpressionRebaser(baseExpression);\n return expression.accept(visitor);\n }\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step1',['exports', 'aurelia-framework', 'lodash/fp/flatMap', 'lodash/fp/flow'], function (exports, _aureliaFramework, _flatMap, _flow) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtChooseSubscriptionStep1 = undefined;\n\n var _flatMap2 = _interopRequireDefault(_flatMap);\n\n var _flow2 = _interopRequireDefault(_flow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2, _descriptor3;\n\n var FtChooseSubscriptionStep1 = exports.FtChooseSubscriptionStep1 = (_class = function () {\n FtChooseSubscriptionStep1.prototype.callReset = function callReset() {\n this.resetFunction();\n };\n\n function FtChooseSubscriptionStep1() {\n _classCallCheck(this, FtChooseSubscriptionStep1);\n\n _initDefineProp(this, 'resetFunction', _descriptor, this);\n\n _initDefineProp(this, 'step', _descriptor2, this);\n\n _initDefineProp(this, 'config', _descriptor3, this);\n }\n\n FtChooseSubscriptionStep1.prototype.attached = function attached() {};\n\n FtChooseSubscriptionStep1.prototype.clear = function clear() {\n this.reset();\n };\n\n FtChooseSubscriptionStep1.prototype.next = function next() {\n this.step++;\n };\n\n FtChooseSubscriptionStep1.prototype.doSelectedCount = function doSelectedCount() {\n var selectedOptions = (0, _flow2.default)((0, _flatMap2.default)('optionsSelected'))(this.config.sections);\n var selectedFunds = (0, _flow2.default)((0, _flatMap2.default)('fundsSelected'))(this.config.sections);\n this.config.optionGuideFormData = this.getAllOptionGuideValues();\n this.selectedCount = selectedOptions.length + selectedFunds.length;\n };\n\n FtChooseSubscriptionStep1.prototype.getAllOptionGuideValues = function getAllOptionGuideValues() {\n var inputValues = $('[id^=\"GUIDE_OPTIONS_\"] :input').map(function () {});\n var formData = '';\n for (var _iterator = inputValues.prevObject, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var property = _ref;\n\n if (property.value) {\n formData += property.name + ('=' + property.value + ';');\n }\n }\n return formData;\n };\n\n FtChooseSubscriptionStep1.prototype.openModal = function openModal(option) {\n this.modal = {\n funds: option.FUND,\n fundsSelected: option.fundsSelected,\n modalTitle: option.GroupTitle\n };\n this.ftmodal.openModal();\n };\n\n return FtChooseSubscriptionStep1;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'resetFunction', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'step', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step2',['exports', 'aurelia-framework', 'aurelia-validation', 'aurelia-fetch-client', 'lodash/keyBy', 'lodash/unescape', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _aureliaValidation, _aureliaFetchClient, _keyBy, _unescape, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtChooseSubscriptionStep2 = undefined;\n\n var _keyBy2 = _interopRequireDefault(_keyBy);\n\n var _unescape2 = _interopRequireDefault(_unescape);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n\n var logger = _aureliaFramework.LogManager.getLogger('step2');\n var FtChooseSubscriptionStep2 = exports.FtChooseSubscriptionStep2 = (_dec = (0, _aureliaFramework.inject)('Store', _aureliaFetchClient.HttpClient, _aureliaValidation.ValidationControllerFactory), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtChooseSubscriptionStep2, _ReduxComponentBase);\n\n function FtChooseSubscriptionStep2(store, http, controllerFactory) {\n _classCallCheck(this, FtChooseSubscriptionStep2);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'form', _descriptor, _this);\n\n _initDefineProp(_this, 'config', _descriptor2, _this);\n\n _initDefineProp(_this, 'step', _descriptor3, _this);\n\n _initDefineProp(_this, 'model', _descriptor4, _this);\n\n _initDefineProp(_this, 'properties', _descriptor5, _this);\n\n _initDefineProp(_this, 'parsedErrors', _descriptor6, _this);\n\n _this.rules = {};\n\n _this.store = store;\n _this.http = http;\n _this.controller = controllerFactory.createForCurrentScope();\n return _this;\n }\n\n FtChooseSubscriptionStep2.prototype.attached = function attached() {\n var _this2 = this;\n\n if (this.config) {\n this.properties = this.config.fieldData;\n this.validationProperties = this.config.requiredFieldData;\n\n this.properties.forEach(function (property) {\n _this2.model[property.expression] = '';\n });\n\n var validationRulesJSON = this.buildDynamicValidationRulesJSON(this.config.requiredFieldData);\n _aureliaValidation.ValidationRules.fromJSON = this.fromJSON;\n _aureliaValidation.ValidationRules.fromJSON(validationRulesJSON).on(this.model);\n }\n };\n\n FtChooseSubscriptionStep2.prototype.buildDynamicValidationRulesJSON = function buildDynamicValidationRulesJSON(config) {\n var _this3 = this;\n\n config.forEach(function (field) {\n _this3.rules[field.camelName] = {};\n if (field.required) {\n _this3.rules[field.camelName].required = true;\n }\n if (field.requiresRegex) {\n _this3.rules[field.camelName].matches = new RegExp(field.regex);\n }\n });\n return this.rules;\n };\n\n FtChooseSubscriptionStep2.prototype.fromJSON = function fromJSON(json) {\n var validator = _aureliaValidation.ValidationRules;\n for (var _iterator = Object.keys(json), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var property = _ref;\n\n validator = validator.ensure(property);\n var ruleSet = json[property];\n for (var _iterator2 = Object.keys(ruleSet), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var ruleName = _ref2;\n\n validator = validator[ruleName](ruleSet[ruleName]);\n }\n }\n return validator;\n };\n\n FtChooseSubscriptionStep2.prototype.parseForm = function parseForm(model) {\n var formData = '';\n var selected = '';\n for (var _iterator3 = Object.keys(model), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var property = _ref3;\n\n var hasData = model[property] !== '' ? true : false;\n if (hasData) {\n var formFieldValue = model[property];\n this.parsedProperties = (0, _keyBy2.default)(this.properties, 'camelName');\n var parsedObj = this.parsedProperties[property];\n formData += '&' + parsedObj.kebabName + ('=' + formFieldValue);\n }\n }\n\n this.config.sections.forEach(function (section) {\n section.optionsSelected.forEach(function (option) {\n formData += '&OPTION_' + section.GroupTitle + '_' + option + '=on';\n selected += 'OPTION_' + section.GroupTitle + '__' + option + '=on;';\n });\n section.fundsSelected.forEach(function (fund) {\n formData += '&FUND_' + section.GroupTitle + '__' + fund + '=on';\n selected += 'FUND_' + section.GroupTitle + '__' + fund + '=on;';\n });\n });\n\n selected += this.config.optionGuideFormData;\n\n formData += '&orderDetails=' + selected;\n formData += '&doSubmit=iwPreActions';\n return formData;\n };\n\n FtChooseSubscriptionStep2.prototype.back = function back() {\n this.step--;\n };\n\n FtChooseSubscriptionStep2.prototype.submit = function submit() {\n var _this4 = this;\n\n this.controller.validate().then(function (result) {\n if (result.valid) {\n _this4.parsedErrors = null;\n var formData = _this4.parseForm(_this4.model);\n logger.debug('sending form values: ', formData);\n\n _this4.http.fetch((0, _unescape2.default)(_this4.config.SubmitURL), {\n method: 'post',\n body: formData,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }).then(function (response) {\n if (!response.ok) {\n response.text().then(function (err) {\n _this4.response = err;\n _this4.config.dataSuccess = false;\n _this4.config.formlabels.emailFailureMsg.message = _this4.response;\n logger.debug('Error sending: ', _this4.response);\n _this4.step++;\n });\n } else {\n response.text().then(function (success) {\n _this4.stage = 'send';\n _this4.response = success;\n _this4.config.dataSuccess = true;\n _this4.config.formlabels.emailSuccessMsg.message = _this4.response;\n logger.debug('Sent success: ', _this4.response);\n _this4.step++;\n });\n }\n logger.debug('General Response: ', response);\n });\n } else {\n _this4.parsedErrors = (0, _keyBy2.default)(_this4.controller.errors, 'propertyName');\n logger.debug(_this4.controller.errors);\n logger.debug(_this4.parsedErrors);\n }\n });\n };\n\n return FtChooseSubscriptionStep2;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'form', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'step', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'model', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'properties', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'parsedErrors', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step3',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtChooseSubscriptionStep3 = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtChooseSubscriptionStep3 = exports.FtChooseSubscriptionStep3 = (_dec = (0, _aureliaFramework.inject)('Store'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtChooseSubscriptionStep3, _ReduxComponentBase);\n\n function FtChooseSubscriptionStep3(store) {\n _classCallCheck(this, FtChooseSubscriptionStep3);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'config', _descriptor, _this);\n\n _this.store = store;\n return _this;\n }\n\n FtChooseSubscriptionStep3.prototype.attached = function attached() {\n $('html, body').animate({\n scrollTop: 0\n }, 400);\n\n this.config = this.store.getState().marketing.subscriptionChooser;\n this.sentMessage = this.config.dataSuccess ? this.config.formlabels.emailSuccessMsg.message : this.config.formlabels.emailFailureMsg.message;\n this.site = this.store.getState().general.site.site;\n this.segment = this.store.getState().general.segment;\n this.sitesegment = '/' + this.site + '/' + this.segment;\n };\n\n return FtChooseSubscriptionStep3;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/ft-choose-subscription',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtChooseSubscription = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var logger = _aureliaFramework.LogManager.getLogger('step1');\n\n var FtChooseSubscription = exports.FtChooseSubscription = (_dec = (0, _aureliaFramework.inject)('Store'), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtChooseSubscription, _ReduxComponentBase);\n\n function FtChooseSubscription(store) {\n _classCallCheck(this, FtChooseSubscription);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.controller = null;\n\n _this.store = store;\n return _this;\n }\n\n FtChooseSubscription.prototype.doReset = function doReset() {\n this.attached();\n };\n\n FtChooseSubscription.prototype.attached = function attached() {\n var configNode = document.getElementById('ftChooseSubscriptionConfig');\n var configHTML = configNode.innerHTML.split('\\\\').join('\\\\\\\\');\n\n logger.debug('configHTML', configHTML);\n\n var congidJSON = JSON.parse(configHTML);\n if (configNode) {\n this.dispatch({\n type: 'CHOOSE_SUBSCRIPTION_CONFIG_SUCCESS',\n data: congidJSON\n });\n }\n\n this.step = 1;\n };\n\n FtChooseSubscription.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n if (!newState.marketing.subscriptionChooser) {\n this.isPopulated = false;\n return;\n }\n\n this.step = 1;\n this.config = this.store.getState().marketing.subscriptionChooser;\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtChooseSubscription;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/marketing/layouts/ft-lump-sum-calculator/ft-lump-sum-calculator',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtLumpSumCalculator = exports.FtLumpSumCalculator = function () {\n function FtLumpSumCalculator() {\n _classCallCheck(this, FtLumpSumCalculator);\n\n this.controller = null;\n\n this.chartData = [{\n name: 'Investment Growth',\n data: [{\n name: 'xxx',\n y: 10\n }, {\n name: 'xxx',\n y: 20\n }, {\n name: 'xxx',\n y: 30\n }, {\n name: 'xxx',\n y: 10\n }, {\n name: 'xxx',\n y: 20\n }, {\n name: 'xxx',\n y: 30\n }, {\n name: 'xxx',\n y: 40\n }],\n pointPadding: 0.2\n }, {\n name: 'Investment Growth + £20pcm',\n\n data: [{\n name: 'xxx',\n y: 8\n }, {\n name: 'xxx',\n y: 16\n }, {\n name: 'xxx',\n y: 24\n }, {\n name: 'xxx',\n y: 8\n }, {\n name: 'xxx',\n y: 16\n }, {\n name: 'xxx',\n y: 24\n }, {\n name: 'xxx',\n y: 32\n }],\n pointPadding: 0.2\n }];\n\n this.extraOptions = {\n colors: ['#005598', '#00a0dc'],\n plotOptions: {\n column: {\n grouping: false\n }\n }\n };\n }\n\n FtLumpSumCalculator.prototype.attached = function attached() {\n this.tab = 1;\n };\n\n FtLumpSumCalculator.prototype.calculate = function calculate() {\n this.results = true;\n };\n\n return FtLumpSumCalculator;\n }();\n});\r\ndefine('components/marketing/layouts/ft-pension-calculator/ft-pension-calculator-step1',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPensionCalculatorStep1 = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor;\n\n var FtPensionCalculatorStep1 = exports.FtPensionCalculatorStep1 = (_class = function () {\n function FtPensionCalculatorStep1() {\n _classCallCheck(this, FtPensionCalculatorStep1);\n\n _initDefineProp(this, 'step', _descriptor, this);\n }\n\n FtPensionCalculatorStep1.prototype.attached = function attached() {};\n\n FtPensionCalculatorStep1.prototype.next = function next() {\n this.step = 2;\n };\n\n return FtPensionCalculatorStep1;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'step', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/marketing/layouts/ft-pension-calculator/ft-pension-calculator-step2',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtPensionCalculatorStep2 = exports.FtPensionCalculatorStep2 = function () {\n function FtPensionCalculatorStep2() {\n _classCallCheck(this, FtPensionCalculatorStep2);\n\n this.controller = null;\n\n this.categories = ['Pension claim per month', 'Monthly Expenditure', 'Pension Gap', 'Pension Claim per month', 'Monthly Expenditure', 'Pension Gap'];\n\n this.chartData = [{\n data: [{ name: 'Pension Claim per month', y: 5, color: '#4E9D2D', colName: '400' }, { name: 'Monthly Expenditure', y: 1, color: '#005598', colName: '450' }, { name: 'Pension Gap', y: 1, color: '#848484', colName: '-200' }, { name: 'Pension Claim per month', y: 5, color: '#00A0DC', colName: '400' }, { name: 'Monthly Expenditure', y: 1, color: '#00A0DC', colName: '450' }, { name: 'Pension Gap', y: 1, color: '#00A0DC', colName: '-100' }],\n type: 'column'\n }];\n\n this.extraOptions = {\n plotOptions: {\n series: {\n dataLabels: {\n enabled: true,\n style: {\n fontWeight: 'bold',\n fontSize: '20px'\n },\n formatter: function formatter() {\n return this.point.colName;\n }\n }\n }\n }\n };\n }\n\n FtPensionCalculatorStep2.prototype.attached = function attached() {\n $('[data-toggle=\"popover\"]').popover();\n };\n\n return FtPensionCalculatorStep2;\n }();\n});\r\ndefine('components/marketing/layouts/ft-pension-calculator/ft-pension-calculator',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtPensionCalculator = exports.FtPensionCalculator = function () {\n function FtPensionCalculator() {\n _classCallCheck(this, FtPensionCalculator);\n\n this.controller = null;\n }\n\n FtPensionCalculator.prototype.attached = function attached() {\n this.step = 1;\n };\n\n return FtPensionCalculator;\n }();\n});\r\ndefine('components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs-content',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtStickyTabsContent = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2;\n\n var FtStickyTabsContent = exports.FtStickyTabsContent = (_class = function () {\n function FtStickyTabsContent() {\n _classCallCheck(this, FtStickyTabsContent);\n\n _initDefineProp(this, 'registerContent', _descriptor, this);\n\n _initDefineProp(this, 'tab', _descriptor2, this);\n }\n\n FtStickyTabsContent.prototype.attached = function attached() {\n this.content = {\n tab: this.tab,\n element: this.element\n };\n\n if (!this.isAttached) {\n if (typeof this.registerContent === 'function') {\n this.registerContent(this.content);\n }\n }\n this.isAttached = true;\n };\n\n return FtStickyTabsContent;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'registerContent', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'tab', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs-label',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtStickyTabsLabel = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtStickyTabsLabel = exports.FtStickyTabsLabel = (_class = function () {\n function FtStickyTabsLabel() {\n _classCallCheck(this, FtStickyTabsLabel);\n\n _initDefineProp(this, 'registerLabel', _descriptor, this);\n\n _initDefineProp(this, 'tab', _descriptor2, this);\n\n _initDefineProp(this, 'title', _descriptor3, this);\n\n _initDefineProp(this, 'goTo', _descriptor4, this);\n }\n\n FtStickyTabsLabel.prototype.attached = function attached() {\n this.label = {\n tab: this.tab,\n title: this.title\n };\n\n if (!this.isAttached) {\n if (typeof this.registerLabel === 'function') {\n this.registerLabel(this.label);\n }\n }\n this.isAttached = true;\n };\n\n FtStickyTabsLabel.prototype.go = function go() {\n if (typeof this.goTo === 'function') {\n this.goTo(this.label, false);\n }\n };\n\n FtStickyTabsLabel.prototype.goMob = function goMob() {\n if (typeof this.goTo === 'function') {\n this.goTo(this.label, true);\n }\n };\n\n return FtStickyTabsLabel;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'registerLabel', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'tab', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'title', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'goTo', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs',['exports', 'lodash/find'], function (exports, _find) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtStickyTabs = undefined;\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtStickyTabs = exports.FtStickyTabs = function () {\n function FtStickyTabs() {\n _classCallCheck(this, FtStickyTabs);\n\n this.contents = [];\n this.labels = [];\n this.registerContent = this.doRegisterContent.bind(this);\n this.registerLabel = this.doRegisterLabel.bind(this);\n this.goTo = this.doGoTo.bind(this);\n this.offset = 50;\n }\n\n FtStickyTabs.prototype.attached = function attached() {\n var _this = this;\n\n document.addEventListener('scroll', function () {\n _this.doScrollChecks();\n }, false);\n };\n\n FtStickyTabs.prototype.doScrollChecks = function doScrollChecks() {\n var _this2 = this;\n\n if (this.xstest.offsetHeight === 0) {\n this.offset = this.tabBar.offsetHeight + 15;\n\n if (this.tabBarContainer.getBoundingClientRect().top <= 0) {\n this.tabBarContainer.classList.add('sticky');\n this.tabBarContainer.style.height = this.tabBar.offsetHeight + 15 + 'px';\n } else {\n this.tabBarContainer.classList.remove('sticky');\n this.tabBarContainer.style.height = 'auto';\n }\n\n this.contents.forEach(function (content) {\n var top = content.element.getBoundingClientRect().top;\n var bottom = content.element.getBoundingClientRect().bottom;\n var label = (0, _find2.default)(_this2.labels, { tab: content.tab });\n label.active = content.active = top < _this2.offset && bottom > _this2.offset;\n });\n\n this.active = (0, _find2.default)(this.labels, 'active');\n } else {\n this.tabBarContainer.classList.remove('sticky');\n this.tabBarContainer.style.height = 'auto';\n }\n };\n\n FtStickyTabs.prototype.detached = function detached() {\n document.removerEventListener('scroll', false);\n };\n\n FtStickyTabs.prototype.doRegisterContent = function doRegisterContent(content) {\n this.contents.push(content);\n this.doScrollChecks();\n };\n\n FtStickyTabs.prototype.doRegisterLabel = function doRegisterLabel(content) {\n this.labels.push(content);\n };\n\n FtStickyTabs.prototype.doGoTo = function doGoTo(item, mobile) {\n window.location.hash = '#' + item.tab;\n var offset = void 0;\n if (mobile) {\n offset = $(this.tabBar).find('ul')[0].offsetHeight + 10;\n } else {\n offset = this.tabBar.offsetHeight + 10;\n }\n $('html, body').animate({\n scrollTop: $(this[item.tab]).offset().top - offset\n }, 400);\n };\n\n return FtStickyTabs;\n }();\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister-cell',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentListerCell = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtDocumentListerCell = exports.FtDocumentListerCell = (_dec = (0, _aureliaFramework.inject)(Element), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec(_class = _dec2(_class = (_class2 = function () {\n function FtDocumentListerCell(element, bindingEngine) {\n var _this = this;\n\n _classCallCheck(this, FtDocumentListerCell);\n\n _initDefineProp(this, 'registerCell', _descriptor, this);\n\n _initDefineProp(this, 'registerCellItem', _descriptor2, this);\n\n _initDefineProp(this, 'selectMultiple', _descriptor3, this);\n\n _initDefineProp(this, 'onSelected', _descriptor4, this);\n\n this.passOnSelected = function (e) {\n _this.selected = _this.cell.items.filter(function (i, key) {\n return key !== 0 && i.show && i.selected;\n }).length;\n if (typeof _this.onSelected === 'function') {\n _this.onSelected();\n }\n };\n\n this.registerItem = function (item) {\n _this.cell.items.push(item);\n _this.cell.dropdownItems = _this.cell.items.length;\n if (typeof _this.registerCellItem === 'function') {\n _this.registerCellItem(item);\n }\n };\n\n this.cell = {\n show: true,\n items: []\n };\n\n this.ddLeft = 0;\n this.ddTop = 0;\n this.selected = 0;\n }\n\n FtDocumentListerCell.prototype.attached = function attached() {\n if (!this.isAttached) {\n if (typeof this.registerCell === 'function') {\n this.registerCell(this.cell);\n }\n }\n this.isAttached = true;\n };\n\n FtDocumentListerCell.prototype.toggleDropdown = function toggleDropdown() {\n this.ddLeft = this.dropdown.getBoundingClientRect().left - 6;\n this.ddTop = this.ddButton.getBoundingClientRect().bottom;\n this.ddWidth = this.ddButton.offsetWidth;\n };\n\n return FtDocumentListerCell;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'registerCell', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'registerCellItem', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'selectMultiple', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister-dynamic-link',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentListerDynamicLink = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtDocumentListerDynamicLink = exports.FtDocumentListerDynamicLink = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtDocumentListerDynamicLink(element) {\n var _this = this;\n\n _classCallCheck(this, FtDocumentListerDynamicLink);\n\n _initDefineProp(this, 'link', _descriptor, this);\n\n _initDefineProp(this, 'selectMultiple', _descriptor2, this);\n\n _initDefineProp(this, 'onSelected', _descriptor3, this);\n\n this.onSelect = function (e) {\n e.stopImmediatePropagation();\n _this.link.selected = !_this.link.selected;\n if (typeof _this.onSelected === 'function') {\n _this.onSelected();\n }\n };\n }\n\n FtDocumentListerDynamicLink.prototype.attached = function attached() {};\n\n return FtDocumentListerDynamicLink;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'link', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'selectMultiple', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister-group-row',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentListerGroupRow = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtDocumentListerGroupRow = exports.FtDocumentListerGroupRow = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtDocumentListerGroupRow(element) {\n var _this = this;\n\n _classCallCheck(this, FtDocumentListerGroupRow);\n\n _initDefineProp(this, 'label', _descriptor, this);\n\n _initDefineProp(this, 'registerRow', _descriptor2, this);\n\n _initDefineProp(this, 'registerRowItem', _descriptor3, this);\n\n _initDefineProp(this, 'fundIdentifiers', _descriptor4, this);\n\n this.registerItem = function (item) {\n _this.row.items.push(item);\n\n if (typeof _this.registerRowItem === 'function') {\n _this.registerRowItem(item);\n }\n };\n\n this.row = {\n show: true,\n label: '',\n items: [],\n fundIdentifiers: ''\n };\n }\n\n FtDocumentListerGroupRow.prototype.attached = function attached() {\n this.row.label = this.label;\n this.row.fundIdentifiers = this.fundIdentifiers;\n if (typeof this.registerRow === 'function') {\n this.registerRow(this.row);\n }\n };\n\n return FtDocumentListerGroupRow;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'registerRow', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'registerRowItem', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'fundIdentifiers', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister-group',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentListerGroup = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtDocumentListerGroup = exports.FtDocumentListerGroup = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtDocumentListerGroup(element) {\n var _this = this;\n\n _classCallCheck(this, FtDocumentListerGroup);\n\n _initDefineProp(this, 'label', _descriptor, this);\n\n _initDefineProp(this, 'code', _descriptor2, this);\n\n _initDefineProp(this, 'registerGroup', _descriptor3, this);\n\n _initDefineProp(this, 'registerGroupRow', _descriptor4, this);\n\n this.registerRow = function (row) {\n _this.group.rows.push(row);\n\n if (typeof _this.registerGroupRow === 'function') {\n _this.registerGroupRow(row);\n }\n };\n\n this.group = {\n show: true,\n rows: []\n };\n }\n\n FtDocumentListerGroup.prototype.attached = function attached() {\n this.group.label = this.label;\n this.group.code = this.code;\n if (typeof this.registerGroup === 'function') {\n this.registerGroup(this.group);\n }\n };\n\n return FtDocumentListerGroup;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'code', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'registerGroup', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'registerGroupRow', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister-link',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentListerLink = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11;\n\n var FtDocumentListerLink = exports.FtDocumentListerLink = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtDocumentListerLink(element) {\n var _this = this;\n\n _classCallCheck(this, FtDocumentListerLink);\n\n _initDefineProp(this, 'selectMultiple', _descriptor, this);\n\n _initDefineProp(this, 'fundCategory', _descriptor2, this);\n\n _initDefineProp(this, 'shareClass', _descriptor3, this);\n\n _initDefineProp(this, 'currency', _descriptor4, this);\n\n _initDefineProp(this, 'distribution', _descriptor5, this);\n\n _initDefineProp(this, 'type', _descriptor6, this);\n\n _initDefineProp(this, 'label', _descriptor7, this);\n\n _initDefineProp(this, 'size', _descriptor8, this);\n\n _initDefineProp(this, 'url', _descriptor9, this);\n\n _initDefineProp(this, 'onSelected', _descriptor10, this);\n\n _initDefineProp(this, 'registerItem', _descriptor11, this);\n\n this.onSelect = function (e) {\n e.stopImmediatePropagation();\n _this.link.selected = !_this.link.selected;\n\n if (typeof _this.onSelected === 'function') {\n _this.onSelected();\n }\n };\n }\n\n FtDocumentListerLink.prototype.attached = function attached() {\n this.link = {\n show: true,\n selected: false,\n shareClass: this.shareClass,\n currency: this.currency,\n distribution: this.distribution,\n url: this.url,\n label: this.label\n };\n\n if (!this.isAttached) {\n if (typeof this.registerItem === 'function') {\n this.registerItem(this.link);\n }\n }\n this.isAttached = true;\n };\n\n return FtDocumentListerLink;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'selectMultiple', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'fundCategory', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'currency', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'distribution', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'type', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, 'size', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, 'url', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, 'registerItem', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister-mobilelink',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentListerMobileLink = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n\n var FtDocumentListerMobileLink = exports.FtDocumentListerMobileLink = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtDocumentListerMobileLink(element) {\n _classCallCheck(this, FtDocumentListerMobileLink);\n\n _initDefineProp(this, 'selectMultiple', _descriptor, this);\n\n _initDefineProp(this, 'shareClass', _descriptor2, this);\n\n _initDefineProp(this, 'currency', _descriptor3, this);\n\n _initDefineProp(this, 'distribution', _descriptor4, this);\n\n _initDefineProp(this, 'type', _descriptor5, this);\n\n _initDefineProp(this, 'label', _descriptor6, this);\n\n _initDefineProp(this, 'size', _descriptor7, this);\n\n _initDefineProp(this, 'onSelected', _descriptor8, this);\n\n _initDefineProp(this, 'registerItem', _descriptor9, this);\n }\n\n FtDocumentListerMobileLink.prototype.attached = function attached() {\n this.link = {\n show: true,\n shareClass: this.shareClass,\n currency: this.currency,\n distribution: this.distribution,\n label: this.label\n };\n if (typeof this.registerItem === 'function') {\n this.registerItem(this.link);\n }\n };\n\n return FtDocumentListerMobileLink;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'selectMultiple', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'currency', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'distribution', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'type', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'size', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, 'registerItem', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/ft-document-lister',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/includes'], function (exports, _aureliaFramework, _reduxComponentBase, _includes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDocumentLister = undefined;\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var logger = _aureliaFramework.LogManager.getLogger('doc-lister');\n var FtDocumentLister = exports.FtDocumentLister = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtDocumentLister, _ReduxComponentBase);\n\n function FtDocumentLister(store, element) {\n _classCallCheck(this, FtDocumentLister);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'label', _descriptor, _this);\n\n _initDefineProp(_this, 'marketingLabels', _descriptor2, _this);\n\n _this.registerItem = function (link) {\n _this.links.push(link);\n\n if (_this.filterFromParams) {\n _this.setFilters();\n }\n };\n\n _this.registerMobileItem = function (link) {\n _this.links.push(link);\n };\n\n _this.registerRow = function (row) {\n _this.rows.push(row);\n };\n\n _this.registerGroup = function (group) {\n _this.groups.push(group);\n _this.groupsCount = _this.groups.length;\n _this.groupsCountVisible = _this.groups.length;\n };\n\n _this.registerDropdown = function (cell) {\n cell.marketingLabels = _this.marketingLabels;\n _this.dropdowns.push(cell);\n };\n\n _this.toggleSelectMultiple = function () {\n _this.selectMultiple = !_this.selectMultiple;\n };\n\n _this.filterSelected = function () {\n _this.selected = _this.links.filter(function (link) {\n return link.selected && link.show;\n });\n };\n\n _this.saveView = function () {\n var url = window.location.href.split('?')[0];\n\n var cols = _this.getShownColumns();\n var colsList = cols.join(',');\n\n var urlWithParems = url + '?cols=' + colsList + '&name=' + _this.filterName + '&amp;shareClass=' + _this.filterShareClass + '&amp;vehicle=' + _this.filterVehicle + '&amp;distribution=' + _this.filterDistribution + '&amp;currency=' + _this.filterCurrency;\n\n _this.dispatch({\n type: 'OPEN_MODAL',\n title: 'Save View',\n contents: '\\n <p>Simply copy and paste the URL shown here to share or save your view. This URL contains all your filter and column preferences and your results.</p>\\n <p><input class=\"form-control\" value=\"' + urlWithParems + '\"/></p>'\n });\n };\n\n _this.onSelected = function () {\n _this.filterSelected();\n };\n\n _this.callSubscribe = function () {\n _this.filterSelected();\n };\n\n _this.callEmailSelected = function () {\n _this.filterSelected();\n };\n\n _this.callDownload = function () {\n _this.filterSelected();\n };\n\n _this.resetFilters = function () {\n _this.filterName = '';\n _this.filterFund = '';\n _this.filterVehicle = '';\n _this.filterShareClass = '';\n _this.filterCurrency = '';\n _this.filterDistribution = '';\n\n _this.setColumnsShown(true);\n\n _this.setFilters();\n _this.showReset = false;\n };\n\n _this.setFilters = function () {\n _this.showReset = true;\n\n _this.links.forEach(function (link) {\n link.show = true;\n if (_this.filterShareClass && link.shareClass && _this.filterShareClass !== link.shareClass || _this.filterCurrency && link.currency && _this.filterCurrency !== link.currency || _this.filterFund && link.fundCategory && _this.filterFund !== link.fundCategory || _this.filterDistribution && link.distribution && _this.filterDistribution !== link.distribution) {\n link.show = false;\n }\n });\n\n _this.dropdowns.forEach(function (cell) {\n cell.dropdownItems = cell.items.filter(function (item) {\n return item.show === true;\n }).length;\n\n cell.random = Math.random();\n });\n\n _this.rows.forEach(function (row) {\n var validCurrencyLinks = row.items.filter(function (item) {\n return item.show && item.currency;\n }).length;\n var validShareClassLinks = row.items.filter(function (item) {\n return item.show && item.shareClass;\n }).length;\n var validDistributionLinks = row.items.filter(function (item) {\n return item.show && item.distribution;\n }).length;\n\n row.show = !(validCurrencyLinks === 0 && validShareClassLinks === 0 && validDistributionLinks === 0);\n\n if (_this.filterName && !(0, _includes2.default)(row.fundIdentifiers.toLowerCase(), _this.filterName.toLowerCase())) {\n row.show = false;\n }\n });\n\n _this.groups.forEach(function (group) {\n group.show = true;\n if (_this.filterVehicle && _this.filterVehicle !== group.code) {\n group.show = false;\n }\n\n if (group.rows.filter(function (row) {\n return row.show === true;\n }).length === 0) {\n group.show = false;\n }\n });\n\n _this.groupsCountVisible = _this.groups.filter(function (group) {\n return group.show === true;\n }).length;\n };\n\n _this.checkRows = function () {\n return _this.activeTab === 'filters' ? 'hidden' : '';\n };\n\n _this.store = store;\n\n _this.activeTab = 'filters';\n\n _this.showSelectMultiple = true;\n\n _this.selectMultiple = false;\n\n _this.showSaveView = true;\n _this.showSubscribe = true;\n _this.showEmailSelected = true;\n _this.showDownload = true;\n\n _this.selected = [];\n _this.links = [];\n _this.groups = [];\n _this.rows = [];\n _this.mobileLinks = [];\n _this.dropdowns = [];\n\n _this.filterFromParams = false;\n _this.filterName = _this.getParameterByName('name');\n _this.filterVehicle = _this.getParameterByName('vehicle');\n _this.filterShareClass = _this.getParameterByName('shareClass');\n _this.filterDistribution = _this.getParameterByName('distribution');\n _this.filterCurrency = _this.getParameterByName('currency');\n\n var configNode = element.getElementsByClassName('ft-checkbox-pill-toggle')[0];\n var configArr = [];\n for (var _iterator = configNode.children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var item = _ref;\n\n if (item.textContent) {\n var configObj = {};\n configObj.label = item.textContent;\n configObj.value = item.textContent.replace(/[^\\w\\s]/gi, '');\n configObj.value = configObj.value.replace(/\\s+/g, '');\n configArr.push(configObj);\n }\n }\n\n if (configNode) {\n _this.dispatch({\n type: 'DOCLISTER_CONFIG_SUCCESS',\n data: configArr\n });\n }\n return _this;\n }\n\n FtDocumentLister.prototype.createColumnVars = function createColumnVars() {\n var _this2 = this;\n\n for (var _iterator2 = Object.keys(this.config.columns), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var column = _ref2;\n\n this[column] = this.config.columns[column];\n }\n\n var columnsToShow = this.getParameterByName('cols');\n if (columnsToShow) {\n this.setColumnsShown(false);\n var columnsToShowArray = columnsToShow.split(',');\n columnsToShowArray.forEach(function (col) {\n _this2[col] = true;\n });\n }\n\n if (!columnsToShow && !this.filterFromParams) {\n this.resetFilters();\n }\n this.ready = true;\n $('.table-responsive').removeClass('hidden');\n };\n\n FtDocumentLister.prototype.bootstrap = function bootstrap() {\n if (this.hasBootstrapped) {\n return;\n }\n this.marketingLabels = this.store.getState().marketing.ftDocumentListerLabels;\n if (!this.marketingLabels) {\n logger.debug('Failure loading marketing labels from state');\n return;\n }\n logger.debug('Success loading marketing labels from state');\n this.hasBootstrapped = true;\n };\n\n FtDocumentLister.prototype.mapState = function mapState(newState) {\n try {\n this.config = this.store.getState().marketing.ftDocumentLister;\n if (this.config) {\n this.createColumnVars();\n }\n this.bootstrap();\n } catch (e) {\n logger.error(e);\n }\n };\n\n FtDocumentLister.prototype.attached = function attached() {};\n\n FtDocumentLister.prototype.getParameterByName = function getParameterByName(name, url) {\n if (!url) url = window.location.href;\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');\n var results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n this.filterFromParams = true;\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n };\n\n FtDocumentLister.prototype.setColumnsShown = function setColumnsShown(toShown) {\n for (var _iterator3 = Object.keys(this.config.columns), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var column = _ref3;\n\n this[column] = toShown;\n }\n };\n\n FtDocumentLister.prototype.getShownColumns = function getShownColumns() {\n var shownCols = [];\n for (var _iterator4 = Object.keys(this.config.columns), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var column = _ref4;\n\n if (this[column]) {\n shownCols.push(column);\n }\n }\n return shownCols;\n };\n\n return FtDocumentLister;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/lists/ft-report-archive-a/ft-report-archive-a',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/fp/filter', 'lodash/fp/flatMap', 'lodash/fp/flow'], function (exports, _aureliaFramework, _reduxComponentBase, _filter, _flatMap, _flow) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtReportArchiveA = undefined;\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _flatMap2 = _interopRequireDefault(_flatMap);\n\n var _flow2 = _interopRequireDefault(_flow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor;\n\n var FtReportArchiveA = exports.FtReportArchiveA = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtReportArchiveA, _ReduxComponentBase);\n\n function FtReportArchiveA(store, beans, element) {\n _classCallCheck(this, FtReportArchiveA);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'marketingLabels', _descriptor, _this);\n\n _this.populated = false;\n\n _this.results = false;\n _this.loading = false;\n _this.dataSourcePath = element.getAttribute('data-source-path');\n\n _this.onSelectDocument = _this.doSelectDocument.bind(_this);\n _this.onSelectFund = _this.doSelectFund.bind(_this);\n\n _this.marketingLabels = store.getState().marketing.reportArchiveALabels;\n return _this;\n }\n\n FtReportArchiveA.prototype.attached = function attached() {\n this.typeAheadData = reportsArchiveTypeAhead;\n };\n\n FtReportArchiveA.prototype.doSelectFund = function doSelectFund(item) {\n var _this2 = this;\n\n this.fundId = item.fundID;\n this.shareClass = item.shareClass;\n this.fundName = item.label;\n this.results = false;\n this.loading = true;\n\n setTimeout(function () {\n _this2.load();\n }, 300);\n };\n\n FtReportArchiveA.prototype.doSelectDocument = function doSelectDocument() {\n this.selected = (0, _flow2.default)((0, _flatMap2.default)('cols'), (0, _filter2.default)(function (i) {\n return i.documents;\n }), (0, _flatMap2.default)('documents'), (0, _filter2.default)(function (i) {\n return i.selected;\n }))(this.data.rows);\n };\n\n FtReportArchiveA.prototype.mapState = function mapState(newState) {\n try {\n this.data = newState.marketing.reportArchiveA;\n this.marketingLabels = newState.marketing.reportArchiveALabels;\n if (newState.marketing.reportArchiveA) {\n this.results = true;\n this.loading = false;\n }\n } catch (e) {\n this.logger.debug('e()', e);\n this.results = false;\n this.loading = false;\n }\n };\n\n FtReportArchiveA.prototype.load = function load() {\n var url = this.dataSourcePath + '&FundID=' + this.fundId + '&ShareClass=' + this.shareClass + '&FundName=' + this.fundName;\n\n this.dispatch({\n type: 'POPULATE_REPORT_ARCHIVE_A',\n beans: [url],\n fundId: this.fundId,\n cid: url\n });\n };\n\n FtReportArchiveA.prototype.onChoose = function onChoose(item) {\n this.message = item;\n };\n\n return FtReportArchiveA;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/lists/ft-report-archive-b/ft-report-archive-b',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/fp/filter', 'lodash/fp/flatMap', 'lodash/fp/flow'], function (exports, _aureliaFramework, _reduxComponentBase, _filter, _flatMap, _flow) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtReportArchiveB = undefined;\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _flatMap2 = _interopRequireDefault(_flatMap);\n\n var _flow2 = _interopRequireDefault(_flow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor;\n\n var FtReportArchiveB = exports.FtReportArchiveB = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtReportArchiveB, _ReduxComponentBase);\n\n function FtReportArchiveB(store, beans, element) {\n _classCallCheck(this, FtReportArchiveB);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'marketingLabels', _descriptor, _this);\n\n _this.populated = false;\n\n _this.results = false;\n _this.loading = false;\n _this.dataSourcePath = element.getAttribute('data-source-path');\n\n _this.onSelectDocument = _this.doSelectDocument.bind(_this);\n _this.onSelectFund = _this.doSelectFund.bind(_this);\n\n _this.marketingLabels = store.getState().marketing.reportArchiveBLabels;\n return _this;\n }\n\n FtReportArchiveB.prototype.attached = function attached() {\n this.typeAheadData = reportsArchiveTypeAhead;\n this.reportsArchiveYears = reportsArchiveYears;\n this.selectedYear = this.reportsArchiveYears[0];\n };\n\n FtReportArchiveB.prototype.doSelectFund = function doSelectFund(item) {\n var _this2 = this;\n\n this.fundId = item.fundID;\n this.shareClass = item.shareClass;\n this.fundName = item.label;\n this.results = false;\n this.loading = true;\n\n setTimeout(function () {\n _this2.load();\n }, 300);\n };\n\n FtReportArchiveB.prototype.doSelectDocument = function doSelectDocument() {\n this.selected = (0, _flow2.default)((0, _flatMap2.default)('cols'), (0, _filter2.default)(function (i) {\n return i.documents;\n }), (0, _flatMap2.default)('documents'), (0, _filter2.default)(function (i) {\n return i.selected;\n }))(this.data.rows);\n };\n\n FtReportArchiveB.prototype.doYearChange = function doYearChange() {\n var _this3 = this;\n\n this.results = false;\n this.loading = true;\n setTimeout(function () {\n _this3.load();\n }, 300);\n };\n\n FtReportArchiveB.prototype.mapState = function mapState(newState) {\n try {\n this.data = newState.marketing.reportArchiveB;\n this.marketingLabels = newState.marketing.reportArchiveBLabels;\n\n this.results = true;\n this.loading = false;\n } catch (e) {\n this.results = false;\n this.loading = false;\n }\n };\n\n FtReportArchiveB.prototype.load = function load() {\n var url = this.dataSourcePath + '&FundID=' + this.fundId + '&year=' + this.selectedYear + '&ShareClass=' + this.shareClass;\n\n this.dispatch({\n type: 'POPULATE_REPORT_ARCHIVE_B',\n beans: [url],\n fundId: this.fundId,\n cid: url\n });\n };\n\n return FtReportArchiveB;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/lists/ft-report-archive-c/ft-report-archive-c',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/fp/filter', 'lodash/fp/flatMap', 'lodash/fp/flow'], function (exports, _aureliaFramework, _reduxComponentBase, _filter, _flatMap, _flow) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtReportArchiveC = undefined;\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _flatMap2 = _interopRequireDefault(_flatMap);\n\n var _flow2 = _interopRequireDefault(_flow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtReportArchiveC = exports.FtReportArchiveC = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtReportArchiveC, _ReduxComponentBase);\n\n function FtReportArchiveC(store, beans, element) {\n _classCallCheck(this, FtReportArchiveC);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n\n _this.results = false;\n _this.loading = false;\n _this.dataSourcePath = element.getAttribute('data-source-path');\n _this.onSelectDocument = _this.doSelectDocument.bind(_this);\n return _this;\n }\n\n FtReportArchiveC.prototype.attached = function attached() {\n this.reportsArchiveYears = reportsArchiveYears;\n this.selectedYear = this.reportsArchiveYears[0];\n this.load();\n };\n\n FtReportArchiveC.prototype.doYearChange = function doYearChange() {\n var _this2 = this;\n\n this.results = false;\n this.loading = true;\n this.data = [];\n setTimeout(function () {\n _this2.load();\n }, 300);\n };\n\n FtReportArchiveC.prototype.doSelectDocument = function doSelectDocument() {\n this.selected = (0, _flow2.default)((0, _flatMap2.default)('cols'), (0, _filter2.default)(function (i) {\n return i.documents;\n }), (0, _flatMap2.default)('documents'), (0, _filter2.default)(function (i) {\n return i.selected;\n }))(this.data.rows);\n };\n\n FtReportArchiveC.prototype.load = function load() {\n this.loading = false;\n this.results = true;\n\n this.data = {\n title: 'R\\xFCcknahmepreise / Zwischengewinne ' + this.selectedYear,\n cols: ['Monat / 2009', 'Rücknahmepreise', 'Zwischengewinne', 'Aktiengewinne'],\n rows: [{\n label: 'xxxx',\n cols: [{\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }, {\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }, {\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }]\n }, {\n label: 'yyyy',\n cols: [{\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }]\n }]\n };\n this.results = true;\n };\n\n return FtReportArchiveC;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/marketing/lists/ft-report-archive-d/ft-report-archive-d',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/fp/filter', 'lodash/fp/flatMap', 'lodash/fp/flow'], function (exports, _aureliaFramework, _reduxComponentBase, _filter, _flatMap, _flow) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtReportArchiveD = undefined;\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _flatMap2 = _interopRequireDefault(_flatMap);\n\n var _flow2 = _interopRequireDefault(_flow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtReportArchiveD = exports.FtReportArchiveD = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtReportArchiveD, _ReduxComponentBase);\n\n function FtReportArchiveD(store, beans, element) {\n _classCallCheck(this, FtReportArchiveD);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n\n _this.dataSourcePath = element.getAttribute('data-source-path');\n _this.onSelectDocument = _this.doSelectDocument.bind(_this);\n return _this;\n }\n\n FtReportArchiveD.prototype.attached = function attached() {\n this.data = {\n groups: [{\n title: 'Ausschüttungen 2007',\n cols: ['Monat / 2009', 'Rücknahmepreise', 'Zwischengewinne', 'Aktiengewinne'],\n rows: [{\n label: 'xxxx',\n cols: [{\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }, {\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }, {\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }]\n }, {\n label: 'yyyy',\n cols: [{\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }]\n }]\n }, {\n title: 'Ausschüttungen 2006',\n cols: ['Monat / 2009', 'Rücknahmepreise', 'Zwischengewinne'],\n rows: [{\n label: 'xxxx',\n cols: [{\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }, {\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }, {\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }]\n }, {\n label: 'yyyy',\n cols: [{\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }, {\n documents: [{\n title: 'doc.title',\n label: 'doc.label',\n url: 'xxxx',\n size: '10kb',\n extension: 'pdf'\n }]\n }]\n }]\n }]\n };\n };\n\n FtReportArchiveD.prototype.mapState = function mapState(newState) {};\n\n FtReportArchiveD.prototype.doSelectDocument = function doSelectDocument() {\n this.selected = (0, _flow2.default)((0, _flatMap2.default)('cols'), (0, _filter2.default)(function (i) {\n return i.documents;\n }), (0, _flatMap2.default)('documents'), (0, _filter2.default)(function (i) {\n return i.selected;\n }))(this.data.rows);\n };\n\n return FtReportArchiveD;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/marketing/video/ft-video-switch/ft-video-switch',['exports', 'aurelia-framework', 'lodash/uniq', '../../../../lib/redux-component-base', 'aurelia-fetch-client', 'aurelia-pal'], function (exports, _aureliaFramework, _uniq, _reduxComponentBase, _aureliaFetchClient, _aureliaPal) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtVideoSwitch = undefined;\n\n var _uniq2 = _interopRequireDefault(_uniq);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _class, _desc, _value, _class2, _descriptor;\n\n var FtVideoSwitch = exports.FtVideoSwitch = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element, _aureliaFetchClient.HttpClient), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec3 = (0, _aureliaFramework.computedFrom)('languages', 'populated'), _dec4 = (0, _aureliaFramework.computedFrom)('languages', 'populated'), _dec5 = (0, _aureliaFramework.computedFrom)('dropdownOpen', 'populated'), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtVideoSwitch, _ReduxComponentBase);\n\n function FtVideoSwitch(store, beans, element, http) {\n _classCallCheck(this, FtVideoSwitch);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'marketingLabels', _descriptor, _this);\n\n _this.bcUrl = 'http://players.brightcove.net/';\n _this.bcPlayerFile = '_default/index.min.js';\n _this.populated = false;\n _this.isMultiPlayer = false;\n _this.videoData = [];\n _this.languages = [];\n _this.currentLanguage = '';\n _this.dropdownOpen = false;\n\n _this.http = http;\n _this.store = store;\n _this.transcriptUrl = element.getAttribute('transcript-url');\n\n var videoElements = Array.from(element.querySelectorAll('[data-fti-component=\"video\"]'));\n\n if (videoElements.length) {\n _this.videoData = videoElements.map(_this._parseVideo);\n videoElements.forEach(function (video) {\n video.parentNode.removeChild(video);\n });\n _this.languages = (0, _uniq2.default)(_this.videoData.map(function (v) {\n return v.language;\n })).sort();\n _this.bcURL = _this.getBrightCoveConfig(_this.getVideo(_this.videoData, 0), false);\n }\n\n var experienceAttr = element.getAttribute('video-path');\n\n if (experienceAttr) {\n _this.bcURL = _this.getMultiVideoPath(experienceAttr);\n }\n\n if (_this.bcURL) {\n $(_aureliaPal.PLATFORM.global)[0].require.config({\n 'paths': {\n 'bc': _this.bcURL\n },\n timeout: 30\n });\n\n $(_aureliaPal.PLATFORM.global)[0].require(['bc'], function () {});\n }\n\n _this.marketingLabels = store.getState().marketing.ftVideoSwitch;\n return _this;\n }\n\n FtVideoSwitch.prototype.attached = function attached() {\n if (this.videoData.length) {}\n };\n\n FtVideoSwitch.prototype.toggleDropdown = function toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n };\n\n FtVideoSwitch.prototype.changeLanguage = function changeLanguage(language) {\n this.currentVideo = this.videoData.find(function (v) {\n return v.language === language;\n });\n this.currentLanguage = this.currentVideo.language;\n this.addPlayer(this.currentVideo);\n this.dropdownOpen = false;\n };\n\n FtVideoSwitch.prototype.getMultiVideoPath = function getMultiVideoPath(onElementAttr) {\n onElementAttr.replace('.js', '');\n this.isMultiPlayer = true;\n\n this.multiVideoPath = onElementAttr.replace('.js', '');\n return this.multiVideoPath;\n };\n\n FtVideoSwitch.prototype.getVideo = function getVideo(videos, id) {\n this.currentVideo = this.videoData[id];\n this.currentLanguage = this.currentVideo.language;\n return this.currentVideo;\n };\n\n FtVideoSwitch.prototype.addPlayer = function addPlayer(currVid) {\n if (currVid.isHTML5) {\n this.getBrightCoveConfig(currVid, true);\n } else {\n this.populated = true;\n }\n };\n\n FtVideoSwitch.prototype.getBrightCoveConfig = function getBrightCoveConfig(currVid, applyBC) {\n this.videoPlayer = null;\n this.playerHTML = '<video id=\\\"videoID\\\"';\n this.playerID = 'videoID';\n if (currVid.attributes) {\n currVid.attributes.forEach(function (attribute) {\n if (attribute.name === 'id') {\n this.playerID = 'videoID';\n }\n if (attribute.name === 'placeholder') {\n this.placeHolder = attribute.nodeValue;\n }\n if (attribute.name === 'data-account') {\n this.playerAccount = attribute.nodeValue;\n }\n if (attribute.name === 'data-video-id') {\n this.videoId = attribute.nodeValue;\n }\n if (attribute.name === 'data-player') {\n this.playerData = attribute.nodeValue;\n }\n if (attribute.name === 'width' || attribute.name === 'height') {\n attribute.nodeValue = attribute.nodeValue.indexOf('px') > -1 ? attribute.nodeValue + 'px' : attribute.nodeValue + '%';\n }\n if (attribute.name === 'class') {\n attribute.nodeValue = 'video-js';\n }\n this.playerHTML += ' ' + attribute.name + '=\\\"' + attribute.nodeValue + '\\\"';\n }, this);\n this.playerHTML += ' controls></video>';\n\n var brightCoveUrl = this.bcUrl + this.playerAccount + '/' + this.playerData + this.bcPlayerFile + '?version=' + Math.random();\n\n return applyBC ? this.applyBrightCove() : brightCoveUrl;\n }\n };\n\n FtVideoSwitch.prototype.applyBrightCove = function applyBrightCove() {\n var _this2 = this;\n\n var containerElements = Array.from(document.querySelectorAll('.video-container'));\n containerElements.forEach(function (container) {\n var videoElement = container.getElementsByTagName('video');\n var videoElementId = videoElement[0].attributes['data-video-id'].nodeValue;\n var videoElementPlayerId = videoElement[0].attributes['data-player'].nodeValue;\n\n if (_this2.videoId === videoElementId && _this2.playerData === videoElementPlayerId) {\n _this2.placeHolder = container;\n }\n });\n this.placeHolder.innerHTML = this.playerHTML;\n if ($(_aureliaPal.PLATFORM.global)[0].bc) {\n if (!this.store.getState().general.params.videologs) {\n $(_aureliaPal.PLATFORM.global)[0].videojs.log.level('off');\n }\n\n $(_aureliaPal.PLATFORM.global)[0].bc(document.getElementById(this.playerID)).ready(function () {\n this.videoPlayer = this;\n\n this.errorDisplay = this.videoPlayer.getChild('ErrorDisplay');\n this.errorDisplay.off(this.videoPlayer, 'error', this.errorDisplay.open);\n });\n this.populated = true;\n }\n return true;\n };\n\n FtVideoSwitch.prototype._parseVideo = function _parseVideo(vid) {\n var out = {};\n var brightCoveNode = vid.getElementsByTagName('video');\n if (brightCoveNode && brightCoveNode.length) {\n out.attributes = Array.from(brightCoveNode[0].attributes);\n out.isHTML5 = true;\n } else {\n out.isHTML5 = false;\n }\n out.language = vid.getAttribute('language');\n out.content = vid.innerHTML.trim();\n return out;\n };\n\n _createClass(FtVideoSwitch, [{\n key: 'showLanguageDropdown',\n get: function get() {\n return this.languages.length > 1;\n }\n }, {\n key: 'showControls',\n get: function get() {\n return this.showLanguageDropdown || this.transcriptUrl;\n }\n }, {\n key: 'dropdownClass',\n get: function get() {\n return this.dropdownOpen ? 'open' : '';\n }\n }]);\n\n return FtVideoSwitch;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'showLanguageDropdown', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'showLanguageDropdown'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showControls', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'showControls'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'dropdownClass', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'dropdownClass'), _class2.prototype)), _class2)) || _class) || _class);\n});\r\ndefine('components/products/common/attributes/ft-share-class-refresh-listener',['exports', 'aurelia-framework', 'lodash/get'], function (exports, _aureliaFramework, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtShareClassRefreshListenerCustomAttribute = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var FtShareClassRefreshListenerCustomAttribute = exports.FtShareClassRefreshListenerCustomAttribute = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = function () {\n function FtShareClassRefreshListenerCustomAttribute(store, element) {\n var _this = this;\n\n _classCallCheck(this, FtShareClassRefreshListenerCustomAttribute);\n\n this.element = element;\n store.subscribe(function () {\n return _this.mapState(store.getState());\n });\n this.logger = _aureliaFramework.LogManager.getLogger(this.constructor.name);\n }\n\n FtShareClassRefreshListenerCustomAttribute.prototype.windowReload = function windowReload() {\n location.reload(false);\n };\n\n FtShareClassRefreshListenerCustomAttribute.prototype.mapState = function mapState(newState) {\n try {\n var newFundId = (0, _get2.default)(newState, 'general.params.FundID');\n var oldShareClass = (0, _get2.default)(newState, 'general.params.ShareClass', '');\n var newShareClass = (0, _get2.default)(newState, 'products.app.currentShareClass', '');\n\n if (newFundId && newShareClass !== '' && newShareClass !== oldShareClass) {\n this.windowReload();\n }\n } catch (e) {\n this.logger.error(e);\n }\n };\n\n return FtShareClassRefreshListenerCustomAttribute;\n }()) || _class);\n});\r\ndefine('components/products/common/attributes/share-class-link-listener',['exports', 'aurelia-framework', 'lodash/get'], function (exports, _aureliaFramework, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShareClassLinkListenerCustomAttribute = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var ShareClassLinkListenerCustomAttribute = exports.ShareClassLinkListenerCustomAttribute = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = function () {\n function ShareClassLinkListenerCustomAttribute(store, element) {\n var _this = this;\n\n _classCallCheck(this, ShareClassLinkListenerCustomAttribute);\n\n this.element = element;\n store.subscribe(function () {\n return _this.mapState(store.getState());\n });\n this.logger = _aureliaFramework.LogManager.getLogger(this.constructor.name);\n }\n\n ShareClassLinkListenerCustomAttribute.prototype.mapState = function mapState(newState) {\n try {\n var newFundId = (0, _get2.default)(newState, 'general.params.FundID');\n var newShareClass = (0, _get2.default)(newState, 'products.app.currentShareClass');\n\n if (newFundId && (newFundId !== this.fundId || newShareClass !== this.shareClass)) {\n this.fundId = newFundId;\n if (newShareClass) {\n this.shareClass = newShareClass;\n\n this.element.href = this.element.href.replace(/\\/(\\d+)\\/((.{1,3})\\/)?/, '/' + newFundId + '/' + newShareClass + '/');\n } else {\n this.element.href = this.element.href.replace(/\\/(\\d+)\\//, '/' + newFundId + '/');\n }\n }\n } catch (e) {\n this.logger.error(e);\n }\n };\n\n return ShareClassLinkListenerCustomAttribute;\n }()) || _class);\n});\r\ndefine('components/products/common/util/show-element',['exports', 'lodash/get', 'lodash/some', 'lodash/isArray'], function (exports, _get, _some, _isArray) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.showElement = showElement;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _some2 = _interopRequireDefault(_some);\n\n var _isArray2 = _interopRequireDefault(_isArray);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function showElement(fundConfigData, elementID, fundID, fundCat) {\n var show = true;\n\n var suppressElementsByFund = (0, _get2.default)(fundConfigData, 'provider.config.portfolio.suppressByFund');\n if (suppressElementsByFund && (0, _some2.default)(suppressElementsByFund, function (obj) {\n var items = obj.fundID;\n return (0, _some2.default)(!(0, _isArray2.default)(items) ? [items] : items, { val: Number(fundID) });\n }) && (0, _some2.default)(suppressElementsByFund, function (obj) {\n var items = obj.elementID;\n return (0, _some2.default)(!(0, _isArray2.default)(items) ? [items] : items, { val: elementID });\n })) {\n show = false;\n }\n\n var suppressElementsByCategory = (0, _get2.default)(fundConfigData, 'provider.config.portfolio.suppressByCategory');\n if (suppressElementsByCategory && (0, _some2.default)(suppressElementsByCategory, function (obj) {\n var items = obj.fundCat;\n return (0, _some2.default)(!(0, _isArray2.default)(items) ? [items] : items, { val: fundCat });\n }) && (0, _some2.default)(suppressElementsByCategory, function (obj) {\n var items = obj.elementID;\n return (0, _some2.default)(!(0, _isArray2.default)(items) ? [items] : items, { val: elementID });\n })) {\n show = false;\n }\n\n return show;\n }\n});\r\ndefine('components/products/common/util/utils-config',['exports', 'lodash/get', 'lodash/set', 'lodash/split', 'lodash/includes'], function (exports, _get, _set, _split, _includes) {\n 'use strict';\n\n var _get2 = _interopRequireDefault(_get);\n\n var _set2 = _interopRequireDefault(_set);\n\n var _split2 = _interopRequireDefault(_split);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n exports.utilsConfig = {\n mergeConfig: function mergeConfig(baseObject, configObject) {\n for (var key in configObject) {\n if (configObject.hasOwnProperty(key)) {\n var existingValue = baseObject[key];\n var newValue = configObject[key];\n if ((typeof existingValue === 'undefined' ? 'undefined' : _typeof(existingValue)) === 'object' && !Array.isArray(existingValue)) {\n baseObject[key] = this.mergeConfig(existingValue, newValue);\n } else {\n baseObject[key] = configObject[key];\n }\n }\n }\n return baseObject;\n },\n\n splitListOfFields: function splitListOfFields(baseObject, listOfFields) {\n for (var _iterator = listOfFields, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var field = _ref;\n\n var value = (0, _get2.default)(baseObject, field, '');\n var valueAsArray = value === '' ? [] : (0, _split2.default)(value, ',');\n (0, _set2.default)(baseObject, field, valueAsArray);\n }\n return baseObject;\n },\n\n arrayConvertListOfFields: function arrayConvertListOfFields(baseObject, listOfFields) {\n for (var _iterator2 = listOfFields, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var field = _ref2;\n\n var value = (0, _get2.default)(baseObject, field, []);\n if (!Array.isArray(value)) {\n value = value === '' ? [] : [value];\n }\n (0, _set2.default)(baseObject, field, value);\n }\n return baseObject;\n },\n\n etfBenchmarkOrderRewrite: function etfBenchmarkOrderRewrite(etfBenchmarkOrder) {\n if (!etfBenchmarkOrder) {\n return;\n }\n var etfBenchmarkOrderRev = [];\n for (var _iterator3 = etfBenchmarkOrder, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var BM = _ref3;\n\n etfBenchmarkOrderRev.push(parseInt(BM.substring(4), 10) - 1);\n }\n return etfBenchmarkOrderRev;\n },\n\n isValueInConfigKey: function isValueInConfigKey(config, configKey, testVal) {\n var options = (0, _get2.default)(config, configKey, []);\n return (0, _includes2.default)(options, testVal);\n },\n\n isPortfolioComponentSuppressed: function isPortfolioComponentSuppressed(config, fundId, portfolioComponent, fundCategory) {\n if (!fundId && !portfolioComponent && !fundCategory) {\n return false;\n }\n var portfolioSuppressionConfig = (0, _get2.default)(config, 'portfolio.suppressionSets.suppressionSet', []);\n for (var _iterator4 = portfolioSuppressionConfig, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var obj = _ref4;\n\n if (obj.portfolioComponents.indexOf(portfolioComponent) !== -1 && (obj.funds.indexOf(fundId) !== -1 || obj.assetClasses.indexOf(fundCategory) !== -1)) {\n return true;\n }\n }\n return false;\n }\n };\n});\r\ndefine('components/products/common/util/utils-fund-details',['exports', 'lodash/find', 'lodash/map', 'lodash/get'], function (exports, _find, _map, _get) {\n 'use strict';\n\n var _find2 = _interopRequireDefault(_find);\n\n var _map2 = _interopRequireDefault(_map);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.utilsFundDetails = {\n getFundDetails: function getFundDetails(rawFundDetails) {\n return (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl', null);\n },\n\n getCurrentShareClass: function getCurrentShareClass(shareClassKey, classesList) {\n if (classesList && classesList.globalProductsValue) {\n var fundDetails = this.getFundDetails(classesList);\n classesList = fundDetails.shClsDet;\n }\n if (shareClassKey) {\n var currentShareClass = (0, _find2.default)(classesList, { shCls: { val: shareClassKey } });\n return currentShareClass;\n }\n var primaryShareClass = this.getPrimaryClass(classesList);\n return primaryShareClass;\n },\n\n getPrimaryClass: function getPrimaryClass(classesList) {\n if (classesList && classesList.globalProductsValue) {\n var fundDetails = this.getFundDetails(classesList);\n classesList = fundDetails.shClsDet;\n }\n if (classesList) {\n if (classesList.length === 1) {\n return classesList[0];\n }\n return classesList.find(function (cls) {\n return (0, _get2.default)(cls, 'prmryShCls.val', '').toUpperCase() === 'YES';\n });\n }\n },\n\n benchmarkByKey: function benchmarkByKey(fundDetails) {\n var fundId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var shareClassCode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n var benchMrkList = (0, _get2.default)(fundDetails, 'benchMrkList', []);\n\n var keyedBenchMrks = {};\n benchMrkList.forEach(function (benchMrk) {\n var benchMrkKey = (0, _get2.default)(benchMrk, 'benchMrkLbl.val') || (0, _get2.default)(benchMrk, 'order.val') || (0, _get2.default)(benchMrk, 'bmAssociationType.val');\n var benchMrkShareClassCode = (0, _get2.default)(benchMrk, 'shClsId.val');\n var benchMrkFundId = (0, _get2.default)(benchMrk, 'fundId.val');\n if ((!fundId || benchMrkFundId === fundId) && (!shareClassCode || benchMrkShareClassCode === shareClassCode)) {\n keyedBenchMrks[benchMrkKey] = benchMrk;\n }\n });\n return keyedBenchMrks;\n },\n\n getConcattedHtmlBenchmarkNames: function getConcattedHtmlBenchmarkNames(benchMrkList) {\n var fundId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var shareClassCode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var decoratedConfig = arguments[3];\n\n var isShowNoBenchmarks = (0, _get2.default)(decoratedConfig, 'general.noBenchmarkList', []).indexOf(fundId);\n if (isShowNoBenchmarks !== -1) {\n return null;\n }\n\n var keyedBenchMarks = this.benchmarkByKey(benchMrkList, fundId, shareClassCode);\n var isShowAllBenchmarks = (0, _get2.default)(decoratedConfig, 'general.allBenchmarkList', []).indexOf(fundId);\n if (isShowAllBenchmarks !== -1) {\n var benchMarkNames = (0, _map2.default)(Object.values(keyedBenchMarks), 'bmrkName.val').join('<br/>');\n return benchMarkNames;\n }\n\n var isShowTwoBenchmarks = (0, _get2.default)(decoratedConfig, 'general.twoBenchmarkList', []).indexOf(fundId);\n if (isShowTwoBenchmarks !== -1) {\n var bmrkName1 = (0, _get2.default)(keyedBenchMarks, 'INST1.bmrkName.val', null);\n var bmrkName2 = (0, _get2.default)(keyedBenchMarks, 'INST2.bmrkName.val', null);\n if (!bmrkName2) {\n return bmrkName1;\n }\n return bmrkName1 + '<br/>' + bmrkName2;\n }\n\n return (0, _get2.default)(keyedBenchMarks, 'INST1.bmrkName.val', null);\n },\n\n getFundCategory: function getFundCategory(fundDetails) {\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n return (0, _get2.default)(fundDetails, 'etfDet.asstCls.val') || (0, _get2.default)(fundDetails, 'fundCategory.val');\n },\n\n getAssetClass: function getAssetClass(fundDetails) {\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n return (0, _get2.default)(fundDetails, 'etfDet.asstCls.val') || (0, _get2.default)(fundDetails, 'assetClassStd.val');\n },\n\n getTaID: function getTaID(fundDetails) {\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n return (0, _get2.default)(fundDetails, 'taID.val');\n },\n\n getSiteVehicle: function getSiteVehicle(fundDetails) {\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n return (0, _get2.default)(fundDetails, 'fundUmbrella.val', 'ETF');\n },\n\n getFundCurrency: function getFundCurrency(fundDetails) {\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n return (0, _get2.default)(fundDetails, 'fundBaseCur.val', '—');\n },\n\n getShareClassCurrency: function getShareClassCurrency(fundDetails, shareClassKey) {\n if (fundDetails && fundDetails.globalProductsValue) {\n fundDetails = this.getFundDetails(fundDetails);\n }\n var currentShareClass = this.getCurrentShareClass(shareClassKey, fundDetails.shClsDet);\n var shareClassCurrency = (0, _get2.default)(currentShareClass, 'shClsCur.val', '—');\n return shareClassCurrency;\n }\n };\n});\r\ndefine('components/products/common/util/utils-pricing-distribution',['exports', 'lodash/get', 'lodash/find'], function (exports, _get, _find) {\n 'use strict';\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.utilsPricingDistribution = {\n getCurrentShareClass: function getCurrentShareClass(shareClassKey, classesList) {\n if (shareClassKey) {\n var currentShareClass = (0, _find2.default)(classesList, { shClsCD: { val: shareClassKey } });\n return currentShareClass;\n }\n var primaryShareClass = this.getPrimaryClass(classesList);\n return primaryShareClass;\n },\n\n getPrimaryClass: function getPrimaryClass(classesList) {\n if (classesList) {\n if (classesList.length === 1) {\n return classesList[0];\n }\n return classesList.find(function (cls) {\n return (0, _get2.default)(cls, 'prmryShCls.val', '').toUpperCase() === 'YES';\n });\n }\n }\n };\n});\r\ndefine('components/products/common/util/utils',['exports', 'lodash/get', 'lodash/some', 'lodash/isObjectLike', 'lodash/isEmpty', '../../../products/lib/reducer-utils'], function (exports, _get, _some, _isObjectLike, _isEmpty, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.countObj = countObj;\n exports.objectReduce = objectReduce;\n exports.getCaveats = getCaveats;\n exports.getDetailItems = getDetailItems;\n exports.getBmrkNameById = getBmrkNameById;\n exports.getBmIdByLbs = getBmIdByLbs;\n exports.findIndexByBbmkId = findIndexByBbmkId;\n exports.getErrorObject = getErrorObject;\n exports.getChartDataForArrayKeys = getChartDataForArrayKeys;\n exports.isEmptyDeep = isEmptyDeep;\n exports.isNotEmptyDeep = isNotEmptyDeep;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _some2 = _interopRequireDefault(_some);\n\n var _isObjectLike2 = _interopRequireDefault(_isObjectLike);\n\n var _isEmpty2 = _interopRequireDefault(_isEmpty);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function countObj(objectToCount) {\n var i = [];\n for (var _iterator = objectToCount, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var objVal = _ref;\n\n i.push(objVal);\n }\n return i.length;\n }\n\n function objectReduce(objectToReduce, reduction) {\n if (!objectToReduce || !reduction) {\n return;\n }\n var tableDataLenght = countObj(objectToReduce);\n var objectReduced = [];\n for (var i = reduction; i < tableDataLenght; i++) {\n objectReduced.push(objectToReduce[i]);\n }\n return objectReduced;\n }\n\n function getCaveats(CVO, secName) {\n if (!CVO || !secName) {\n return;\n }\n var elementLevel = (0, _get2.default)(CVO, 'elementLevel.caveat');\n var elementLevelCaveats = (0, _get2.default)(CVO, 'elementLevelCaveats.caveat');\n var elementLevelTab = [];\n for (var _iterator2 = elementLevel, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var elementLevelVal = _ref2;\n\n if (elementLevelVal.secName === secName) {\n elementLevelTab.push(elementLevelVal);\n }\n }\n var elementLevelCaveatsTab = [];\n var i = 1;\n for (var _iterator3 = elementLevelTab, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var elementLevelTabVal = _ref3;\n\n for (var _iterator4 = elementLevelCaveats, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var elementLevelCaveatsVal = _ref4;\n\n if (elementLevelCaveatsVal.id === elementLevelTabVal.id) {\n var tempLevelCaveatsTab = {\n eleName: elementLevelTabVal.eleName,\n secName: elementLevelTabVal.secName,\n id: elementLevelCaveatsVal.id,\n text: elementLevelCaveatsVal.text,\n iterator: i\n };\n elementLevelCaveatsTab.push(tempLevelCaveatsTab);\n }\n }\n i++;\n }\n\n return elementLevelCaveatsTab;\n }\n\n function getDetailItems(valueFields, detailObj) {\n var items = {};\n valueFields.forEach(function (valueField) {\n var val = (0, _get2.default)(detailObj, valueField + '.val', null);\n items[valueField] = val !== '' ? val : null;\n });\n return items;\n }\n\n function getBmrkNameById(benchMrkList, benchMrkId) {\n for (var _iterator5 = benchMrkList, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref5 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref5 = _i5.value;\n }\n\n var benchMrk = _ref5;\n\n var bmkId = (0, _get2.default)(benchMrk, 'bmrkId.val');\n if (bmkId === benchMrkId) {\n return (0, _get2.default)(benchMrk, 'bmrkName.val');\n }\n }\n }\n\n function getBmIdByLbs(benchMrkList, benchMrkLbl) {\n for (var _iterator6 = benchMrkList, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref6 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref6 = _i6.value;\n }\n\n var benchMrk = _ref6;\n\n var bmrkLbl = (0, _get2.default)(benchMrk, 'benchMrkLbl.val');\n var bmrkId = (0, _get2.default)(benchMrk, 'bmrkId.val');\n if (bmrkLbl === benchMrkLbl) {\n return bmrkId;\n }\n }\n }\n\n function findIndexByBbmkId(performances, bmkId) {\n var keyToFind = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'fundID.val';\n\n for (var i = 0; i < performances.length; i++) {\n var fundIDVal = (0, _get2.default)(performances[i], keyToFind);\n if (fundIDVal === bmkId) {\n return i;\n }\n }\n }\n\n function getErrorObject(state, perfType) {\n var stateOBJ = void 0;\n\n switch (perfType) {\n case 'backtested-annualised':\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceAnnualised: {\n error: 'readingDataError'\n }\n });\n break;\n case 'backtested-calendar':\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceCalendar: {\n error: 'readingDataError'\n }\n });\n break;\n default:\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceCumulative: {\n error: 'readingDataError'\n }\n });\n }\n\n return stateOBJ;\n }\n\n function getChartDataForArrayKeys(backtested, yearsArrayKeys) {\n var graphPoints = [];\n var graphRow = [];\n for (var _iterator7 = yearsArrayKeys, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref7 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref7 = _i7.value;\n }\n\n var year = _ref7;\n\n if (backtested[year] !== null) {\n graphRow = { name: backtested.name, y: (0, _reducerUtils.parseNumber)(backtested[year]) };\n graphPoints.push(graphRow);\n } else {\n graphRow = { name: backtested.name, y: 0 };\n graphPoints.push(graphRow);\n }\n }\n return graphPoints;\n }\n\n function isEmptyDeep(collection) {\n return !isNotEmptyDeep(collection);\n }\n\n function isNotEmptyDeep(collection) {\n if ((0, _isEmpty2.default)(collection)) {\n return false;\n }\n return (0, _some2.default)(collection, function (obj, key) {\n if (key === '__debug') {\n return false;\n }\n if ((0, _isObjectLike2.default)(obj)) {\n return isNotEmptyDeep(obj);\n }\n return !(0, _isEmpty2.default)(obj);\n });\n }\n});\r\ndefine('components/products/common/value-converters/ft-dash-if-empty',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtDashIfEmptyValueConverter = exports.FtDashIfEmptyValueConverter = function () {\n function FtDashIfEmptyValueConverter() {\n _classCallCheck(this, FtDashIfEmptyValueConverter);\n }\n\n FtDashIfEmptyValueConverter.prototype.toView = function toView(val) {\n if (val === '-') return '&#8212;';\n return val || val === 0 ? String(val) : '&#8212;';\n };\n\n return FtDashIfEmptyValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-format-currency',['exports', '../../lib/reducer-utils'], function (exports, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFormatCurrencyValueConverter = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFormatCurrencyValueConverter = exports.FtFormatCurrencyValueConverter = function () {\n function FtFormatCurrencyValueConverter() {\n _classCallCheck(this, FtFormatCurrencyValueConverter);\n }\n\n FtFormatCurrencyValueConverter.prototype.toView = function toView(val, currency) {\n return (0, _reducerUtils.formatCurrency)(val, currency, true);\n };\n\n return FtFormatCurrencyValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-format-date-or-dash',['exports', '../../lib/date-utils'], function (exports, _dateUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFormatDateOrDashValueConverter = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFormatDateOrDashValueConverter = exports.FtFormatDateOrDashValueConverter = function () {\n function FtFormatDateOrDashValueConverter() {\n _classCallCheck(this, FtFormatDateOrDashValueConverter);\n }\n\n FtFormatDateOrDashValueConverter.prototype.toView = function toView(val) {\n return (0, _dateUtils.formatStdDateToLocaleDay)(val, true);\n };\n\n return FtFormatDateOrDashValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-format-percentage',['exports', '../../lib/reducer-utils'], function (exports, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFormatPercentageValueConverter = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFormatPercentageValueConverter = exports.FtFormatPercentageValueConverter = function () {\n function FtFormatPercentageValueConverter() {\n _classCallCheck(this, FtFormatPercentageValueConverter);\n }\n\n FtFormatPercentageValueConverter.prototype.toView = function toView(val) {\n var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!display) {\n return '';\n }\n\n return (0, _reducerUtils.formatPercentage)(val, true);\n };\n\n return FtFormatPercentageValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-format-style-width-percent',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtFormatStyleWidthPercentValueConverter = exports.FtFormatStyleWidthPercentValueConverter = function () {\n function FtFormatStyleWidthPercentValueConverter() {\n _classCallCheck(this, FtFormatStyleWidthPercentValueConverter);\n }\n\n FtFormatStyleWidthPercentValueConverter.prototype.toView = function toView(val) {\n var from100 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var parsed = parseFloat(val);\n var result = void 0;\n if (!isNaN(parsed)) {\n if (!from100) {\n result = \"width:\" + parsed + \"%;\";\n } else {\n result = \"width:\" + (100 - parsed) + \"%;\";\n }\n }\n return result;\n };\n\n return FtFormatStyleWidthPercentValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-normalize-space',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtNormalizeSpaceValueConverter = exports.FtNormalizeSpaceValueConverter = function () {\n function FtNormalizeSpaceValueConverter() {\n _classCallCheck(this, FtNormalizeSpaceValueConverter);\n }\n\n FtNormalizeSpaceValueConverter.prototype.toView = function toView(val) {\n return val && typeof val === 'string' ? val.replace(/^\\s+/, '').replace(/\\s+$/, '').replace(/\\s+/g, ' ') : val;\n };\n\n return FtNormalizeSpaceValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-range-with-percent',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtRangeWithPercentValueConverter = exports.FtRangeWithPercentValueConverter = function () {\n function FtRangeWithPercentValueConverter() {\n _classCallCheck(this, FtRangeWithPercentValueConverter);\n }\n\n FtRangeWithPercentValueConverter.prototype.toView = function toView(val) {\n return val.replace(/%/g, '<sup>%</sup>');\n };\n\n return FtRangeWithPercentValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-replace-dash-with',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtReplaceDashWithValueConverter = exports.FtReplaceDashWithValueConverter = function () {\n function FtReplaceDashWithValueConverter() {\n _classCallCheck(this, FtReplaceDashWithValueConverter);\n }\n\n FtReplaceDashWithValueConverter.prototype.toView = function toView(val, replacement) {\n return val !== '-' && val !== '—' ? String(val) : replacement;\n };\n\n return FtReplaceDashWithValueConverter;\n }();\n});\r\ndefine('components/products/common/value-converters/ft-with-dollar-or-dash',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var FtWithDollarOrDashValueConverter = exports.FtWithDollarOrDashValueConverter = function () {\n function FtWithDollarOrDashValueConverter() {\n _classCallCheck(this, FtWithDollarOrDashValueConverter);\n }\n\n FtWithDollarOrDashValueConverter.prototype.toView = function toView(val) {\n var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var tempVal = void 0;\n if (!display) return '';\n if (val) {\n if (display === 'P') {\n tempVal = 'NA';\n } else {\n tempVal = isNaN(val) ? val : '$' + val;\n }\n } else {\n tempVal = '&#8212;';\n }\n return tempVal;\n };\n\n return FtWithDollarOrDashValueConverter;\n }();\n});\r\ndefine('components/products/lib/decorators/config-decorator',['exports', 'lodash/get', 'lodash/set', 'lodash/each', 'lodash/cloneDeepWith', '../../common/util/utils-config'], function (exports, _get, _set, _each, _cloneDeepWith, _utilsConfig) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.clearConfigCache = clearConfigCache;\n exports.configDecorator = configDecorator;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _set2 = _interopRequireDefault(_set);\n\n var _each2 = _interopRequireDefault(_each);\n\n var _cloneDeepWith2 = _interopRequireDefault(_cloneDeepWith);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var LIST_OF_FIELDS_TO_ENSURE_ARRAY = ['portfolio.riskRows.riskRow', 'portfolio.suppressionSets.suppressionSet'];\n\n var LIST_OF_FIELDS_TO_SPLIT = ['softLaunchList', 'activeList', 'performance.showIaSectorForOeicOnly', 'performance.showAlpha', 'performance.showRSquared', 'performance.hideBeta', 'performance.showCorrelation', 'performance.hideFundNumber', 'performance.hideAverageAnnualChartFundList', 'performance.hideCalendarYearChartFundList', 'performance.hideTrackingError', 'performance.hideDiscreteAnnualChartFundList', 'performance.hideInformationRatio', 'performance.hideAverageAnnualChartFundListChanged', 'performance.hideCumulativeChartFundList', 'priceDistribution.showYtdAtNavElement', 'priceDistribution.showAsOfDateForEachYearPeriod', 'ppss.investmentVehicleList', 'portfolio.issuersList', 'portfolio.showDefensiveRisk', 'portfolio.showGrowthRisk', 'portfolio.showOpportunisticRisk', 'portfolio.showStableRisk', 'portfolio.hide1MonthRiskContributionForecast', 'portfolio.hide1MonthPerformanceContribution', 'portfolio.hide1MonthRiskContributionActual', 'portfolio.hidePerformanceExposure', 'general.shareClassList', 'general.allBenchmarkList', 'general.currencyList', 'general.twoBenchmarkList', 'general.noBenchmarkList', 'general.hideYtdTotalReturnAtNav'];\n\n var LIST_OF_NESTED_FIELDS_TO_SPLIT = [{\n container: 'portfolio.suppressionSets.suppressionSet',\n childFields: ['funds', 'assetClasses', 'portfolioComponents']\n }];\n\n var LIST_OF_NESTED_FIELDS_TO_ENSURE_ARRAY = [{\n container: 'overview.investmentVehicles',\n childFields: ['fundIdentifiers', 'ratings', 'fundInformationElements', 'salesCharges', 'benchmarkOrder']\n }];\n\n var configCache = {};\n\n function clearConfigCache() {\n configCache = {};\n }\n\n function configDecorator(rawConfig, segment) {\n if (configCache[segment]) {\n return configCache[segment];\n }\n if ((0, _get2.default)(rawConfig, 'provider.Error')) {\n throw new Error((0, _get2.default)(rawConfig, 'provider.Error'));\n }\n var configBlock = (0, _get2.default)(rawConfig, 'provider.config');\n var genericConfig = (0, _cloneDeepWith2.default)((0, _get2.default)(configBlock, 'all', {}), _fixUndefined);\n var segmentConfig = (0, _cloneDeepWith2.default)((0, _get2.default)(configBlock, segment, {}), _fixUndefined);\n var config = _utilsConfig.utilsConfig.mergeConfig({}, genericConfig);\n config = _utilsConfig.utilsConfig.mergeConfig(config, segmentConfig);\n\n config = _utilsConfig.utilsConfig.splitListOfFields(config, LIST_OF_FIELDS_TO_SPLIT);\n config = _utilsConfig.utilsConfig.arrayConvertListOfFields(config, LIST_OF_FIELDS_TO_ENSURE_ARRAY);\n\n var _loop = function _loop() {\n if (_isArray) {\n if (_i >= _iterator.length) return 'break';\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) return 'break';\n _ref = _i.value;\n }\n\n var fieldObj = _ref;\n\n var container = (0, _get2.default)(config, fieldObj.container, []);\n (0, _each2.default)(container, function (containee, key) {\n _utilsConfig.utilsConfig.splitListOfFields(containee, fieldObj.childFields);\n });\n (0, _set2.default)(config, fieldObj.container, container);\n };\n\n for (var _iterator = LIST_OF_NESTED_FIELDS_TO_SPLIT, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n var _ret = _loop();\n\n if (_ret === 'break') break;\n }\n\n var _loop2 = function _loop2() {\n if (_isArray2) {\n if (_i2 >= _iterator2.length) return 'break';\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) return 'break';\n _ref2 = _i2.value;\n }\n\n var fieldObj = _ref2;\n\n var container = (0, _get2.default)(config, fieldObj.container, []);\n (0, _each2.default)(container, function (containee, key) {\n _utilsConfig.utilsConfig.arrayConvertListOfFields(containee, fieldObj.childFields);\n });\n (0, _set2.default)(config, fieldObj.container, container);\n };\n\n for (var _iterator2 = LIST_OF_NESTED_FIELDS_TO_ENSURE_ARRAY, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n var _ret2 = _loop2();\n\n if (_ret2 === 'break') break;\n }\n\n config.segment = segment;\n configCache[segment] = config;\n return config;\n }\n\n function _fixUndefined(val) {\n if (val === 'undefined') {\n return false;\n }\n }\n});\r\ndefine('components/products/overview/ft-fund-ratings/ft-fund-ratings',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundRatings = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtFundRatings = exports.FtFundRatings = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtFundRatings, _ReduxComponentBase);\n\n function FtFundRatings(store, beans, element) {\n _classCallCheck(this, FtFundRatings);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n _this.showMorningStar = false;\n _this.showLipper = false;\n _this.showObsr = false;\n _this.showAnalizy = false;\n _this.numberOfRatings = 0;\n\n _this.fundId = element.getAttribute('fund-id');\n var currentState = store.getState();\n\n _this.dispatch({\n type: 'POPULATE_FUND_RATINGS',\n beans: beans.component.fundRatings,\n fundId: _this.fundId,\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtFundRatings.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label) {\n this.populated = false;\n return;\n }\n var data = (0, _mapStateUtils.getFundState)(newState, this.fundId).fundRatings;\n this.showMorningStar = data.showMorningStar;\n if (this.showMorningStar) {\n this.numberOfRatings++;\n this.msNumberOfStars = data.msNumberOfStars;\n this.asOfDate = data.asOfDate;\n this.msCategory = data.msCategory;\n }\n this.showLipper = data.showLipper;\n if (this.showLipper) {\n this.lipperTotalReturn = data.lipperTotalReturn || this.getLabel('not-applicable');\n this.lipperConsistentReturn = data.lipperConsistentReturn || this.getLabel('not-applicable');\n this.lipperPreservation = data.lipperPreservation || this.getLabel('not-applicable');\n this.lipperTaxEfficiency = data.lipperTaxEfficiency || this.getLabel('not-applicable');\n this.lipperExpense = data.lipperExpense || this.getLabel('not-applicable');\n }\n this.populated = this.numberOfRatings > 0;\n } catch (e) {\n this.populated = false;\n }\n };\n\n return FtFundRatings;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/overview/ft-fund-static-bar/ft-fund-static-bar',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundStaticBar = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtFundStaticBar = exports.FtFundStaticBar = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtFundStaticBar, _ReduxComponentBase);\n\n function FtFundStaticBar(store, beans, element) {\n _classCallCheck(this, FtFundStaticBar);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n var currentState = store.getState();\n\n _this.dispatch({\n type: 'POPULATE_FUND_STATIC_BAR',\n\n beans: beans.component.fundStaticBar,\n fundId: _this.fundId,\n segment: currentState.general.site.segment\n });\n return _this;\n }\n\n FtFundStaticBar.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!fundState || !fundState.fundStaticBar || !this.label) {\n this.isPopulated = false;\n return;\n }\n this.data = fundState.fundStaticBar;\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtFundStaticBar;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/overview/ft-performance-snapshot/ft-performance-snapshot',['exports', 'aurelia-framework', 'lodash/get'], function (exports, _aureliaFramework, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPerformanceSnapshot = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _dec, _class;\n\n var logger = _aureliaFramework.LogManager.getLogger('FtPerformanceSnapshot');\n\n var FtPerformanceSnapshot = exports.FtPerformanceSnapshot = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = function FtPerformanceSnapshot(store, element) {\n _classCallCheck(this, FtPerformanceSnapshot);\n\n this.self = this;\n this.fundId = element.getAttribute('fund-id');\n this.cid = element.getAttribute('cid');\n this.performanceType = element.getAttribute('performance-type');\n if (!this.performanceType) {\n this.performanceType = (0, _get2.default)(store.getState(), 'products.config.overview.performanceType', '');\n }\n logger.debug('snaphot performance type: ' + this.performanceType);\n }) || _class);\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/ft-calendar-year-returns',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get', 'lodash/clone', 'lodash/includes'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get, _clone, _includes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCalendarYearReturns = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtCalendarYearReturns = exports.FtCalendarYearReturns = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtCalendarYearReturns, _ReduxComponentBase);\n\n function FtCalendarYearReturns(store, beans, element) {\n _classCallCheck(this, FtCalendarYearReturns);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'shareClassKey', _descriptor, _this);\n\n _this.isPopulated = false;\n _this.currentTab = null;\n _this.tabs = [{\n key: 'MONTH_END',\n labelKey: 'month-end',\n ariaControl: 'calendar-year-return-monthly-pane',\n isActive: false\n }, {\n key: 'QUARTER_END',\n labelKey: 'quarter-end',\n ariaControl: 'calendar-year-total-return-quarterly-pane',\n isActive: false\n }];\n\n _this.fundId = element.getAttribute('fund-id');\n _this.calendarYearBeans = (0, _clone2.default)(beans.component.performanceSimply);\n _this.taxYear = element.getAttribute('tax-year');\n\n _this.cid = element.getAttribute('cid');\n\n var currentState = store.getState();\n _this.logger.debug('currentStatecurrentState', currentState);\n var segment = (0, _get2.default)(currentState, 'general.segment');\n\n _this.populateAction = {\n type: 'POPULATE_CALENDAR_YEAR_RETURNS',\n beans: _this.calendarYearBeans,\n fundId: _this.fundId,\n taxYear: _this.taxYear,\n segment: segment\n };\n\n _this.configAction = {\n type: 'CALENDAR_YEAR_RETURNS_DEFAULT_STATE',\n defaultTab: 'MONTH_END',\n beans: [_this.cid],\n cid: _this.cid\n };\n\n if (_this.cid) {\n _this.dispatch(_this.configAction);\n }\n return _this;\n }\n\n FtCalendarYearReturns.prototype.shareClassKeyChanged = function shareClassKeyChanged() {\n this.populateAction.shareClassKey = this.shareClassKey;\n if (this.fundId) {\n this.dispatch(this.populateAction);\n }\n };\n\n FtCalendarYearReturns.prototype.activate = function activate(model) {\n this.fundId = model.fundId;\n this.cid = model.cid;\n this.configAction.beans = [this.cid];\n this.configAction.cid = this.cid;\n this.dispatch(this.configAction);\n this.populateAction.fundId = model.fundId;\n this.dispatch(this.populateAction);\n };\n\n FtCalendarYearReturns.prototype.changeTab = function changeTab(key) {\n this.dispatch({\n type: 'CALENDAR_YEAR_RETURNS_CHANGE_TAB',\n tab: key\n });\n };\n\n FtCalendarYearReturns.prototype.getParsedFundNameLabel = function getParsedFundNameLabel(fundNameLabel) {\n if ((0, _includes2.default)(fundNameLabel, '[nav-performance]')) {\n fundNameLabel = fundNameLabel.replace('[nav-performance]', this.getLabel('nav-performance'));\n }\n return fundNameLabel;\n };\n\n FtCalendarYearReturns.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.logger.debug('mapState() - FtCalendarYearReturns');\n\n this.shareClassKey = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!fundState || !fundState.calendarYearReturns || !this.label) {\n this.isPopulated = false;\n return;\n }\n this.currentTab = newState.products.app.performance.calendarYearReturns.currentTab;\n var currentTabData = fundState.calendarYearReturns[this.currentTab];\n\n if (!(0, _get2.default)(currentTabData, 'calData')) {\n this.showData = false;\n this.isPopulated = true;\n return;\n }\n\n var refreshRates = (0, _get2.default)(newState, 'products.app.performance.calendarYearReturns.refreshRates');\n this.showRefreshRates = refreshRates && refreshRates.length > 1 || !refreshRates;\n\n this.tableData = currentTabData.calData;\n\n this.dateGroup = currentTabData.dateGroup;\n this.chartCategories = this.tableData.years;\n\n this.showFundNumber = (0, _get2.default)(fundState, 'calendarYearReturns.options.showFundNumber', true);\n this.showCurrency = (0, _get2.default)(fundState, 'calendarYearReturns.options.showCurrency', true);\n this.hideChart = (0, _get2.default)(currentTabData, 'hideChart', false);\n this.showData = (0, _get2.default)(currentTabData, 'showData', true);\n this.showYTD = (0, _get2.default)(fundState, 'calendarYearReturns.options.showYTD');\n\n if ((0, _get2.default)(fundState, 'calendarYearReturns.options.useDynamicLabels')) {\n this.dynamicLabel = currentTabData.dynamicLabel;\n }\n\n this.dynamicLabel = currentTabData.dynamicLabel;\n this.fundName = currentTabData.fundName;\n\n var chartData = currentTabData.chartData;\n\n var chartItems = chartData;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n\n this.chartData = aryChartData;\n\n this.tabs = this.tabs.map(function (tab) {\n tab.value = _this2.label[tab.labelKey];\n tab.isActive = tab.key === _this2.currentTab;\n return tab;\n });\n\n this.isPopulated = true;\n } catch (e) {\n this.isPopulated = false;\n }\n };\n\n return FtCalendarYearReturns;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassKey', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/ft-calendar-year-tab',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCalendarYearTab = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n\n var logger = _aureliaFramework.LogManager.getLogger('calendar-year-tab');\n var FtCalendarYearTab = exports.FtCalendarYearTab = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtCalendarYearTab, _ReduxComponentBase);\n\n function FtCalendarYearTab(store, element) {\n _classCallCheck(this, FtCalendarYearTab);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'tableData', _descriptor, _this);\n\n _initDefineProp(_this, 'tableDataAll', _descriptor2, _this);\n\n _initDefineProp(_this, 'showFundNumber', _descriptor3, _this);\n\n _initDefineProp(_this, 'showCurrency', _descriptor4, _this);\n\n _initDefineProp(_this, 'showYtd', _descriptor5, _this);\n\n _initDefineProp(_this, 'dateGroup', _descriptor6, _this);\n\n _initDefineProp(_this, 'hasLegend', _descriptor7, _this);\n\n _this.isPopulated = false;\n\n _this.element = element;\n logger.debug('store', store);\n store.dispatch({\n type: 'LOAD_PERFORMANCE_CALENDAR_TABLE'\n });\n return _this;\n }\n\n FtCalendarYearTab.prototype.mapState = function mapState(newState) {\n try {\n logger.debug('mapState() - FtCalendarYearTable');\n this.label = (0, _get2.default)(newState, 'products.label');\n this.isPopulated = true;\n logger.debug('newState', newState);\n } catch (e) {\n logger.error(e);\n this.isPopulated = false;\n }\n };\n\n FtCalendarYearTab.prototype.tableDataAllChanged = function tableDataAllChanged() {\n if (this.tableDataAll === true) {\n this.tableDataRows = this.tableData.allRows;\n } else {\n this.tableDataRows = this.tableData.rows;\n }\n };\n\n FtCalendarYearTab.prototype.tableDataChanged = function tableDataChanged() {\n this.tableDataAsOfDate = this.tableData.asOfDate;\n this.tableDataYears = this.tableData.years;\n logger.debug('tableData', this.tableData);\n };\n\n FtCalendarYearTab.prototype.showFundNumberChanged = function showFundNumberChanged() {\n return this.showFundNumber;\n };\n\n FtCalendarYearTab.prototype.showCurrencyChanged = function showCurrencyChanged() {\n return this.showCurrency;\n };\n\n FtCalendarYearTab.prototype.showYtdChanged = function showYtdChanged() {\n this.showYTD = this.showYtd;\n };\n\n FtCalendarYearTab.prototype.dateGroupChanged = function dateGroupChanged() {\n return this.dateGroup;\n };\n\n FtCalendarYearTab.prototype.hasLegendChanged = function hasLegendChanged() {\n return this.hasLegend;\n };\n\n return FtCalendarYearTab;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'tableData', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'tableDataAll', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'showFundNumber', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'showCurrency', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'showYtd', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'dateGroup', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'hasLegend', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-discrete-returns/ft-discrete-returns',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get', 'lodash/clone', 'lodash/includes'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get, _clone, _includes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDiscreteReturns = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtDiscreteReturns = exports.FtDiscreteReturns = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtDiscreteReturns, _ReduxComponentBase);\n\n function FtDiscreteReturns(store, beans, element) {\n _classCallCheck(this, FtDiscreteReturns);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'shareClassKey', _descriptor, _this);\n\n _this.isPopulated = false;\n _this.currentTab = null;\n _this.tabs = [{\n key: 'MONTH_END',\n labelKey: 'month-end',\n ariaControl: 'discrete-return-monthly-pane',\n isActive: false\n }, {\n key: 'QUARTER_END',\n labelKey: 'quarter-end',\n ariaControl: 'discrete-total-return-quarterly-pane',\n isActive: false\n }];\n\n _this.store = store;\n _this.fundId = element.getAttribute('fund-id');\n\n _this.discreteBeans = (0, _clone2.default)(beans.component.performanceSimply);\n _this.taxYear = element.getAttribute('tax-year');\n\n _this.cid = element.getAttribute('cid');\n\n var currentState = store.getState();\n var segment = (0, _get2.default)(currentState, 'general.segment');\n\n _this.populateAction = {\n type: 'POPULATE_DISCRETE_RETURNS',\n beans: _this.discreteBeans,\n fundId: _this.fundId,\n taxYear: _this.taxYear,\n segment: segment\n };\n\n _this.configAction = {\n type: 'DISCRETE_RETURNS_DEFAULT_STATE',\n defaultTab: 'MONTH_END',\n beans: [_this.cid],\n cid: _this.cid\n };\n\n if (_this.cid) {\n _this.dispatch(_this.configAction);\n }\n return _this;\n }\n\n FtDiscreteReturns.prototype.shareClassKeyChanged = function shareClassKeyChanged() {\n this.populateAction.shareClassKey = this.shareClassKey;\n if (this.fundId) {\n this.dispatch(this.populateAction);\n }\n };\n\n FtDiscreteReturns.prototype.activate = function activate(model) {\n this.fundId = model.fundId;\n this.cid = model.cid;\n this.populateAction.fundId = model.fundId;\n this.populateAction.taxYear = model.taxYear;\n this.dispatch(this.populateAction);\n this.configAction.beans = [this.cid];\n this.configAction.cid = this.cid;\n this.dispatch(this.configAction);\n };\n\n FtDiscreteReturns.prototype.changeTab = function changeTab(key) {\n this.dispatch({\n type: 'DISCRETE_RETURNS_CHANGE_TAB',\n tab: key\n });\n };\n\n FtDiscreteReturns.prototype.getParsedFundNameLabel = function getParsedFundNameLabel(fundNameLabel) {\n if ((0, _includes2.default)(fundNameLabel, '[nav-performance]')) {\n fundNameLabel = fundNameLabel.replace('[nav-performance]', this.getLabel('nav-performance'));\n }\n return fundNameLabel;\n };\n\n FtDiscreteReturns.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.label = (0, _get2.default)(newState, 'products.label');\n this.shareClassKey = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.currentTab = (0, _get2.default)(newState, 'products.app.performance.discreteReturns.currentTab');\n if (!this.label || !fundState || !fundState.discreteReturns || !this.currentTab) {\n this.isPopulated = false;\n return;\n }\n var refreshRates = (0, _get2.default)(newState, 'products.app.performance.discreteReturns.refreshRates');\n this.showRefreshRates = refreshRates && refreshRates.length > 1 || !refreshRates;\n\n var currentTabData = fundState.discreteReturns[this.currentTab];\n if (!currentTabData) {\n this.showData = false;\n this.isPopulated = true;\n return;\n }\n\n this.showFundNumber = (0, _get2.default)(fundState, 'discreteReturns.options.showFundNumber', true);\n this.showCurrency = (0, _get2.default)(fundState, 'discreteReturns.options.showCurrency', true);\n this.hideChart = (0, _get2.default)(currentTabData, 'hideChart', false);\n this.showData = (0, _get2.default)(currentTabData, 'showData', true);\n\n this.tableData = (0, _get2.default)(currentTabData, 'tableData');\n this.dateGroup = (0, _get2.default)(currentTabData, 'dateGroup');\n this.fundName = (0, _get2.default)(currentTabData, 'fundName');\n\n this.logger.debug('currentTabDatacurrentTabDatacurrentTabData', fundState, this.currentTab);\n\n if ((0, _get2.default)(fundState, 'discreteReturns.options.useDynamicLabels')) {\n this.dynamicLabel = currentTabData.dynamicLabel;\n }\n this.chartCategories = this.tableData.chartCols;\n var chartItems = currentTabData.chartData;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n\n this.chartData = aryChartData;\n\n this.tabs = this.tabs.map(function (tab) {\n tab.value = _this2.label[tab.labelKey];\n tab.isActive = tab.key === _this2.currentTab;\n return tab;\n });\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtDiscreteReturns;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassKey', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-performance-annualised/ft-performance-annualised',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get', 'lodash/clone', 'lodash/includes'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get, _clone, _includes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPerformanceAnnualised = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtPerformanceAnnualised = exports.FtPerformanceAnnualised = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPerformanceAnnualised, _ReduxComponentBase);\n\n function FtPerformanceAnnualised(store, beans, element) {\n _classCallCheck(this, FtPerformanceAnnualised);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'shareClassKey', _descriptor, _this);\n\n _this.isPopulated = false;\n _this.currentTab = null;\n _this.tabs = [{\n key: 'MONTH_END',\n labelKey: 'month-end',\n ariaControl: 'performance-annualised-monthly-pane',\n isActive: false\n }, {\n key: 'QUARTER_END',\n labelKey: 'quarter-end',\n ariaControl: 'performance-annualised-quarterly-pane',\n isActive: false\n }];\n _this.chartData = [];\n _this.chartOptions = {};\n\n _this.store = store;\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = (0, _clone2.default)(beans.component.performanceSimply);\n\n _this.cid = element.getAttribute('cid');\n\n var currentState = _this.store.getState();\n\n var segment = (0, _get2.default)(currentState, 'general.segment');\n\n _this.populateAction = {\n type: 'POPULATE_PERFORMANCE_ANNUALISED',\n beans: _this.performanceBeans,\n fundId: _this.fundId,\n segment: segment\n };\n\n _this.configAction = {\n type: 'PERFORMANCE_ANNUALISED_DEFAULT_STATE',\n defaultTab: 'MONTH_END',\n beans: [_this.cid],\n cid: _this.cid\n };\n\n if (_this.cid) {\n _this.dispatch(_this.configAction);\n }\n return _this;\n }\n\n FtPerformanceAnnualised.prototype.activate = function activate(model) {\n this.fundId = model.fundId;\n this.populateAction.fundId = model.fundId;\n this.dispatch(this.populateAction);\n this.cid = model.cid;\n this.configAction.cid = this.cid;\n this.configAction.beans = [this.cid];\n this.dispatch(this.configAction);\n };\n\n FtPerformanceAnnualised.prototype.shareClassKeyChanged = function shareClassKeyChanged() {\n this.populateAction.shareClassKey = this.shareClassKey;\n if (this.fundId) {\n this.dispatch(this.populateAction);\n }\n };\n\n FtPerformanceAnnualised.prototype.changeTimePeriodTab = function changeTimePeriodTab(key) {\n this.logger.info('Disptaching PERFORMANCE_ANNUALISED_CHANGE_CHUNKY_MONTHY_TAB', key);\n this.dispatch({\n type: 'PERFORMANCE_ANNUALISED_CHANGE_TIME_PERIOD_TAB',\n tab: key\n });\n };\n\n FtPerformanceAnnualised.prototype.getParsedFundNameLabel = function getParsedFundNameLabel(fundNameLabel) {\n if ((0, _includes2.default)(fundNameLabel, '[nav-performance]')) {\n fundNameLabel = fundNameLabel.replace('[nav-performance]', this.getLabel('nav-performance'));\n }\n return fundNameLabel;\n };\n\n FtPerformanceAnnualised.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.logger.info('mapState()');\n this.shareClassKey = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.currentTab = (0, _get2.default)(newState, 'products.app.performance.performanceAnnualised.currentTimePeriodTab');\n var refreshRates = (0, _get2.default)(newState, 'products.app.performance.performanceAnnualised.refreshRates');\n\n this.showRefreshRates = refreshRates && refreshRates.length > 1 || !refreshRates;\n this.label = (0, _get2.default)(newState, 'products.label');\n var currentTabData = (0, _get2.default)(fundState, 'performanceAnnualised[' + this.currentTab + ']');\n if (!this.currentTab || !currentTabData || !this.label) {\n this.isPopulated = false;\n return;\n }\n if (!(0, _get2.default)(currentTabData, 'performances')) {\n this.showData = false;\n this.isPopulated = true;\n return;\n }\n\n this.showFundNumber = (0, _get2.default)(fundState, 'performanceAnnualised.options.showFundNumber', true);\n this.showCurrency = (0, _get2.default)(fundState, 'performanceAnnualised.options.showCurrency', true);\n this.hideChart = (0, _get2.default)(currentTabData, 'performances.hideChart', false);\n this.showData = (0, _get2.default)(currentTabData, 'performances.showData', true);\n\n this.navDate = fundState.performanceAnnualised.navDate;\n this.chartCategories = [this.label.get('1-yr'), this.label.get('3-yr'), this.label.get('5-yr'), this.label.get('10-yr'), this.label.get('15-yr'), this.label.get('inception')];\n\n if ((0, _get2.default)(fundState, 'performanceAnnualised.options.useDynamicLabels')) {\n this.dynamicLabel = currentTabData.performances.dynamicLabel;\n }\n\n this.chartData = (0, _get2.default)(currentTabData, 'performances.graphData');\n this.tableData = (0, _get2.default)(currentTabData, 'performances.tableData');\n this.inceptionDate = (0, _get2.default)(currentTabData, 'performances.inceptionDate');\n this.fundName = (0, _get2.default)(currentTabData, 'performances.fundName');\n\n if (this.chartData) {\n var chartItems = this.chartData;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n this.chartData = aryChartData;\n }\n\n this.tabs = this.tabs.map(function (tab) {\n tab.value = _this2.label.get(tab.labelKey);\n tab.isActive = tab.key === _this2.currentTab;\n return tab;\n });\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPerformanceAnnualised;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassKey', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-performance-cumulative/ft-performance-cumulative',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get', 'lodash/clone', 'lodash/includes'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get, _clone, _includes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPerformanceCumulative = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtPerformanceCumulative = exports.FtPerformanceCumulative = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPerformanceCumulative, _ReduxComponentBase);\n\n function FtPerformanceCumulative(store, beans, element) {\n _classCallCheck(this, FtPerformanceCumulative);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'shareClassKey', _descriptor, _this);\n\n _this.populated = false;\n _this.currentYearGroupTab = null;\n _this.currentMonthTab = null;\n _this.yearGroupTabs = [{\n key: 'PC_1YR',\n chartYear: '1',\n labelKey: '1-yr',\n isActive: false,\n isDisabled: true\n }, {\n key: 'PC_3YR',\n chartYear: '3',\n labelKey: '3-yr',\n isActive: false,\n isDisabled: true\n }, {\n key: 'PC_5YR',\n chartYear: '5',\n labelKey: '5-yr',\n isActive: false,\n isDisabled: true\n }, {\n key: 'PC_10YR',\n chartYear: '10',\n labelKey: '10-yr',\n isActive: false,\n isDisabled: true\n }, {\n key: 'PC_15YR',\n chartYear: '15',\n labelKey: '15-yr',\n isActive: false,\n isDisabled: true\n }, {\n key: 'PC_LIFE',\n chartYear: 'si',\n labelKey: 'since-inception',\n isActive: false,\n isDisabled: true\n }];\n _this.timePeriodTabs = [{\n key: 'MONTH_END',\n labelKey: 'month-end',\n ariaControl: 'cumulative-return-monthly-pane',\n isActive: false\n }, {\n key: 'QUARTER_END',\n labelKey: 'quarter-end',\n ariaControl: 'cumulative-return-quarterly-pane',\n isActive: false\n }];\n _this.chartData = [];\n _this.chartOptions = {};\n\n _this.store = store;\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = (0, _clone2.default)(beans.component.performance);\n\n _this.cid = element.getAttribute('cid');\n\n\n var currentState = _this.store.getState();\n var segment = (0, _get2.default)(currentState, 'general.segment');\n\n _this.populateAction = {\n type: 'POPULATE_PERFORMANCE_CUMULATIVE',\n beans: _this.performanceBeans,\n fundId: _this.fundId,\n segment: segment\n };\n\n _this.configAction = {\n cid: _this.cid,\n timePeriodTab: 'MONTH_END',\n yearTab: 'PC_1YR',\n labelKey: 'month-end'\n };\n\n if (_this.cid) {\n _this.configAction.type = 'PERFORMANCE_CUMULATIVE_CONFIG_DEFAULT_STATE';\n _this.configAction.defaultTab = 'MONTH_END';\n _this.configAction.beans = [_this.cid];\n _this.configAction.cid = _this.cid;\n _this.dispatch(_this.configAction);\n } else {\n _this.configAction.type = 'PERFORMANCE_CUMULATIVE_DEFAULT_STATE';\n _this.configAction.key = 'MONTH_END';\n _this.dispatch(_this.configAction);\n }\n return _this;\n }\n\n FtPerformanceCumulative.prototype.activate = function activate(model) {\n this.fundId = model.fundId;\n this.cid = model.cid;\n this.populateAction.fundId = model.fundId;\n this.dispatch(this.populateAction);\n this.configAction.cid = this.cid;\n this.configAction.beans = [this.cid];\n this.configAction.type = 'PERFORMANCE_CUMULATIVE_CONFIG_DEFAULT_STATE';\n this.configAction.defaultTab = 'MONTH_END';\n this.dispatch(this.configAction);\n };\n\n FtPerformanceCumulative.prototype.shareClassKeyChanged = function shareClassKeyChanged() {\n this.populateAction.shareClassKey = this.shareClassKey;\n if (this.fundId) {\n this.dispatch(this.populateAction);\n }\n };\n\n FtPerformanceCumulative.prototype.changeTimePeriodTab = function changeTimePeriodTab(key, labelKey) {\n this.logger.debug('Dispatching PERFORMANCE_CUMULATIVE_CHANGE_MONTH_TAB');\n this.dispatch({\n type: 'PERFORMANCE_CUMULATIVE_CHANGE_MONTH_TAB',\n tab: key,\n labelKey: labelKey\n });\n };\n\n FtPerformanceCumulative.prototype.changeYearGroupTab = function changeYearGroupTab(key) {\n this.logger.debug('Disptaching PERFORMANCE_CUMULATIVE_CHANGE_YEAR_GROUP_TAB');\n this.dispatch({\n type: 'PERFORMANCE_CUMULATIVE_CHANGE_YEAR_GROUP_TAB',\n tab: key\n });\n };\n\n FtPerformanceCumulative.prototype.getParsedFundNameLabel = function getParsedFundNameLabel(fundNameLabel) {\n if ((0, _includes2.default)(fundNameLabel, '[nav-performance]')) {\n fundNameLabel = fundNameLabel.replace('[nav-performance]', this.getLabel('nav-performance'));\n }\n return fundNameLabel;\n };\n\n FtPerformanceCumulative.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.shareClassKey = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label || !fundState || !fundState.performanceCumulative || !(0, _get2.default)(newState, 'products.app.performance.performanceCumulative')) {\n this.populated = false;\n return;\n }\n var refreshRates = (0, _get2.default)(newState, 'products.app.performance.performanceCumulative.refreshRates');\n this.showRefreshRates = refreshRates && refreshRates.length > 1 || !refreshRates;\n\n this.currentYearGroupTab = newState.products.app.performance.performanceCumulative.currentYearGroupTab;\n this.currentMonthTab = newState.products.app.performance.performanceCumulative.currentMonthTab;\n this.currentMonthTabLabelKey = newState.products.app.performance.performanceCumulative.currentMonthTabLabelKey;\n\n var currentTabData = fundState.performanceCumulative[this.currentMonthTab];\n if (!(0, _get2.default)(currentTabData, 'tableData')) {\n this.showData = false;\n this.populated = true;\n return;\n }\n\n this.showFundNumber = (0, _get2.default)(fundState, 'performanceCumulative.options.showFundNumber', true);\n this.showCurrency = (0, _get2.default)(fundState, 'performanceCumulative.options.showCurrency', true);\n this.showYTD = (0, _get2.default)(fundState, 'performanceCumulative.options.showYTD', true);\n this.show1M3M6M = (0, _get2.default)(fundState, 'performanceCumulative.options.show1M3M6M', true);\n\n this.hideChart = (0, _get2.default)(currentTabData, 'hideChart', false);\n this.showData = (0, _get2.default)(currentTabData, 'showData', true);\n\n\n this.chartData = currentTabData[this.currentYearGroupTab];\n this.tableData = currentTabData.tableData;\n this.graphNames = currentTabData.graphNames;\n this.fundName = currentTabData.fundName;\n\n\n if ((0, _get2.default)(fundState, 'performanceCumulative.options.useDynamicLabels')) {\n this.dynamicLabel = currentTabData.dynamicLabel;\n }\n\n this.yearGroupTabs = this.yearGroupTabs.map(function (tab) {\n tab.value = _this2.label.get(tab.labelKey);\n tab.isActive = tab.key === _this2.currentYearGroupTab;\n var bmData = fundState.performanceCumulative[_this2.currentMonthTab][tab.key];\n tab.isDisabled = !(bmData && bmData.length > 1 && (bmData[0].length > 0 || bmData[1].length > 0));\n return tab;\n });\n this.timePeriodTabs = this.timePeriodTabs.map(function (tab) {\n tab.value = _this2.label.get(tab.labelKey);\n tab.isActive = tab.key === _this2.currentMonthTab;\n return tab;\n });\n\n this.populated = true;\n } catch (e) {\n this.logger.error(e);\n this.populated = false;\n }\n };\n\n return FtPerformanceCumulative;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassKey', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-performance-risk-statistics/ft-performance-risk-statistics',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPerformanceRiskStatistics = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtPerformanceRiskStatistics = exports.FtPerformanceRiskStatistics = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPerformanceRiskStatistics, _ReduxComponentBase);\n\n function FtPerformanceRiskStatistics(store, beans, element) {\n _classCallCheck(this, FtPerformanceRiskStatistics);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'shareClassKey', _descriptor, _this);\n\n _this.populated = false;\n\n _this.store = store;\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = beans.component.performance;\n\n _this.populateAction = {\n type: 'POPULATE_PERFORMANCE_RISK_STATISTICS',\n beans: beans.component.performanceSimply,\n fundId: _this.fundId,\n segment: store.getState().general.segment,\n shareClassKey: _this.shareClassKey\n };\n return _this;\n }\n\n FtPerformanceRiskStatistics.prototype.shareClassKeyChanged = function shareClassKeyChanged() {\n this.populateAction.shareClassKey = this.shareClassKey;\n if (this.fundId) {\n this.dispatch(this.populateAction);\n }\n };\n\n FtPerformanceRiskStatistics.prototype.mapState = function mapState(newState) {\n try {\n this.shareClassKey = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!fundState || !fundState.performanceRiskStatistics || !this.label) {\n this.populated = false;\n return;\n }\n\n this.asOfDate = (0, _get2.default)(fundState, 'performanceRiskStatistics.asOfDate');\n this.showAlpha = (0, _get2.default)(fundState, 'performanceRiskStatistics.showAlpha');\n this.showBeta = (0, _get2.default)(fundState, 'performanceRiskStatistics.showBeta');\n this.showCorrelation = (0, _get2.default)(fundState, 'performanceRiskStatistics.showCorrelation');\n this.showInfoRatio = (0, _get2.default)(fundState, 'performanceRiskStatistics.showInfoRatio');\n this.showRSquared = (0, _get2.default)(fundState, 'performanceRiskStatistics.showRSquared');\n this.showTrackingError = (0, _get2.default)(fundState, 'performanceRiskStatistics.showTrackingError');\n this.statisticsTable = (0, _get2.default)(fundState, 'performanceRiskStatistics.tables.statisticsTable');\n this.sharpeRatioTable = (0, _get2.default)(fundState, 'performanceRiskStatistics.tables.sharpeRatioTable');\n this.standardDeviationTable = (0, _get2.default)(fundState, 'performanceRiskStatistics.tables.standardDeviationTable');\n this.showFundNr = (0, _get2.default)(fundState, 'performanceRiskStatistics.showFundNr');\n this.taId = (0, _get2.default)(fundState, 'performanceRiskStatistics.taId');\n this.showStatistics = (0, _get2.default)(fundState, 'performanceRiskStatistics.showStatistics');\n this.shareClassCode = (0, _get2.default)(fundState, 'performanceRiskStatistics.shareClassCode');\n this.showUpsideCapture = (0, _get2.default)(fundState, 'performanceRiskStatistics.showUpsideCapture');\n this.showDownsideCapture = (0, _get2.default)(fundState, 'performanceRiskStatistics.showDownsideCapture');\n\n this.populated = true;\n } catch (e) {\n this.logger.error(e);\n this.populated = false;\n }\n };\n\n return FtPerformanceRiskStatistics;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassKey', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/util/util',['exports', 'moment-parseformat', 'moment', 'lodash/get', 'lodash/take', 'lodash/find', 'lodash/kebabCase', '../../common/util/utils-fund-details'], function (exports, _momentParseformat, _moment, _get, _take, _find, _kebabCase, _utilsFundDetails) {\n 'use strict';\n\n var _momentParseformat2 = _interopRequireDefault(_momentParseformat);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _take2 = _interopRequireDefault(_take);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _kebabCase2 = _interopRequireDefault(_kebabCase);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.performanceUtils = {\n dynamicPerformanceLabels: function dynamicPerformanceLabels(asOfDate, inceptionDate) {\n if (asOfDate && inceptionDate) {\n var dates = this.dataManipulation(asOfDate, inceptionDate);\n var daysOld = (0, _moment2.default)().diff(dates.incDateUx, 'days');\n var dynamicLabel = void 0;\n if (daysOld <= 365) {\n dynamicLabel = '-1Yr';\n } else if (daysOld > 365 && daysOld <= 1826) {\n dynamicLabel = '-2Yr';\n } else if (daysOld > 1826) {\n dynamicLabel = '-5Yr';\n }\n return dynamicLabel;\n }\n },\n dataManipulation: function dataManipulation(asOfDate, inceptionDate) {\n var asOfFormat = (0, _momentParseformat2.default)(asOfDate);\n var inceptionFormat = void 0;\n try {\n inceptionFormat = (0, _momentParseformat2.default)(inceptionDate);\n } catch (e) {\n inceptionFormat = (0, _momentParseformat2.default)(asOfDate);\n inceptionDate = (0, _moment2.default)(asOfDate, asOfFormat).subtract(10, 'years');\n }\n var momentAsOfObj = (0, _moment2.default)(asOfDate, asOfFormat);\n var momentInceptObj = (0, _moment2.default)(inceptionDate, inceptionFormat);\n var lastYear = momentAsOfObj.get('year');\n var monthOfYear = momentAsOfObj.format('MMM');\n var monthOfInception = momentInceptObj.format('MMM');\n var incDate = momentInceptObj.valueOf();\n var firstYear = (0, _moment2.default)(incDate).get('year');\n var firstDate = momentInceptObj.valueOf();\n\n if (firstDate > incDate) {\n monthOfInception = monthOfYear;\n }\n var parsedDataObj = {\n incDateUx: incDate,\n asOfUX: firstDate,\n lastYear: lastYear,\n firstYear: firstYear,\n monthOfYear: monthOfYear,\n monthOfInception: monthOfInception\n };\n return parsedDataObj;\n },\n tableDataToChartData: function tableDataToChartData(data, chartColumns) {\n var newChart = [];\n Object.keys(data).forEach(function (key) {\n var obj = data[key];\n var chartRow = [];\n chartColumns.forEach(function (column) {\n chartRow.push({\n name: (0, _get2.default)(obj, 'name'),\n y: parseFloat((0, _get2.default)(obj, column))\n });\n });\n newChart.push(chartRow);\n });\n return newChart;\n },\n mustHidePerformanceData: function mustHidePerformanceData(config, date) {\n var showMDash = false;\n var sixMonthsAgo = (0, _moment2.default)().subtract(6, 'months');\n var oneYearAgo = (0, _moment2.default)().subtract(1, 'years');\n\n if ((0, _get2.default)(config, 'general.showMDashForUnder1Year')) {\n showMDash = (0, _moment2.default)(date).isAfter(oneYearAgo);\n } else if ((0, _get2.default)(config, 'general.showMDashForUnder6Months')) {\n showMDash = (0, _moment2.default)(date).isAfter(sixMonthsAgo);\n }\n return showMDash;\n },\n getMaxNumberOfBenchmarksToShow: function getMaxNumberOfBenchmarksToShow(config, fundId) {\n if (config.general.noBenchmarkList.includes(fundId)) {\n return 0;\n }\n if (config.general.twoBenchmarkList.includes(fundId)) {\n return 2;\n }\n if (config.general.allBenchmarkList.includes(fundId)) {\n return 6;\n }\n return 1;\n },\n hideChart: function hideChart(config, fundId, listToCheck, showMDash, inceptionDate) {\n var hide = false;\n var hideFor = (0, _get2.default)(config, 'config.performance.' + listToCheck);\n if (hideFor) {\n hide = hideFor.includes(fundId);\n }\n if (showMDash) {\n hide = true;\n }\n if (inceptionDate && (0, _moment2.default)().diff(inceptionDate, 'years') < 1) {\n hide = true;\n }\n\n return hide;\n },\n hasIASector: function hasIASector(peersRankList, shareClassCode) {\n var _IASector = (0, _find2.default)(peersRankList, { shClsCde: { val: shareClassCode } });\n return _IASector;\n },\n getSortedBenchmarkOrder: function getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config) {\n var maxNumberOfBenchmarksToShow = this.getMaxNumberOfBenchmarksToShow(config, fundId);\n var fundVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(fundDetails);\n var bechmarkOrder = (0, _get2.default)(config, 'performance.investmentVehicles.' + fundVehicle + '.benchmarkOrder');\n return (0, _take2.default)(bechmarkOrder, maxNumberOfBenchmarksToShow);\n },\n createProductPageLink: function createProductPageLink(fund) {\n var pageLink = fund.link;\n var fundID = fund.fundID !== undefined ? '/' + fund.fundID.val : '';\n var shClsCde = fund.shClsCde !== undefined && fund.shClsCde !== 'SINGLCLASS' ? '/' + fund.shClsCde.val : '';\n var fundName = fund.name !== undefined ? '/' + (0, _kebabCase2.default)(fund.name.val) : '';\n\n return pageLink + ('' + fundID + shClsCde + fundName);\n },\n displayOEIC: function displayOEIC(config, fundDetails) {\n var invstmentVehicle = (0, _get2.default)(fundDetails, 'invstmentVehicle.val');\n var isOEIC = (0, _get2.default)(fundDetails, 'TICKER.val');\n var showIaSectorForOeicOnly = (0, _get2.default)(config, 'performance.showIaSectorForOeicOnly');\n var haveIvestVeh = showIaSectorForOeicOnly.includes(invstmentVehicle);\n return isOEIC && haveIvestVeh;\n }\n };\n});\r\ndefine('components/products/portfolio/common/ft-generic-chart-component-base',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGenericChartComponentBase = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtGenericChartComponentBase = exports.FtGenericChartComponentBase = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtGenericChartComponentBase, _ReduxComponentBase);\n\n function FtGenericChartComponentBase(store, beans, element) {\n _classCallCheck(this, FtGenericChartComponentBase);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.init();\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n if (!_this.CHART_TYPE_ID || !_this.COMPONENT_ID || !_this.DATA_COLUMN_LABEL_ID) {\n _this.logger.error('init() must set CHART_TYPE_ID / COMPONENT_ID / DATA_COLUMN_LABEL_ID');\n return _possibleConstructorReturn(_this);\n }\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n chartType: _this.CHART_TYPE_ID,\n cid: _this.cid,\n portfolioComponent: _this.COMPONENT_ID,\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtGenericChartComponentBase.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !this.data || !this.data.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.chartData = [{\n data: this.data.chart,\n type: 'bar',\n colorByPoint: true\n }];\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtGenericChartComponentBase;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/common/ft-generic-hierarchical-component-base',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGenericHierarchicalComponentBase = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtGenericHierarchicalComponentBase = exports.FtGenericHierarchicalComponentBase = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtGenericHierarchicalComponentBase, _ReduxComponentBase);\n\n function FtGenericHierarchicalComponentBase() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtGenericHierarchicalComponentBase);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _this.isShowingMore = false, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtGenericHierarchicalComponentBase.prototype.toggleShowMore = function toggleShowMore() {\n this.isShowingMore = !this.isShowingMore;\n };\n\n FtGenericHierarchicalComponentBase.prototype.toggleRowExpansion = function toggleRowExpansion(parentRow) {\n parentRow.isExpanded = !parentRow.isExpanded;\n for (var _iterator = this.data.tableTwoLevel, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var childRow = _ref;\n\n if (childRow.parentId === parentRow.id) {\n childRow.isExpanded = parentRow.isExpanded;\n }\n }\n };\n\n FtGenericHierarchicalComponentBase.prototype.expandAll = function expandAll() {\n for (var _iterator2 = this.data.tableTwoLevel, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var item = _ref2;\n\n item.isExpanded = true;\n }\n };\n\n FtGenericHierarchicalComponentBase.prototype.collapseAll = function collapseAll() {\n for (var _iterator3 = this.data.tableTwoLevel, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var item = _ref3;\n\n item.isExpanded = false;\n }\n };\n\n return FtGenericHierarchicalComponentBase;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-market-capitalisation/ft-market-capitalisation',['exports', 'aurelia-framework', '../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtMarketCapitalisation = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtMarketCapitalisation = exports.FtMarketCapitalisation = (_dec = (0, _aureliaFramework.useView)('../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtMarketCapitalisation, _FtGenericChartCompon);\n\n function FtMarketCapitalisation() {\n _classCallCheck(this, FtMarketCapitalisation);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtMarketCapitalisation.prototype.init = function init() {\n this.CHART_TYPE_ID = 'MARKET_CAPITAL_ALLOCATION';\n this.COMPONENT_ID = 'market-capitalisation';\n this.DATA_COLUMN_LABEL_ID = 'market-capitalisation-fund';\n };\n\n return FtMarketCapitalisation;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-portfolio-allocation/ft-portfolio-allocation',['exports', 'aurelia-framework', '../common/ft-generic-hierarchical-component-base', 'lodash/get'], function (exports, _aureliaFramework, _ftGenericHierarchicalComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPortfolioAllocation = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtPortfolioAllocation = exports.FtPortfolioAllocation = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtGenericHierarchica) {\n _inherits(FtPortfolioAllocation, _FtGenericHierarchica);\n\n function FtPortfolioAllocation(store, beans, element) {\n _classCallCheck(this, FtPortfolioAllocation);\n\n var _this = _possibleConstructorReturn(this, _FtGenericHierarchica.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n chartType: 'PORTFOLIO_ALLOCATION',\n cid: _this.cid,\n portfolioComponent: 'portfolio-allocation',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtPortfolioAllocation.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.chartData = [{\n data: chartState.chart,\n type: 'bar',\n colorByPoint: true\n }];\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPortfolioAllocation;\n }(_ftGenericHierarchicalComponentBase.FtGenericHierarchicalComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-portfolio-no-data-message/ft-portfolio-no-data-message',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/get', '../../lib/map-state-utils'], function (exports, _aureliaFramework, _reduxComponentBase, _get, _mapStateUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPortfolioNoDataMessage = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtPortfolioNoDataMessage = exports.FtPortfolioNoDataMessage = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtPortfolioNoDataMessage, _ReduxComponentBase);\n\n function FtPortfolioNoDataMessage(store, beans, element) {\n _classCallCheck(this, FtPortfolioNoDataMessage);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.hasErrors = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n\n _this.dispatch({\n type: 'CHECK_PORTFOLIO_DATA',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid\n });\n return _this;\n }\n\n FtPortfolioNoDataMessage.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n var compState = (0, _get2.default)(fundState, 'portfolio.noDataMessage', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!compState || !this.label) {\n this.isPopulated = false;\n this.hasErrors = false;\n return;\n }\n this.hasErrors = compState.error;\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPortfolioNoDataMessage;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-top-exposures/ft-top-exposures',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../../common/elements/charting/ft-charts-configs', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _ftChartsConfigs, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTopExposures = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtTopExposures = exports.FtTopExposures = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtTopExposures, _ReduxComponentBase);\n\n function FtTopExposures(store, beans, element) {\n _classCallCheck(this, FtTopExposures);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.shortExposureDataTab = 'table';\n _this.longExposureDataTab = 'table';\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n chartType: 'TOP_SHORT_EXPOSURES',\n cid: _this.cid,\n subKey: 'shortExposure',\n portfolioComponent: 'top-long-exposures-top-short-exposures',\n segment: currentState.general.segment\n });\n\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n chartType: 'TOP_LONG_EXPOSURES',\n cid: _this.cid,\n subKey: 'longExposure',\n portfolioComponent: 'top-long-exposures-top-short-exposures',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtTopExposures.prototype.mapState = function mapState(newState) {\n try {\n var componentState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.shortExposureData = componentState.shortExposure;\n this.longExposureData = componentState.longExposure;\n if (!this.label || !componentState || !componentState.shortExposure || !componentState.longExposure) {\n this.isPopulated = false;\n return;\n }\n\n this.shortExposureChartData = [{\n data: this.shortExposureData.chart,\n type: 'bar',\n color: _ftChartsConfigs.GENERIC_CHART_COLOUR\n }];\n this.longExposureChartData = [{\n data: this.longExposureData.chart,\n type: 'bar',\n color: _ftChartsConfigs.GENERIC_CHART_COLOUR\n }];\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtTopExposures;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/util/hierarchical-utils',['exports', 'lodash/keyBy', 'lodash/find', 'lodash/filter', 'lodash/get', 'lodash/each', 'lodash/last', 'lodash/some', '../../lib/reducer-utils', './util', './risk-and-analysis-special-utils', 'aurelia-framework'], function (exports, _keyBy, _find, _filter, _get, _each, _last, _some, _reducerUtils, _util, _riskAndAnalysisSpecialUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getHierarchicalBreakdown = getHierarchicalBreakdown;\n exports.appendBenchmarkDataToState = appendBenchmarkDataToState;\n\n var _keyBy2 = _interopRequireDefault(_keyBy);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _each2 = _interopRequireDefault(_each);\n\n var _last2 = _interopRequireDefault(_last);\n\n var _some2 = _interopRequireDefault(_some);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('portfolio-hierachical-utils');\n\n var OVERFLOW_SIZE = 20;\n\n function getHierarchicalBreakdown(breakdown) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var decoratedConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var fundId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n options = _util.portfolioUtils.parseConfig(options);\n var dateObj = _util.portfolioUtils.getDateAndCalType(breakdown, options);\n var data = {\n visible: false,\n chart: null,\n table: null,\n tableTwoLevel: null,\n hasNestedChildren: null,\n date: dateObj.date,\n calType: dateObj.calType,\n calTypeStd: dateObj.calTypeStd\n };\n\n var listDetails = (0, _get2.default)(breakdown, options.breakDownKey);\n if (options.filterCondition) {\n listDetails = (0, _filter2.default)(listDetails, options.filterCondition);\n }\n var hasTableData = false;\n var hasChartData = false;\n if (typeof listDetails !== 'undefined') {\n var obj = processFundData(listDetails, options);\n\n if (options.specialRiskConfigRules) {\n var riskConfig = (0, _riskAndAnalysisSpecialUtils.getPortfolioRiskConfig)(decoratedConfig, fundId, obj.data);\n data.riskConfig = riskConfig;\n\n obj.data = (0, _riskAndAnalysisSpecialUtils.sortParentsByPortfolioRiskConfig)(obj.data, riskConfig);\n obj.data = (0, _riskAndAnalysisSpecialUtils.cullByPortfolioRiskConfig)(obj.data, riskConfig);\n obj.data = (0, _riskAndAnalysisSpecialUtils.sortSubChildrenByPortfolioRiskConfig)(obj.data, riskConfig);\n }\n\n var hierarchicalTable = obj.data;\n\n if (options.buildChart) {\n data.chart = buildFundChart(hierarchicalTable, options);\n hasChartData = (0, _some2.default)(data.chart, function (o) {\n return o.y !== null;\n });\n }\n if (options.buildTable) {\n var tableTwoLevelObj = convertHierarchyTableIntoTableTwoLevel(hierarchicalTable, options);\n data.hasNestedChildren = tableTwoLevelObj.hasNestedChildren;\n data.hasOverflow = tableTwoLevelObj.hasOverflow;\n data.tableTwoLevel = tableTwoLevelObj.rows;\n data.table = cleanupHierarchyTable(hierarchicalTable);\n if (options.filter) {\n data.table = multiValueFilterSmallValues(data.table, options);\n data.tableTwoLevel = multiValueFilterSmallValues(data.tableTwoLevel, options);\n }\n hasTableData = obj.hasData && data.table.length > 0;\n }\n data.visible = listDetails.length > 0 && (hasTableData || hasChartData);\n }\n return data;\n }\n\n function appendBenchmarkDataToState(chartObj, rawPortfolioBenchmark, chartType) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n options = _util.portfolioUtils.parseConfig(options);\n chartObj.table = appendBenchmarkDataToTable(chartObj.table, rawPortfolioBenchmark, chartType);\n\n var tableTwoLevelObj = convertHierarchyTableIntoTableTwoLevel(chartObj.table, options);\n chartObj.hasNestedChildren = tableTwoLevelObj.hasNestedChildren;\n chartObj.tableTwoLevel = tableTwoLevelObj.rows;\n return chartObj;\n }\n\n function convertHierarchyTableIntoTableTwoLevel(hierarchyTable, options) {\n var rows = [];\n var hasNestedChildren = false;\n var hasOverflow = hierarchyTable.length > OVERFLOW_SIZE;\n\n var stickyNode = options.isLastElementSticky ? (0, _last2.default)(hierarchyTable) : null;\n var overflowStart = stickyNode ? OVERFLOW_SIZE - 2 : OVERFLOW_SIZE - 1;\n\n if (hierarchyTable) {\n hierarchyTable.forEach(function (parentNode, index) {\n var parentRow = Object.assign({}, parentNode);\n parentRow.graphColour = index < OVERFLOW_SIZE ? 'chart-color-' + (index % 20 + 1) : 'chart-color-20';\n parentRow.isParentNode = true;\n parentRow.hasChildren = false;\n parentRow.isExpanded = false;\n parentRow.inOverflow = index > overflowStart;\n\n if (parentNode === stickyNode) {\n parentRow.inOverflow = false;\n parentRow.graphColour = index < OVERFLOW_SIZE ? 'chart-color-' + (index + 1) : 'chart-color-5';\n }\n rows.push(parentRow);\n parentNode.subItems.forEach(function (childNode) {\n if (childNode.id !== parentNode.id) {\n var childRow = Object.assign({}, childNode);\n childRow.isParentNode = false;\n childRow.isExpanded = false;\n childRow.inOverflow = parentRow.inOverflow;\n parentRow.hasChildren = true;\n rows.push(childRow);\n hasNestedChildren = true;\n delete childRow.rawItem;\n }\n });\n delete parentRow.subItems;\n delete parentRow.rawItem;\n });\n }\n\n return {\n hasOverflow: hasOverflow,\n hasNestedChildren: hasNestedChildren,\n rows: rows\n };\n }\n\n function cleanupHierarchyTable(hierarchyTable) {\n if (hierarchyTable) {\n hierarchyTable.forEach(function (parentNode, index) {\n parentNode.subItems.forEach(function (childNode) {\n delete childNode.rawItem;\n });\n delete parentNode.rawItem;\n });\n }\n return hierarchyTable;\n }\n\n function appendBenchmarkDataToTable(hierarchicalTable, rawPortfolioBenchmark, chartType) {\n var rawBenchmarkBreakdowns = (0, _get2.default)(rawPortfolioBenchmark, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var benchmarkBreakdown = (0, _find2.default)(rawBenchmarkBreakdowns, { type: chartType });\n var benchmarkBreakdownValues = (0, _get2.default)(benchmarkBreakdown, 'brkDwnLst.lstDtls');\n var keyedBenchmarkBreakdownValues = (0, _keyBy2.default)(benchmarkBreakdownValues, function (o) {\n return kebabCaseId(o.name.val);\n });\n\n hierarchicalTable.forEach(function (parentNode) {\n parentNode.subItems.forEach(function (childNode) {\n var benchMarkNode = keyedBenchmarkBreakdownValues[childNode.id];\n if (benchMarkNode) {\n childNode.bmVal = benchMarkNode.val.val;\n delete keyedBenchmarkBreakdownValues[childNode.id];\n } else {\n logger.info('no benchmark data for child node (typically cash & equiv) : ' + childNode.name, childNode);\n }\n });\n\n var benchMarkNode = keyedBenchmarkBreakdownValues[parentNode.id];\n if (benchMarkNode) {\n parentNode.bmVal = benchMarkNode.val.val;\n delete keyedBenchmarkBreakdownValues[parentNode.id];\n } else {\n parentNode.bmVal = null;\n }\n });\n\n var remainingBenchmarks = Object.values(keyedBenchmarkBreakdownValues).sort(function (a, b) {\n var valA = (0, _reducerUtils.parseNumber)(a.val.val);\n var valB = (0, _reducerUtils.parseNumber)(b.val.val);\n return valA < valB ? 1 : -1;\n });\n\n remainingBenchmarks.forEach(function (remainingBenchmark) {\n var kebabParentId = kebabCaseId((0, _get2.default)(remainingBenchmark, 'range.val'));\n var childRemainingBenchmark = {\n name: remainingBenchmark.name.val,\n id: kebabCaseId(remainingBenchmark.name.val),\n val: null,\n bmVal: remainingBenchmark.val.val,\n rank: remainingBenchmark.rank.val,\n parentId: kebabParentId\n };\n var parentNode = (0, _find2.default)(hierarchicalTable, { id: kebabParentId });\n if (parentNode) {\n parentNode.subItems.push(childRemainingBenchmark);\n }\n });\n\n return hierarchicalTable;\n }\n\n function buildFundChart(data, options) {\n var chartData = data.map(function (o) {\n var workObj = {\n name: o.name,\n y: options.chartValFunc(o.rawItem)\n };\n return workObj;\n });\n\n if (data.length > OVERFLOW_SIZE && options.isLastElementSticky) {\n var stickyNode = (0, _last2.default)(chartData);\n chartData = chartData.slice(0, OVERFLOW_SIZE - 1).concat(stickyNode);\n }\n\n return chartData;\n }\n\n var PARENT_ENUM = 'PARENT_ENUM';\n var CHILD_ENUM = 'CHILD_ENUM';\n\n function processFundData(data, options) {\n var workObj = {};\n var workArray = void 0;\n var hasData = false;\n\n var _loop = function _loop() {\n if (_isArray) {\n if (_i >= _iterator.length) return 'break';\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) return 'break';\n _ref = _i.value;\n }\n\n var item = _ref;\n\n var nameVal = options.nameFunc(item);\n var kebabNameId = kebabCaseId(nameVal);\n var range = (0, _get2.default)(item, options.rangeKey, null);\n var rank = (0, _get2.default)(item, 'rank.val', null);\n var rangeId = range ? kebabCaseId(range) : null;\n var rollupLevel = range && kebabNameId !== rangeId ? CHILD_ENUM : PARENT_ENUM;\n\n if (rollupLevel === PARENT_ENUM) {\n var parentNode = {\n name: nameVal,\n id: kebabNameId,\n rank: rank,\n rankInt: rank !== null ? Number(rank) : null,\n rawItem: item\n };\n var hasParentDataAlready = workObj[kebabNameId] && workObj[kebabNameId].rank;\n if (hasParentDataAlready) {\n logger.info('problem with data has multiple entries for parent node \\'' + nameVal + '\\' : \\'' + kebabNameId + '\\'', parentNode, workObj[kebabNameId]);\n return 'continue';\n }\n (0, _each2.default)(options.tableMappingKeys, function (dataKey, fieldKey) {\n parentNode[fieldKey] = (0, _get2.default)(item, dataKey, null);\n if (parentNode[fieldKey] !== null) {\n hasData = true;\n }\n });\n workObj[kebabNameId] = Object.assign({}, workObj[kebabNameId], parentNode);\n workObj[kebabNameId].subItems = workObj[kebabNameId].subItems ? workObj[kebabNameId].subItems : [];\n } else {\n var subItem = {\n name: nameVal,\n id: kebabNameId,\n rank: rank,\n rankInt: rank !== null ? Number(rank) : null,\n rawItem: item\n };\n (0, _each2.default)(options.tableMappingKeys, function (dataKey, fieldKey) {\n subItem[fieldKey] = (0, _get2.default)(item, dataKey, null);\n });\n var kebabParentId = kebabCaseId(range);\n var _parentNode = workObj[kebabParentId];\n\n if (!_parentNode) {\n _parentNode = {\n name: range,\n id: kebabParentId,\n subItems: [],\n rank: null\n };\n (0, _each2.default)(options.tableMappingKeys, function (dataKey, fieldKey) {\n _parentNode[fieldKey] = null;\n });\n workObj[kebabParentId] = _parentNode;\n }\n\n var hasChildDataAlready = (0, _find2.default)(_parentNode.subItems, { id: kebabNameId });\n if (hasChildDataAlready) {\n logger.info('problem with data has multiple entries for child node \\'' + _parentNode.name + '/' + nameVal + '\\' : \\'' + _parentNode.id + '/' + kebabNameId + '\\'', subItem, hasChildDataAlready);\n }\n _parentNode.subItems.push(subItem);\n subItem.parentId = kebabParentId;\n }\n };\n\n _loop2: for (var _iterator = data, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n var _ret = _loop();\n\n switch (_ret) {\n case 'break':\n break _loop2;\n\n case 'continue':\n continue;}\n }\n\n workArray = Object.values(workObj);\n\n if (options.sorted) {\n workArray = workArray.sort(function (a, b) {\n if (a.rankInt < b.rankInt) {\n return -1;\n }\n return a.rankInt > b.rankInt ? 1 : 0;\n });\n\n workArray.forEach(function (parentNode) {\n return parentNode.subItems.sort(function (a, b) {\n if (a.val === null) {\n return 1;\n }\n if (b.val === null) {\n return -1;\n }\n var valA = (0, _reducerUtils.parseNumber)(a.val);\n var valB = (0, _reducerUtils.parseNumber)(b.val);\n return valA < valB ? 1 : -1;\n });\n });\n }\n return {\n hasData: hasData,\n data: workArray\n };\n }\n\n function multiValueFilterSmallValues(rows, options) {\n var minAmount = options.minAmount;\n return rows.filter(function (compObj) {\n var hasAtLeastOneBigValue = false;\n\n (0, _each2.default)(options.tableMappingKeys, function (dataKey, fieldKey) {\n var parsedVal = (0, _reducerUtils.parseNumber)(compObj[fieldKey]);\n if (parsedVal < -minAmount || parsedVal > minAmount) {\n hasAtLeastOneBigValue = true;\n }\n });\n return hasAtLeastOneBigValue;\n });\n }\n\n function kebabCaseId(str) {\n if (typeof str === 'undefined') {\n return '';\n }\n return str.replace(/[\\s\\/.&]+/g, '-').toLowerCase();\n }\n});\r\ndefine('components/products/portfolio/util/key-value-row-utils',['exports', 'lodash/get', 'lodash/map', 'lodash/filter', 'lodash/clone', '../../lib/reducer-utils', './util'], function (exports, _get, _map, _filter, _clone, _reducerUtils, _util) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getKVBreakdown = getKVBreakdown;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _map2 = _interopRequireDefault(_map);\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function getKVBreakdown(breakdown) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n options = _util.portfolioUtils.parseConfig(options);\n var dateObj = _util.portfolioUtils.getDateAndCalType(breakdown, options);\n var obj = {\n visible: false,\n date: dateObj.date,\n calType: dateObj.calType,\n calTypeStd: dateObj.calTypeStd\n };\n\n var listDetails = (0, _get2.default)(breakdown, options.breakDownKey);\n listDetails = (0, _clone2.default)(listDetails);\n if (typeof listDetails === 'undefined') {\n return obj;\n }\n if (options.filterCondition) {\n listDetails = (0, _filter2.default)(listDetails, options.filterCondition);\n }\n\n var tableData = buildKVBreakDownTable(listDetails, options);\n\n if (options.buildTable) {\n obj.table = tableData;\n }\n\n if (options.buildChart) {\n obj.multiChart = buildKVMultiChart(tableData);\n }\n obj.visible = listDetails.length > 0;\n return obj;\n }\n\n function buildKVBreakDownTable(data, options) {\n var tmpListDetails = {};\n var orderedAvailableFields = [];\n data.forEach(function (item) {\n var fieldName = options.nameFunc(item);\n var key = (0, _get2.default)(item, options.kv_keyField, '');\n var val = (0, _get2.default)(item, options.kv_valueField, '—');\n var rank = (0, _get2.default)(item, 'rank.val', '');\n\n var isPrimary = (0, _get2.default)(item, 'isPrimFlag.val', '') === 'Y';\n var tmpListDetail = tmpListDetails[fieldName] || {};\n tmpListDetail.name = fieldName;\n tmpListDetail.values = tmpListDetail.values || {};\n tmpListDetail.values[key] = {\n val: val,\n key: key,\n isPrimary: isPrimary\n };\n if (!orderedAvailableFields.includes(key)) {\n if (isPrimary) {\n orderedAvailableFields.unshift(key);\n } else {\n orderedAvailableFields.push(key);\n }\n }\n if (isPrimary) {\n tmpListDetail.rank = rank;\n }\n tmpListDetails[fieldName] = tmpListDetail;\n });\n var rows = Object.values(tmpListDetails);\n\n rows.forEach(function (item) {\n var tmpValues = [];\n orderedAvailableFields.forEach(function (fieldKey) {\n var fieldConfig = item.values[fieldKey] ? item.values[fieldKey] : {\n val: '—',\n key: fieldKey\n };\n tmpValues.push(fieldConfig);\n });\n item.values = tmpValues;\n });\n\n if (options.sorted) {\n rows = _util.portfolioUtils.sortBreakdown(rows, 'rank');\n }\n\n if (options.filter) {\n rows = multiValueFilterSmallValues(rows, options.minAmount);\n }\n\n return rows;\n }\n\n function buildKVMultiChart(data) {\n var categories = (0, _map2.default)(data, 'name');\n var series = [];\n data.forEach(function (row) {\n row.values.forEach(function (valueObj, index) {\n series[index] = series[index] || {};\n series[index].name = valueObj.key;\n series[index].data = series[index].data || [];\n\n var val = (0, _reducerUtils.parseNumber)(valueObj.val);\n series[index].data.push(val);\n });\n });\n return {\n categories: categories,\n series: series\n };\n }\n\n function multiValueFilterSmallValues(rows, minAmount) {\n return rows.filter(function (compObj) {\n var hasAtLeastOneBigValue = false;\n compObj.values.forEach(function (valueObj) {\n var parsedVal = (0, _reducerUtils.parseNumber)(valueObj.val);\n if (parsedVal < -minAmount || parsedVal > minAmount) {\n hasAtLeastOneBigValue = true;\n }\n });\n return hasAtLeastOneBigValue;\n });\n }\n});\r\ndefine('components/products/portfolio/util/risk-and-analysis-special-utils',['exports', 'lodash/get', 'lodash/some', 'lodash/filter', '../../lib/reducer-utils', 'aurelia-framework'], function (exports, _get, _some, _filter, _reducerUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.cullByPortfolioRiskConfig = cullByPortfolioRiskConfig;\n exports.sortParentsByPortfolioRiskConfig = sortParentsByPortfolioRiskConfig;\n exports.sortSubChildrenByPortfolioRiskConfig = sortSubChildrenByPortfolioRiskConfig;\n exports.getPortfolioRiskConfig = getPortfolioRiskConfig;\n exports.isPortfolioComponentSuppressedByRiskConfig = isPortfolioComponentSuppressedByRiskConfig;\n exports.isRiskContributionParent = isRiskContributionParent;\n exports.getRiskContributionRowName = getRiskContributionRowName;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _some2 = _interopRequireDefault(_some);\n\n var _filter2 = _interopRequireDefault(_filter);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('risk-and-analysis-special-utils');\n\n function cullByPortfolioRiskConfig(data, riskConfig) {\n return (0, _filter2.default)(data, function (parentRow) {\n var normalisedRowName = parentRow.nameStd.toUpperCase();\n switch (normalisedRowName) {\n case 'GROWTH':\n return riskConfig.shownRiskRows.growthRisk;\n case 'DEFENSIVE':\n return riskConfig.shownRiskRows.defensiveRisk;\n case 'STABLE':\n return riskConfig.shownRiskRows.stableRisk;\n case 'OPPORTUNISTIC':\n return riskConfig.shownRiskRows.opportunisticRisk;\n case 'TOTAL':\n return riskConfig.showTotal;\n default:\n logger.error('unknown Risk Row : ' + normalisedRowName);\n return true;\n }\n });\n }\n\n function sortParentsByPortfolioRiskConfig(data, riskConfig) {\n return data.sort(function (parentRowA, parentRowB) {\n var positionA = riskConfig.riskRowOrder.indexOf(parentRowA.nameStd.toUpperCase());\n var positionB = riskConfig.riskRowOrder.indexOf(parentRowB.nameStd.toUpperCase());\n if (positionA === -1) {\n return 666;\n }\n if (positionB === -1) {\n return -666;\n }\n return positionA > positionB;\n });\n }\n\n function sortSubChildrenByPortfolioRiskConfig(data, riskConfig) {\n data.forEach(function (parentNode) {\n return parentNode.subItems.sort(function (a, b) {\n var sortKey = null;\n if (riskConfig.shownRiskColumns.performanceExposure) {\n sortKey = 'val';\n } else if (riskConfig.shownRiskColumns.performanceContribution) {\n sortKey = 'performanceContribution';\n } else if (riskConfig.shownRiskColumns.riskContributionActual) {\n sortKey = 'riskContribution';\n } else {\n sortKey = 'riskContributionForecast';\n }\n if (a[sortKey] === null) {\n return 1;\n }\n if (b[sortKey] === null) {\n return -1;\n }\n var valA = (0, _reducerUtils.parseNumber)(a[sortKey]);\n var valB = (0, _reducerUtils.parseNumber)(b[sortKey]);\n return valA < valB ? 1 : -1;\n });\n });\n return data;\n }\n\n function getPortfolioRiskConfig(config, fundId, data) {\n var riskRowOrder = (0, _get2.default)(config, 'portfolio.riskRows.riskRow', []);\n riskRowOrder = riskRowOrder.map(function (o) {\n return o.toUpperCase();\n });\n\n var fundIdExist = function fundIdExist(value) {\n return fundId * 1 === value * 1;\n };\n\n var shownRiskColumns = {\n riskContributionForecast: !(0, _some2.default)((0, _get2.default)(config, 'portfolio.hide1MonthRiskContributionForecast', []), fundIdExist),\n riskContributionActual: !(0, _some2.default)((0, _get2.default)(config, 'portfolio.hide1MonthRiskContributionActual', []), fundIdExist),\n performanceContribution: !(0, _some2.default)((0, _get2.default)(config, 'portfolio.hide1MonthPerformanceContribution', []), fundIdExist),\n performanceExposure: !(0, _some2.default)((0, _get2.default)(config, 'portfolio.hidePerformanceExposure', []), fundIdExist)\n };\n var shownRiskRows = {\n opportunisticRisk: (0, _some2.default)((0, _get2.default)(config, 'portfolio.showOpportunisticRisk', []), fundIdExist),\n growthRisk: (0, _some2.default)((0, _get2.default)(config, 'portfolio.showGrowthRisk', []), fundIdExist),\n defensiveRisk: (0, _some2.default)((0, _get2.default)(config, 'portfolio.showDefensiveRisk', []), fundIdExist),\n stableRisk: (0, _some2.default)((0, _get2.default)(config, 'portfolio.showStableRisk', []), fundIdExist)\n };\n var showHierarchy = !(0, _get2.default)(config, 'portfolio.showStrategiesOnly');\n var showTotal = !!(0, _get2.default)(config, 'portfolio.showTotal');\n\n if (data) {\n shownRiskColumns.performanceExposure = shownRiskColumns.performanceExposure && (0, _some2.default)(data, function (o) {\n return o.val !== null;\n });\n shownRiskColumns.performanceContribution = shownRiskColumns.performanceContribution && (0, _some2.default)(data, function (o) {\n return o.performanceContribution !== null;\n });\n shownRiskColumns.riskContributionActual = shownRiskColumns.riskContributionActual && (0, _some2.default)(data, function (o) {\n return o.riskContribution !== null;\n });\n shownRiskColumns.riskContributionForecast = shownRiskColumns.riskContributionForecast && (0, _some2.default)(data, function (o) {\n return o.riskContributionForecast !== null;\n });\n }\n return {\n riskRowOrder: riskRowOrder,\n shownRiskRows: shownRiskRows,\n shownRiskColumns: shownRiskColumns,\n showHierarchy: showHierarchy,\n showTotal: showTotal\n };\n }\n\n function isPortfolioComponentSuppressedByRiskConfig(config, fundId, portfolioComponent) {\n var hasRiskChart = ['average-portfolio-exposure', 'risk-contribution-actual', 'risk-contribution-forecast'].indexOf(portfolioComponent) !== -1;\n if (hasRiskChart) {\n var riskConfig = getPortfolioRiskConfig(config, fundId);\n switch (portfolioComponent) {\n case 'average-portfolio-exposure':\n return !riskConfig.shownRiskColumns.performanceExposure;\n case 'risk-contribution-actual':\n return !riskConfig.shownRiskColumns.riskContributionActual;\n\n default:\n return !riskConfig.shownRiskColumns.riskContributionForecast;\n }\n }\n return false;\n }\n\n function isRiskContributionParent(rowData) {\n var childName = (0, _get2.default)(rowData, 'fact2.val', null);\n\n if (!childName) {\n var childStdName = (0, _get2.default)(rowData, 'fact2Std.val', '');\n childStdName = childStdName.trim();\n if (childStdName) {\n childName = childStdName;\n }\n }\n return childName === null;\n }\n\n function getRiskContributionRowName(rowData) {\n var childName = (0, _get2.default)(rowData, 'fact2.val', null);\n\n if (!childName) {\n var childStdName = (0, _get2.default)(rowData, 'fact2Std.val', '');\n childStdName = childStdName.trim();\n if (childStdName) {\n childName = childStdName;\n }\n }\n\n var isParent = childName === null;\n if (isParent) {\n return (0, _get2.default)(rowData, 'fact1.val');\n }\n return childName;\n }\n});\r\ndefine('components/products/portfolio/util/util',['exports', '../../../../lib/sort-utils', '../../lib/reducer-utils', 'lodash/findIndex', 'lodash/find', 'lodash/first', 'lodash/get', 'lodash/sumBy', 'lodash/each', 'lodash/filter', 'lodash/clone', 'lodash/kebabCase'], function (exports, _sortUtils, _reducerUtils, _findIndex, _find, _first, _get, _sumBy, _each, _filter, _clone, _kebabCase) {\n 'use strict';\n\n var _findIndex2 = _interopRequireDefault(_findIndex);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _first2 = _interopRequireDefault(_first);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _sumBy2 = _interopRequireDefault(_sumBy);\n\n var _each2 = _interopRequireDefault(_each);\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _kebabCase2 = _interopRequireDefault(_kebabCase);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var OVERFLOW_SIZE = 20;\n\n exports.portfolioUtils = {\n getSectorBreakdownNegatives: function getSectorBreakdownNegatives(lstDtls) {\n var negative = false;\n if (typeof lstDtls !== 'undefined') {\n for (var _iterator = lstDtls, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var item = _ref;\n\n if (Number((0, _get2.default)(item, 'val.val')) < 0) {\n negative = true;\n }\n }\n }\n return negative;\n },\n\n getSectorBreakdownTotalizer: function getSectorBreakdownTotalizer(lstDtls) {\n var subTotal = 0;\n if (typeof lstDtls !== 'undefined') {\n subTotal = (0, _sumBy2.default)(lstDtls, function (item) {\n return Number(item.val.alt);\n });\n }\n return Math.round(subTotal * 1e2) / 1e2;\n },\n\n getIntlSectorBreakdownTotalizer: function getIntlSectorBreakdownTotalizer(lstDtls) {\n var subTotal = 0;\n if (typeof lstDtls !== 'undefined') {\n subTotal = (0, _sumBy2.default)(lstDtls, function (item) {\n var itemVal = (0, _get2.default)(item, 'valStd.val') || (0, _get2.default)(item, 'val.val');\n if (!itemVal) {\n return 0;\n }\n return (0, _reducerUtils.parseNumber)(itemVal);\n });\n }\n\n return Math.round(subTotal * 1e2) / 1e2;\n },\n\n findObjInArray: function findObjInArray(_array, wanted) {\n var index = (0, _findIndex2.default)(_array, { 'type': wanted });\n var rObj = void 0;\n if (index !== -1) {\n rObj = Object.assign({}, _array[index]);\n }\n return rObj;\n },\n\n findHoldingObj: function findHoldingObj(holdings, wanted) {\n return this.findObjInArray(holdings, wanted);\n },\n buildSingleSeriesSectorBreakdownChartData: function buildSingleSeriesSectorBreakdownChartData(chartSrc) {\n var sorted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var tempObj = { series1: [], table: { items: [] } };\n\n if (typeof chartSrc !== 'undefined') {\n tempObj.series1 = chartSrc.map(function (item) {\n return { name: item.name, y: Number(item.val.alt) };\n });\n tempObj.table.items = chartSrc.map(function (item) {\n return { 'name': item.name, 'val': Number(item.val.alt) };\n });\n }\n\n if (sorted) {\n tempObj.series1.sort(function (a, b) {\n if (a.y < b.y) {\n return 1;\n }\n return a.y > b.y ? -1 : 0;\n });\n\n tempObj.table.items.sort(function (a, b) {\n if (a.val < b.val) {\n return 1;\n }\n return a.val > b.val ? -1 : 0;\n });\n }\n\n return tempObj;\n },\n getSectorBreakdownProximity: function getSectorBreakdownProximity(action) {\n var _action$json = action.json,\n rawPortfolio = _action$json[0];\n\n\n var caveats = Object.assign({}, (0, _get2.default)(rawPortfolio, 'productsVO.caveatvo'));\n\n if (caveats.hasOwnProperty('impLegalInfo')) {\n caveats.impLegalInfo = caveats.impLegalInfo.text.slice();\n caveats.displayLegalInfo = caveats.impLegalInfo.length > 0;\n }\n return caveats;\n },\n\n getProximity: function getProximity(rawPortfolio) {\n var caveats = Object.assign({}, (0, _get2.default)(rawPortfolio, 'productsVO.caveatvo'));\n\n if (caveats.hasOwnProperty('impLegalInfo')) {\n caveats.impLegalInfo = caveats.impLegalInfo.text.slice();\n caveats.displayLegalInfo = caveats.impLegalInfo.length > 0;\n }\n return caveats;\n },\n getHolding: function getHolding(source, holding) {\n var rawHoldings = (0, _get2.default)(source, 'productsVO.portfolioVO.holdings');\n return this.findHoldingObj(rawHoldings, holding);\n },\n\n findGrade: function findGrade(detail, wanted) {\n var index = (0, _findIndex2.default)(detail, { 'name': wanted });\n var rObj = void 0;\n if (index !== -1) {\n rObj = Object.assign({}, detail[index]);\n }\n return rObj;\n },\n\n getGrades: function getGrades(lstDtls, wanted) {\n var alt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var objArray = [];\n var total = 0.0;\n var empty = void 0;\n for (var _iterator2 = wanted, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var item = _ref2;\n\n var srcObj = this.findGrade(lstDtls, item);\n if (typeof srcObj !== 'undefined') {\n var newObj = {\n name: (0, _get2.default)(srcObj, 'name'),\n val: Number((0, _get2.default)(srcObj, alt ? 'val.alt' : 'val.val'))\n };\n\n total = total + Number(newObj.val);\n objArray.push(newObj);\n }\n }\n empty = objArray.length === 0;\n\n return { total: Math.round(total * 1e2) / 1e2, items: objArray, empty: empty };\n },\n\n getSimplifiedBreakdown: function getSimplifiedBreakdown(holdings) {\n var doChart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var wantRange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var obj = {};\n var lstDtls = (0, _get2.default)(holdings, 'lstDtls');\n if (typeof lstDtls !== 'undefined') {\n obj.total = this.getSectorBreakdownTotalizer(lstDtls);\n obj.table = lstDtls.map(function (o) {\n return {\n name: o.name,\n y: Number(o.val.alt)\n };\n });\n\n if (doChart) {\n obj.chart = lstDtls.map(function (o) {\n var workObj = {\n name: o.name,\n val: o.val.alt\n };\n if (wantRange) {\n workObj.range = (0, _get2.default)(o, 'range.alt');\n }\n return workObj;\n });\n } else {\n obj.chart = {};\n }\n }\n\n obj.date = (0, _get2.default)(holdings, 'date.alt');\n\n return obj;\n },\n\n buildBreakDownTable: function buildBreakDownTable(data, options) {\n return data.map(function (o, index) {\n var workObj = {\n name: options.nameFunc(o),\n graphColour: index < OVERFLOW_SIZE ? 'chart-color-' + (index % 20 + 1) : 'chart-color-20'\n };\n (0, _each2.default)(options.tableMappingKeys, function (dataKey, fieldKey) {\n workObj[fieldKey] = (0, _get2.default)(o, dataKey, null);\n });\n\n if (options.wantRange) {\n workObj.range = (0, _get2.default)(o, 'range.val', null);\n }\n return workObj;\n });\n },\n\n filterSmallValues: function filterSmallValues(lstDtls, minAmount) {\n return lstDtls.filter(function (compObj) {\n var val = (0, _get2.default)(compObj, 'valStd.val') || (0, _get2.default)(compObj, 'val.val');\n if (typeof val === 'string') {\n val = (0, _reducerUtils.parseNumber)(val);\n }\n return val < -minAmount || val > minAmount || val === 0.0;\n });\n },\n\n buildBreakdownChart: function buildBreakdownChart(data, options) {\n return data.map(function (o) {\n return [options.nameFunc(o), options.chartValFunc(o)];\n }).slice(0, 20);\n },\n\n sortBreakdown: function sortBreakdown(data) {\n var byVal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'rank.val';\n\n return data.sort((0, _sortUtils.createCompare)(byVal, 'ASC', { isNumeric: true }));\n },\n\n getIntlSimplifiedBreakdown: function getIntlSimplifiedBreakdown(breakdown) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return this.getSimplifiedBreakdownV2(breakdown, options);\n },\n\n getEtfSimplifiedBreakdown: function getEtfSimplifiedBreakdown(breakdown) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n options = Object.assign({}, options, { etfMode: true });\n return this.getSimplifiedBreakdownV2(breakdown, options);\n },\n\n getDateAndCalType: function getDateAndCalType(dateContainer, options, nameContainer) {\n nameContainer = nameContainer ? nameContainer : dateContainer;\n var obj = {\n date: (0, _get2.default)(dateContainer, 'asOfDate.val', '—'),\n calType: (0, _get2.default)(nameContainer, 'calType.val') || (0, _get2.default)(nameContainer, 'calName.val', null),\n calTypeStd: (0, _get2.default)(nameContainer, 'calNameStd.val', null)\n };\n\n if (obj.calTypeStd) {\n obj.calTypeStd = (0, _kebabCase2.default)(obj.calTypeStd);\n }\n if (options.hardcodedCalcLabelId) {\n obj.calType = null;\n obj.calTypeStd = options.hardcodedCalcLabelId;\n }\n return obj;\n },\n\n parseConfig: function parseConfig(options) {\n options.hardcodedCalcLabelId = options.hardcodedCalcLabelId || false;\n options.hasCalNameInRows = !!options.hasCalNameInRows;\n options.specialRiskConfigRules = !!options.specialRiskConfigRules;\n options.isLastElementSticky = options.hasOwnProperty('isLastElementSticky') ? options.isLastElementSticky : true;\n options.buildChart = options.hasOwnProperty('buildChart') ? options.buildChart : true;\n options.buildTable = options.hasOwnProperty('buildTable') ? options.buildTable : true;\n options.wantRange = options.wantRange || false;\n options.minAmount = options.minAmount || 0.01;\n options.etfMode = !!options.etfMode;\n options.breakDownKey = options.breakDownKey || 'brkDwnLst.lstDtls';\n options.nameKey = options.nameKey || 'name.val';\n options.nameFunc = options.nameFunc || function (o) {\n return (0, _get2.default)(o, options.nameKey, null);\n };\n options.chartValKey = options.chartValKey || (options.etfMode ? 'valStd.val' : 'val.val');\n options.chartValFunc = options.chartValFunc || function (o) {\n var val = (0, _get2.default)(o, options.chartValKey, null);\n return val !== null ? (0, _reducerUtils.parseNumber)(val) : null;\n };\n options.tableMappingKeys = options.tableMappingKeys || { val: 'val.val' };\n options.rangeKey = options.rangeKey || 'range.val';\n\n options.sorted = options.hasOwnProperty('sorted') ? options.sorted : true;\n\n options.filter = options.hasOwnProperty('filter') ? options.filter : true;\n\n options.kv_keyField = options.kv_keyField || 'name.val';\n options.kv_valueField = options.kv_valueField || 'val.val';\n return options;\n },\n\n getSimplifiedBreakdownV2: function getSimplifiedBreakdownV2(breakdown) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n options = this.parseConfig(options);\n\n var listDetails = (0, _get2.default)(breakdown, options.breakDownKey);\n listDetails = (0, _clone2.default)(listDetails);\n if (typeof listDetails === 'undefined') {\n return {\n visible: false\n };\n }\n if (options.filterCondition) {\n listDetails = (0, _filter2.default)(listDetails, options.filterCondition);\n }\n\n if (options.filter) {\n listDetails = this.filterSmallValues(listDetails, options.minAmount);\n }\n\n if (options.sorted) {\n listDetails = this.sortBreakdown(listDetails);\n }\n var dateContainer = breakdown;\n var nameContainer = options.hasCalNameInRows ? (0, _first2.default)(listDetails) : breakdown;\n var dateObj = this.getDateAndCalType(dateContainer, options, nameContainer);\n var obj = {\n visible: false,\n date: dateObj.date,\n calType: dateObj.calType,\n calTypeStd: dateObj.calTypeStd\n };\n\n obj.total = this.getIntlSectorBreakdownTotalizer(listDetails);\n\n if (options.buildTable) {\n obj.table = this.buildBreakDownTable(listDetails, options);\n }\n if (options.buildChart) {\n obj.chart = this.buildBreakdownChart(listDetails, options);\n }\n obj.visible = listDetails.length > 0;\n return obj;\n },\n\n appendTableData: function appendTableData(tableData, breakdown, options) {\n options.appendNonMatched = !!options.appendNonMatched;\n options.isLastElementSticky = options.hasOwnProperty('isLastElementSticky') ? !!options.isLastElementSticky : true;\n options.breakDownKey = options.breakDownKey || 'brkDwnLst.lstDtls';\n options.minAmount = options.minAmount || 0.01;\n\n options.filter = options.hasOwnProperty('filter') ? options.filter : true;\n\n var listDetails = (0, _get2.default)(breakdown, options.breakDownKey);\n var nonMatched = [];\n if (options.filterCondition) {\n listDetails = (0, _filter2.default)(listDetails, options.filterCondition);\n }\n listDetails.forEach(function (matchObj) {\n var matchName = (0, _get2.default)(matchObj, options.nameKey);\n var searchCondition = { 'name': matchName };\n var tableRow = (0, _find2.default)(tableData, searchCondition);\n if (tableRow) {\n tableRow[options.fieldId] = (0, _get2.default)(matchObj, options.fieldKey);\n } else {\n nonMatched.push(matchObj);\n }\n });\n if (options.filter) {\n nonMatched = exports.portfolioUtils.filterSmallValues(nonMatched, options.minAmount);\n }\n if (options.appendNonMatched && nonMatched.length) {\n var stickyElement = null;\n if (options.isLastElementSticky) {\n stickyElement = tableData.pop();\n }\n nonMatched.forEach(function (matchObj) {\n var matchName = (0, _get2.default)(matchObj, options.nameKey);\n var matchFieldValue = (0, _get2.default)(matchObj, options.fieldKey);\n var obj = {\n name: matchName,\n val: null,\n graphColour: 'chart-color-20'\n };\n obj[options.fieldId] = matchFieldValue;\n tableData.push(obj);\n });\n if (options.isLastElementSticky && stickyElement) {\n tableData.push(stickyElement);\n }\n }\n },\n\n getLabels: function getLabels(rawLabels) {\n var newLabels = {};\n var lSource = (0, _get2.default)(rawLabels, 'provider.labels.label');\n\n if (typeof lSource !== 'undefined') {\n for (var _iterator3 = lSource, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var item = _ref3;\n\n var key = (0, _get2.default)(item, 'key');\n newLabels['' + key.toString()] = (0, _get2.default)(item, 'value');\n }\n }\n\n return newLabels;\n },\n\n parsePageJsonConfig: function parsePageJsonConfig(rawPageJsonConfig) {\n var obj = { showChart: true, spanRow: true };\n var showTemp = (0, _get2.default)(rawPageJsonConfig, 'showChart');\n var spanTemp = (0, _get2.default)(rawPageJsonConfig, 'spanRow');\n\n if (showTemp instanceof Array) {\n obj.showChart = showTemp[0].toLowerCase() === 'yes';\n }\n\n if (spanTemp instanceof Array) {\n obj.spanRow = spanTemp[0].toLowerCase() === 'yes';\n }\n return obj;\n },\n\n benchmarkByKey: function benchmarkByKey(portfolioDetails) {\n var fundId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var shareClassCode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var benchMrkList = (0, _get2.default)(portfolioDetails, 'globalProductsValue.portfolioIntlValue.etfStat.etfBMStats', []);\n\n var keyedBenchMrks = {};\n benchMrkList.forEach(function (benchMrk) {\n var benchMrkKey = (0, _get2.default)(benchMrk, 'benchMrkLbl.val') || (0, _get2.default)(benchMrk, 'order.val') || (0, _get2.default)(benchMrk, 'bmAssociationType.val');\n var benchMrkShareClassCode = (0, _get2.default)(benchMrk, 'shClsId.val');\n var benchMrkFundId = (0, _get2.default)(benchMrk, 'fundId.val');\n if ((!fundId || benchMrkFundId === fundId) && (!shareClassCode || benchMrkShareClassCode === shareClassCode)) {\n keyedBenchMrks[benchMrkKey] = benchMrk;\n }\n });\n return keyedBenchMrks;\n },\n\n getBenchmarkID: function getBenchmarkID(rawBenchmarks) {\n var index = (0, _findIndex2.default)(rawBenchmarks, { 'benchMrkLbl': { 'val': 'INST1' } });\n return (0, _get2.default)(rawBenchmarks[index], 'bmrkId.val');\n },\n\n convertRefreshFrequencyIntoLabelId: function convertRefreshFrequencyIntoLabelId(refreshFrequency) {\n if (refreshFrequency === 'none') {\n return null;\n } else if (!refreshFrequency) {\n refreshFrequency = 'daily';\n }\n return 'updated-' + refreshFrequency;\n }\n };\n\n exports.getProximity = function (rawPortfolio) {\n return exports.portfolioUtils.getProximity(rawPortfolio);\n };\n\n exports.getLabels = function (rawLabels) {\n return exports.portfolioUtils.getLabels(rawLabels);\n };\n});\r\ndefine('components/products/ppss/ft-find-a-fund/ft-find-a-fund',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../../../lib/sort-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _sortUtils, _get2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFindAFund = undefined;\n\n var _get3 = _interopRequireDefault(_get2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtFindAFund = exports.FtFindAFund = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('searchString'), _dec3 = (0, _aureliaFramework.computedFrom)('isModal'), _dec4 = (0, _aureliaFramework.computedFrom)('funds', 'searchString'), _dec5 = (0, _aureliaFramework.computedFrom)('matchingFunds', 'searchString'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtFindAFund, _ReduxComponentBase);\n\n function FtFindAFund(store, beans, element) {\n _classCallCheck(this, FtFindAFund);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'showGo', _descriptor, _this);\n\n _initDefineProp(_this, 'isModal', _descriptor2, _this);\n\n _initDefineProp(_this, 'goCallback', _descriptor3, _this);\n\n _initDefineProp(_this, 'searchString', _descriptor4, _this);\n\n _this.showResults = false;\n _this.populated = false;\n _this.funds = [];\n\n var state = store.getState();\n\n var hideSite = false;\n if (state.general.site.hiddenSites) {\n hideSite = state.general.site.hiddenSites.includes(state.general.hostname);\n }\n\n _this.dispatch({\n type: 'POPULATE_PPSS_STATE',\n segment: store.getState().general.segment,\n site: store.getState().general.site.site,\n beans: beans.component.findAFund,\n hideSite: hideSite\n });\n return _this;\n }\n\n FtFindAFund.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n\n this.label = (0, _get3.default)(newState, 'products.label');\n if (!this.label) {\n this.populated = false;\n return;\n }\n\n this.searchString = newState.products.app.ppss.findAFund.searchString;\n this.searchProperties = newState.products.app.ppss.findAFund.searchProperties;\n this.funds = newState.products.ppss.funds;\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n FtFindAFund.prototype.toggleResults = function toggleResults(showHide) {\n this.showResults = showHide;\n };\n\n FtFindAFund.prototype.searchStringChanged = function searchStringChanged(newSearchString) {\n this.dispatch({\n type: 'FIND_A_FUND_CHANGE_SEARCH',\n newSearchString: newSearchString.trim()\n });\n };\n\n FtFindAFund.prototype.goClicked = function goClicked() {\n if (typeof this.goCallback === 'function') {\n this.goCallback(this.searchString);\n this.toggleResults(false);\n }\n };\n\n FtFindAFund.prototype.clearClicked = function clearClicked() {\n this.searchString = '';\n };\n\n _createClass(FtFindAFund, [{\n key: 'showClear',\n get: function get() {\n return this.searchString;\n }\n }, {\n key: 'resultsClass',\n get: function get() {\n return this.isModal ? 'find-a-fund--v2__results-container--in-modal' : '';\n }\n }, {\n key: 'matchingFunds',\n get: function get() {\n var _this2 = this;\n\n if (this.searchString) {\n return this.funds.filter(function (fund) {\n return fund.isActive && !fund.isSoftLaunch && _this2.searchProperties.reduce(function (result, searchProp) {\n return result || (0, _get3.default)(fund, searchProp.dataKey, '').toLowerCase().includes(_this2.searchString.toLowerCase());\n }, false);\n }).sort((0, _sortUtils.createCompare)('fundNameFull', 'ASC'));\n }\n return [];\n }\n }, {\n key: 'showNoResultsMessage',\n get: function get() {\n return this.searchString && this.matchingFunds.length === 0;\n }\n }]);\n\n return FtFindAFund;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'showGo', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return false;\n }\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'isModal', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return false;\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'goCallback', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'searchString', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _applyDecoratedDescriptor(_class2.prototype, 'showClear', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'showClear'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'resultsClass', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'resultsClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'matchingFunds', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'matchingFunds'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showNoResultsMessage', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'showNoResultsMessage'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-find-a-fund-btn/ft-find-a-fund-btn',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFindAFundBtn = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtFindAFundBtn = exports.FtFindAFundBtn = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtFindAFundBtn, _ReduxComponentBase);\n\n function FtFindAFundBtn() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtFindAFundBtn);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _this.populated = false, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtFindAFundBtn.prototype.mapState = function mapState(newState) {\n try {\n this.label = (0, _get2.default)(newState, 'products.label');\n if (this.label) {\n this.populated = true;\n }\n } catch (e) {\n logger.error(e);\n }\n };\n\n FtFindAFundBtn.prototype.openModal = function openModal() {\n this.logger.debug('openModal clicked!', this.modal);\n this.modal.openModal();\n };\n\n return FtFindAFundBtn;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss/ft-ppss',['exports', 'aurelia-framework', 'aurelia-templating-resources', '../../../../lib/redux-component-base', '../../../../lib/sort-utils', 'lodash/get'], function (exports, _aureliaFramework, _aureliaTemplatingResources, _reduxComponentBase, _sortUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpss = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _desc, _value, _class2;\n\n var FtPpss = exports.FtPpss = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element, _aureliaTemplatingResources.BindingSignaler), _dec2 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec3 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec4 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec5 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec6 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec7 = (0, _aureliaFramework.computedFrom)('showPerformanceTab'), _dec8 = (0, _aureliaFramework.computedFrom)('showFundIdentifiersTab'), _dec9 = (0, _aureliaFramework.computedFrom)('showEtfTab'), _dec10 = (0, _aureliaFramework.computedFrom)('showYieldTab'), _dec11 = (0, _aureliaFramework.computedFrom)('showRatingsTab'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpss, _ReduxComponentBase);\n\n function FtPpss(store, beans, element, signaler) {\n _classCallCheck(this, FtPpss);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n var state = store.getState();\n _this.signaler = signaler;\n _this.cid = element.getAttribute('cid');\n\n var ppssBeans = beans.component.ppss;\n if (_this.cid) {\n ppssBeans.push(_this.cid);\n }\n\n var hideSite = false;\n if (state.general.site.hiddenSites) {\n hideSite = state.general.site.hiddenSites.includes(state.general.hostname);\n }\n\n _this.dispatch({\n type: 'POPULATE_PPSS_STATE',\n segment: state.general.segment,\n site: state.general.site.site,\n hideSite: hideSite,\n params: state.general.params,\n beans: ppssBeans,\n cid: _this.cid\n });\n return _this;\n }\n\n FtPpss.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()', newState);\n\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label) {\n this.isPopulated = false;\n return;\n }\n\n var ppssAppState = newState.products.app.ppss;\n this.user = newState.general.user;\n this.currentTable = ppssAppState.currentTable;\n this.display = ppssAppState.display;\n this.sort = ppssAppState.sort;\n this.config = ppssAppState.config;\n this.performanceView = ppssAppState.display.performanceView;\n\n this.morningstarAsOfDate = newState.products.ppss.morningstarAsOfDate;\n this.fundCategoryAsOfDate = newState.products.ppss.fundCategoryAsOfDate;\n this.distRateNavAsOfDate = newState.products.ppss.distRateNavAsOfDate;\n this.standardYieldAsOfDate = newState.products.ppss.standardYieldAsOfDate;\n this.standardYieldAsOfDateMoneyFund = newState.products.ppss.standardYieldAsOfDateMoneyFund;\n this.ytdAsOfDate = newState.products.ppss.ytdAsOfDate;\n this.navAsOfDate = newState.products.ppss.navAsOfDate;\n this.chargesAsOfDate = newState.products.ppss.chargesAsOfDate;\n this.navAsOfDateMonth = newState.products.ppss.navAsOfDateMonth;\n this.navAsOfDateQuarter = newState.products.ppss.navAsOfDateQuarter;\n\n this.filters = this._createFilterConfig(ppssAppState.filters, newState.products.ppss.filterOptions);\n\n this.funds = newState.products.ppss.funds.filter(this._createFilterFunction(this.filters)).sort(this._createSortFunction(this.sort, this.display));\n this.logger.debug('Displaying ' + this.funds.length + ' funds!!!');\n\n if (ppssAppState.performanceDataSets) {\n this.performanceDataSet = ppssAppState.performanceDataSets.get(ppssAppState.display.performanceView);\n }\n\n if (this.performanceView.periodEnd === 'MONTHLY') {\n this.calendarYearLabels = newState.products.ppss.calendarYearMonthlyLabels;\n this.discreteLabels = newState.products.ppss.discreteMonthlyLabels;\n } else {\n this.calendarYearLabels = newState.products.ppss.calendarYearQuarterlyLabels;\n this.discreteLabels = newState.products.ppss.discreteQuarterlyLabels;\n }\n\n this.signaler.signal('ppss-map-state');\n this.isPopulated = true;\n this.logger.debug('mapState() done');\n } catch (e) {\n this.isPopulated = false;\n this.logger.debug('mapState() error', e, this.isPopulated);\n }\n };\n\n FtPpss.prototype._createFilterConfig = function _createFilterConfig(filters, filterOptions) {\n var dropdowns = filters.dropdowns.map(function (filter) {\n if (filterOptions[filter.name]) {\n filter.options = filterOptions[filter.name];\n }\n return filter;\n });\n return Object.assign(filters, { dropdowns: dropdowns });\n };\n\n FtPpss.prototype._createSortFunction = function _createSortFunction(sort, display) {\n var sortColumn = Array.from(sort.columns.values()).find(function (col) {\n return col.direction;\n });\n this.logger.debug('sortColumn', sortColumn);\n var dataKey = sortColumn.baseDataKey ? this._calcDataKey(sortColumn.baseDataKey, display) : sortColumn.dataKey;\n var secondaryCompare = sort.secondary ? (0, _sortUtils.createCompare)(sort.secondary.dataKey, sort.secondary.direction, { isNumeric: sort.secondary.isNumeric, isDate: sort.secondary.isDate }) : null;\n return (0, _sortUtils.createCompare)(dataKey, sortColumn.direction, { secondaryCompare: secondaryCompare, isNumeric: sortColumn.isNumeric, isDate: sortColumn.isDate });\n };\n\n FtPpss.prototype._calcDataKey = function _calcDataKey(baseDataKey, display) {\n var dataKey = baseDataKey;\n\n switch (baseDataKey) {\n case 'distRateAt':\n dataKey += display.includeSalesCharges ? 'Pop' : 'Nav';\n break;\n default:\n if (display.periodEnd === 'MONTH_END') dataKey += 'Monthly';\n if (display.periodEnd === 'QUARTER_END') dataKey += 'Quarterly';\n if (display.includeSalesCharges) dataKey += 'Sc';\n }\n this.logger.debug('dataKey', dataKey);\n return dataKey;\n };\n\n FtPpss.prototype._createFilterFunction = function _createFilterFunction(filters) {\n var activeDropdowns = filters.dropdowns.filter(function (d) {\n return d.selected.value && (Array.isArray(d.selected.value) && d.selected.value.length || d.selected.value.toString().toUpperCase() !== 'ALL');\n });\n var searchString = (0, _get2.default)(filters, 'keywords.searchString', '').toUpperCase();\n\n return function (fund) {\n if (!activeDropdowns.reduce(function (result, dropdown) {\n if (!result) return false;\n\n var selectedVal = dropdown.selected.value;\n if (dropdown.dataKey) {\n var fundVal = fund[dropdown.dataKey];\n if (Array.isArray(selectedVal)) {\n return selectedVal.indexOf(fundVal) >= 0;\n }\n return fundVal === selectedVal;\n }\n\n return true;\n }, true)) {\n return false;\n }\n\n if (searchString) {\n return filters.keywords.searchKeys.reduce(function (result, searchKey) {\n if (result) return true;\n return fund[searchKey].toString().toUpperCase().indexOf(searchString) >= 0;\n }, false);\n }\n\n return true;\n };\n };\n\n _createClass(FtPpss, [{\n key: 'showPerformanceTab',\n get: function get() {\n return this.currentTable === 'PERFORMANCE';\n }\n }, {\n key: 'showFundIdentifiersTab',\n get: function get() {\n return this.currentTable === 'FUND_IDENTIFIERS';\n }\n }, {\n key: 'showEtfTab',\n get: function get() {\n return this.currentTable === 'ETF';\n }\n }, {\n key: 'showYieldTab',\n get: function get() {\n return this.currentTable === 'YIELD';\n }\n }, {\n key: 'showRatingsTab',\n get: function get() {\n return this.currentTable === 'RATINGS';\n }\n }, {\n key: 'getPerformanceClass',\n get: function get() {\n return this.showPerformanceTab ? 'active' : '';\n }\n }, {\n key: 'getFundIdentifiersClass',\n get: function get() {\n return this.showFundIdentifiersTab ? 'active' : '';\n }\n }, {\n key: 'getEtfClass',\n get: function get() {\n return this.showEtfTab ? 'active' : '';\n }\n }, {\n key: 'getYieldClass',\n get: function get() {\n return this.showYieldTab ? 'active' : '';\n }\n }, {\n key: 'getRatingsClass',\n get: function get() {\n return this.showRatingsTab ? 'active' : '';\n }\n }]);\n\n return FtPpss;\n }(_reduxComponentBase.ReduxComponentBase), (_applyDecoratedDescriptor(_class2.prototype, 'showPerformanceTab', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'showPerformanceTab'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showFundIdentifiersTab', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'showFundIdentifiersTab'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showEtfTab', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'showEtfTab'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showYieldTab', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'showYieldTab'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showRatingsTab', [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, 'showRatingsTab'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getPerformanceClass', [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, 'getPerformanceClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getFundIdentifiersClass', [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, 'getFundIdentifiersClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getEtfClass', [_dec9], Object.getOwnPropertyDescriptor(_class2.prototype, 'getEtfClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getYieldClass', [_dec10], Object.getOwnPropertyDescriptor(_class2.prototype, 'getYieldClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getRatingsClass', [_dec11], Object.getOwnPropertyDescriptor(_class2.prototype, 'getRatingsClass'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-etf/ft-ppss-etf',['exports', 'aurelia-framework', '../ft-ppss-table-base'], function (exports, _aureliaFramework, _ftPpssTableBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssEtf = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n\n var FtPpssEtf = exports.FtPpssEtf = (_class = function (_FtPpssTableBase) {\n _inherits(FtPpssEtf, _FtPpssTableBase);\n\n function FtPpssEtf() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssEtf);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtPpssTableBase.call.apply(_FtPpssTableBase, [this].concat(args))), _this), _initDefineProp(_this, 'label', _descriptor, _this), _initDefineProp(_this, 'config', _descriptor2, _this), _initDefineProp(_this, 'funds', _descriptor3, _this), _initDefineProp(_this, 'sort', _descriptor4, _this), _initDefineProp(_this, 'navAsOfDate', _descriptor5, _this), _initDefineProp(_this, 'chargesAsOfDate', _descriptor6, _this), _initDefineProp(_this, 'filters', _descriptor7, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtPpssEtf, [{\n key: 'navColspan',\n get: function get() {\n var colspan = 2;\n if (this.config.showYtdTotalReturnAtNAV) {\n colspan = colspan + 1;\n }\n return colspan;\n }\n }]);\n\n return FtPpssEtf;\n }(_ftPpssTableBase.FtPpssTableBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'funds', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, 'navAsOfDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, 'chargesAsOfDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class);\n});\r\ndefine('components/products/ppss/ft-ppss-favorite/ft-ppss-favorite',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssFavorite = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtPpssFavorite = exports.FtPpssFavorite = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpssFavorite, _ReduxComponentBase);\n\n function FtPpssFavorite() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssFavorite);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'fund', _descriptor, _this), _initDefineProp(_this, 'user', _descriptor2, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return FtPpssFavorite;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'fund', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'user', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-fund-filter/ft-ppss-fund-filter',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssFundFilter = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtPpssFundFilter = exports.FtPpssFundFilter = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('filters'), _dec3 = (0, _aureliaFramework.computedFrom)('searchString', 'numResults', 'label'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpssFundFilter, _ReduxComponentBase);\n\n function FtPpssFundFilter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssFundFilter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'filters', _descriptor, _this), _initDefineProp(_this, 'searchString', _descriptor2, _this), _initDefineProp(_this, 'numResults', _descriptor3, _this), _initDefineProp(_this, 'label', _descriptor4, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPpssFundFilter.prototype.changeFilter = function changeFilter(filterName, selectedOption) {\n this.dispatch({\n type: 'PPSS_CHANGE_DROPDOWN',\n name: filterName,\n newValue: selectedOption\n });\n };\n\n FtPpssFundFilter.prototype.changeKeywords = function changeKeywords(newSearchString) {\n this.dispatch({\n type: 'PPSS_CHANGE_KEYWORDS',\n newSearchString: newSearchString\n });\n };\n\n _createClass(FtPpssFundFilter, [{\n key: 'showFilterForm',\n get: function get() {\n return this.filters.dropdowns.length;\n }\n }, {\n key: 'resultsMessage',\n get: function get() {\n if (this.searchString) {\n return this.getLabel('displaying-filter-results').replace('$$RESULTS', this.numResults).replace('$$SEARCH_TERM', this.searchString);\n }\n return this.getLabel('displaying-all-filter-results').replace('$$RESULTS', this.numResults);\n }\n }]);\n\n return FtPpssFundFilter;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'searchString', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'numResults', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'showFilterForm', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'showFilterForm'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'resultsMessage', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'resultsMessage'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-fund-identifiers/ft-ppss-fund-identifiers',['exports', 'aurelia-framework', '../ft-ppss-table-base'], function (exports, _aureliaFramework, _ftPpssTableBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssFundIdentifiers = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n\n var FtPpssFundIdentifiers = exports.FtPpssFundIdentifiers = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('funds', 'label'), _dec(_class = (_class2 = function (_FtPpssTableBase) {\n _inherits(FtPpssFundIdentifiers, _FtPpssTableBase);\n\n function FtPpssFundIdentifiers() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssFundIdentifiers);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtPpssTableBase.call.apply(_FtPpssTableBase, [this].concat(args))), _this), _initDefineProp(_this, 'user', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _initDefineProp(_this, 'config', _descriptor3, _this), _initDefineProp(_this, 'funds', _descriptor4, _this), _initDefineProp(_this, 'filters', _descriptor5, _this), _initDefineProp(_this, 'sort', _descriptor6, _this), _initDefineProp(_this, 'fundIdentifiers', _descriptor7, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtPpssFundIdentifiers, [{\n key: 'resultsNumberMessage',\n get: function get() {\n return this.funds && this.label && this.label.get('performance-nb-fund-displayed') ? this.getLabel('performance-nb-fund-displayed').replace('<span data-view=\"x-funds-performance\">0</span>', this.funds.length) : '';\n }\n }]);\n\n return FtPpssFundIdentifiers;\n }(_ftPpssTableBase.FtPpssTableBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'user', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'funds', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'fundIdentifiers', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'resultsNumberMessage', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'resultsNumberMessage'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-fund-name/ft-ppss-fund-name',['exports', 'aurelia-framework', '../../../../lib/component-base'], function (exports, _aureliaFramework, _componentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssFundName = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtPpssFundName = exports.FtPpssFundName = (_dec = (0, _aureliaFramework.computedFrom)('fund', 'tab'), (_class = function (_ComponentBase) {\n _inherits(FtPpssFundName, _ComponentBase);\n\n function FtPpssFundName() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssFundName);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ComponentBase.call.apply(_ComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'tab', _descriptor, _this), _initDefineProp(_this, 'fund', _descriptor2, _this), _initDefineProp(_this, 'label', _descriptor3, _this), _initDefineProp(_this, 'config', _descriptor4, _this), _this.expanded = false, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPpssFundName.prototype.toggleExpanded = function toggleExpanded() {\n this.expanded = !this.expanded;\n };\n\n _createClass(FtPpssFundName, [{\n key: 'collapseId',\n get: function get() {\n return 'collapse-' + this.fund.fundId + '-' + this.tab;\n }\n }]);\n\n return FtPpssFundName;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'tab', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'fund', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'collapseId', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'collapseId'), _class.prototype)), _class));\n});\r\ndefine('components/products/ppss/ft-ppss-performance/ft-ppss-performance-cell',['exports', '../../lib/reducer-utils'], function (exports, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssPerformanceCellValueConverter = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _class, _temp;\n\n var FtPpssPerformanceCellValueConverter = exports.FtPpssPerformanceCellValueConverter = (_temp = _class = function () {\n function FtPpssPerformanceCellValueConverter() {\n _classCallCheck(this, FtPpssPerformanceCellValueConverter);\n }\n\n FtPpssPerformanceCellValueConverter.prototype.toView = function toView(fund, performanceView, column) {\n var columnDefs = this.constructor.columns;\n var columnDef = null;\n if (columnDefs[performanceView.name] && columnDefs[performanceView.name][performanceView.periodEnd] && columnDefs[performanceView.name][performanceView.periodEnd][column]) {\n columnDef = columnDefs[performanceView.name][performanceView.periodEnd][column];\n }\n if (!columnDef) {\n return '—';\n }\n return (0, _reducerUtils.formatPercentage)(fund[columnDef], true);\n };\n\n return FtPpssPerformanceCellValueConverter;\n }(), _class.columns = {\n AVG_ANNUAL: {\n MONTHLY: {\n col1: 'avgAnn1YearReturnMonthly',\n col2: 'avgAnn3YearReturnMonthly',\n col3: 'avgAnn5YearReturnMonthly',\n col4: 'avgAnn10YearReturnMonthly',\n col5: null,\n col6: null,\n colInception: 'avgAnnSinceIncReturnMonthly'\n },\n QUARTERLY: {\n col1: 'avgAnn1YearReturnQuarterly',\n col2: 'avgAnn3YearReturnQuarterly',\n col3: 'avgAnn5YearReturnQuarterly',\n col4: 'avgAnn10YearReturnQuarterly',\n col5: null,\n col6: null,\n colInception: 'avgAnnSinceIncReturnQuarterly'\n }\n },\n CALENDAR_YEAR: {\n MONTHLY: {\n col1: 'cumulativeRetYtdMonthly',\n col2: 'calendarYear1yrReturnMonthly',\n col3: 'calendarYear2yrReturnMonthly',\n col4: 'calendarYear3yrReturnMonthly',\n col5: 'calendarYear4yrReturnMonthly',\n col6: 'calendarYear5yrReturnMonthly',\n colInception: null\n },\n QUARTERLY: {\n col1: 'cumulativeRetYtdQuarterly',\n col2: 'calendarYear1yrReturnQuarterly',\n col3: 'calendarYear2yrReturnQuarterly',\n col4: 'calendarYear3yrReturnQuarterly',\n col5: 'calendarYear4yrReturnQuarterly',\n col6: 'calendarYear5yrReturnQuarterly',\n colInception: null\n }\n },\n CUMULATIVE: {\n MONTHLY: {\n col1: 'cumulativeRetYtdMonthly',\n col2: 'cumulativeRet1yrMonthly',\n col3: 'cumulativeRet3yrMonthly',\n col4: 'cumulativeRet5yrMonthly',\n col5: 'cumulativeRet10yrMonthly',\n col6: null,\n colInception: 'cumulativeRetIncMonthly'\n },\n QUARTERLY: {\n col1: 'cumulativeRetYtdQuarterly',\n col2: 'cumulativeRet1yrQuarterly',\n col3: 'cumulativeRet3yrQuarterly',\n col4: 'cumulativeRet5yrQuarterly',\n col5: 'cumulativeRet10yrQuarterly',\n col6: null,\n colInception: 'cumulativeRetIncQuarterly'\n }\n },\n DISCRETE: {\n MONTHLY: {\n col1: 'discreteAnnual1yrMonthly',\n col2: 'discreteAnnual2yrMonthly',\n col3: 'discreteAnnual3yrMonthly',\n col4: 'discreteAnnual4yrMonthly',\n col5: 'discreteAnnual5yrMonthly',\n col6: null,\n colInception: null\n },\n QUARTERLY: {\n col1: 'discreteAnnual1yrQuarterly',\n col2: 'discreteAnnual2yrQuarterly',\n col3: 'discreteAnnual3yrQuarterly',\n col4: 'discreteAnnual4yrQuarterly',\n col5: 'discreteAnnual5yrQuarterly',\n col6: null,\n colInception: null\n }\n }\n }, _temp);\n});\r\ndefine('components/products/ppss/ft-ppss-performance/ft-ppss-performance',['exports', '../ft-ppss-table-base', 'aurelia-framework'], function (exports, _ftPpssTableBase, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssPerformance = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n\n var FtPpssPerformance = exports.FtPpssPerformance = (_dec = (0, _aureliaFramework.computedFrom)('performanceView', 'config'), _dec2 = (0, _aureliaFramework.computedFrom)('performanceView', 'config'), _dec3 = (0, _aureliaFramework.computedFrom)('config'), _dec4 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec5 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec6 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec7 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec8 = (0, _aureliaFramework.computedFrom)('funds', 'label'), _dec9 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec10 = (0, _aureliaFramework.computedFrom)('config'), _dec11 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec12 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec13 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec14 = (0, _aureliaFramework.computedFrom)('performanceView'), (_class = function (_FtPpssTableBase) {\n _inherits(FtPpssPerformance, _FtPpssTableBase);\n\n function FtPpssPerformance() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssPerformance);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtPpssTableBase.call.apply(_FtPpssTableBase, [this].concat(args))), _this), _initDefineProp(_this, 'label', _descriptor, _this), _initDefineProp(_this, 'config', _descriptor2, _this), _initDefineProp(_this, 'filters', _descriptor3, _this), _initDefineProp(_this, 'sort', _descriptor4, _this), _initDefineProp(_this, 'funds', _descriptor5, _this), _initDefineProp(_this, 'performanceView', _descriptor6, _this), _initDefineProp(_this, 'calendarYearLabels', _descriptor7, _this), _initDefineProp(_this, 'discreteLabels', _descriptor8, _this), _initDefineProp(_this, 'periodEnd', _descriptor9, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPpssPerformance.prototype.isAvailableDataset = function isAvailableDataset(dataset) {\n return this.config.performanceViewOptions.findIndex(function (ds) {\n return ds.name === dataset;\n }) >= 0;\n };\n\n FtPpssPerformance.prototype.updatePerformanceView = function updatePerformanceView(view) {\n this.periodEnd = view.periodEnd;\n this.dispatch({\n type: 'PPSS_CHANGE_PERFORMANCE_VIEW',\n data: view\n });\n return true;\n };\n\n FtPpssPerformance.prototype.pvNameMatcher = function pvNameMatcher(a, b) {\n return a.name === b.name;\n };\n\n FtPpssPerformance.prototype.periodEndChanged = function periodEndChanged(periodEnd) {\n this.updatePerformanceView({\n name: this.performanceView.name,\n periodEnd: periodEnd\n });\n };\n\n _createClass(FtPpssPerformance, [{\n key: 'periodEnds',\n get: function get() {\n var _this2 = this;\n\n var performanceViewOption = this.config.performanceViewOptions.find(function (pvo) {\n return pvo.name === _this2.performanceView.name;\n });\n if (!performanceViewOption) return [];\n return performanceViewOption.periodEnds.map(function (pe) {\n return {\n name: performanceViewOption.name,\n periodEnd: pe,\n label: pe === 'MONTHLY' ? _this2.getLabel('month-end') : _this2.getLabel('quarter-end') };\n });\n }\n }, {\n key: 'showPeriodEndsToggle',\n get: function get() {\n return this.periodEnds.length > 1;\n }\n }, {\n key: 'showPerformanceToggle',\n get: function get() {\n return this.config.performanceViewOptions.length > 1;\n }\n }, {\n key: 'showAvgAnnualDataset',\n get: function get() {\n return this.performanceView.name === 'AVG_ANNUAL';\n }\n }, {\n key: 'showCalendarYearDataset',\n get: function get() {\n return this.performanceView.name === 'CALENDAR_YEAR';\n }\n }, {\n key: 'showCumulativeDataset',\n get: function get() {\n return this.performanceView.name === 'CUMULATIVE';\n }\n }, {\n key: 'showDiscreteDataset',\n get: function get() {\n return this.performanceView.name === 'DISCRETE';\n }\n }, {\n key: 'resultsNumberMessage',\n get: function get() {\n return this.funds && this.label && this.label.get('performance-nb-fund-displayed') ? this.getLabel('performance-nb-fund-displayed').replace('<span data-view=\"x-funds-performance\">0</span>', this.funds.length) : '';\n }\n }, {\n key: 'performanceViewLabel',\n get: function get() {\n var labelKey = '';\n switch (this.performanceView.name) {\n case 'AVG_ANNUAL':\n labelKey = 'avg-annual';\n break;\n case 'CALENDAR_YEAR':\n labelKey = 'calendar-year';\n break;\n case 'CUMULATIVE':\n labelKey = 'cumulative';\n break;\n case 'DISCRETE':\n labelKey = 'discrete';\n break;\n default:\n }\n switch (this.performanceView.periodEnd) {\n case 'MONTHLY':\n labelKey += '-monthly';\n break;\n case 'QUARTERLY':\n labelKey += '-quarterly';\n break;\n default:\n }\n return this.getLabel(labelKey);\n }\n }, {\n key: 'searchAreaColspan',\n get: function get() {\n return this.config.showFavorites ? 4 : 3;\n }\n }, {\n key: 'showCol5',\n get: function get() {\n return ['CALENDAR_YEAR', 'CUMULATIVE', 'DISCRETE'].includes(this.performanceView.name);\n }\n }, {\n key: 'showCol6',\n get: function get() {\n return ['CALENDAR_YEAR'].includes(this.performanceView.name);\n }\n }, {\n key: 'showColInception',\n get: function get() {\n return ['CALENDAR_YEAR', 'DISCRETE'].includes(this.performanceView.name);\n }\n }, {\n key: 'showColInceptionCombined',\n get: function get() {\n return ['AVG_ANNUAL', 'CUMULATIVE'].includes(this.performanceView.name);\n }\n }]);\n\n return FtPpssPerformance;\n }(_ftPpssTableBase.FtPpssTableBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, 'funds', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, 'performanceView', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, 'calendarYearLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, 'discreteLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, 'periodEnd', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'periodEnds', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'periodEnds'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showPeriodEndsToggle', [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, 'showPeriodEndsToggle'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showPerformanceToggle', [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, 'showPerformanceToggle'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showAvgAnnualDataset', [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, 'showAvgAnnualDataset'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showCalendarYearDataset', [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, 'showCalendarYearDataset'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showCumulativeDataset', [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, 'showCumulativeDataset'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showDiscreteDataset', [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, 'showDiscreteDataset'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'resultsNumberMessage', [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, 'resultsNumberMessage'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'performanceViewLabel', [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, 'performanceViewLabel'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'searchAreaColspan', [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, 'searchAreaColspan'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showCol5', [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, 'showCol5'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showCol6', [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, 'showCol6'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showColInception', [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, 'showColInception'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showColInceptionCombined', [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, 'showColInceptionCombined'), _class.prototype)), _class));\n});\r\ndefine('components/products/ppss/ft-ppss-ratings/ft-ppss-ratings',['exports', '../ft-ppss-table-base', 'aurelia-framework'], function (exports, _ftPpssTableBase, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssRatings = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n\n var FtPpssRatings = exports.FtPpssRatings = (_dec = (0, _aureliaFramework.computedFrom)('funds', 'label'), _dec2 = (0, _aureliaFramework.computedFrom)('config'), (_class = function (_FtPpssTableBase) {\n _inherits(FtPpssRatings, _FtPpssTableBase);\n\n function FtPpssRatings() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssRatings);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtPpssTableBase.call.apply(_FtPpssTableBase, [this].concat(args))), _this), _initDefineProp(_this, 'user', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _initDefineProp(_this, 'config', _descriptor3, _this), _initDefineProp(_this, 'funds', _descriptor4, _this), _initDefineProp(_this, 'filters', _descriptor5, _this), _initDefineProp(_this, 'sort', _descriptor6, _this), _initDefineProp(_this, 'morningstarAsOfDate', _descriptor7, _this), _initDefineProp(_this, 'fundCategoryAsOfDate', _descriptor8, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtPpssRatings, [{\n key: 'resultsNumberMessage',\n get: function get() {\n return this.funds && this.label && this.label.get('ratings-nb-fund-displayed') ? this.getLabel('ratings-nb-fund-displayed').replace('<span data-view=\"x-funds-ratings\">0</span>', this.funds.length) : '';\n }\n }, {\n key: 'moneyFundHeaderColspan',\n get: function get() {\n return this.config.showFavorites ? 12 : 11;\n }\n }]);\n\n return FtPpssRatings;\n }(_ftPpssTableBase.FtPpssTableBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'user', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'funds', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, 'morningstarAsOfDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, 'fundCategoryAsOfDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'resultsNumberMessage', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'resultsNumberMessage'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'moneyFundHeaderColspan', [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, 'moneyFundHeaderColspan'), _class.prototype)), _class));\n});\r\ndefine('components/products/ppss/ft-ppss-search-box/ft-ppss-search-box',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssSearchBox = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtPpssSearchBox = exports.FtPpssSearchBox = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpssSearchBox, _ReduxComponentBase);\n\n function FtPpssSearchBox() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssSearchBox);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'label', _descriptor, _this), _initDefineProp(_this, 'searchString', _descriptor2, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPpssSearchBox.prototype.searchStringChanged = function searchStringChanged(newSearchString) {\n this.dispatch({\n type: 'PPSS_CHANGE_KEYWORDS',\n newSearchString: newSearchString\n });\n };\n\n return FtPpssSearchBox;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'searchString', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-tab-header/ft-ppss-tab-header',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', 'lodash/countBy'], function (exports, _aureliaFramework, _reduxComponentBase, _countBy) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssTabHeader = undefined;\n\n var _countBy2 = _interopRequireDefault(_countBy);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtPpssTabHeader = exports.FtPpssTabHeader = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec3 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec4 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec5 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec6 = (0, _aureliaFramework.computedFrom)('currentTable'), _dec7 = (0, _aureliaFramework.computedFrom)('cumulativeSelected'), _dec8 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec9 = (0, _aureliaFramework.computedFrom)('discreteSelected'), _dec10 = (0, _aureliaFramework.computedFrom)('performanceView'), _dec11 = (0, _aureliaFramework.computedFrom)('config'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpssTabHeader, _ReduxComponentBase);\n\n function FtPpssTabHeader() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssTabHeader);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'label', _descriptor, _this), _initDefineProp(_this, 'config', _descriptor2, _this), _initDefineProp(_this, 'currentTable', _descriptor3, _this), _initDefineProp(_this, 'includeSalesCharges', _descriptor4, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPpssTabHeader.prototype.changeTab = function changeTab(key) {\n this.dispatch({\n type: 'PPSS_CHANGE_TAB',\n tab: key\n });\n };\n\n FtPpssTabHeader.prototype.includeSalesChargesChanged = function includeSalesChargesChanged(val) {\n this.dispatch({\n type: 'PPSS_CHANGE_SALES_CHARGES',\n data: val\n });\n };\n\n _createClass(FtPpssTabHeader, [{\n key: 'getPerformanceClass',\n get: function get() {\n return this.currentTable === 'PERFORMANCE' ? 'active' : 'hidden-print';\n }\n }, {\n key: 'getFundIdentifiersClass',\n get: function get() {\n return this.currentTable === 'FUND_IDENTIFIERS' ? 'active' : 'hidden-print';\n }\n }, {\n key: 'getEtfClass',\n get: function get() {\n return this.currentTable === 'ETF' ? 'active' : 'hidden-print';\n }\n }, {\n key: 'getYieldClass',\n get: function get() {\n return this.currentTable === 'YIELD' ? 'active' : 'hidden-print';\n }\n }, {\n key: 'getRatingsClass',\n get: function get() {\n return this.currentTable === 'RATINGS' ? 'active' : 'hidden-print';\n }\n }, {\n key: 'cumulativeClass',\n get: function get() {\n return this.cumulativeSelected ? 'active' : '';\n }\n }, {\n key: 'cumulativeSelected',\n get: function get() {\n return this.performanceView === 'CUMULATIVE_MONTHLY';\n }\n }, {\n key: 'discreteClass',\n get: function get() {\n return this.discreteSelected ? 'active' : '';\n }\n }, {\n key: 'discreteSelected',\n get: function get() {\n return this.performanceView === 'DISCRETE_QUARTERLY';\n }\n }, {\n key: 'showTabs',\n get: function get() {\n var count = (0, _countBy2.default)([this.config.showPerformanceTab, this.config.showEtfTab, this.config.showFundIdentifiersTab, this.config.showYieldTab, this.config.showRatingsTab], function (s) {\n return s ? 'visible' : 'hidden';\n });\n return count.visible > 1;\n }\n }]);\n\n return FtPpssTabHeader;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'currentTable', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'includeSalesCharges', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'getPerformanceClass', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'getPerformanceClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getFundIdentifiersClass', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'getFundIdentifiersClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getEtfClass', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'getEtfClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getYieldClass', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'getYieldClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'getRatingsClass', [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, 'getRatingsClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'cumulativeClass', [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, 'cumulativeClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'cumulativeSelected', [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, 'cumulativeSelected'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'discreteClass', [_dec9], Object.getOwnPropertyDescriptor(_class2.prototype, 'discreteClass'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'discreteSelected', [_dec10], Object.getOwnPropertyDescriptor(_class2.prototype, 'discreteSelected'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showTabs', [_dec11], Object.getOwnPropertyDescriptor(_class2.prototype, 'showTabs'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-table-toolbar/ft-ppss-table-toolbar',['exports', 'aurelia-framework', '../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssTableToolbar = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtPpssTableToolbar = exports.FtPpssTableToolbar = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('user'), _dec3 = (0, _aureliaFramework.computedFrom)('user'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPpssTableToolbar, _ReduxComponentBase);\n\n function FtPpssTableToolbar() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssTableToolbar);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'user', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtPpssTableToolbar, [{\n key: 'showAddFavourite',\n get: function get() {\n return this.user && this.user.loggedIn;\n }\n }, {\n key: 'showCompare',\n get: function get() {\n return this.user && this.user.loggedIn && this.user.actor === 'FA';\n }\n }]);\n\n return FtPpssTableToolbar;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'user', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'showAddFavourite', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'showAddFavourite'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'showCompare', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'showCompare'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/ppss/ft-ppss-yield/ft-ppss-yield-row',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssYieldRow = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtPpssYieldRow = exports.FtPpssYieldRow = (_dec = (0, _aureliaFramework.computedFrom)('fund', 'includeSalesCharges'), _dec2 = (0, _aureliaFramework.computedFrom)('fund'), _dec3 = (0, _aureliaFramework.computedFrom)('fund'), _dec4 = (0, _aureliaFramework.computedFrom)('fund'), _dec5 = (0, _aureliaFramework.computedFrom)('fund'), _dec6 = (0, _aureliaFramework.computedFrom)('fund'), _dec7 = (0, _aureliaFramework.computedFrom)('fund'), (_class = function () {\n function FtPpssYieldRow() {\n _classCallCheck(this, FtPpssYieldRow);\n\n _initDefineProp(this, 'fund', _descriptor, this);\n\n _initDefineProp(this, 'label', _descriptor2, this);\n\n _initDefineProp(this, 'config', _descriptor3, this);\n\n _initDefineProp(this, 'includeSalesCharges', _descriptor4, this);\n }\n\n _createClass(FtPpssYieldRow, [{\n key: 'distributionRate',\n get: function get() {\n if (!this.fund.isValidYieldData) return '-';\n if (!this.fund.isAllowedInConfig) return 'N/A';\n if (this.includeSalesCharges && this.fund.distRateAtPop) return this.fund.distRateAtPop;\n if (!this.includeSalesCharges && this.fund.distRateAtNav) return this.fund.distRateAtNav;\n return '';\n }\n }, {\n key: 'showSecYieldWoWvr',\n get: function get() {\n return this.fund.isValidYieldData && this.fund.isAllowedInConfig && this.fund.secYieldWoWvr;\n }\n }, {\n key: 'standardizedYield30Day',\n get: function get() {\n if (!this.fund.isValidYieldData) return '-';\n if (!this.fund.isAllowedInConfig) return 'N/A';\n if (this.fund.secYield) return this.fund.secYield;\n return '';\n }\n }, {\n key: 'showCurrent7DayYieldWoWvr',\n get: function get() {\n return this.fund.isValidYieldData && this.fund.isAllowedInConfig && this.fund.current7DayYieldWoWvr;\n }\n }, {\n key: 'current7DayYield',\n get: function get() {\n if (!this.fund.isValidYieldData) return '-';\n if (!this.fund.isAllowedInConfig) return 'N/A';\n if (this.fund.current7DayYield) return this.fund.current7DayYield;\n return '';\n }\n }, {\n key: 'showEffective7DayYieldWoWvr',\n get: function get() {\n return this.fund.isValidYieldData && this.fund.isAllowedInConfig && this.fund.effective7DayYieldWoWvr;\n }\n }, {\n key: 'effective7DayYield',\n get: function get() {\n if (!this.fund.isValidYieldData) return '-';\n if (!this.fund.isAllowedInConfig) return 'N/A';\n if (this.fund.effective7DayYield) return this.fund.effective7DayYield;\n return '';\n }\n }]);\n\n return FtPpssYieldRow;\n }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'fund', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'includeSalesCharges', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'distributionRate', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'distributionRate'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showSecYieldWoWvr', [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, 'showSecYieldWoWvr'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'standardizedYield30Day', [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, 'standardizedYield30Day'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showCurrent7DayYieldWoWvr', [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, 'showCurrent7DayYieldWoWvr'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'current7DayYield', [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, 'current7DayYield'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'showEffective7DayYieldWoWvr', [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, 'showEffective7DayYieldWoWvr'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'effective7DayYield', [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, 'effective7DayYield'), _class.prototype)), _class));\n});\r\ndefine('components/products/ppss/ft-ppss-yield/ft-ppss-yield',['exports', '../ft-ppss-table-base', 'aurelia-framework'], function (exports, _ftPpssTableBase, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPpssYield = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10;\n\n var FtPpssYield = exports.FtPpssYield = (_dec = (0, _aureliaFramework.computedFrom)('funds', 'label'), _dec2 = (0, _aureliaFramework.computedFrom)('moneyFunds', 'otherFunds'), _dec3 = (0, _aureliaFramework.computedFrom)('hasOnlyMoneyFunds', 'includeSalesCharges', 'label'), _dec4 = (0, _aureliaFramework.computedFrom)('hasOnlyMoneyFunds', 'label'), _dec5 = (0, _aureliaFramework.computedFrom)('config'), (_class = function (_FtPpssTableBase) {\n _inherits(FtPpssYield, _FtPpssTableBase);\n\n function FtPpssYield() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPpssYield);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtPpssTableBase.call.apply(_FtPpssTableBase, [this].concat(args))), _this), _initDefineProp(_this, 'user', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _initDefineProp(_this, 'config', _descriptor3, _this), _initDefineProp(_this, 'filters', _descriptor4, _this), _initDefineProp(_this, 'funds', _descriptor5, _this), _initDefineProp(_this, 'sort', _descriptor6, _this), _initDefineProp(_this, 'distRateNavAsOfDate', _descriptor7, _this), _initDefineProp(_this, 'standardYieldAsOfDate', _descriptor8, _this), _initDefineProp(_this, 'standardYieldAsOfDateMoneyFund', _descriptor9, _this), _initDefineProp(_this, 'includeSalesCharges', _descriptor10, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtPpssYield, [{\n key: 'resultsNumberMessage',\n get: function get() {\n return this.funds && this.label && this.label.get('yield-nb-fund-displayed') ? this.getLabel('yield-nb-fund-displayed').replace('<span data-view=\"x-funds-yield-and-price\">0</span>', this.funds.length) : '';\n }\n }, {\n key: 'hasOnlyMoneyFunds',\n get: function get() {\n return this.moneyFunds && this.otherFunds && this.moneyFunds.length && this.otherFunds.length < 1;\n }\n }, {\n key: 'distributionRateColumnTitle',\n get: function get() {\n if (this.hasOnlyMoneyFunds) {\n return this.getLabel('7-day-current-yield');\n }\n if (this.includeSalesCharges) {\n return this.getLabel('distribution-rate') + ' ' + this.getLabel('pop');\n }\n return this.getLabel('distribution-rate') + ' ' + this.getLabel('nav');\n }\n }, {\n key: 'secYieldColumnTitle',\n get: function get() {\n if (this.hasOnlyMoneyFunds) {\n return this.getLabel('7-day-effective-yield');\n }\n return this.getLabel('30-days-stand-yield');\n }\n }, {\n key: 'moneyFundHeaderColspan',\n get: function get() {\n return this.config.showFavorites ? 10 : 9;\n }\n }]);\n\n return FtPpssYield;\n }(_ftPpssTableBase.FtPpssTableBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'user', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'config', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'filters', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, 'funds', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, 'sort', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, 'distRateNavAsOfDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, 'standardYieldAsOfDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, 'standardYieldAsOfDateMoneyFund', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, 'includeSalesCharges', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'resultsNumberMessage', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'resultsNumberMessage'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'hasOnlyMoneyFunds', [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, 'hasOnlyMoneyFunds'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'distributionRateColumnTitle', [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, 'distributionRateColumnTitle'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'secYieldColumnTitle', [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, 'secYieldColumnTitle'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'moneyFundHeaderColspan', [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, 'moneyFundHeaderColspan'), _class.prototype)), _class));\n});\r\ndefine('components/products/pricing-distribution/ft-dividends/ft-dividends',['exports', 'aurelia-framework', '../../../../lib/component-base'], function (exports, _aureliaFramework, _componentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDividends = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _desc, _value, _class, _descriptor, _descriptor2;\n\n var FtDividends = exports.FtDividends = (_dec = (0, _aureliaFramework.computedFrom)('shareClass'), (_class = function (_ComponentBase) {\n _inherits(FtDividends, _ComponentBase);\n\n function FtDividends() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtDividends);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ComponentBase.call.apply(_ComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'shareClass', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtDividends, [{\n key: 'showShareClassColumn',\n get: function get() {\n return this.shareClass.className;\n }\n }]);\n\n return FtDividends;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'showShareClassColumn', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'showShareClassColumn'), _class.prototype)), _class));\n});\r\ndefine('components/products/pricing-distribution/ft-dividends-historical/ft-dividends-historical',['exports', 'aurelia-framework', '../../../../lib/component-base', '../../../../lib/paging-utils', 'lodash/last', 'lodash/first', 'moment'], function (exports, _aureliaFramework, _componentBase, _pagingUtils, _last, _first, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDividendsHistorical = undefined;\n\n var _last2 = _interopRequireDefault(_last);\n\n var _first2 = _interopRequireDefault(_first);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _class3, _temp;\n\n var FtDividendsHistorical = exports.FtDividendsHistorical = (_dec = (0, _aureliaFramework.inject)('Store'), _dec2 = (0, _aureliaFramework.computedFrom)('shareClass'), _dec3 = (0, _aureliaFramework.computedFrom)('shareClass', 'selectedYear'), _dec4 = (0, _aureliaFramework.computedFrom)('historicalDividends', 'pageSize', 'currentPageNumber'), _dec5 = (0, _aureliaFramework.computedFrom)('historicalDividends', 'pagingInfo'), _dec6 = (0, _aureliaFramework.computedFrom)('historicalDividends'), _dec7 = (0, _aureliaFramework.computedFrom)('historicalDividends'), _dec8 = (0, _aureliaFramework.computedFrom)('historicalDividends', 'selectedYear'), _dec9 = (0, _aureliaFramework.computedFrom)('historicalDividends', 'selectedYear'), _dec10 = (0, _aureliaFramework.computedFrom)('selectedYear'), _dec(_class = (_class2 = (_temp = _class3 = function (_ComponentBase) {\n _inherits(FtDividendsHistorical, _ComponentBase);\n\n function FtDividendsHistorical(store) {\n _classCallCheck(this, FtDividendsHistorical);\n\n var _this = _possibleConstructorReturn(this, _ComponentBase.call(this));\n\n _initDefineProp(_this, 'shareClass', _descriptor, _this);\n\n _initDefineProp(_this, 'label', _descriptor2, _this);\n\n _initDefineProp(_this, 'pageSize', _descriptor3, _this);\n\n _this.accordionOpen = false;\n\n _initDefineProp(_this, 'selectedYear', _descriptor4, _this);\n\n _initDefineProp(_this, 'currentPageNumber', _descriptor5, _this);\n\n _this.path = store.getState().general.path;\n _this.selectedYear = null;\n _this.currentPageNumber = 1;\n\n _this.uniqueId = 'dividend-historical-' + FtDividendsHistorical.componentCount++;\n return _this;\n }\n\n FtDividendsHistorical.prototype.selectedYearChanged = function selectedYearChanged() {\n this.currentPageNumber = 1;\n };\n\n FtDividendsHistorical.prototype.toggleAccordion = function toggleAccordion() {\n this.accordionOpen = !this.accordionOpen;\n };\n\n FtDividendsHistorical.prototype.goToPage = function goToPage(page) {\n this.currentPageNumber = page;\n };\n\n _createClass(FtDividendsHistorical, [{\n key: 'isPopulated',\n get: function get() {\n return this.shareClass && this.shareClass.dividendHistory.length !== 0;\n }\n }, {\n key: 'historicalDividends',\n get: function get() {\n if (!this.shareClass.dividendYears || this.shareClass.dividendYears.length === 0) {\n return [];\n }\n if (!this.selectedYear) {\n this.selectedYear = (0, _first2.default)(this.shareClass.dividendYears);\n }\n if (this.selectedYear === 'sinceInception') {\n return this.shareClass.dividendHistory;\n }\n return this.shareClass.dividendHistoryByYear[this.selectedYear] ? this.shareClass.dividendHistoryByYear[this.selectedYear] : [];\n }\n }, {\n key: 'pagingInfo',\n get: function get() {\n return (0, _pagingUtils.getPagingInfo)(this.historicalDividends.length, this.pageSize, this.currentPageNumber);\n }\n }, {\n key: 'paginatedHistoricalDividends',\n get: function get() {\n if (this.pageSize > this.historicalDividends.length) {\n return this.historicalDividends;\n }\n return this.historicalDividends.slice(this.pagingInfo.currentPage.startRecord - 1, this.pagingInfo.currentPage.endRecord);\n }\n }, {\n key: 'firstHistoricalDividend',\n get: function get() {\n return (0, _last2.default)(this.historicalDividends);\n }\n }, {\n key: 'lastHistoricalDividend',\n get: function get() {\n return (0, _first2.default)(this.historicalDividends);\n }\n }, {\n key: 'historicalStartDate',\n get: function get() {\n var firstYear = (0, _last2.default)(this.shareClass.dividendYears);\n if (this.selectedYear === firstYear || this.selectedYear === 'sinceInception') {\n return this.shareClass.shareClassInceptionDate;\n }\n return (0, _moment2.default)(this.selectedYear + '-01-01', 'YYYY-MM-DD').format('L');\n }\n }, {\n key: 'historicalEndDate',\n get: function get() {\n var lastYear = (0, _first2.default)(this.shareClass.dividendYears);\n if (this.selectedYear === lastYear || this.selectedYear === 'sinceInception') {\n return (0, _moment2.default)().format('L');\n }\n return (0, _moment2.default)(this.selectedYear + '-12-31', 'YYYY-MM-DD').format('L');\n }\n }, {\n key: 'downloadUrl',\n get: function get() {\n var downloadParams = {};\n downloadParams.year = this.selectedYear;\n downloadParams.gwbid = 'gw.distribution-history';\n downloadParams.dividendFrom = this.historicalStartDate;\n downloadParams.dividendTo = this.historicalEndDate;\n\n if (this.shareClass.shareClassCode) {\n downloadParams.ShareClass = this.shareClass.shareClassCode;\n }\n var query = [];\n for (var key in downloadParams) {\n if (downloadParams.hasOwnProperty(key)) {\n var value = downloadParams[key];\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return this.path + '?' + query.join('&');\n }\n }]);\n\n return FtDividendsHistorical;\n }(_componentBase.ComponentBase), _class3.componentCount = 0, _temp), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'pageSize', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'selectedYear', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'currentPageNumber', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'isPopulated', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'isPopulated'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'historicalDividends', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'historicalDividends'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'pagingInfo', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'pagingInfo'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'paginatedHistoricalDividends', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'paginatedHistoricalDividends'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'firstHistoricalDividend', [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, 'firstHistoricalDividend'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'lastHistoricalDividend', [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, 'lastHistoricalDividend'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'historicalStartDate', [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, 'historicalStartDate'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'historicalEndDate', [_dec9], Object.getOwnPropertyDescriptor(_class2.prototype, 'historicalEndDate'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'downloadUrl', [_dec10], Object.getOwnPropertyDescriptor(_class2.prototype, 'downloadUrl'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/pricing-distribution/ft-nav-high-low/ft-nav-high-low',['exports', 'aurelia-framework', '../../../../lib/component-base'], function (exports, _aureliaFramework, _componentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtNavHighLow = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _desc, _value, _class, _descriptor, _descriptor2, _descriptor3;\n\n var FtNavHighLow = exports.FtNavHighLow = (_dec = (0, _aureliaFramework.computedFrom)('shareClass'), (_class = function (_ComponentBase) {\n _inherits(FtNavHighLow, _ComponentBase);\n\n function FtNavHighLow() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtNavHighLow);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ComponentBase.call.apply(_ComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'label', _descriptor, _this), _initDefineProp(_this, 'showHighLowOnDate', _descriptor2, _this), _initDefineProp(_this, 'shareClass', _descriptor3, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtNavHighLow, [{\n key: 'navAsOfDate',\n get: function get() {\n return this.shareClass.asOfDate;\n }\n }]);\n\n return FtNavHighLow;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'showHighLowOnDate', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'navAsOfDate', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'navAsOfDate'), _class.prototype)), _class));\n});\r\ndefine('components/products/pricing-distribution/ft-price-chart/ft-price-chart',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../../../configuration/il8n/currency', '../../../common/elements/charting/ft-charts-configs', 'moment', 'lodash/cloneDeep', '../../../products/lib/date-utils'], function (exports, _aureliaFramework, _reduxComponentBase, _currency, _ftChartsConfigs, _moment, _cloneDeep, _dateUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPriceChart = undefined;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n\n var FtPriceChart = exports.FtPriceChart = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('shareClass'), _dec3 = (0, _aureliaFramework.computedFrom)('currencySymbol'), _dec4 = (0, _aureliaFramework.computedFrom)('navHistory', 'currencySymbol'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPriceChart, _ReduxComponentBase);\n\n function FtPriceChart(store, beans, element) {\n _classCallCheck(this, FtPriceChart);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'label', _descriptor, _this);\n\n _initDefineProp(_this, 'priceChartData', _descriptor2, _this);\n\n _initDefineProp(_this, 'shareClass', _descriptor3, _this);\n\n _initDefineProp(_this, 'dateRangeOptions', _descriptor4, _this);\n\n _this.selectedDateRange = '';\n\n _initDefineProp(_this, 'datePickerFromOpts', _descriptor5, _this);\n\n _initDefineProp(_this, 'datePickerToOpts', _descriptor6, _this);\n\n _initDefineProp(_this, 'navHistory', _descriptor7, _this);\n\n _initDefineProp(_this, 'fromDate', _descriptor8, _this);\n\n _initDefineProp(_this, 'toDate', _descriptor9, _this);\n\n _this.defaultChartOptions = {\n xAxis: {\n type: 'datetime',\n\n dateTimeLabelFormats: {\n millisecond: '%e. %b',\n second: '%e. %b',\n minute: '%e. %b',\n hour: '%e. %b'\n }\n },\n yAxis: [],\n legend: {\n enabled: true,\n verticalAlign: 'bottom'\n },\n tooltip: {\n shared: true,\n useHTML: true,\n\n xDateFormat: (0, _dateUtils.getHighchartsLocaleFormat)()\n },\n plotOptions: {\n series: {\n fillOpacity: 0,\n marker: {\n enabled: false\n }\n },\n line: {\n marker: {\n enabled: false\n }\n }\n }\n };\n return _this;\n }\n\n FtPriceChart.prototype.priceChartDataChanged = function priceChartDataChanged(priceChartData) {\n if (!this.priceChartData.init) {\n this.setDateRange(this.priceChartData.selectedDateRange);\n return;\n }\n this.fromDate = priceChartData.fromDate;\n this.toDate = priceChartData.toDate;\n this.selectedDateRange = priceChartData.selectedDateRange;\n this.navHistory = priceChartData.navHistory;\n this.datePickerFromOpts = priceChartData.datePickerFromOpts;\n this.datePickerToOpts = priceChartData.datePickerToOpts;\n };\n\n FtPriceChart.prototype.fromDateChanged = function fromDateChanged(value) {\n if (value !== this.priceChartData.fromDate) {\n this._customDateRange();\n }\n };\n\n FtPriceChart.prototype.toDateChanged = function toDateChanged(value) {\n if (value !== this.priceChartData.toDate) {\n this._customDateRange();\n }\n };\n\n FtPriceChart.prototype.getOptionClass = function getOptionClass(opt) {\n var classes = [];\n if (opt.name === this.selectedDateRange) {\n classes.push('active');\n }\n if (opt.disabled) {\n classes.push('disabled');\n }\n return classes.join(' ');\n };\n\n FtPriceChart.prototype.setDateRange = function setDateRange(dateRange) {\n this.dispatch({\n type: 'PRICING_DISTRIBUTION_SET_RANGE',\n data: {\n store: 'priceChart',\n shareClass: this.shareClass,\n dateRange: dateRange\n }\n });\n return true;\n };\n\n FtPriceChart.prototype._customDateRange = function _customDateRange() {\n this.dispatch({\n type: 'PRICING_DISTRIBUTION_SET_CUSTOM_DATES',\n data: {\n store: 'priceChart',\n shareClass: this.shareClass,\n fromDate: this.fromDate,\n toDate: this.toDate\n }\n });\n };\n\n _createClass(FtPriceChart, [{\n key: 'currencySymbol',\n get: function get() {\n return _currency.symbols.get(this.shareClass.currency);\n }\n }, {\n key: 'navChartOptions',\n get: function get() {\n var navChartOpt = (0, _cloneDeep2.default)(this.defaultChartOptions);\n navChartOpt.yAxis[0] = {\n labels: {\n format: this.currencySymbol + '{value}'\n },\n title: {\n text: null\n },\n minorTickInterval: 'auto'\n };\n return navChartOpt;\n }\n }, {\n key: 'navChartSeries',\n get: function get() {\n var colors = (0, _ftChartsConfigs.ftChartsColors)();\n var navValues = [];\n if (this.navHistory) {\n var navHistoryLength = this.navHistory.length - 1;\n for (var c = navHistoryLength; c >= 0; c--) {\n var navPoint = this.navHistory[c];\n var ts = (0, _moment2.default)(navPoint.navDate, 'YYYY-MM-DD').valueOf();\n\n ts += 12 * 60 * 60 * 1000;\n var navValue = parseFloat(navPoint.nav);\n navValues.push([ts, navValue]);\n }\n }\n var that = this;\n return [{\n name: this.getLabel('nav'),\n type: 'line',\n min: 0,\n tooltip: {\n pointFormatter: function pointFormatter() {\n var navHistoryLength = that.navHistory.length - 1;\n var baseLineNav = parseFloat(that.navHistory[navHistoryLength].nav);\n var navValue = parseFloat(this.y);\n var navChangePercentSinceStart = parseFloat(((navValue / baseLineNav - 1) * 100).toFixed(2));\n var percentageColour = navChangePercentSinceStart < 0 ? '#cb0000' : '#000';\n return '<span style=\\'font-size:14px;color:' + this.series.color + '\\'>\\u25CF</span>\\n <span>' + this.series.name + ': </span>\\n <b>' + that.currencySymbol + Highcharts.numberFormat(navValue) + ' </b>\\n <br/>\\n <span style=\\'font-size:14px;color:rgba(0,0,0,0)\\'>\\u25CF</span>\\n <span>' + that.getLabel('nav-change-percent') + ': </span>\\n <b style=\\'color:' + percentageColour + '\\'>' + Highcharts.numberFormat(navChangePercentSinceStart) + '%</b>';\n }\n },\n data: navValues,\n color: colors[0]\n }];\n }\n }]);\n\n return FtPriceChart;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'priceChartData', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'dateRangeOptions', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'datePickerFromOpts', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'datePickerToOpts', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'navHistory', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, 'fromDate', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, 'toDate', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'currencySymbol', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'currencySymbol'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'navChartOptions', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'navChartOptions'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'navChartSeries', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'navChartSeries'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/pricing-distribution/ft-price-historical/ft-price-historical',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../../../lib/paging-utils', 'lodash/minBy', 'lodash/maxBy', 'lodash/first', 'lodash/last', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _pagingUtils, _minBy, _maxBy, _first, _last, _get2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPriceHistorical = undefined;\n\n var _minBy2 = _interopRequireDefault(_minBy);\n\n var _maxBy2 = _interopRequireDefault(_maxBy);\n\n var _first2 = _interopRequireDefault(_first);\n\n var _last2 = _interopRequireDefault(_last);\n\n var _get3 = _interopRequireDefault(_get2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _class3, _temp;\n\n var FtPriceHistorical = exports.FtPriceHistorical = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('shareClass', 'pdData'), _dec3 = (0, _aureliaFramework.computedFrom)('pdData'), _dec4 = (0, _aureliaFramework.computedFrom)('pdData'), _dec5 = (0, _aureliaFramework.computedFrom)('pdData'), _dec6 = (0, _aureliaFramework.computedFrom)('pdData', 'currentPageNumber'), _dec7 = (0, _aureliaFramework.computedFrom)('pdData', 'pagingInfo'), _dec8 = (0, _aureliaFramework.computedFrom)('pdData'), _dec9 = (0, _aureliaFramework.computedFrom)('pdData'), _dec10 = (0, _aureliaFramework.computedFrom)('pdData'), _dec11 = (0, _aureliaFramework.computedFrom)('pdData'), _dec12 = (0, _aureliaFramework.computedFrom)('pdData'), _dec(_class = (_class2 = (_temp = _class3 = function (_ReduxComponentBase) {\n _inherits(FtPriceHistorical, _ReduxComponentBase);\n\n function FtPriceHistorical(store, beans, element) {\n _classCallCheck(this, FtPriceHistorical);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'dateRangeOptions', _descriptor, _this);\n\n _initDefineProp(_this, 'datePickerFromOpts', _descriptor2, _this);\n\n _initDefineProp(_this, 'datePickerToOpts', _descriptor3, _this);\n\n _initDefineProp(_this, 'label', _descriptor4, _this);\n\n _initDefineProp(_this, 'pdData', _descriptor5, _this);\n\n _initDefineProp(_this, 'shareClass', _descriptor6, _this);\n\n _this.accordionOpen = false;\n\n _this.path = store.getState().general.path;\n _this.currentPageNumber = 1;\n\n _this.uniqueId = 'pricing-historical-' + FtPriceHistorical.componentCount++;\n return _this;\n }\n\n FtPriceHistorical.prototype.priceChartDataChanged = function priceChartDataChanged(pdData) {\n if (!this.pdData.priceTable.init) {\n this.setDateRange(this.pdData.priceTable.selectedDateRange);\n }\n };\n\n FtPriceHistorical.prototype.setDateRange = function setDateRange(dateRange) {\n this.dispatch({\n type: 'PRICING_DISTRIBUTION_SET_RANGE',\n data: {\n store: 'priceTable',\n shareClass: this.shareClass,\n dateRange: dateRange\n }\n });\n\n this.currentPageNumber = 1;\n return true;\n };\n\n FtPriceHistorical.prototype._customDateRange = function _customDateRange(fromDate, toDate) {\n this.dispatch({\n type: 'PRICING_DISTRIBUTION_SET_CUSTOM_DATES',\n data: {\n store: 'priceTable',\n shareClass: this.shareClass,\n fromDate: fromDate,\n toDate: toDate\n }\n });\n\n this.currentPageNumber = 1;\n };\n\n FtPriceHistorical.prototype.getOptionClass = function getOptionClass(opt) {\n var classes = [];\n if (opt.name === this.selectedDateRange) {\n classes.push('active');\n }\n if (opt.disabled) {\n classes.push('disabled');\n }\n return classes.join(' ');\n };\n\n FtPriceHistorical.prototype.goToPage = function goToPage(page) {\n this.currentPageNumber = page;\n };\n\n FtPriceHistorical.prototype.toggleAccordion = function toggleAccordion() {\n this.accordionOpen = !this.accordionOpen;\n };\n\n _createClass(FtPriceHistorical, [{\n key: 'isPopulated',\n get: function get() {\n var priceTableHasData = (0, _get3.default)(this.pdData, 'priceTable.navHistory', false);\n var shareClassHasData = this.shareClass && this.shareClass.navHistory.length !== 0;\n return !!(priceTableHasData && shareClassHasData);\n }\n }, {\n key: 'fromDate',\n get: function get() {\n return this.pdData.priceTable.fromDate;\n },\n set: function set(value) {\n if (value !== this.pdData.priceTable.fromDate) {\n this._customDateRange(value, this.pdData.priceTable.toDate);\n }\n }\n }, {\n key: 'toDate',\n get: function get() {\n return this.pdData.priceTable.toDate;\n },\n set: function set(value) {\n if (value !== this.pdData.priceTable.toDate) {\n this._customDateRange(this.pdData.priceTable.fromDate, value);\n }\n }\n }, {\n key: 'selectedDateRange',\n get: function get() {\n return this.pdData.priceTable.selectedDateRange;\n }\n }, {\n key: 'pagingInfo',\n get: function get() {\n return (0, _pagingUtils.getPagingInfo)(this.pdData.priceTable.navHistory.length, this.pdData.paging.pageSize, this.currentPageNumber);\n }\n }, {\n key: 'paginatedNavResults',\n get: function get() {\n if (this.pdData.paging.pageSize > this.pdData.priceTable.navHistory.length) {\n return this.pdData.priceTable.navHistory;\n }\n if (!this.pagingInfo.currentPage) {\n return [];\n }\n return this.pdData.priceTable.navHistory.slice(this.pagingInfo.currentPage.startRecord - 1, this.pagingInfo.currentPage.endRecord);\n }\n }, {\n key: 'firstNavPoint',\n get: function get() {\n return (0, _last2.default)(this.pdData.priceTable.navHistory);\n }\n }, {\n key: 'lastNavPoint',\n get: function get() {\n return (0, _first2.default)(this.pdData.priceTable.navHistory);\n }\n }, {\n key: 'highestNavPoint',\n get: function get() {\n return (0, _maxBy2.default)(this.pdData.priceTable.navHistory, function (navPoint) {\n return navPoint.nav * 1;\n });\n }\n }, {\n key: 'lowestNavPoint',\n get: function get() {\n return (0, _minBy2.default)(this.pdData.priceTable.navHistory, function (navPoint) {\n return navPoint.nav * 1;\n });\n }\n }, {\n key: 'downloadUrl',\n get: function get() {\n var downloadParams = {};\n if (this.selectedDateRange && this.selectedDateRange !== 'CUSTOM_RANGE' && this.pdData.priceTable.selectedDateRangeObj) {\n downloadParams.dateRange = this.pdData.priceTable.selectedDateRangeObj.downloadKey;\n } else {\n downloadParams.fromDate = this.pdData.priceTable.fromDate;\n downloadParams.toDate = this.pdData.priceTable.toDate;\n }\n downloadParams.gwbid = 'gw.price-history';\n var query = [];\n for (var key in downloadParams) {\n if (downloadParams.hasOwnProperty(key)) {\n var value = downloadParams[key];\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return this.path + '?' + query.join('&');\n }\n }]);\n\n return FtPriceHistorical;\n }(_reduxComponentBase.ReduxComponentBase), _class3.componentCount = 0, _temp), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'dateRangeOptions', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'datePickerFromOpts', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'datePickerToOpts', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'pdData', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return {};\n }\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'isPopulated', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'isPopulated'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'fromDate', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'fromDate'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'toDate', [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, 'toDate'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'selectedDateRange', [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, 'selectedDateRange'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'pagingInfo', [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, 'pagingInfo'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'paginatedNavResults', [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, 'paginatedNavResults'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'firstNavPoint', [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, 'firstNavPoint'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'lastNavPoint', [_dec9], Object.getOwnPropertyDescriptor(_class2.prototype, 'lastNavPoint'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'highestNavPoint', [_dec10], Object.getOwnPropertyDescriptor(_class2.prototype, 'highestNavPoint'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'lowestNavPoint', [_dec11], Object.getOwnPropertyDescriptor(_class2.prototype, 'lowestNavPoint'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'downloadUrl', [_dec12], Object.getOwnPropertyDescriptor(_class2.prototype, 'downloadUrl'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/pricing-distribution/ft-pricing-distribution/ft-pricing-distribution',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../lib/map-state-utils', './lib/pricing-distribution.reducer', './lib/utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _pricingDistribution, _utils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPricingDistribution = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtPricingDistribution = exports.FtPricingDistribution = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtPricingDistribution, _ReduxComponentBase);\n\n function FtPricingDistribution(store, beans, element) {\n _classCallCheck(this, FtPricingDistribution);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'shareClassCode', _descriptor, _this);\n\n _this.isPopulated = false;\n _this.hasErrors = false;\n\n _this.store = store;\n _this.beans = beans;\n _this.portfolioBeans = beans.component.pricingDistribution;\n _this.fundId = element.getAttribute('fund-id');\n var state = _this.store.getState();\n _this.segment = (0, _get2.default)(state, 'general.segment');\n _this.shareClassCode = (0, _get2.default)(state, 'products.app.currentShareClass', false);\n _this.dispatch({\n type: 'POPULATE_PRICING_DISTRIBUTION',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n shareClassCode: _this.shareClassCode,\n segment: _this.segment\n });\n return _this;\n }\n\n FtPricingDistribution.prototype.shareClassCodeChanged = function shareClassCodeChanged(shareClassCode) {\n this.logger.debug('shareClassCodeChanged()!!!', shareClassCode);\n\n if (this.beans.component.distributionHistory) {\n this.dispatch({\n type: 'POPULATE_DISTRIBUTION_HISTORY',\n beans: this.beans.component.distributionHistory,\n fundId: this.fundId,\n shareClassCode: this.shareClassCode,\n segment: this.segment\n });\n }\n if (this.beans.component.priceHistory) {\n this.dispatch({\n type: 'POPULATE_PRICE_HISTORY',\n beans: this.beans.component.priceHistory,\n fundId: this.fundId,\n shareClassCode: this.shareClassCode,\n segment: this.segment,\n fromDate: '2017-01-01',\n toDate: '2017-09-25'\n });\n }\n };\n\n FtPricingDistribution.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()', newState);\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!newState.products.app.pricingDistribution || !this.label || !fundState || !fundState.pricingDistribution) {\n this.isPopulated = false;\n return;\n }\n\n this.shareClassCode = newState.products.app.currentShareClass;\n\n this.currentShareClass = (0, _utils.getCurrentShareClass)(fundState.pricingDistribution, this.shareClassCode);\n\n this.historicalDividendsLoading = newState.products.app.pricingDistribution.historicalDistributions.loading;\n\n if (fundState.pricingDistribution.error || !this.currentShareClass) {\n this.isPopulated = false;\n this.hasErrors = true;\n return;\n }\n\n this.pdData = newState.products.app.pricingDistribution;\n this.pageSize = this.pdData.paging.pageSize;\n this.showHighLowOnDate = this.pdData.showHighLowOnDate;\n this.dateRangeOptions = this.createPopulatedDateOptions(this.currentShareClass);\n\n var priceChartInitialised = (0, _get2.default)(this.pdData, 'priceChart.init');\n var priceChartSelectedDateRange = (0, _get2.default)(this.pdData, 'priceChart.selectedDateRange');\n if (!priceChartInitialised && priceChartSelectedDateRange) {\n this.dispatch({\n type: 'PRICING_DISTRIBUTION_SET_RANGE',\n data: {\n store: 'priceChart',\n shareClass: this.currentShareClass,\n dateRange: priceChartSelectedDateRange\n }\n });\n }\n var priceTableInitialised = (0, _get2.default)(this.pdData, 'priceTable.init');\n var priceTableSelectedDateRange = (0, _get2.default)(this.pdData, 'priceTable.selectedDateRange');\n if (!priceTableInitialised && priceTableSelectedDateRange) {\n this.dispatch({\n type: 'PRICING_DISTRIBUTION_SET_RANGE',\n data: {\n store: 'priceTable',\n shareClass: this.currentShareClass,\n dateRange: priceTableSelectedDateRange\n }\n });\n }\n\n this.isPopulated = true;\n this.hasErrors = false;\n } catch (e) {\n this.isPopulated = false;\n this.hasErrors = true;\n this.logger.error('mapState() ERR:', e);\n }\n };\n\n FtPricingDistribution.prototype.createPopulatedDateOptions = function createPopulatedDateOptions(currentShareClass) {\n return Object.values(_pricingDistribution.DATE_RANGE_ENUM).map(function (dateRangeOption) {\n var navHist = currentShareClass[dateRangeOption.dataKey];\n var newOpt = Object.assign({}, dateRangeOption);\n newOpt.disabled = !navHist;\n return newOpt;\n });\n };\n\n return FtPricingDistribution;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassCode', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/pricing-distribution/ft-share-prices/ft-share-prices',['exports', 'aurelia-framework', '../../../../lib/component-base', '../../lib/reducer-utils'], function (exports, _aureliaFramework, _componentBase, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtSharePrices = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _desc, _value, _class, _descriptor, _descriptor2;\n\n var FtSharePrices = exports.FtSharePrices = (_dec = (0, _aureliaFramework.computedFrom)('shareClass'), (_class = function (_ComponentBase) {\n _inherits(FtSharePrices, _ComponentBase);\n\n function FtSharePrices() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtSharePrices);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ComponentBase.call.apply(_ComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'label', _descriptor, _this), _initDefineProp(_this, 'shareClass', _descriptor2, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FtSharePrices, [{\n key: 'navChangeClass',\n get: function get() {\n return (0, _reducerUtils.navChangeClass)(this.shareClass.navChangeDirection);\n }\n }]);\n\n return FtSharePrices;\n }(_componentBase.ComponentBase), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'shareClass', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class.prototype, 'navChangeClass', [_dec], Object.getOwnPropertyDescriptor(_class.prototype, 'navChangeClass'), _class.prototype)), _class));\n});\r\ndefine('components/products/tax/ft-german-tax/ft-german-tax',['exports', 'aurelia-framework', '../../../../lib/redux-component-base', '../../../../lib/sort-utils', 'lodash/groupBy', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _sortUtils, _groupBy, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGermanTax = undefined;\n\n var _groupBy2 = _interopRequireDefault(_groupBy);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2;\n\n var FtGermanTax = exports.FtGermanTax = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('shareClasses'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtGermanTax, _ReduxComponentBase);\n\n function FtGermanTax(store, beans, element) {\n _classCallCheck(this, FtGermanTax);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n _this.showFilterForm = true;\n\n _this.cid = element.getAttribute('cid');\n var taxBeans = beans.component.tax;\n if (_this.cid) {\n taxBeans.push(_this.cid);\n }\n _this.dispatch({\n type: 'POPULATE_GERMAN_TAX',\n beans: taxBeans,\n params: store.getState().general.params,\n cid: _this.cid\n });\n return _this;\n }\n\n FtGermanTax.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('German Tax mapState()');\n var taxAppState = newState.products.app.tax;\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label) {\n this.populated = false;\n return;\n }\n\n this.config = taxAppState.config;\n this.filters = this._createFilterConfig(taxAppState.filters, newState.products.tax.filterOptions);\n this.showFilterForm = this.filters.dropdowns.some(function (filter) {\n return filter.visible;\n });\n this.sort = taxAppState.sort;\n this.shareClasses = newState.products.tax.shareClasses.filter(this._createFilterFunction(this.filters)).sort(this._createSortFunction(this.sort));\n\n this.ivColspan = 3;\n if (this.config.showTaId) {\n this.ivColspan++;\n }\n if (this.config.showIsin) {\n this.ivColspan++;\n }\n if (this.config.showTaxColumns) {\n this.ivColspan = this.ivColspan + 5;\n }\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n FtGermanTax.prototype.changeSort = function changeSort(name) {\n this.dispatch({\n type: 'TAX_CHANGE_SORT',\n columnName: name\n });\n };\n\n FtGermanTax.prototype.changeFilter = function changeFilter(filterName, selectedOption) {\n this.dispatch({\n type: 'TAX_CHANGE_DROPDOWN',\n name: filterName,\n newValue: selectedOption\n });\n };\n\n FtGermanTax.prototype._createFilterConfig = function _createFilterConfig(filters, filterOptions) {\n var dropdowns = filters.dropdowns.map(function (filter) {\n if (filterOptions[filter.name]) {\n filter.options = filterOptions[filter.name];\n }\n return filter;\n });\n return Object.assign(filters, { dropdowns: dropdowns });\n };\n\n FtGermanTax.prototype._createSortFunction = function _createSortFunction(sort) {\n var sortColumn = Array.from(sort.columns.values()).find(function (col) {\n return col.direction;\n });\n this.logger.debug('sortColumn', sortColumn);\n var secondaryCompare = sort.secondary ? (0, _sortUtils.createCompare)(sort.secondary.dataKey, sort.secondary.direction, { isNumeric: sort.secondary.isNumeric, isDate: sort.secondary.isDate }) : null;\n return (0, _sortUtils.createCompare)(sortColumn.dataKey, sortColumn.direction, { secondaryCompare: secondaryCompare, isNumeric: sortColumn.isNumeric, isDate: sortColumn.isDate });\n };\n\n FtGermanTax.prototype._createFilterFunction = function _createFilterFunction(filters) {\n this.logger.debug('_createFilterFunction:::', filters);\n\n var activeDropdowns = filters.dropdowns.filter(function (d) {\n return d.selected.value && d.selected.value.toString().toUpperCase() !== 'ALL';\n });\n\n return function (fund) {\n return activeDropdowns.reduce(function (result, dropdown) {\n return result && dropdown.selected.value === fund[dropdown.dataKey];\n }, true);\n };\n };\n\n _createClass(FtGermanTax, [{\n key: 'shareClassesByVehicle',\n get: function get() {\n var groupedShareClasses = (0, _groupBy2.default)(this.shareClasses, function (shareClass) {\n return shareClass.investmentVehicle;\n });\n return new Map(Object.keys(groupedShareClasses).sort().map(function (key) {\n return [key, groupedShareClasses[key]];\n }));\n }\n }]);\n\n return FtGermanTax;\n }(_reduxComponentBase.ReduxComponentBase), (_applyDecoratedDescriptor(_class2.prototype, 'shareClassesByVehicle', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'shareClassesByVehicle'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/common/elements/charting/ft-chart/ft-chart',['exports', 'aurelia-framework', 'lodash/merge', 'lodash/isArray', 'lodash/isObjectLike', '../ft-charts-configs'], function (exports, _aureliaFramework, _merge, _isArray2, _isObjectLike, _ftChartsConfigs) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtChart = undefined;\n\n var _merge2 = _interopRequireDefault(_merge);\n\n var _isArray3 = _interopRequireDefault(_isArray2);\n\n var _isObjectLike2 = _interopRequireDefault(_isObjectLike);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtChart = exports.FtChart = (_dec = (0, _aureliaFramework.useView)('../ft-chart.html'), _dec2 = (0, _aureliaFramework.inject)(Element), _dec(_class = _dec2(_class = (_class2 = function () {\n function FtChart(element) {\n _classCallCheck(this, FtChart);\n\n _initDefineProp(this, 'options', _descriptor, this);\n\n _initDefineProp(this, 'series', _descriptor2, this);\n\n this.additionalClasses = '';\n this.newChartOnUpdate = false;\n\n this.element = element;\n if (element.getAttribute('hide-sm') === 'true') {\n this.additionalClasses += ' ft-chart_hide-sm';\n }\n }\n\n FtChart.prototype.attached = function attached() {\n var newOpts = this.mergeOptions();\n newOpts.series = this._getSeriesAsArray();\n this.chart = Highcharts.chart(this.element, newOpts);\n\n var that = this;\n var $myTabPaneIds = [];\n $(this.element).parents('.tab-pane').each(function (o, item) {\n var tabPaneId = '#' + $(item).attr('id');\n $myTabPaneIds.push(tabPaneId);\n });\n if ($myTabPaneIds.length > 0) {\n $('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\n var currentTabPaneId = $(e.target).attr('href');\n for (var _iterator = $myTabPaneIds, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var tabPaneId = _ref;\n\n if (currentTabPaneId === tabPaneId) {\n that.updateChart();\n break;\n }\n }\n });\n }\n };\n\n FtChart.prototype.detached = function detached() {\n if (this.chart) {\n this.chart.destroy();\n }\n this.chart = null;\n };\n\n FtChart.prototype.mergeOptions = function mergeOptions() {\n var newOpts = (0, _merge2.default)({}, _ftChartsConfigs.defaultOptions, this.options);\n return newOpts;\n };\n\n FtChart.prototype.updateChart = function updateChart() {\n var newOpts = this.mergeOptions();\n var newSeriesArr = this._getSeriesAsArray();\n\n if (this.newChartOnUpdate) {\n this._recreateChart(newSeriesArr, newOpts);\n } else {\n this._mergeSeriesIntoChart(newSeriesArr, newOpts);\n }\n };\n\n FtChart.prototype._recreateChart = function _recreateChart(newSeriesArr, newOpts) {\n if (!this.chart) {\n return;\n }\n newOpts.series = newSeriesArr;\n this.chart.destroy();\n this.chart = Highcharts.chart(this.element, newOpts);\n };\n\n FtChart.prototype._mergeSeriesIntoChart = function _mergeSeriesIntoChart(newSeriesArr, newOpts) {\n var _this = this;\n\n if (!this.chart) {\n return;\n }\n this.chart.update(newOpts);\n if (this.chart.series) {\n this.chart.series.forEach(function (s) {\n if (newSeriesArr.length) {\n s.setData(newSeriesArr.shift().data);\n } else {\n s.remove();\n }\n });\n if (newSeriesArr.length) {\n newSeriesArr.forEach(function (s) {\n _this.chart.addSeries(s);\n });\n }\n }\n };\n\n FtChart.prototype.optionsChanged = function optionsChanged() {\n this.updateChart();\n };\n\n FtChart.prototype.seriesChanged = function seriesChanged() {\n this.updateChart();\n };\n\n FtChart.prototype._getSeriesAsArray = function _getSeriesAsArray() {\n if ((0, _isArray3.default)(this.series)) {\n return this.series.slice();\n } else if ((0, _isObjectLike2.default)(this.series)) {\n return [Object.assign({}, this.series)];\n }\n };\n\n return FtChart;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'options', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'series', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/common/elements/charting/ft-column-chart/ft-column-chart',['exports', 'aurelia-framework', '../ft-chart/ft-chart', '../ft-charts-configs', 'lodash/merge'], function (exports, _aureliaFramework, _ftChart, _ftChartsConfigs, _merge) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtColumnChart = undefined;\n\n var _merge2 = _interopRequireDefault(_merge);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n\n var FtColumnChart = exports.FtColumnChart = (_dec = (0, _aureliaFramework.useView)('../ft-chart.html'), _dec(_class = (_class2 = function (_FtChart) {\n _inherits(FtColumnChart, _FtChart);\n\n function FtColumnChart() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtColumnChart);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtChart.call.apply(_FtChart, [this].concat(args))), _this), _initDefineProp(_this, 'suffix', _descriptor, _this), _initDefineProp(_this, 'valPrefix', _descriptor2, _this), _initDefineProp(_this, 'type', _descriptor3, _this), _initDefineProp(_this, 'categories', _descriptor4, _this), _initDefineProp(_this, 'ytitle', _descriptor5, _this), _initDefineProp(_this, 'extraOptions', _descriptor6, _this), _initDefineProp(_this, 'series', _descriptor7, _this), _this.newChartOnUpdate = true, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtColumnChart.prototype.seriesChanged = function seriesChanged() {\n this.updateChart();\n };\n\n _createClass(FtColumnChart, [{\n key: 'options',\n get: function get() {\n var suffix = this.suffix;\n var prefix = this.valPrefix;\n var type = this.type;\n var categories = this.categories;\n var ytitle = this.ytitle;\n var ytitleEnabled = ytitle !== '' ? true : false;\n var _self = this;\n var colors = (0, _ftChartsConfigs.ftChartsColors)();\n\n var baseOptions = {\n chart: {\n colorByPoint: true,\n type: type\n },\n colors: colors,\n tooltip: {\n formatter: function formatter() {\n if (_self.series.length > 1) {\n return this.point.name + '<br />' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n return this.point.name + '<br />' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n },\n xAxis: {\n categories: categories\n },\n yAxis: {\n title: {\n enabled: ytitleEnabled,\n text: ytitle\n },\n labels: {\n useHTML: true,\n formatter: function formatter() {\n return '' + prefix + Highcharts.numberFormat(this.value, 1) + suffix;\n }\n }\n },\n legend: {\n enabled: false,\n align: 'left',\n verticalAlign: 'top',\n layout: 'horizontal',\n x: 0,\n symbolRadius: 0,\n itemHoverStyle: {\n cursor: 'default'\n }\n },\n plotOptions: {\n series: {\n events: {\n legendItemClick: function legendItemClick() {\n return false;\n }\n },\n animation: {\n duration: 2000,\n easing: 'easeIn'\n },\n dataLabels: {\n enabled: false\n }\n }\n }\n };\n\n var newOpts = (0, _merge2.default)({}, baseOptions, this.extraOptions);\n return newOpts;\n }\n }]);\n\n return FtColumnChart;\n }(_ftChart.FtChart), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'suffix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'valPrefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'type', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'categories', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'ytitle', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'extraOptions', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'series', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/charting/ft-multi-bar-chart/ft-multi-bar-chart',['exports', 'aurelia-framework', '../ft-chart/ft-chart', '../ft-charts-configs'], function (exports, _aureliaFramework, _ftChart, _ftChartsConfigs) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtMultiBarChart = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtMultiBarChart = exports.FtMultiBarChart = (_dec = (0, _aureliaFramework.useView)('../ft-chart.html'), _dec2 = (0, _aureliaFramework.computedFrom)('data', 'suffix', 'valPrefix', 'categories'), _dec(_class = (_class2 = function (_FtChart) {\n _inherits(FtMultiBarChart, _FtChart);\n\n function FtMultiBarChart() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtMultiBarChart);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtChart.call.apply(_FtChart, [this].concat(args))), _this), _initDefineProp(_this, 'data', _descriptor, _this), _initDefineProp(_this, 'suffix', _descriptor2, _this), _initDefineProp(_this, 'valPrefix', _descriptor3, _this), _initDefineProp(_this, 'categories', _descriptor4, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtMultiBarChart.prototype.dataChanged = function dataChanged() {\n this.updateChart();\n };\n\n _createClass(FtMultiBarChart, [{\n key: 'series',\n get: function get() {\n return this.data;\n }\n }, {\n key: 'options',\n get: function get() {\n var suffix = this.suffix;\n var prefix = this.valPrefix;\n var categories = this.categories;\n var _self = this;\n var colors = (0, _ftChartsConfigs.ftChartsColors)();\n\n return {\n chart: {\n colorByPoint: true,\n type: 'bar'\n },\n colors: colors,\n tooltip: {\n formatter: function formatter() {\n var _prefix = '';\n if (this.point.name) {\n _prefix = this.point.name + '<br/>';\n } else if (this.point.category) {\n _prefix = this.point.category + '<br/>';\n }\n if (_self.data.length > 1) {\n return _prefix + '<span style=\"font-size:14px;color:' + this.point.series.color + '\">' + this.point.series.name + '</span> ' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n return '' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n },\n xAxis: {\n categories: categories\n },\n yAxis: {\n title: {\n enabled: false\n },\n labels: {\n useHTML: true,\n formatter: function formatter() {\n return '' + prefix + Highcharts.numberFormat(this.value, 1) + suffix;\n }\n }\n },\n legend: {\n enabled: this.data.length > 1,\n align: 'left',\n verticalAlign: 'top',\n layout: 'horizontal',\n x: 0,\n symbolRadius: 0,\n itemHoverStyle: {\n cursor: 'default'\n }\n },\n series: _self.data[0].series,\n plotOptions: {\n series: {\n events: {\n legendItemClick: function legendItemClick() {\n return false;\n }\n },\n dataLabels: {\n enabled: false,\n align: 'left',\n inside: true,\n formatter: function formatter() {\n return this.point.name;\n },\n style: {\n color: '#000',\n fontWeight: 'normal',\n textTransform: 'uppercase',\n opacity: '1',\n textOutline: false\n }\n }\n }\n }\n };\n }\n }]);\n\n return FtMultiBarChart;\n }(_ftChart.FtChart), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'suffix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'valPrefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'categories', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _applyDecoratedDescriptor(_class2.prototype, 'series', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'series'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/common/elements/charting/ft-pie-chart/ft-pie-chart',['exports', 'aurelia-framework', '../ft-chart/ft-chart', '../ft-charts-configs'], function (exports, _aureliaFramework, _ftChart, _ftChartsConfigs) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPieChart = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtPieChart = exports.FtPieChart = (_dec = (0, _aureliaFramework.useView)('../ft-chart.html'), _dec2 = (0, _aureliaFramework.computedFrom)('data', 'seriesName', 'navDecimal', 'valPrefix'), _dec(_class = (_class2 = function (_FtChart) {\n _inherits(FtPieChart, _FtChart);\n\n function FtPieChart() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPieChart);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtChart.call.apply(_FtChart, [this].concat(args))), _this), _initDefineProp(_this, 'data', _descriptor, _this), _initDefineProp(_this, 'suffix', _descriptor2, _this), _initDefineProp(_this, 'valPrefix', _descriptor3, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPieChart.prototype.dataChanged = function dataChanged() {\n this.updateChart();\n };\n\n _createClass(FtPieChart, [{\n key: 'series',\n get: function get() {\n return this.data;\n }\n }, {\n key: 'options',\n get: function get() {\n var suffix = this.suffix;\n var prefix = this.valPrefix;\n var colors = (0, _ftChartsConfigs.ftChartsColors)();\n\n return {\n colors: colors,\n tooltip: {\n formatter: function formatter() {\n return this.point.name + '<br />' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n dataLabels: {\n enabled: false\n },\n size: 304,\n innerSize: '50%'\n }\n }\n };\n }\n }]);\n\n return FtPieChart;\n }(_ftChart.FtChart), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'suffix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'valPrefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _applyDecoratedDescriptor(_class2.prototype, 'series', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'series'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/common/elements/charting/ft-bar-chart/ft-bar-chart',['exports', 'aurelia-framework', '../ft-chart/ft-chart', '../ft-charts-configs'], function (exports, _aureliaFramework, _ftChart, _ftChartsConfigs) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtBarChart = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtBarChart = exports.FtBarChart = (_dec = (0, _aureliaFramework.useView)('../ft-chart.html'), _dec(_class = (_class2 = function (_FtChart) {\n _inherits(FtBarChart, _FtChart);\n\n function FtBarChart() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtBarChart);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtChart.call.apply(_FtChart, [this].concat(args))), _this), _initDefineProp(_this, 'suffix', _descriptor, _this), _initDefineProp(_this, 'valPrefix', _descriptor2, _this), _initDefineProp(_this, 'altlabel', _descriptor3, _this), _initDefineProp(_this, 'series', _descriptor4, _this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtBarChart.prototype.seriesChanged = function seriesChanged() {\n this.updateChart();\n };\n\n _createClass(FtBarChart, [{\n key: 'options',\n get: function get() {\n var suffix = this.suffix;\n var prefix = this.valPrefix;\n var _self = this;\n var altlabel = !(this.altlabel === '' || this.altlabel === 'false');\n var colors = (0, _ftChartsConfigs.ftChartsColors)();\n\n return {\n chart: {\n colorByPoint: true,\n type: 'bar'\n },\n colors: colors,\n tooltip: {\n formatter: function formatter() {\n if (_self.series.length > 1) {\n return this.point.name + '<br /><span style=\"font-size:14px;color:' + this.point.series.color + '\">' + this.point.series.name + '</span>' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n return this.point.name + '<br />' + prefix + Highcharts.numberFormat(this.point.y, 2) + suffix;\n }\n },\n xAxis: {\n type: 'category',\n labels: {\n enabled: !altlabel\n }\n },\n yAxis: {\n title: {\n enabled: false\n },\n labels: {\n useHTML: true,\n formatter: function formatter() {\n return '' + prefix + Highcharts.numberFormat(this.value, 1) + suffix;\n }\n }\n },\n legend: {\n enabled: this.series.length > 1,\n align: 'left',\n verticalAlign: 'top',\n layout: 'horizontal',\n x: 0,\n symbolRadius: 0,\n itemHoverStyle: {\n cursor: 'default'\n }\n },\n plotOptions: {\n series: {\n events: {\n legendItemClick: function legendItemClick() {\n return false;\n }\n },\n dataLabels: {\n enabled: altlabel,\n align: 'left',\n inside: true,\n formatter: function formatter() {\n return this.point.name;\n },\n style: {\n color: '#000',\n fontWeight: 'normal',\n textTransform: 'uppercase',\n opacity: '1',\n textOutline: false\n }\n }\n }\n }\n };\n }\n }]);\n\n return FtBarChart;\n }(_ftChart.FtChart), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'suffix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'valPrefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'altlabel', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'series', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/common/elements/charting/ft-performance-cumulative-chart/ft-performance-cumulative-chart',['exports', 'aurelia-framework', '../ft-chart/ft-chart', 'lodash/merge', '../ft-charts-configs'], function (exports, _aureliaFramework, _ftChart, _merge, _ftChartsConfigs) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPerformanceCumulativeChart = undefined;\n\n var _merge2 = _interopRequireDefault(_merge);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n\n var FtPerformanceCumulativeChart = exports.FtPerformanceCumulativeChart = (_dec = (0, _aureliaFramework.useView)('../ft-chart.html'), _dec2 = (0, _aureliaFramework.computedFrom)('data', 'navDecimal', 'valPrefix', 'graphNames'), _dec(_class = (_class2 = function (_FtChart) {\n _inherits(FtPerformanceCumulativeChart, _FtChart);\n\n function FtPerformanceCumulativeChart() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtPerformanceCumulativeChart);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _FtChart.call.apply(_FtChart, [this].concat(args))), _this), _initDefineProp(_this, 'options', _descriptor, _this), _initDefineProp(_this, 'data', _descriptor2, _this), _initDefineProp(_this, 'navDecimal', _descriptor3, _this), _initDefineProp(_this, 'valPrefix', _descriptor4, _this), _initDefineProp(_this, 'graphNames', _descriptor5, _this), _this.newChartOnUpdate = true, _this.perfCumChartOptions = {\n xAxis: {\n type: 'datetime'\n },\n yAxis: {\n labels: {\n format: '{value:.0f}'\n },\n title: ''\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n series: {\n color: '#005598',\n fillOpacity: 0,\n marker: {\n enabled: false\n }\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtPerformanceCumulativeChart.prototype.mergeOptions = function mergeOptions() {\n var newOpts = (0, _merge2.default)({}, _ftChartsConfigs.defaultOptions, this.perfCumChartOptions, this.options);\n newOpts.yAxis.labels.format = this.valPrefix + '{value:.0f}';\n return newOpts;\n };\n\n FtPerformanceCumulativeChart.prototype.dataChanged = function dataChanged() {\n this.updateChart();\n };\n\n FtPerformanceCumulativeChart.prototype.navDecimalChanged = function navDecimalChanged() {\n this.updateChart();\n };\n\n FtPerformanceCumulativeChart.prototype.prefixChanged = function prefixChanged() {\n this.updateChart();\n };\n\n _createClass(FtPerformanceCumulativeChart, [{\n key: 'series',\n get: function get() {\n var graphNames = this.graphNames;\n var chartSerieses = [];\n var chartIndex = 0;\n var colors = (0, _ftChartsConfigs.ftChartsColors)();\n if (this.data !== undefined) {\n for (var _iterator = this.data, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var thisSeries = _ref;\n\n var thisObj = {\n id: chartIndex,\n name: graphNames[chartIndex],\n type: 'area',\n data: thisSeries,\n tooltip: {\n pointFormat: '{series.name}: <b>{point.y}</b><br/>',\n valueDecimals: this.navDecimal,\n valuePrefix: this.valPrefix\n },\n color: colors[chartIndex]\n };\n chartIndex++;\n chartSerieses.push(thisObj);\n }\n }\n return chartSerieses;\n }\n }]);\n\n return FtPerformanceCumulativeChart;\n }(_ftChart.FtChart), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'options', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'navDecimal', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return 2;\n }\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'valPrefix', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'graphNames', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return [];\n }\n }), _applyDecoratedDescriptor(_class2.prototype, 'series', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'series'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/common/elements/ft-date-dropdown/lib/date-dropdown.reducer',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.dateDropdownReducer = dateDropdownReducer;\n\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-cumulative');\n\n function dateDropdownReducer(state, action) {\n switch (action.type) {\n case 'SET_HISTORICAL_DATE':\n logger.debug('Reducing: SET_HISTORICAL_DATE', action);\n var newState = Object.assign({}, state);\n if (!newState.app) newState.app = {};\n if (!newState.app.historical) newState.app.historical = {};\n if (!newState.app.historical.performance) newState.app.historical.performance = {};\n Object.assign(newState.app.historical.performance, { selectedYear: action.year });\n Object.assign(newState.app.historical.performance, { selectedMonth: action.month });\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/common/elements/ft-modal/lib/ft-modal.reducer',['exports', 'lodash/get', 'lodash/merge'], function (exports, _get, _merge) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.modalReducer = modalReducer;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _merge2 = _interopRequireDefault(_merge);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function modalReducer(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n\n var beanLabelData = (0, _get2.default)(labelData, 'labels');\n var externalLinkTitle = (0, _get2.default)(beanLabelData, 'external-link-title');\n var externalLinkContent = (0, _get2.default)(beanLabelData, 'external-link-content');\n var okLabel = (0, _get2.default)(beanLabelData, 'ok-label');\n var close = (0, _get2.default)(beanLabelData, 'close-modal');\n\n return Object.assign({}, state, {\n ftModalLabels: {\n externalLinkTitle: externalLinkTitle,\n externalLinkContent: externalLinkContent,\n okLabel: okLabel,\n close: close\n }\n });\n case 'OPEN_MODAL':\n return (0, _merge2.default)({}, state, {\n app: {\n modal: {\n open: true,\n title: action.title || false,\n contents: action.contents || false,\n close: action.close || 'close',\n header: action.header || false,\n footer: action.footer || false,\n image: action.image || false\n }\n }\n });\n case 'CLOSE_MODAL':\n\n return (0, _merge2.default)({}, state, {\n app: {\n modal: {\n open: false\n }\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/common/elements/ft-gateway/ft-gateway',['exports', 'aurelia-framework', 'lodash/get', 'aurelia-fetch-client'], function (exports, _aureliaFramework, _get, _aureliaFetchClient) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGateway = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17;\n\n var logger = _aureliaFramework.LogManager.getLogger('ft-gateway');\n\n var FtGateway = exports.FtGateway = (_dec = (0, _aureliaFramework.inject)(_aureliaFetchClient.HttpClient, Element), _dec(_class = (_class2 = function () {\n function FtGateway(httpClient, element) {\n _classCallCheck(this, FtGateway);\n\n _initDefineProp(this, 'autoLaunch', _descriptor, this);\n\n _initDefineProp(this, 'autoSubmit', _descriptor2, this);\n\n _initDefineProp(this, 'username', _descriptor3, this);\n\n _initDefineProp(this, 'password', _descriptor4, this);\n\n _initDefineProp(this, 'authorizeUrl', _descriptor5, this);\n\n _initDefineProp(this, 'selectedSegment', _descriptor6, this);\n\n _initDefineProp(this, 'selectedSegmentLabel', _descriptor7, this);\n\n _initDefineProp(this, 'termsAgreed', _descriptor8, this);\n\n _initDefineProp(this, 'loginRequired', _descriptor9, this);\n\n _initDefineProp(this, 'termsRequired', _descriptor10, this);\n\n _initDefineProp(this, 'validForm', _descriptor11, this);\n\n _initDefineProp(this, 'showDecline', _descriptor12, this);\n\n _initDefineProp(this, 'showButtons', _descriptor13, this);\n\n _initDefineProp(this, 'usernameEmptyError', _descriptor14, this);\n\n _initDefineProp(this, 'passwordEmptyError', _descriptor15, this);\n\n _initDefineProp(this, 'termsAgreedError', _descriptor16, this);\n\n _initDefineProp(this, 'loginError', _descriptor17, this);\n\n this.httpClient = httpClient;\n this.element = element;\n\n this.validForm = true;\n\n this.username = '';\n this.password = '';\n }\n\n FtGateway.prototype.attached = function attached() {\n var _this = this;\n\n logger.debug('ft-gateway attached');\n\n var gateway = $(this.gateway);\n var config = $('#site-config');\n if ((0, _get2.default)(config, '0.attributes.site')) {\n this.siteName = config[0].attributes.site.value;\n }\n\n this.form = $(this.gateway).find('form');\n\n $('[data-fti-module=\"role-selector\"], .selector-role, [data-fti-component=\"role-selector\"]').css('pointer-events', 'auto');\n\n $('a.close-rs').on('click', function () {\n $('.role-selector-alt').hide();\n });\n\n gateway.on('show.bs.modal', function (event) {\n return _this.showModalEvent(event);\n });\n\n if (this.autoLaunch) {\n this.showModal();\n }\n };\n\n FtGateway.prototype.showModal = function showModal() {\n logger.debug('show Bootstrap Modal');\n var gateway = $(this.gateway);\n gateway.find('.modal').modal('toggle');\n };\n\n FtGateway.prototype.showModalEvent = function showModalEvent(event) {\n logger.debug('show Modal Event fired');\n\n if (event.relatedTarget) {\n var element = $(event.relatedTarget);\n this.updateValues(element);\n }\n if (this.autoSubmit || this.termsCookieExists(this.siteName, this.selectedSegment)) {\n this.form.find('input[name=\"selectedSegment\"]').val(this.selectedSegment);\n this.form.submit();\n event.preventDefault();\n } else {\n this.updateModal(this.selectedSegment);\n }\n };\n\n FtGateway.prototype.updateModal = function updateModal(segment) {\n logger.debug('updateModal called: ' + segment);\n $(this.gateway).find('.nav-tabs-top-gateway a[href=\"#' + segment + '\"]').click();\n };\n\n FtGateway.prototype.submitForm = function submitForm() {\n var _this2 = this;\n\n logger.debug('submit form called');\n this.clearErrorFlags();\n this.validForm = this.validateForm();\n var validCredentials = true;\n\n logger.debug('this.loginRequired:' + this.loginRequired);\n\n this.clearHash();\n\n if (this.validForm) {\n if (this.loginRequired) {\n this.httpClient.fetch(this.authorizeUrl, {\n method: 'POST',\n body: 'selectedSegment=' + this.selectedSegment + '&username=' + this.username + '&password=' + this.password,\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n }).then(function (response) {\n return response.json();\n }).then(function (data) {\n validCredentials = data.success;\n if (validCredentials) {\n _this2.form.submit();\n } else {\n logger.debug('auth failed');\n _this2.usernameEmptyError = true;\n _this2.passwordEmptyError = true;\n _this2.loginError = true;\n }\n });\n } else {\n logger.debug(this.form);\n this.form.submit();\n }\n }\n };\n\n FtGateway.prototype.validateForm = function validateForm() {\n logger.debug('validateForm called');\n var bValid = true;\n if (this.loginRequired) {\n if (this.username === '') {\n bValid = false;\n this.usernameEmptyError = true;\n }\n if (this.password === '') {\n bValid = false;\n this.passwordEmptyError = true;\n }\n if (this.termsRequired) {\n if (!this.termsAgreed) {\n bValid = false;\n this.termsAgreedError = true;\n }\n }\n } else {\n if (this.termsRequired) {\n if (!this.termsAgreed) {\n bValid = false;this.termsAgreedError = true;\n }\n }\n }\n return bValid;\n };\n\n FtGateway.prototype.setSegment = function setSegment(id) {\n this.resetValues();\n this.selectedSegment = id;\n this.form.find('input[name=\"selectedSegment\"]').val(id);\n this.form.find('input[name=\"referrer\"]').val('');\n this.submitForm();\n return true;\n };\n\n FtGateway.prototype.tabChanged = function tabChanged(label, id, loginRequired, termsRequired, showDecline) {\n logger.debug('tabChanged called');\n this.resetValues();\n this.toggleButtons(true);\n this.selectedSegmentLabel = label;\n this.selectedSegment = id;\n this.loginRequired = loginRequired;\n this.termsRequired = termsRequired;\n this.showDecline = showDecline;\n return true;\n };\n\n FtGateway.prototype.updateValues = function updateValues(element) {\n logger.debug('updateValues called');\n\n this.autoSubmit = element.attr('data-auto-submit');\n this.selectedSegment = element.attr('data-selected-segment');\n this.selectedSegmentLabel = element.attr('data-segment-label');\n this.termsRequired = element.attr('data-terms-required');\n this.loginRequired = element.attr('data-login-required');\n this.showDecline = element.attr('data-show-decline');\n };\n\n FtGateway.prototype.resetValues = function resetValues() {\n logger.debug('resetValues called');\n\n this.loginRequired = false;\n this.termsRequired = false;\n\n this.username = '';\n this.password = '';\n this.termsAgreed = false;\n this.usernameEmptyError = false;\n this.passwordEmptyError = false;\n this.termsAgreedError = false;\n };\n\n FtGateway.prototype.clearErrorFlags = function clearErrorFlags() {\n logger.debug('clearErrorFlags called');\n this.usernameEmptyError = false;\n this.passwordEmptyError = false;\n this.termsAgreedError = false;\n this.loginError = false;\n };\n\n FtGateway.prototype.showDeclineChanged = function showDeclineChanged(nv) {\n logger.debug('showDeclineChanged:' + nv);\n this.showDecline = this.toBool(nv);\n };\n\n FtGateway.prototype.validFormChanged = function validFormChanged(nv) {\n logger.debug('validFormChanged:' + nv);\n this.validForm = this.toBool(nv);\n };\n\n FtGateway.prototype.termsRequiredChanged = function termsRequiredChanged(nv) {\n logger.debug('termsRequiredChanged:' + nv);\n this.termsRequired = this.toBool(nv);\n };\n\n FtGateway.prototype.loginRequiredChanged = function loginRequiredChanged(nv) {\n logger.debug('loginRequiredChanged:' + nv);\n this.loginRequired = this.toBool(nv);\n };\n\n FtGateway.prototype.toggleButtons = function toggleButtons(show) {\n this.showButtons = show;\n };\n\n FtGateway.prototype.toBool = function toBool(strvalue) {\n return strvalue && typeof strvalue === 'string' ? strvalue.toLowerCase() === 'true' || strvalue === '1' : strvalue === true;\n };\n\n FtGateway.prototype.clearHash = function clearHash() {\n window.location.replace('#');\n\n if (typeof window.history.replaceState === 'function') {\n history.replaceState({}, '', window.location.href.slice(0, -1));\n }\n };\n\n FtGateway.prototype.termsCookieExists = function termsCookieExists(sitename, segment) {\n var key = 'segment_' + sitename + '_' + segment + '_termsagreed';\n var cookies = {};\n for (var _iterator = document.cookie.split('; '), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var cookie = _ref;\n\n var _cookie$split = cookie.split('='),\n name = _cookie$split[0],\n value = _cookie$split[1];\n\n cookies[name] = decodeURIComponent(value);\n }\n if (cookies[key] === 'true') {\n return true;\n }\n return false;\n };\n\n return FtGateway;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'autoLaunch', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'autoSubmit', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'username', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'password', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'authorizeUrl', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'selectedSegment', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'selectedSegmentLabel', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, 'termsAgreed', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, 'loginRequired', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, 'termsRequired', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, 'validForm', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, 'showDecline', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return true;\n }\n }), _descriptor13 = _applyDecoratedDescriptor(_class2.prototype, 'showButtons', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return true;\n }\n }), _descriptor14 = _applyDecoratedDescriptor(_class2.prototype, 'usernameEmptyError', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor15 = _applyDecoratedDescriptor(_class2.prototype, 'passwordEmptyError', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor16 = _applyDecoratedDescriptor(_class2.prototype, 'termsAgreedError', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor17 = _applyDecoratedDescriptor(_class2.prototype, 'loginError', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/common/elements/ft-multi-select-bar/ft-multi-select-bar',['exports', 'aurelia-framework', 'aurelia-validation', '../../../../../lib/redux-component-base', 'aurelia-fetch-client'], function (exports, _aureliaFramework, _aureliaValidation, _reduxComponentBase, _aureliaFetchClient) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtMultiSelectBar = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n\n var logger = _aureliaFramework.LogManager.getLogger('multiselect');\n var FtMultiSelectBar = exports.FtMultiSelectBar = (_dec = (0, _aureliaFramework.inject)('Store', Element, _aureliaFetchClient.HttpClient, _aureliaValidation.ValidationControllerFactory), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtMultiSelectBar, _ReduxComponentBase);\n\n function FtMultiSelectBar(store, element, http, controllerFactory) {\n _classCallCheck(this, FtMultiSelectBar);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'multiselect', _descriptor, _this);\n\n _initDefineProp(_this, 'selected', _descriptor2, _this);\n\n _initDefineProp(_this, 'selectedLength', _descriptor3, _this);\n\n _initDefineProp(_this, 'onSelected', _descriptor4, _this);\n\n _initDefineProp(_this, 'marketingLabels', _descriptor5, _this);\n\n _this.openModel = function (type) {\n _this.modal.openModal();\n _this.type = type;\n if (type === 'edit') {\n _this.modalTitle = _this.marketingLabels.editSelectedDocumentsText;_this.stage = 'edit';\n }\n if (type === 'email') {\n _this.modalTitle = _this.marketingLabels.emailSelectedDocumentsText;_this.stage = 'edit';\n }\n if (type === 'download') {\n _this.modalTitle = _this.marketingLabels.downloadSelectedDocumentsText;_this.stage = 'edit';\n }\n };\n\n _this.store = store;\n\n _this.http = http;\n _this.controller = controllerFactory.createForCurrentScope();\n\n _this.bootstrap();\n return _this;\n }\n\n FtMultiSelectBar.prototype.bootstrap = function bootstrap() {\n if (this.hasBootstrapped) {\n return;\n }\n this.marketingLabels = this.store.getState().marketing.ftMultiSelectBar;\n if (!this.marketingLabels) {\n logger.debug('Failure loading marketing labels from state');\n return;\n }\n logger.debug('Success loading marketing labels from state');\n this.hasBootstrapped = true;\n };\n\n FtMultiSelectBar.prototype.mapState = function mapState(newState) {\n try {\n this.bootstrap();\n } catch (e) {\n logger.error(e);\n }\n };\n\n FtMultiSelectBar.prototype.attached = function attached() {\n this.form = {\n toEmails: [{\n name: '',\n email: ''\n }]\n };\n this.rules = [];\n };\n\n FtMultiSelectBar.prototype.addEmail = function addEmail() {\n this.form.toEmails.push({\n name: '',\n email: ''\n });\n };\n\n FtMultiSelectBar.prototype.removeEmail = function removeEmail(i) {\n this.form.toEmails.splice(i, 1);\n };\n\n FtMultiSelectBar.prototype.toggle = function toggle(document) {\n if (document.selected) {\n document.selected = false;\n } else {\n document.selected = true;\n }\n if (typeof this.onSelected === 'function') {\n this.onSelected();\n }\n };\n\n FtMultiSelectBar.prototype.send = function send() {\n var _this2 = this;\n\n _aureliaValidation.ValidationRules.ensure(function (a) {\n return a.from;\n }).required().on(this.form);\n\n this.form.toEmails.forEach(function (email) {\n _aureliaValidation.ValidationRules.ensure(function (a) {\n return a.email;\n }).required().email().ensure(function (a) {\n return a.name;\n }).required().on(email);\n });\n\n this.controller.validate().then(function (result) {\n if (result.valid) {\n var formData = 'SenderName=' + _this2.form.from + '&Message=' + _this2.form.message + '&SendEmail=yes';\n\n _this2.form.toEmails.forEach(function (email) {\n formData += '&ReceiverMailID=' + email.email + '&ReceiverName=' + email.name;\n });\n\n _this2.selected.forEach(function (doc) {\n formData += '&DocumentPath=' + doc.url;\n });\n\n _this2.http.fetch('/en-gb/download.page', {\n method: 'post',\n body: formData,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }).then(function (response) {\n logger.debug('response', response);\n if (!response.ok) {\n response.text().then(function (err) {\n _this2.response = err;\n });\n } else {\n response.text().then(function (success) {\n _this2.stage = 'send';\n _this2.response = success;\n });\n }\n });\n } else {\n _this2.controller.results.forEach(function (res) {\n res.object.errors = {};\n });\n _this2.controller.results.forEach(function (res) {\n if (res.valid === false) {\n res.object.errors[res.propertyName] = true;\n }\n });\n }\n });\n };\n\n FtMultiSelectBar.prototype.download = function download() {\n this.downloadForm.submit();\n this.modal.closeModal();\n };\n\n return FtMultiSelectBar;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'multiselect', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'selected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'selectedLength', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/common/elements/ft-responsive-table-flow/ft-responsive-table-flow-document',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtResponsiveTableFlowDocument = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtResponsiveTableFlowDocument = exports.FtResponsiveTableFlowDocument = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtResponsiveTableFlowDocument() {\n _classCallCheck(this, FtResponsiveTableFlowDocument);\n\n _initDefineProp(this, 'document', _descriptor, this);\n }\n\n FtResponsiveTableFlowDocument.prototype.attached = function attached() {};\n\n return FtResponsiveTableFlowDocument;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'document', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/common/elements/ft-responsive-table-flow/ft-responsive-table-flow',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtResponsiveTable = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtResponsiveTable = exports.FtResponsiveTable = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtResponsiveTable() {\n _classCallCheck(this, FtResponsiveTable);\n\n _initDefineProp(this, 'data', _descriptor, this);\n\n _initDefineProp(this, 'multiselect', _descriptor2, this);\n\n _initDefineProp(this, 'onSelected', _descriptor3, this);\n }\n\n FtResponsiveTable.prototype.attached = function attached() {};\n\n FtResponsiveTable.prototype.toggle = function toggle(document) {\n if (document.selected) {\n document.selected = false;\n } else {\n document.selected = true;\n }\n if (typeof this.onSelected === 'function') {\n this.onSelected();\n }\n };\n\n return FtResponsiveTable;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'multiselect', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/marketing/common/elements/ft-type-ahead-search/ft-type-ahead-search',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTypeAheadSearch = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var logger = _aureliaFramework.LogManager.getLogger('type-ahead');\n\n var FtTypeAheadSearch = exports.FtTypeAheadSearch = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.inject)(_aureliaFramework.BindingEngine), _dec(_class = _dec2(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtTypeAheadSearch, _ReduxComponentBase);\n\n function FtTypeAheadSearch(store, beans, element) {\n _classCallCheck(this, FtTypeAheadSearch);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'marketingLabels', _descriptor, _this);\n\n _initDefineProp(_this, 'data', _descriptor2, _this);\n\n _initDefineProp(_this, 'onSelected', _descriptor3, _this);\n\n _this.element = element;\n _this.showTypeAhead = false;\n\n _this.marketingLabels = store.getState().marketing.ftTypeAheadSearch;\n return _this;\n }\n\n FtTypeAheadSearch.prototype.attached = function attached() {};\n\n FtTypeAheadSearch.prototype.focus = function focus() {\n this.showTypeAhead = true;\n logger.debug('showTypeAhead');\n };\n\n FtTypeAheadSearch.prototype.select = function select(item) {\n this.showTypeAhead = false;\n this.query = item.label;\n this.selected = item;\n\n if (typeof this.onSelected === 'function') {\n this.onSelected(item);\n }\n };\n\n return FtTypeAheadSearch;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'marketingLabels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'onSelected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/marketing/grids/ft-grid-filter/lib/grid-filter.reducer',['exports', 'lodash/flatten', 'lodash/get', 'lodash/has', 'lodash/intersectionWith', 'lodash/isEqual', 'lodash/merge', 'lodash/uniqBy', 'lodash/clone', 'moment'], function (exports, _flatten, _get, _has, _intersectionWith, _isEqual, _merge, _uniqBy, _clone, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.gridFilter = gridFilter;\n\n var _flatten2 = _interopRequireDefault(_flatten);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _has2 = _interopRequireDefault(_has);\n\n var _intersectionWith2 = _interopRequireDefault(_intersectionWith);\n\n var _isEqual2 = _interopRequireDefault(_isEqual);\n\n var _merge2 = _interopRequireDefault(_merge);\n\n var _uniqBy2 = _interopRequireDefault(_uniqBy);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function gridFilter() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n var newState = void 0;\n var beanLabelData = void 0;\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n action.json.forEach(function (bean) {\n (0, _merge2.default)(labelData, bean);\n }, this);\n beanLabelData = (0, _get2.default)(labelData, 'labels');\n var loadMoreLink = (0, _get2.default)(beanLabelData, 'load-more-link');\n var displayLabel = (0, _get2.default)(beanLabelData, 'display-label');\n var gridLabel = (0, _get2.default)(beanLabelData, 'grid-label');\n var listLabel = (0, _get2.default)(beanLabelData, 'list-label');\n\n return Object.assign({}, state, {\n gridFilter: {\n loadMoreLink: loadMoreLink,\n displayLabel: displayLabel,\n gridLabel: gridLabel,\n listLabel: listLabel,\n allLables: beanLabelData\n }\n });\n case 'POPULATE_GRID_FILTER':\n newState = Object.assign({}, state);\n var cid = action.cid;\n newState.app.grid.grids[cid] = Object.assign({}, newState.app.grid.defaults);\n\n var newConfig = action.data.configData;\n\n if (newConfig.cardsPerPage && typeof newConfig.cardsPerPage === 'number') {\n newState.app.grid.grids[cid].cardsPerPage = newConfig.cardsPerPage;\n }\n if (newConfig.currentView) {\n newState.app.grid.grids[cid].currentView = newConfig.currentView === 'TABLE' ? 'TABLE' : 'GRID';\n }\n if (typeof newConfig.showViewToggle === 'boolean') {\n newState.app.grid.grids[cid].showViewToggle = newConfig.showViewToggle;\n }\n\n var gridFilters = (0, _clone2.default)(newState.app.grid.grids[cid].filters);\n var gridColumns = (0, _clone2.default)(newState.app.grid.grids[cid].columns);\n\n newState.app.grid.grids[cid].filters = (0, _merge2.default)(gridFilters, newConfig.filters);\n newState.app.grid.grids[cid].columns = (0, _merge2.default)(gridColumns, newConfig.columns);\n\n var cards = action.data.cardData;\n\n cards.forEach(function (card) {\n if (card.data && card.data.contentType) {\n card.data.contentTypeLabels = (0, _get2.default)(state.gridFilter.allLables, card.data.contentType) ? (0, _get2.default)(state.gridFilter.allLables, card.data.contentType) : '[' + card.data.contentType + ']';\n }\n if (card.data && card.data.contentCategories) {\n var catStr = '';\n var cats = card.data.contentCategories.split('|');\n cats.forEach(function (cat, i) {\n if (cat) {\n card.data.contentCategoriesKey = cat;\n }\n var catCategory = (0, _get2.default)(state.gridFilter.allLables, cat) ? (0, _get2.default)(state.gridFilter.allLables, cat) : '[' + cat + ']';\n if (cat !== '' && i < cats.length) {\n catStr += catCategory;\n if (i < cats.length - 2) {\n catStr += ', ';\n }\n }\n }, this);\n card.data.contentCategoriesLabel = catStr;\n }\n }, this);\n\n Object.assign(newState.app.grid.grids[cid], { cards: cards });\n newState.app.grid.grids[cid].numVisibleCards = Math.min(cards.length, newState.app.grid.grids[cid].cardsPerPage);\n\n newState.app.grid.grids[cid].filters.forEach(function (filter) {\n var optionsInData = [];\n if (filter.type === 'DROPDOWN') {\n optionsInData = cards.filter(function (card) {\n return (0, _has2.default)(card, 'data.' + filter.dataKey);\n }).map(function (card) {\n return (0, _get2.default)(card, 'data.' + filter.dataKey).split('|');\n });\n optionsInData = (0, _flatten2.default)(optionsInData);\n\n filter.options = (0, _intersectionWith2.default)(filter.options, optionsInData, function (configOpt, dataOpt) {\n if (['ALL', '12_MONTHS'].includes(configOpt.value.toUpperCase())) return true;\n return configOpt.value === dataOpt;\n });\n }\n\n if (filter.type === 'YEAR_DROPDOWN') {\n optionsInData = cards.filter(function (card) {\n if (!card) {\n return;\n }\n if (!card.data) {\n return;\n }\n return card.data.date;\n }).map(function (card) {\n return (0, _moment2.default)((0, _get2.default)(card, 'data.' + filter.dataKey), filter.dateFormat).year();\n }).sort(function (a, b) {\n return b - a;\n }).map(function (year) {\n return { label: year, value: year };\n });\n\n filter.options = (0, _uniqBy2.default)(filter.options.concat(optionsInData), 'value');\n }\n });\n return newState;\n case 'GRID_CHANGE_DROPDOWN':\n var currentFilter = state.app.grid.grids[action.cid].filters.find(function (d) {\n return d.name === action.name;\n });\n if (currentFilter && !(0, _isEqual2.default)(currentFilter.selected, action.newValue)) {\n newState = Object.assign({}, state);\n\n newState.app.grid.grids[action.cid].filters.forEach(function (filter) {\n filter.selected = '';\n });\n newState.app.grid.grids[action.cid].filters.find(function (d) {\n return d.name === action.name;\n }).selected = action.newValue;\n return newState;\n }\n return state;\n case 'GRID_CHANGE_VIEW':\n var currentView = state.app.grid.grids[action.cid].currentView;\n if (currentView !== action.view) {\n newState = Object.assign({}, state);\n newState.app.grid.grids[action.cid].currentView = action.view;\n return newState;\n }\n return state;\n case 'GRID_LOAD_MORE':\n var numVisibleCards = state.app.grid.grids[action.cid].numVisibleCards;\n var totalCards = state.app.grid.grids[action.cid].cards.length;\n if (numVisibleCards < totalCards) {\n var cardsPerPage = state.app.grid.grids[action.cid].cardsPerPage;\n newState = Object.assign({}, state);\n newState.app.grid.grids[action.cid].numVisibleCards = Math.min(totalCards, numVisibleCards + cardsPerPage);\n return newState;\n }\n return state;\n case 'GRID_CHANGE_SORT':\n var columns = state.app.grid.grids[action.cid].columns;\n var newSortColumn = columns.find(function (col) {\n return action.columnName === col.name;\n });\n if (newSortColumn) {\n switch (newSortColumn.direction) {\n case 'ASC':\n newSortColumn.direction = 'DESC';\n break;\n case 'DESC':\n newSortColumn.direction = 'ASC';\n break;\n default:\n newSortColumn.direction = newSortColumn.isNumeric ? 'DESC' : 'ASC';\n }\n columns.forEach(function (col) {\n if (col.name !== action.columnName) {\n col.direction = null;\n }\n });\n newState = Object.assign({}, state);\n Object.assign(newState.app.grid.grids[action.cid], { columns: columns });\n return newState;\n }\n return state;\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/grids/ft-grid-filter-form/lib/grid-filter-form.reducer',['exports', 'lodash/get'], function (exports, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.gridFilterForm = gridFilterForm;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function gridFilterForm() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n var beanLabelData = (0, _get2.default)(labelData, 'labels');\n\n var displayLabel = (0, _get2.default)(beanLabelData, 'display-label');\n var gridLabel = (0, _get2.default)(beanLabelData, 'grid-label');\n var listLabel = (0, _get2.default)(beanLabelData, 'list-label');\n\n return Object.assign({}, state, {\n gridFilterForm: {\n displayLabel: displayLabel,\n gridLabel: gridLabel,\n listLabel: listLabel\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/layouts/ft-choose-subscription/lib/ft-choose-subscription.reducer',['exports', 'lodash/get', 'lodash/values', 'lodash/mapValues', 'lodash/camelCase', 'lodash/keys'], function (exports, _get, _values, _mapValues, _camelCase, _keys) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.subscriptionChooser = subscriptionChooser;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _values2 = _interopRequireDefault(_values);\n\n var _mapValues2 = _interopRequireDefault(_mapValues);\n\n var _camelCase2 = _interopRequireDefault(_camelCase);\n\n var _keys2 = _interopRequireDefault(_keys);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function subscriptionChooser() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case 'CHOOSE_SUBSCRIPTION_CONFIG_SUCCESS':\n var data = (0, _get2.default)(action, 'data');\n\n var sections = (0, _get2.default)(data, 'formdata.sections');\n var SubmitURL = (0, _get2.default)(data, 'formdata.SubmitURL');\n var formlabels = (0, _get2.default)(data, 'formlabels');\n var betterLabels = {};\n\n formlabels.forEach(function (item, key) {\n var itemkeys = (0, _keys2.default)(item);\n var itemObject = item[itemkeys[0]];\n var itemFieldType = itemObject.fieldtype;\n var itemFieldTypeInfo = itemFieldType.split('|');\n var newitem = {\n name: (0, _get2.default)(itemObject, 'name'),\n required: itemFieldTypeInfo[0] === '*',\n camelName: (0, _camelCase2.default)(itemkeys[0]),\n combinedLabel: itemFieldTypeInfo[0] === '*' ? (0, _get2.default)(itemObject, 'name') + ' ' + itemFieldTypeInfo[0] : (0, _get2.default)(itemObject, 'name'),\n label: itemFieldTypeInfo[0] === '*' ? (0, _get2.default)(itemObject, 'name') + ' ' + itemFieldTypeInfo[0] : (0, _get2.default)(itemObject, 'name'),\n expression: (0, _camelCase2.default)(itemkeys[0]),\n validate: itemFieldTypeInfo[0] === '*' ? ' & validate' : '',\n regex: itemFieldTypeInfo[1] || '',\n requiresRegex: itemFieldTypeInfo[1] ? true : false,\n kebabName: itemkeys[0],\n isMessage: itemFieldType.indexOf('msg') > -1 ? true : false,\n message: itemFieldType,\n isSelect: itemkeys[0] === 'field-title' ? true : false,\n isTextArea: itemkeys[0] === 'field-comments' ? true : false,\n isInput: itemkeys[0] !== 'field-comments' && itemkeys[0] !== 'field-title' && itemkeys[0].indexOf('field') > -1 ? true : false,\n options: itemkeys[0] === 'field-title' ? ['Choose Option', 'Mr', 'Mrs', 'Miss', 'Ms'] : [],\n isField: itemkeys[0].indexOf('field') > -1 ? true : false,\n field: (0, _get2.default)(itemObject, 'name').replace(/[^A-Z0-9]+/ig, '-').toLowerCase()\n };\n betterLabels[(0, _camelCase2.default)(itemkeys[0])] = newitem;\n });\n\n var toArrayWithKey = function toArrayWithKey(obj, keyAs) {\n return (0, _values2.default)((0, _mapValues2.default)(obj, function (value, key) {\n value[keyAs] = key;return value;\n }));\n };\n\n var fieldArr = toArrayWithKey(betterLabels).filter(function (label) {\n return label.isField;\n });\n\n var requiredFieldArr = fieldArr.filter(function (requiree) {\n return requiree.required || requiree.requiresRegex;\n });\n\n sections.map(function (sec) {\n sec.optionsSelected = [];\n sec.fundsSelected = [];\n });\n\n return Object.assign({}, state, {\n subscriptionChooser: {\n sections: sections,\n SubmitURL: SubmitURL,\n fieldData: fieldArr,\n requiredFieldData: requiredFieldArr,\n formlabels: betterLabels,\n formlabelsArr: toArrayWithKey(betterLabels),\n form: []\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/common/elements/ft-caveats/ft-caveats',['exports', 'aurelia-framework', 'lodash/get', '../../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _get, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCaveats = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtCaveats = exports.FtCaveats = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtCaveats, _ReduxComponentBase);\n\n function FtCaveats() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtCaveats);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'placement', _descriptor, _this), _initDefineProp(_this, 'footnotes', _descriptor2, _this), _this.impLegalInfo = [], _this.visibleFootnotes = [], _this.displayLegalInfo = false, _this.displayFootnotes = false, _this.debug = false, _this.populated = false, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtCaveats.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.logger.debug('FtCaveats mapState', newState);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label) {\n return;\n }\n\n this.impLegalInfo = newState.products.legalInfo.filter(function (caveat) {\n return caveat.placements.includes(_this2.placement);\n });\n this.logger.debug('matched ' + this.impLegalInfo.length + ' legal info for [' + this.placement + ']');\n this.displayLegalInfo = this.impLegalInfo.length > 0;\n this.visibleFootnotes = newState.products.app.visibleFootnotes;\n this.displayFootnotes = this.footnotes.toUpperCase() === 'YES' && this.visibleFootnotes.length > 0;\n this.debug = (0, _get2.default)(newState, 'general.params.debug', '').toLowerCase() === 'caveats';\n this.populated = true;\n } catch (e) {\n this.logger.debug('FtCaveats mapState error', e);\n this.populated = false;\n }\n };\n\n return FtCaveats;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'placement', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'footnotes', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return 'YES';\n }\n })), _class2)) || _class);\n});\r\ndefine('components/products/common/elements/ft-dropdown/ft-dropdown',['exports', 'aurelia-framework', 'lodash/isEqual', 'lodash/get', '../../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _isEqual, _get, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtDropdown = undefined;\n\n var _isEqual2 = _interopRequireDefault(_isEqual);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\n var FtDropdown = exports.FtDropdown = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtDropdown, _ReduxComponentBase);\n\n function FtDropdown() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, FtDropdown);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _ReduxComponentBase.call.apply(_ReduxComponentBase, [this].concat(args))), _this), _initDefineProp(_this, 'filter', _descriptor, _this), _initDefineProp(_this, 'label', _descriptor2, _this), _initDefineProp(_this, 'selected', _descriptor3, _this), _initDefineProp(_this, 'selectCallback', _descriptor4, _this), _this.optionMatcher = function (a, b) {\n return (0, _isEqual2.default)((0, _get2.default)(a, 'value'), (0, _get2.default)(b, 'value'));\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n FtDropdown.prototype.labelChanged = function labelChanged() {\n this.allOption = { label: this.getLabel('all'), value: 'ALL' };\n };\n\n FtDropdown.prototype.selectedChanged = function selectedChanged(option) {\n if (option) {\n if (this.selectCallback) {\n this.selectCallback(this.filter.name, option);\n }\n }\n };\n\n FtDropdown.prototype.prefixOption = function prefixOption(optionLabel) {\n if (this.filter.optionPrefixLabel) {\n return this.getLabel(this.filter.optionPrefixLabel) + ' ' + optionLabel;\n }\n return optionLabel;\n };\n\n return FtDropdown;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'filter', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'label', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'selected', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'selectCallback', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/common/elements/ft-footnote/ft-footnote',['exports', 'aurelia-framework', 'aurelia-pal', '../../../../../lib/redux-component-base', '../ft-caveats/lib/caveat-utils', 'lodash/get', 'lodash/isEqual', 'lodash/uniqWith', 'jquery'], function (exports, _aureliaFramework, _aureliaPal, _reduxComponentBase, _caveatUtils, _get, _isEqual, _uniqWith, _jquery) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFootnote = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _isEqual2 = _interopRequireDefault(_isEqual);\n\n var _uniqWith2 = _interopRequireDefault(_uniqWith);\n\n var _jquery2 = _interopRequireDefault(_jquery);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtFootnote = exports.FtFootnote = (_dec = (0, _aureliaFramework.inject)('Store', Element, _aureliaPal.DOM), _dec2 = (0, _aureliaFramework.computedFrom)('placement', 'fundId'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtFootnote, _ReduxComponentBase);\n\n _createClass(FtFootnote, [{\n key: 'key',\n get: function get() {\n var key = this.placement;\n if (this.fundId) key = key + '_' + this.fundId;\n return key;\n }\n }]);\n\n function FtFootnote(store, htmlElement) {\n _classCallCheck(this, FtFootnote);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'placement', _descriptor, _this);\n\n _initDefineProp(_this, 'fundId', _descriptor2, _this);\n\n _this.footnotes = [];\n _this.debug = false;\n _this.isPopulated = false;\n\n _this.store = store;\n _this.element = htmlElement;\n _this.$htmlElement = (0, _jquery2.default)(htmlElement);\n _this.DOM = _aureliaPal.DOM;\n return _this;\n }\n\n FtFootnote.prototype.attached = function attached() {\n var _this2 = this;\n\n if (this.placement && this._isVisible()) {\n var previousSibling = this.element.previousSibling;\n if (previousSibling.nodeType === 3 && !/\\S/.test(previousSibling.nodeValue)) {\n this.element.parentElement.replaceChild(this.DOM.createTextNode('\\uFEFF'), previousSibling);\n }\n\n this.mapState(this.store.getState());\n\n if (!(this.registeredFootnotePlacements && this.registeredFootnotePlacements.find(function (rfp) {\n return rfp.key === _this2.key;\n }))) {\n var orderedPlacements = this.DOM.querySelectorAll('ft-footnote');\n orderedPlacements = Array.from(orderedPlacements).map(function (tag) {\n var vm = tag.au.controller.viewModel;\n var op = { placement: vm.placement, key: vm.key };\n if (vm.fundId) {\n op.fundId = vm.fundId;\n }\n return op;\n });\n\n orderedPlacements = (0, _uniqWith2.default)(orderedPlacements, _isEqual2.default);\n this.dispatch({\n type: 'REGISTER_FOOTNOTE',\n placement: this.placement,\n fundId: this.fundId,\n orderedPlacements: orderedPlacements,\n key: this.key\n });\n }\n }\n };\n\n FtFootnote.prototype.mapState = function mapState(newState) {\n var _this3 = this;\n\n try {\n this.footnotes = newState.products.app.visibleFootnotes.filter(function (footnote) {\n if (!footnote.placements.includes(_this3.placement)) return false;\n\n if ((0, _caveatUtils.hasValues)(footnote.funds)) {\n if (newState.general.params.FundID) {\n if (!_this3.fundId) {\n return true;\n }\n\n return newState.general.params.FundID === _this3.fundId;\n }\n\n return _this3.fundId && footnote.funds.includes(_this3.fundId);\n }\n\n return true;\n }).map(function (footnote) {\n return footnote.order;\n });\n this.debug = (0, _get2.default)(newState, 'general.params.debug', '').toLowerCase() === 'caveats' && this.placement;\n this.hasFootnotes = this.footnotes.length !== 0;\n this.registeredFootnotePlacements = newState.products.app.registeredFootnotePlacements;\n this.isPopulated = true;\n } catch (e) {\n this.logger.debug('FtFootnote mapState error', e);\n this.isPopulated = false;\n }\n };\n\n FtFootnote.prototype._isVisible = function _isVisible() {\n return this.$htmlElement.parent().is(':visible');\n };\n\n FtFootnote.prototype.detached = function detached() {};\n\n return FtFootnote;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'placement', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'fundId', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'key', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'key'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/common/elements/ft-fund-alert/ft-fund-alert-base',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', 'lodash/cloneDeep', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _cloneDeep, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundAlertBase = undefined;\n\n var _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtFundAlertBase = exports.FtFundAlertBase = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtFundAlertBase, _ReduxComponentBase);\n\n function FtFundAlertBase(store, beans, element) {\n _classCallCheck(this, FtFundAlertBase);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n _this.fundAlerts = [];\n\n _this.fundId = element.getAttribute('fund-id');\n\n _this.dispatch({\n type: 'POPULATE_FUND_ALERT',\n beans: beans.component.fundAlert });\n return _this;\n }\n\n FtFundAlertBase.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.logger.debug('mapState() fund alert', newState);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.shareClassCode = newState.products.app.currentShareClass;\n this.fundAlerts = (0, _cloneDeep2.default)(newState.products.fundAlerts).filter(function (alert) {\n if (alert.shareClassCode && _this2.shareClassCode) {\n return alert.fundId === _this2.fundId && alert.shareClassCode === _this2.shareClassCode;\n }\n\n return alert.fundId === _this2.fundId;\n });\n this.fundAlerts.forEach(function (alert) {\n alert.collapsed = true;\n });\n this.logger.debug('matched fund alerts:::', this.fundAlerts);\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n return FtFundAlertBase;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/common/elements/ft-fund-alert/ft-fund-alert',['exports', 'aurelia-framework', './ft-fund-alert-base'], function (exports, _aureliaFramework, _ftFundAlertBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundAlert = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtFundAlert = exports.FtFundAlert = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtFundAlertBase) {\n _inherits(FtFundAlert, _FtFundAlertBase);\n\n function FtFundAlert() {\n _classCallCheck(this, FtFundAlert);\n\n return _possibleConstructorReturn(this, _FtFundAlertBase.apply(this, arguments));\n }\n\n FtFundAlert.prototype.toggleAlert = function toggleAlert(alert) {\n alert.collapsed = !alert.collapsed;\n };\n\n return FtFundAlert;\n }(_ftFundAlertBase.FtFundAlertBase)) || _class);\n});\r\ndefine('components/products/common/elements/ft-fund-alert-banner/ft-fund-alert-banner',['exports', 'aurelia-framework', '../ft-fund-alert/ft-fund-alert-base'], function (exports, _aureliaFramework, _ftFundAlertBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundAlertBanner = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtFundAlertBanner = exports.FtFundAlertBanner = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtFundAlertBase) {\n _inherits(FtFundAlertBanner, _FtFundAlertBase);\n\n function FtFundAlertBanner() {\n _classCallCheck(this, FtFundAlertBanner);\n\n return _possibleConstructorReturn(this, _FtFundAlertBase.apply(this, arguments));\n }\n\n return FtFundAlertBanner;\n }(_ftFundAlertBase.FtFundAlertBase)) || _class);\n});\r\ndefine('components/products/common/elements/ft-labels/ft-labels',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtLabels = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtLabels = exports.FtLabels = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtLabels, _ReduxComponentBase);\n\n function FtLabels(store, beans, element) {\n _classCallCheck(this, FtLabels);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.beans = beans.component.labels;\n _this.dispatch({\n type: 'LOAD_LABELS',\n beans: _this.beans\n });\n return _this;\n }\n\n return FtLabels;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/common/elements/ft-proximal/ft-proximal',['exports', 'aurelia-framework', 'lodash/get', '../../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _get, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtProximal = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtProximal = exports.FtProximal = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtProximal, _ReduxComponentBase);\n\n function FtProximal(store, element) {\n _classCallCheck(this, FtProximal);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'placement', _descriptor, _this);\n\n _initDefineProp(_this, 'position', _descriptor2, _this);\n\n _this.proximals = [];\n _this.debug = false;\n _this.isPopulated = false;\n\n _this.store = store;\n return _this;\n }\n\n FtProximal.prototype.attached = function attached() {\n this.mapState(this.store.getState());\n };\n\n FtProximal.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('FtProximal mapState');\n var proximals = (0, _get2.default)(newState, 'products.proximals');\n if (!proximals) {\n this.isPopulated = false;\n }\n\n var that = this;\n this.proximals = proximals.filter(function (caveat) {\n return caveat.placements.includes(that.placement) && caveat.content[that.position] !== '';\n }).map(function (caveat) {\n if (!caveat.content[that.position]) {\n return '[' + that.position + ']';\n }\n return caveat.content[that.position];\n });\n\n this.debug = (0, _get2.default)(newState, 'general.params.debug', '').toLowerCase() === 'caveats' && this.placement;\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtProximal;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'placement', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'position', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/common/elements/ft-share-class-filter/ft-share-class-filter',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base'], function (exports, _aureliaFramework, _reduxComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtShareClassFilter = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtShareClassFilter = exports.FtShareClassFilter = (_dec = (0, _aureliaFramework.inject)('Store', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtShareClassFilter, _ReduxComponentBase);\n\n function FtShareClassFilter(store, element) {\n _classCallCheck(this, FtShareClassFilter);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.shareClasses = new Map();\n\n _this.element = element;\n var shareClassData = element.getAttribute('share-classes');\n if (shareClassData) {\n shareClassData.split(',').forEach(function (sc) {\n var _sc$split = sc.split(':'),\n code = _sc$split[0],\n name = _sc$split[1];\n\n _this.shareClasses.set(code, name);\n });\n }\n var initialVal = store.getState().general.params.ShareClass;\n if (initialVal) {\n _this.changeShareClass(initialVal);\n }\n return _this;\n }\n\n FtShareClassFilter.prototype.changeShareClass = function changeShareClass(newShareClass) {\n this.dispatch({\n type: 'CHANGE_SHARE_CLASS',\n shareClass: newShareClass\n });\n };\n\n FtShareClassFilter.prototype.mapState = function mapState(newState) {\n if (newState.products.app.currentShareClass !== this.currentShareClassCode) {\n this.currentShareClassCode = newState.products.app.currentShareClass;\n if (this.currentShareClassCode) {\n this.currentShareClassName = this.shareClasses.get(newState.products.app.currentShareClass);\n this.updateShareClassInUrl(newState.general.params.FundID, this.currentShareClassCode);\n }\n }\n };\n\n FtShareClassFilter.prototype.updateShareClassInUrl = function updateShareClassInUrl(fundId, shareClassCode) {\n var currentURL = window.location.href;\n var newURL = void 0;\n var regExp = /FundID=(\\d+)&ShareClass=(.)?/;\n\n if (regExp.test(currentURL)) {\n newURL = currentURL.replace(/FundID=(\\d+)&ShareClass=(.)?/, 'FundID=' + fundId + '&ShareClass=' + shareClassCode);\n } else {\n newURL = currentURL.replace(/\\/(\\d+)\\/((.{1,3}?)\\/)?/, '/' + fundId + '/' + shareClassCode + '/');\n }\n\n if (newURL !== currentURL) {\n window.history.pushState(null, null, newURL);\n }\n };\n\n return FtShareClassFilter;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/lib/reducers/fund-config/config-loader.reducer',['exports', '../../decorators/config-decorator', 'aurelia-framework'], function (exports, _configDecorator, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configurationLoader = configurationLoader;\n exports.extractCombinedConfig = extractCombinedConfig;\n\n var logger = _aureliaFramework.LogManager.getLogger('label-loader');\n\n function configurationLoader(state, action) {\n switch (action.type) {\n case 'LOAD_CONFIGURATION_SUCCESS':\n logger.debug('Reducing: LOAD_CONFIGURATION');\n var _action$json = action.json,\n rawConfig = _action$json[0];\n\n var segment = action.segment;\n\n var config = extractCombinedConfig(rawConfig, segment);\n\n return Object.assign({}, state, {\n config: config\n });\n default:\n return state;\n }\n }\n\n function extractCombinedConfig(rawConfig, segment) {\n return (0, _configDecorator.configDecorator)(rawConfig, segment);\n }\n});\r\ndefine('components/products/lib/reducers/fund-details/fund-details.reducer',['exports', 'aurelia-framework', 'lodash/get', '../../../common/util/utils-fund-details'], function (exports, _aureliaFramework, _get, _utilsFundDetails) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundDetailsReducer = fundDetailsReducer;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-details.reducer');\n function fundDetailsReducer(state, action) {\n if (action.type === 'POPULATE_FUND_DETAILS_SUCCESS') {\n logger.debug('Reducing: fund details');\n var _action$json = action.json,\n fundDetails = _action$json[0];\n\n\n var investmentVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(fundDetails);\n var assetClass = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.assetClassStd.val', '');\n\n if (!assetClass) {\n assetClass = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.etfDet.asstCls.val', '');\n }\n\n var app = Object.assign({}, state.app, {\n currentInvestmentVehicleCode: investmentVehicle,\n currentAssetClass: assetClass\n });\n\n return Object.assign({}, state, {\n app: app\n });\n }\n return state;\n }\n});\r\ndefine('components/products/lib/reducers/caveats/caveats.reducer',['exports', 'aurelia-framework', '../../../../../lib/sort-utils', 'lodash/get', '../../../common/elements/ft-caveats/lib/caveat-utils'], function (exports, _aureliaFramework, _sortUtils, _get, _caveatUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.caveatsReducer = caveatsReducer;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('caveats data');\n\n function caveatsReducer(state, action) {\n switch (action.type) {\n case 'POPULATE_CAVEATS_SUCCESS':\n logger.debug('Reducing: POPULATE_CAVEATS_SUCCESS', action);\n if (!action.json) {\n logger.warn('Error loading caveats');\n return state;\n }\n var _action$json = action.json,\n caveats = _action$json[0],\n fundDetails = _action$json[1];\n\n\n var segment = action.segment;\n var fundId = (0, _get2.default)(action, 'fundId', '');\n var investmentVehicle = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.fundUmbrella.val', '');\n var assetClass = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.fundCategoryStd.val', '');\n\n if (!assetClass) {\n assetClass = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.etfDet.asstCls.val', '');\n }\n\n if (Array.isArray(caveats.caveats)) {\n var allCaveats = caveats.caveats.map(_createMapCaveats(fundId)).filter(_createCaveatFilter(segment, fundId, assetClass, investmentVehicle)).sort((0, _sortUtils.createCompare)('name', 'ASC'));\n\n var footnotes = allCaveats.filter(function (caveat) {\n return caveat.type === 'FOOTNOTE';\n });\n var legalInfo = allCaveats.filter(function (caveat) {\n return caveat.type === 'LEGAL';\n });\n var proximals = allCaveats.filter(function (caveat) {\n return caveat.type === 'PROXIMAL';\n });\n\n return Object.assign({}, state, {\n footnotes: footnotes,\n legalInfo: legalInfo,\n proximals: proximals\n });\n }\n return state;\n default:\n return state;\n }\n }\n\n function _createCaveatFilter(segment, fundId, assetClass, investmentVehicle) {\n logger.debug('_createCaveatFilter::::::::', segment, fundId, assetClass, investmentVehicle);\n var filterFunctions = [];\n\n filterFunctions.push(function (caveat) {\n return (0, _caveatUtils.hasValues)(caveat.segments) ? caveat.segments.map(function (s) {\n return s.toUpperCase();\n }).includes(segment.toUpperCase()) : true;\n });\n if (fundId) {\n filterFunctions.push(function (caveat) {\n return (0, _caveatUtils.hasValues)(caveat.funds) ? caveat.funds.includes(fundId) : true;\n });\n }\n if (assetClass) {\n filterFunctions.push(function (caveat) {\n return (0, _caveatUtils.hasValues)(caveat.assetClasses) ? caveat.assetClasses.includes(assetClass) : true;\n });\n }\n if (investmentVehicle) {\n filterFunctions.push(function (caveat) {\n return (0, _caveatUtils.hasValues)(caveat.investmentVehicles) ? caveat.investmentVehicles.includes(investmentVehicle) : true;\n });\n }\n logger.debug('filterFunctions::::::::', filterFunctions);\n\n return function (caveat) {\n return filterFunctions.reduce(function (result, filterFunc) {\n return result && filterFunc(caveat);\n }, true);\n };\n }\n\n function _createMapCaveats(paramFundId) {\n return function (caveat) {\n var placements = caveat.placement ? caveat.placement.split(', ') : [];\n var funds = caveat.funds ? caveat.funds.split(', ') : [];\n var keys = [];\n var content = caveat.content;\n switch (caveat.type) {\n case 'FOOTNOTE':\n content = content.footnote;\n\n if (content === 'undefined' || content === '<p>undefined</p>' || content === '<p><br></p>') {\n content = '';\n }\n\n placements.forEach(function (placement) {\n if ((0, _caveatUtils.hasValues)(funds)) {\n if (paramFundId) keys.push(placement);\n funds.forEach(function (fundId) {\n keys.push(placement + '_' + fundId);\n });\n } else {\n keys.push(placement);\n }\n });\n break;\n case 'LEGAL':\n content = content.legal;\n\n if (content === 'undefined' || content === '<p>undefined</p>' || content === '<p><br></p>') {\n content = '';\n }\n break;\n case 'PROXIMAL':\n content = content.proximal;\n\n if (content.top === 'undefined' || content.top === '<p>undefined</p>' || content.top === '<p><br></p>') {\n content.top = '';\n }\n if (content.bottom === 'undefined' || content.bottom === '<p>undefined</p>' || content.bottom === '<p><br></p>') {\n content.bottom = '';\n }\n break;\n default:\n }\n return {\n assetClasses: caveat['asset-class'] ? caveat['asset-class'].split(', ') : [],\n funds: funds,\n investmentVehicles: caveat['investment-vehicle'] ? caveat['investment-vehicle'].split(', ') : [],\n name: caveat.name,\n placements: placements,\n keys: keys,\n segments: caveat.segments ? caveat.segments.split(', ') : [],\n type: caveat.type,\n content: content\n };\n };\n }\n});\r\ndefine('components/products/overview/en-us-retails/ft-fund-mmfr-stable-nav-header/ft-fund-mmfr-stable-nav-header',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundMmfrStableNavHeader = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtFundMmfrStableNavHeader = exports.FtFundMmfrStableNavHeader = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (0, _aureliaFramework.containerless)(_class = (_class2 = function () {\n function FtFundMmfrStableNavHeader(element) {\n _classCallCheck(this, FtFundMmfrStableNavHeader);\n\n _initDefineProp(this, 'data', _descriptor, this);\n\n _initDefineProp(this, 'labels', _descriptor2, this);\n\n this.element = element;\n }\n\n FtFundMmfrStableNavHeader.prototype.attached = function attached() {};\n\n return FtFundMmfrStableNavHeader;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'labels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/products/lib/reducers/labels/label-loader.reducer',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.labelLoader = labelLoader;\n\n var logger = _aureliaFramework.LogManager.getLogger('label-loader');\n\n function labelLoader(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_SUCCESS':\n logger.debug('Reducing: LOAD_LABELS');\n var _action$json = action.json,\n rawLabel = _action$json[0];\n\n var label = new Map();\n\n Object.keys(rawLabel).forEach(function (key) {\n label.set(key, rawLabel[key]);\n });\n\n return Object.assign({}, state, {\n label: label\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/overview/en-us-retails/ft-fund-nav-header/ft-fund-nav-header',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundNavHeader = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtFundNavHeader = exports.FtFundNavHeader = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (0, _aureliaFramework.containerless)(_class = (_class2 = function () {\n function FtFundNavHeader(element) {\n _classCallCheck(this, FtFundNavHeader);\n\n _initDefineProp(this, 'data', _descriptor, this);\n\n _initDefineProp(this, 'labels', _descriptor2, this);\n\n this.element = element;\n }\n\n FtFundNavHeader.prototype.attached = function attached() {};\n\n return FtFundNavHeader;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'labels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class) || _class);\n});\r\ndefine('components/products/overview/en-us-retails/ft-fund-price-header/ft-fund-price-header',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundPriceHeader = undefined;\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtFundPriceHeader = exports.FtFundPriceHeader = (_dec = (0, _aureliaFramework.inject)(Element), _dec(_class = (_class2 = function () {\n function FtFundPriceHeader(element) {\n _classCallCheck(this, FtFundPriceHeader);\n\n _initDefineProp(this, 'data', _descriptor, this);\n\n _initDefineProp(this, 'labels', _descriptor2, this);\n\n this.element = element;\n }\n\n FtFundPriceHeader.prototype.attached = function attached() {};\n\n return FtFundPriceHeader;\n }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'data', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'labels', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/lib/calendar-utils',['exports', 'lodash/get', 'lodash/find', '../../util/util'], function (exports, _get, _find, _util) {\n 'use strict';\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.calendarUtils = {\n getCalendarReturnData: function getCalendarReturnData(action) {\n var fundID = action.fundId;\n var obj = {\n caveatSecName: 'Proximal - Performance - Cal.Yr.Ret. - Top',\n secName: 'Performance - Calendar Year Returns Tab',\n fundID: fundID,\n showBenchmark: true\n };\n return obj;\n },\n\n getSHTableRow: function getSHTableRow(item, showMDash, mdash, allShareClassDetails, fundName) {\n var shClsCde = (0, _get2.default)(item, 'shClsCde.val');\n var name = void 0;\n if (shClsCde && shClsCde === 'SINGLCLASS' && fundName) {\n name = fundName + ' [nav-performance]';\n } else {\n name = '' + ((0, _get2.default)(item, 'shClsName.val') || (0, _get2.default)(item, 'calcName.val', ''));\n }\n return {\n name: name,\n inceptionDate: (0, _get2.default)(item, 'shClsIncDtLoc.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n oneYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.oneYr.val', mdash),\n twoYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.twoYr.val', mdash),\n threeYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.threeYr.val', mdash),\n fourYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.fourYr.val', mdash),\n fiveYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.fiveYr.val', mdash),\n sixYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.sixYr.val', mdash),\n sevenYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.sevenYr.val', mdash),\n eightYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.eightYr.val', mdash),\n nineYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.NineYr.val', mdash),\n tenYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.tenYr.val', mdash),\n taID: (0, _get2.default)((0, _find2.default)(allShareClassDetails, { shCls: { val: (0, _get2.default)(item, 'shClsCde.val') } }), 'taID.val'),\n ytd: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.ytd.val', mdash),\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n\n getBMTableRow: function getBMTableRow(item, showMDash, mdash) {\n return {\n name: '' + (0, _get2.default)(item, 'bmcName.val'),\n\n currency: (0, _get2.default)(item, 'currency.val'),\n oneYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.oneYrBMC.val', mdash),\n twoYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.twoYrBMC.val', mdash),\n threeYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.threeYrBMC.val', mdash),\n fourYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.fourYrBMC.val', mdash),\n fiveYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.fiveYrBMC.val', mdash),\n sixYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.sixYrBMC.val', mdash),\n sevenYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.sevenYrBMC.val', mdash),\n eightYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.eightYrBMC.val', mdash),\n nineYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.nineYrBMC.val', mdash),\n tenYr: showMDash ? mdash : (0, _get2.default)(item, 'calendarDetail.tenYrBMC.val', mdash),\n ytd: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.ytdBMC.val', mdash),\n taID: mdash,\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n\n getIATableRow: function getIATableRow(item, mdash) {\n return {\n name: (0, _get2.default)(item, 'scheme.val') + ' ' + (0, _get2.default)(item, 'category.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n tenYr: (0, _get2.default)(item, 'calYrRet10YrSecAvg.val', mdash),\n nineYr: (0, _get2.default)(item, 'calYrRet9YrSecAvg.val', mdash),\n eightYr: (0, _get2.default)(item, 'calYrRet8YrSecAvg.val', mdash),\n sevenYr: (0, _get2.default)(item, 'calYrRet7YrSecAvg.val', mdash),\n sixYr: (0, _get2.default)(item, 'calYrRet6YrSecAvg.val', mdash),\n fiveYr: (0, _get2.default)(item, 'calYrRet5YrSecAvg.val', mdash),\n fourYr: (0, _get2.default)(item, 'calYrRet4YrSecAvg.val', mdash),\n threeYr: (0, _get2.default)(item, 'calYrRet3YrSecAvg.val', mdash),\n twoYr: (0, _get2.default)(item, 'calYrRet2YrSecAvg.val', mdash),\n oneYr: (0, _get2.default)(item, 'calYrRet1YrSecAvg.val', mdash),\n ytd: mdash,\n taID: mdash,\n IASector: true,\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n\n calendarYears: function calendarYears(lastYear, rev) {\n var startYear = lastYear - 10;\n var chartColumns = [];\n var yearAry = [];\n if (!rev) {\n chartColumns = ['tenYr', 'nineYr', 'eightYr', 'sevenYr', 'sixYr', 'fiveYr', 'fourYr', 'threeYr', 'twoYr', 'oneYr'];\n } else {\n chartColumns = ['oneYr', 'twoYr', 'threeYr', 'fourYr', 'sixYr', 'sixYr', 'sevenYr', 'eightYr', 'nineYr', 'tenYr'];\n }\n if (!rev) {\n while (startYear < lastYear) {\n yearAry.push(startYear);\n startYear++;\n }\n } else {\n lastYear = lastYear - 1;\n while (lastYear >= startYear) {\n yearAry.push(lastYear);\n lastYear--;\n }\n }\n var calendarYears = {\n chartColumns: chartColumns,\n yearAry: yearAry\n };\n return calendarYears;\n }\n };\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/lib/calendar-year-returns.reducer',['exports', 'aurelia-framework', 'lodash/set', 'lodash/get'], function (exports, _aureliaFramework, _set, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.calendarYearReturns = calendarYearReturns;\n\n var _set2 = _interopRequireDefault(_set);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('calendarYearReturns');\n\n function calendarYearReturns(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'CALENDAR_YEAR_RETURNS_CHANGE_TAB':\n logger.info('Reducing: DISCRETE_RETURNS_CHANGE_TAB');\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.calendarYearReturns.currentTab', action.tab);\n return newState;\n case 'CALENDAR_YEAR_RETURNS_DEFAULT_STATE_SUCCESS':\n logger.info('Reducing: ', action);\n var _action$json = action.json,\n rawComponentConfig = _action$json[0];\n\n var refreshRates = (0, _get2.default)(rawComponentConfig, 'Refresh_Rate');\n var tab = action.defaultTab;\n if (refreshRates && refreshRates[0] === 'MONTHLY') {\n tab = 'MONTH_END';\n }\n if (refreshRates && refreshRates[0] === 'QUARTERLY') {\n tab = 'QUARTER_END';\n }\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.calendarYearReturns.currentTab', tab);\n (0, _set2.default)(newState, 'app.performance.calendarYearReturns.refreshRates', refreshRates);\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/performance/ft-discrete-returns/lib/discrete-returns-utils',['exports', 'lodash/get', 'lodash/find', '../../util/util', 'aurelia-framework'], function (exports, _get, _find, _util, _aureliaFramework) {\n 'use strict';\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('discrete-returns');\n exports.discreteUtils = {\n getDiscreteReturnData: function getDiscreteReturnData(action) {\n var fundID = action.fundId;\n var obj = {\n fundID: fundID,\n showChart: true\n };\n return obj;\n },\n\n shareClassDetailItems: function shareClassDetailItems(rev) {\n var shareClassDetailItems = void 0;\n if (rev === true) {\n shareClassDetailItems = ['oneYr', 'twoYr', 'threeYr', 'fourYr', 'fiveYr'];\n } else {\n shareClassDetailItems = ['fiveYr', 'fourYr', 'threeYr', 'twoYr', 'oneYr'];\n }\n return shareClassDetailItems;\n },\n\n benchmarkDetailItems: function benchmarkDetailItems(rev) {\n var benchmarkDetailItems = void 0;\n if (rev === true) {\n benchmarkDetailItems = ['oneYrBMC', 'twoYrBMC', 'threeYrBMC', 'fourYrBMC', 'fiveYrBMC'];\n } else {\n benchmarkDetailItems = ['fiveYrBMC', 'fourYrBMC', 'threeYrBMC', 'twoYrBMC', 'oneYrBMC'];\n }\n return benchmarkDetailItems;\n },\n\n shareClassTable: function shareClassTable(aggSCName, inceptionDate, shareCurrency, SCDI, taID) {\n var shareClassTable = {\n name: aggSCName,\n inceptionDate: inceptionDate,\n currency: shareCurrency,\n\n fiveYr: SCDI.fiveYr,\n fourYr: SCDI.fourYr,\n threeYr: SCDI.threeYr,\n twoYr: SCDI.twoYr,\n oneYr: SCDI.oneYr,\n taID: taID\n };\n return shareClassTable;\n },\n\n benchMarkTable: function benchMarkTable(aggBMName, benchmarkCurrency, BMDI) {\n var benchMarkTable = {\n name: aggBMName,\n currency: benchmarkCurrency,\n\n fiveYr: BMDI.fiveYrBMC,\n fourYr: BMDI.fourYrBMC,\n threeYr: BMDI.threeYrBMC,\n twoYr: BMDI.twoYrBMC,\n oneYr: BMDI.oneYrBMC\n };\n return benchMarkTable;\n },\n\n iASecTable: function iASecTable(aggIAName, aggIAcurrency, IASec) {\n var quarterly = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var IASecTable = void 0;\n if (Object.keys(IASec).length > 0 && quarterly === false) {\n IASecTable = {\n name: aggIAName,\n currency: aggIAcurrency,\n\n fiveYr: IASec.DiscAnnRoleYr5SecAvg,\n fourYr: IASec.DiscAnnRoleYr4SecAvg,\n threeYr: IASec.DiscAnnRoleYr3SecAvg,\n twoYr: IASec.DiscAnnRoleYr2SecAvg,\n oneYr: IASec.DiscAnnRoleYr1SecAvg\n };\n } else if (Object.keys(IASec).length > 0) {\n IASecTable = {\n name: aggIAName,\n currency: aggIAcurrency,\n\n fiveYr: IASec.DiscAnnQtlYr5SecAvg,\n fourYr: IASec.DiscAnnQtlYr4SecAvg,\n threeYr: IASec.DiscAnnQtlYr3SecAvg,\n twoYr: IASec.DiscAnnQtlYr2SecAvg,\n oneYr: IASec.DiscAnnQtlYr1SecAvg\n };\n }\n return IASecTable;\n },\n\n graphDetailItems: function graphDetailItems(shareClassDetailItems, benchmarkDetailItems, IASecDetailItems) {\n var graphDetailItems = {\n shareClassDetailItems: shareClassDetailItems,\n benchmarkDetailItems: benchmarkDetailItems,\n IASecDetailItems: IASecDetailItems\n };\n return graphDetailItems;\n },\n\n graphData: function graphData(graphDetailItems, IASecTable, aggSCName, aggBMName, aggIAName, fundDiscreteDetails, thisIASecObj) {\n var graphData = [];\n\n graphData.push([]);\n graphDetailItems.shareClassDetailItems.forEach(function (item) {\n var thisPoint = {\n name: aggSCName,\n y: parseFloat(fundDiscreteDetails[item].val)\n };\n graphData[0].push(thisPoint);\n });\n\n graphData.push([]);\n try {\n graphDetailItems.benchmarkDetailItems.forEach(function (item) {\n var thisPoint = {\n name: aggBMName,\n y: parseFloat(fundDiscreteDetails[item].val)\n };\n graphData[1].push(thisPoint);\n });\n } catch (e) {\n logger.info('No Benchmark data');\n }\n\n if (typeof IASecTable !== 'undefined') {\n graphData.push([]);\n graphDetailItems.IASecDetailItems.forEach(function (item) {\n var thisPoint = {\n name: aggIAName,\n y: parseFloat(thisIASecObj[item].val)\n };\n graphData[2].push(thisPoint);\n });\n }\n return graphData;\n },\n\n dataObj: function dataObj(rev, discDataObjrev, discDataObj, graphData, dynamicLabel) {\n var dataObj = void 0;\n if (rev === true) {\n dataObj = {\n tableData: discDataObjrev,\n graphData: graphData,\n dynamicLabel: dynamicLabel\n };\n } else {\n dataObj = {\n tableData: discDataObj,\n graphData: graphData,\n dynamicLabel: dynamicLabel\n };\n }\n return dataObj;\n },\n\n getDiscIASec: function getDiscIASec() {\n var quarterly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var IASecDetailItems = [];\n if (quarterly === false) {\n IASecDetailItems = ['DiscAnnRoleYr1SecAvg', 'DiscAnnRoleYr2SecAvg', 'DiscAnnRoleYr3SecAvg', 'DiscAnnRoleYr4SecAvg', 'DiscAnnRoleYr5SecAvg'];\n } else {\n IASecDetailItems = ['DiscAnnQtlYr1SecAvg', 'DiscAnnQtlYr2SecAvg', 'DiscAnnQtlYr3SecAvg', 'DiscAnnQtlYr4SecAvg', 'DiscAnnQtlYr5SecAvg'];\n }\n return IASecDetailItems;\n },\n\n countYears: function countYears(asOfDate, inceptionDate) {\n var rev = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var parsedDataObj = _util.performanceUtils.dataManipulation(asOfDate, inceptionDate);\n var lastYear = parsedDataObj.lastYear;\n var firstYear = parsedDataObj.firstYear;\n var monthOfYear = parsedDataObj.monthOfYear;\n var yearAry = [];\n if (rev === false) {\n for (var i = 0; i < 5; i++) {\n var dateForDisplay = monthOfYear + '\\u2011' + String(firstYear + i + 1).substr(2) + '\\xA0/ ' + monthOfYear + '\\u2011' + String(firstYear + i).substr(2);\n yearAry.push(dateForDisplay);\n }\n } else {\n for (var _i = 0; _i < 5; _i++) {\n var _dateForDisplay = monthOfYear + '\\u2011' + String(lastYear - _i - 1).substr(2) + '\\xA0/ ' + monthOfYear + '\\u2011' + String(lastYear - _i).substr(2);\n yearAry.push(_dateForDisplay);\n }\n }\n return yearAry;\n },\n\n countYearsChart: function countYearsChart(asOfDate, inceptionDate) {\n var rev = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var parsedDataObj = _util.performanceUtils.dataManipulation(asOfDate, inceptionDate);\n var lastYear = parsedDataObj.lastYear;\n var firstYear = parsedDataObj.firstYear;\n var monthOfYear = parsedDataObj.monthOfYear;\n var yearAry = [];\n if (rev === false) {\n for (var i = 0; i < 5; i++) {\n if (firstYear + i < lastYear) {\n var dateForDisplay = monthOfYear + '\\u2011' + String(firstYear + i + 1).substr(2) + '\\xA0/ ' + monthOfYear + '\\u2011' + String(firstYear + i).substr(2);\n yearAry.push(dateForDisplay);\n } else {}\n }\n } else {\n for (var _i2 = 0; _i2 < 5; _i2++) {\n if (lastYear - _i2 > firstYear) {\n var _dateForDisplay2 = monthOfYear + '\\u2011' + String(lastYear - _i2 - 1).substr(2) + '\\xA0/ ' + (lastYear - _i2 - 1 === firstYear ? parsedDataObj.monthOfInception : monthOfYear) + '\\u2011' + String(lastYear - _i2).substr(2);\n yearAry.push(_dateForDisplay2);\n } else {}\n }\n }\n return yearAry;\n },\n getSHTableRow: function getSHTableRow(item, showMDash, mdash, allShareClassDetails, fundName) {\n var shClsCde = (0, _get2.default)(item, 'shClsCde.val');\n var name = void 0;\n if (shClsCde && shClsCde === 'SINGLCLASS' && fundName) {\n name = fundName + ' [nav-performance]';\n } else {\n name = '' + ((0, _get2.default)(item, 'shClsName.val') || (0, _get2.default)(item, 'calcName.val', ''));\n }\n return {\n name: name,\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n inceptionDate: (0, _get2.default)(item, 'perfIncDtLoc.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n oneYr: showMDash ? mdash : (0, _get2.default)(item, 'discreteDetail.oneYr.val', mdash),\n twoYr: showMDash ? mdash : (0, _get2.default)(item, 'discreteDetail.twoYr.val', mdash),\n threeYr: showMDash ? mdash : (0, _get2.default)(item, 'discreteDetail.threeYr.val', mdash),\n fourYr: showMDash ? mdash : (0, _get2.default)(item, 'discreteDetail.fourYr.val', mdash),\n fiveYr: showMDash ? mdash : (0, _get2.default)(item, 'discreteDetail.fiveYr.val', mdash),\n taID: (0, _get2.default)((0, _find2.default)(allShareClassDetails, { shCls: { val: (0, _get2.default)(item, 'shClsCde.val') } }), 'taID.val', mdash)\n };\n },\n getBMTableRow: function getBMTableRow(item, showMDash, mdash, yearsSinceStartDate, suppressYearsBeforeStartDate) {\n return {\n name: '' + (0, _get2.default)(item, 'bmcName.val'),\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n oneYr: showMDash || suppressYearsBeforeStartDate && yearsSinceStartDate < 1 ? mdash : (0, _get2.default)(item, 'discreteDetail.oneYrBMC.val', mdash),\n twoYr: showMDash || suppressYearsBeforeStartDate && yearsSinceStartDate < 2 ? mdash : (0, _get2.default)(item, 'discreteDetail.twoYrBMC.val', mdash),\n threeYr: showMDash || suppressYearsBeforeStartDate && yearsSinceStartDate < 3 ? mdash : (0, _get2.default)(item, 'discreteDetail.threeYrBMC.val', mdash),\n fourYr: showMDash || suppressYearsBeforeStartDate && yearsSinceStartDate < 4 ? mdash : (0, _get2.default)(item, 'discreteDetail.fourYrBMC.val', mdash),\n fiveYr: showMDash || suppressYearsBeforeStartDate && yearsSinceStartDate < 5 ? mdash : (0, _get2.default)(item, 'discreteDetail.fiveYrBMC.val', mdash),\n taID: mdash\n };\n },\n getIATableRow: function getIATableRow(item, mdash) {\n return {\n name: (0, _get2.default)(item, 'scheme.val') + ' ' + (0, _get2.default)(item, 'category.val'),\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n oneYr: (0, _get2.default)(item, 'DiscAnnRoleYr1SecAvg.val', mdash),\n twoYr: (0, _get2.default)(item, 'DiscAnnRoleYr2SecAvg.val', mdash),\n threeYr: (0, _get2.default)(item, 'DiscAnnRoleYr3SecAvg.val', mdash),\n fourYr: (0, _get2.default)(item, 'DiscAnnRoleYr4SecAvg.val', mdash),\n fiveYr: (0, _get2.default)(item, 'DiscAnnRoleYr5SecAvg.val', mdash),\n taID: mdash,\n IASector: true\n };\n }\n };\n});\r\ndefine('components/products/performance/ft-discrete-returns/lib/discrete-returns.reducer',['exports', 'aurelia-framework', 'lodash/set', 'lodash/get'], function (exports, _aureliaFramework, _set, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.discreteReturns = discreteReturns;\n\n var _set2 = _interopRequireDefault(_set);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('discreteReturns');\n function discreteReturns(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'DISCRETE_RETURNS_CHANGE_TAB':\n logger.info('Reducing: DISCRETE_RETURNS_CHANGE_TAB');\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.discreteReturns.currentTab', action.tab);\n return newState;\n case 'DISCRETE_RETURNS_DEFAULT_STATE_SUCCESS':\n logger.info('Reducing: ', action);\n var _action$json = action.json,\n rawComponentConfig = _action$json[0];\n\n var refreshRates = (0, _get2.default)(rawComponentConfig, 'Refresh_Rate');\n var tab = action.defaultTab;\n if (refreshRates && refreshRates[0] === 'MONTHLY') {\n tab = 'MONTH_END';\n }\n if (refreshRates && refreshRates[0] === 'QUARTERLY') {\n tab = 'QUARTER_END';\n }\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.discreteReturns.currentTab', tab);\n (0, _set2.default)(newState, 'app.performance.discreteReturns.refreshRates', refreshRates);\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/performance/ft-performance-annualised/lib/performance-annualised-utils',['exports', 'lodash/get', 'lodash/find', '../../util/util'], function (exports, _get, _find, _util) {\n 'use strict';\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.annualisedUtils = {\n getSHTableRow: function getSHTableRow(item, showMDash, mdash, allShareClassDetails, fundName) {\n var shClsCde = (0, _get2.default)(item, 'shClsCde.val');\n var name = void 0;\n if (shClsCde && shClsCde === 'SINGLCLASS' && fundName) {\n name = fundName + ' [nav-performance]';\n } else {\n name = '' + ((0, _get2.default)(item, 'shClsName.val') || (0, _get2.default)(item, 'calcName.val', ''));\n }\n return {\n name: name,\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n inceptionDate: (0, _get2.default)(item, 'perfIncDtLoc.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n oneY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.oneYr.val', mdash),\n threeY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.threeYr.val', mdash),\n fiveY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.fiveYr.val', mdash),\n tenY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.tenYr.val', mdash),\n fiftnY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.fiftnYr.val', mdash),\n life: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.sinceIncp.val', mdash),\n taID: (0, _get2.default)((0, _find2.default)(allShareClassDetails, { shCls: { val: (0, _get2.default)(item, 'shClsCde.val') } }), 'taID.val'),\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n\n getBMTableRow: function getBMTableRow(item, showMDash, mdash) {\n return {\n name: '' + (0, _get2.default)(item, 'bmcName.val'),\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n inceptionDate: (0, _get2.default)(item, 'perfIncDtLoc.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n oneY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.oneYrBMC.val', mdash),\n threeY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.threeYrBMC.val', mdash),\n fiveY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.fiveYrBMC.val', mdash),\n tenY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.tenYrBMC.val', mdash),\n fiftnY: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.fiftnYrBMC.val', mdash),\n life: showMDash ? mdash : (0, _get2.default)(item, 'avgAnnual.sinceIncpBMC.val', mdash),\n taID: mdash,\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n\n getIATableRow: function getIATableRow(item, mdash) {\n return {\n name: (0, _get2.default)(item, 'scheme.val') + ' ' + (0, _get2.default)(item, 'category.val'),\n asOfDate: (0, _get2.default)(item, 'asOfDate.val', mdash),\n currency: (0, _get2.default)(item, 'currency.val', mdash),\n ytd: (0, _get2.default)(item, 'peerGrpSecAvgYtd.val', mdash),\n oneY: (0, _get2.default)(item, 'peerGrpSecAvg1YrDivReinv.val', mdash),\n threeY: (0, _get2.default)(item, 'peerGrpSecAvg2YrDivReinv.val', mdash),\n fiveY: (0, _get2.default)(item, 'peerGrpSecAvg5YrDivReinv.val', mdash),\n tenY: (0, _get2.default)(item, 'peerGrpSecAvg10YrDivReinv.val', mdash),\n fifteenY: (0, _get2.default)(item, 'peerGrpSecAvg15YrDivReinv.val', mdash),\n taID: mdash,\n IASector: true,\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n }\n };\n});\r\ndefine('components/products/performance/ft-performance-annualised/lib/performance-annualised.reducer',['exports', 'aurelia-framework', 'lodash/set', 'lodash/get'], function (exports, _aureliaFramework, _set, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceAnnualised = performanceAnnualised;\n\n var _set2 = _interopRequireDefault(_set);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-annualised');\n\n function performanceAnnualised(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'PERFORMANCE_ANNUALISED_CHANGE_YEAR_GROUP_TAB':\n logger.info('Reducing: PERFORMANCE_ANNUALISED_CHANGE_YEAR_GROUP_TAB');\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.performanceAnnualised.currentYearGroupTab', action.tab);\n return newState;\n case 'PERFORMANCE_ANNUALISED_CHANGE_TIME_PERIOD_TAB':\n logger.info('Reducing: PERFORMANCE_ANNUALISED_CHANGE_TIME_PERIOD_TAB');\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.performanceAnnualised.currentTimePeriodTab', action.tab);\n return newState;\n case 'PERFORMANCE_ANNUALISED_DEFAULT_STATE_SUCCESS':\n logger.info('Reducing: PERFORMANCE_ANNUALISED_DEFAULT_STATE_SUCCESS', action);\n var _action$json = action.json,\n rawComponentConfig = _action$json[0];\n\n var refreshRates = (0, _get2.default)(rawComponentConfig, 'Refresh_Rate');\n var tab = action.defaultTab;\n if (refreshRates && refreshRates[0] === 'MONTHLY') {\n tab = 'MONTH_END';\n }\n if (refreshRates && refreshRates[0] === 'QUARTERLY') {\n tab = 'QUARTER_END';\n }\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.performance.performanceAnnualised.currentTimePeriodTab', tab);\n (0, _set2.default)(newState, 'app.performance.performanceAnnualised.refreshRates', refreshRates);\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/performance/ft-performance-cumulative/lib/performance-cumulative-utils',['exports', 'lodash/get', 'lodash/find', '../../util/util', 'moment'], function (exports, _get, _find, _util, _moment) {\n 'use strict';\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.cumulativeUtils = {\n getSHTableRow: function getSHTableRow(item, showMDash, mdash, allShareClassDetails, fundName) {\n var shClsCde = (0, _get2.default)(item, 'shClsCde.val');\n var name = void 0;\n if (shClsCde && shClsCde === 'SINGLCLASS' && fundName) {\n name = fundName + ' [nav-performance]';\n } else {\n name = '' + ((0, _get2.default)(item, 'shClsName.val') || (0, _get2.default)(item, 'calcName.val', ''));\n }\n return {\n name: name,\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n inceptionDate: (0, _get2.default)(item, 'perfIncDtLoc.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n ytd: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.ytd.val', mdash),\n oneM: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.oneMth.val', mdash),\n threeM: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.threeMth.val', mdash),\n sixM: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.sixMth.val', mdash),\n one: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.oneYr.val', mdash),\n three: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.threeYr.val', mdash),\n five: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.fiveYr.val', mdash),\n ten: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.tenYr.val', mdash),\n fifteen: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.fiftnYr.val', mdash),\n life: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.sinceIncp.val', mdash),\n taID: (0, _get2.default)((0, _find2.default)(allShareClassDetails, { shCls: { val: (0, _get2.default)(item, 'shClsCde.val') } }), 'taID.val'),\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n getBMTableRow: function getBMTableRow(item, showMDash, mdash) {\n return {\n name: '' + (0, _get2.default)(item, 'bmcName.val'),\n asOfDate: (0, _get2.default)(item, 'asOfDate.val'),\n inceptionDate: (0, _get2.default)(item, 'perfIncDtLoc.val'),\n currency: (0, _get2.default)(item, 'currency.val'),\n ytd: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.ytdBMC.val', mdash),\n oneM: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.oneMthBMC.val', mdash),\n threeM: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.threeMthBMC.val', mdash),\n sixM: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.sixMthBMC.val', mdash),\n one: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.oneYrBMC.val', mdash),\n three: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.threeYrBMC.val', mdash),\n five: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.fiveYrBMC.val', mdash),\n ten: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.tenYrBMC.val', mdash),\n fifteen: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.fiftnYrBMC.val', mdash),\n life: showMDash ? mdash : (0, _get2.default)(item, 'cumulativeDetail.sinceIncpBMC.val', mdash),\n taID: mdash,\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n getIATableRow: function getIATableRow(item, mdash) {\n return {\n name: (0, _get2.default)(item, 'scheme.val') + ' ' + (0, _get2.default)(item, 'category.val'),\n asOfDate: (0, _get2.default)(item, 'asOfDate.val', mdash),\n currency: (0, _get2.default)(item, 'currency.val', mdash),\n ytd: (0, _get2.default)(item, 'peerGrpSecAvgYtd.val', mdash),\n oneM: (0, _get2.default)(item, 'peerGrpSecAvg1Mth.val', mdash),\n threeM: (0, _get2.default)(item, 'peerGrpSecAvg3Mth .val', mdash),\n sixM: (0, _get2.default)(item, 'peerGrpSecAvg6Mth.val', mdash),\n one: (0, _get2.default)(item, 'peerGrpSecAvg1Yr.val', mdash),\n three: (0, _get2.default)(item, 'peerGrpSecAvg3Yr.val', mdash),\n five: (0, _get2.default)(item, 'peerGrpSecAvg5Yr.val', mdash),\n ten: (0, _get2.default)(item, 'peerGrpSecAvg10Yr.val', mdash),\n fifteen: (0, _get2.default)(item, 'peerGrpSecAvg15Yr.val', mdash),\n taID: mdash,\n IASector: true,\n productLink: _util.performanceUtils.createProductPageLink(item)\n };\n },\n processPerformanceChartData: function processPerformanceChartData(data, graphIndex, field, sortedBenchmarkOrder) {\n if (Object.keys(data).length > 0) {\n try {\n var monthlyGraphs = (0, _get2.default)(data, 'globalProductsValue.perfHistoryGraphsList.graphsListByShareclass[0].' + field);\n\n var chartset = monthlyGraphs[graphIndex];\n var fundData = (0, _get2.default)(chartset, 'fundData');\n\n var INST1 = (0, _get2.default)(chartset, 'bmData');\n var INST2 = (0, _get2.default)(chartset, 'secondaryBmData');\n\n var chartRows = [];\n\n\n if (fundData && fundData.length > 0) {\n chartRows.push(this.proccessDataForChart(fundData));\n }\n\n if (sortedBenchmarkOrder[0] && sortedBenchmarkOrder[0] === 'INST1' && INST1) {\n chartRows.push(this.proccessDataForChart(INST1));\n }\n if (sortedBenchmarkOrder[0] && sortedBenchmarkOrder[0] === 'INST2' && INST2) {\n chartRows.push(this.proccessDataForChart(INST2));\n }\n if (sortedBenchmarkOrder[1] && sortedBenchmarkOrder[1] === 'INST1' && INST1) {\n chartRows.push(this.proccessDataForChart(INST1));\n }\n if (sortedBenchmarkOrder[1] && sortedBenchmarkOrder[1] === 'INST2' && INST2) {\n chartRows.push(this.proccessDataForChart(INST2));\n }\n\n return chartRows;\n } catch (e) {\n return [];\n }\n }\n },\n proccessDataForChart: function proccessDataForChart(data) {\n return data.map(function (detail) {\n return [_moment2.default.utc((0, _get2.default)(detail, 'chartKey.val'), 'MM/YY').valueOf(), parseFloat((0, _get2.default)(detail, 'chartValue.val'))];\n }).sort(function (a, b) {\n return a[0] - b[0];\n });\n }\n };\n});\r\ndefine('components/products/performance/ft-performance-cumulative/lib/performance-cumulative.reducer',['exports', 'aurelia-framework', 'lodash/get'], function (exports, _aureliaFramework, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceCumulative = performanceCumulative;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-cumulative');\n\n function performanceCumulative(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'PERFORMANCE_CUMULATIVE_CHANGE_YEAR_GROUP_TAB':\n logger.info('Reducing: PERFORMANCE_CUMULATIVE_CHANGE_YEAR_GROUP_TAB');\n newState = Object.assign({}, state);\n _checkObjectExists(newState, 'performance', 'performanceCumulative');\n Object.assign(newState.app.performance.performanceCumulative, { currentYearGroupTab: action.tab });\n return newState;\n case 'PERFORMANCE_CUMULATIVE_CHANGE_MONTH_TAB':\n logger.info('Reducing: PERFORMANCE_CUMULATIVE_CHANGE_MONTH_TAB');\n newState = Object.assign({}, state);\n _checkObjectExists(newState, 'performance', 'performanceCumulative');\n Object.assign(newState.app.performance.performanceCumulative, {\n currentMonthTab: action.tab,\n currentMonthTabLabelKey: action.labelKey\n });\n return newState;\n case 'PERFORMANCE_CUMULATIVE_CONFIG_DEFAULT_STATE_SUCCESS':\n logger.info('Reducing: PERFORMANCE_CUMULATIVE_DEFAULT_STATE_SUCCESS', action);\n var _action$json = action.json,\n rawComponentConfig = _action$json[0];\n\n var refreshRates = (0, _get2.default)(rawComponentConfig, 'Refresh_Rate');\n var yearTab = action.yearTab;\n var labelKey = action.labelKey;\n var timePeriodTab = action.timePeriodTab;\n if (refreshRates && refreshRates[0] === 'MONTHLY') {\n timePeriodTab = 'MONTH_END';\n labelKey = 'month-end';\n }\n if (refreshRates && refreshRates[0] === 'QUARTERLY') {\n timePeriodTab = 'QUARTER_END';\n labelKey = 'quarter-end';\n }\n newState = Object.assign({}, state);\n _checkObjectExists(newState, 'performance', 'performanceCumulative');\n Object.assign(newState.app.performance.performanceCumulative, {\n currentMonthTab: timePeriodTab,\n currentMonthTabLabelKey: labelKey,\n currentYearGroupTab: yearTab,\n refreshRates: refreshRates\n });\n return newState;\n case 'PERFORMANCE_CUMULATIVE_DEFAULT_STATE':\n logger.info('Reducing: PERFORMANCE_CUMULATIVE_DEFAULT_STATE');\n newState = Object.assign({}, state);\n _checkObjectExists(newState, 'performance', 'performanceCumulative');\n Object.assign(newState.app.performance.performanceCumulative, {\n currentMonthTab: action.timePeriodTab,\n currentMonthTabLabelKey: action.labelKey,\n currentYearGroupTab: action.yearTab\n });\n return newState;\n default:\n return state;\n }\n }\n\n function _checkObjectExists(state, object, subObject) {\n if (!state.app) state.app = {};\n if (!state.app[object]) state.app[object] = {};\n if (!state.app[object][subObject]) state.app[object][subObject] = {};\n }\n});\r\ndefine('components/products/portfolio/ft-portfolio-no-data-message/lib/portfolio-no-data-message.reducer',['exports', 'lodash/set', '../../../common/util/utils'], function (exports, _set, _utils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.portfolioNoDataMessageReducer = portfolioNoDataMessageReducer;\n\n var _set2 = _interopRequireDefault(_set);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function portfolioNoDataMessageReducer(state, action) {\n var compState = void 0;\n var newState = void 0;\n switch (action.type) {\n case 'CHECK_PORTFOLIO_DATA_ERROR':\n compState = {\n error: true\n };\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'portfolio.noDataMessage', compState);\n return newState;\n case 'CHECK_PORTFOLIO_DATA_SUCCESS':\n var _action$json = action.json,\n portfolioData = _action$json[0],\n fundDetailsData = _action$json[1];\n\n if ((0, _utils.isEmptyDeep)(portfolioData) && (0, _utils.isEmptyDeep)(fundDetailsData)) {\n compState = {\n error: true\n };\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'portfolio.noDataMessage', compState);\n return newState;\n }\n break;\n default:\n }\n return state;\n }\n});\r\ndefine('components/products/ppss/ft-ppss/lib/ppss.reducer',['exports', 'aurelia-framework', 'lodash/isEqual'], function (exports, _aureliaFramework, _isEqual) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ppss = ppss;\n\n var _isEqual2 = _interopRequireDefault(_isEqual);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('ppss');\n\n function ppss(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'PPSS_CHANGE_TAB':\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss, { currentTable: action.tab });\n return newState;\n case 'PPSS_CHANGE_PERFORMANCE_VIEW':\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss.display, {\n performanceView: action.data\n });\n return newState;\n case 'PPSS_CHANGE_SALES_CHARGES':\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss.display, { includeSalesCharges: action.data });\n return newState;\n case 'PPSS_CHANGE_DROPDOWN':\n logger.debug('Reducing: PPSS_CHANGE_DROPDOWN', action);\n var currentFilter = state.app.ppss.filters.dropdowns.find(function (d) {\n return d.name === action.name;\n });\n if (currentFilter && !(0, _isEqual2.default)(currentFilter.selected.value, action.newValue.value)) {\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss.filters.dropdowns.find(function (d) {\n return d.name === action.name;\n }).selected, action.newValue);\n return newState;\n }\n return state;\n case 'PPSS_CHANGE_KEYWORDS':\n var keywordsFilter = state.app.ppss.filters.keywords;\n if (keywordsFilter && keywordsFilter.searchString !== action.newSearchString) {\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss.filters.keywords, { searchString: action.newSearchString });\n return newState;\n }\n return state;\n case 'PPSS_CHANGE_SORT':\n logger.debug('Reducing: PPSS_CHANGE_SORT'.action);\n var columns = state.app.ppss.sort.columns;\n var newSortColumn = columns.get(action.columnName);\n if (newSortColumn) {\n switch (newSortColumn.direction) {\n case 'ASC':\n newSortColumn.direction = 'DESC';\n break;\n case 'DESC':\n newSortColumn.direction = 'ASC';\n break;\n default:\n newSortColumn.direction = newSortColumn.isNumeric ? 'DESC' : 'ASC';\n }\n columns.forEach(function (value, key) {\n if (key !== action.columnName) {\n columns.set(key, Object.defineProperty(value, 'direction', { value: null, configurable: true }));\n }\n });\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss.sort, { columns: columns });\n return newState;\n }\n return state;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/ppss/ft-find-a-fund/lib/find-a-fund.reducer',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.findAFund = findAFund;\n\n\n var logger = _aureliaFramework.LogManager.getLogger('find-a-fund');\n\n function findAFund(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'FIND_A_FUND_CHANGE_SEARCH':\n logger.debug('Reducing: FIND_A_FUND_CHANGE_SEARCH', action);\n var oldSearchString = state.app.ppss.findAFund.searchString;\n logger.debug('oldSearchString', oldSearchString);\n logger.debug('newSearchString', action.newSearchString);\n if (oldSearchString !== action.newSearchString) {\n newState = Object.assign({}, state);\n Object.assign(newState.app.ppss.findAFund, { searchString: action.newSearchString });\n return newState;\n }\n return state;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/pricing-distribution/ft-pricing-distribution/lib/pricing-distribution.reducer',['exports', 'aurelia-framework', 'moment', 'lodash/last'], function (exports, _aureliaFramework, _moment, _last) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DATE_RANGE_ENUM = undefined;\n exports.pricingDistribution = pricingDistribution;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _last2 = _interopRequireDefault(_last);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('pricing-distribution');\n\n var DATE_RANGE_ENUM = exports.DATE_RANGE_ENUM = {\n ONE_MONTH: {\n name: 'ONE_MONTH',\n labelKey: '1-month',\n dataKey: 'navHistory1M',\n downloadKey: 'navHistory1M',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var monthAgo = dataEndMoment.clone().subtract(1, 'months');\n if (monthAgo.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return monthAgo;\n }\n },\n THREE_MONTHS: {\n name: 'THREE_MONTHS',\n labelKey: '3-months',\n dataKey: 'navHistory3M',\n downloadKey: 'navHistory3M',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var threeMonthsAgo = dataEndMoment.clone().subtract(3, 'months');\n if (threeMonthsAgo.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return threeMonthsAgo;\n }\n },\n SIX_MONTHS: {\n name: 'SIX_MONTHS',\n labelKey: '6-months',\n dataKey: 'navHistory6M',\n downloadKey: 'navHistory6M',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var sixMonthsAgo = dataEndMoment.clone().subtract(6, 'months');\n if (sixMonthsAgo.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return sixMonthsAgo;\n }\n },\n YTD: {\n name: 'YTD',\n labelKey: 'ytd',\n dataKey: 'navHistoryYTD',\n downloadKey: 'navHistoryYTD',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var startOfYear = dataEndMoment.clone().startOf('year');\n if (startOfYear.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return startOfYear;\n }\n },\n ONE_YEAR: {\n name: 'ONE_YEAR',\n labelKey: '1-year',\n dataKey: 'navHistory1Y',\n downloadKey: 'navHistory1Y',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var yearAgo = dataEndMoment.clone().subtract(1, 'years');\n if (yearAgo.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return yearAgo;\n }\n },\n THREE_YEARS: {\n name: 'THREE_YEARS',\n labelKey: '3-years',\n dataKey: 'navHistory3Y',\n downloadKey: 'navHistory3Y',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var threeYearsAgo = dataEndMoment.clone().subtract(3, 'years');\n if (threeYearsAgo.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return threeYearsAgo;\n }\n },\n FIVE_YEARS: {\n name: 'FIVE_YEARS',\n labelKey: '5-years',\n dataKey: 'navHistory5Y',\n downloadKey: 'navHistory5Y',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n var fiveYearsAgo = dataEndMoment.clone().subtract(5, 'years');\n if (fiveYearsAgo.isBefore(dataStartMoment)) {\n return dataStartMoment.clone();\n }\n return fiveYearsAgo;\n }\n },\n SINCE_INCEPTION: {\n name: 'SINCE_INCEPTION',\n labelKey: 'since-inception',\n dataKey: 'navHistory',\n downloadKey: 'navHistoryDR',\n\n fromDate: function fromDate(dataStartMoment, dataEndMoment) {\n return dataStartMoment.clone();\n }\n }\n };\n\n function pricingDistribution(state, action) {\n var newState = void 0;\n var newSubState = {};\n switch (action.type) {\n case 'POPULATE_DISTRIBUTION_HISTORY':\n logger.debug('Reducing: POPULATE_DISTRIBUTION_HISTORY', action, state);\n\n newState = Object.assign({}, state);\n newState.app.pricingDistribution.historicalDistributions.loading = true;\n return newState;\n case 'POPULATE_DISTRIBUTION_HISTORY_SUCCESS':\n logger.debug('Reducing: POPULATE_DISTRIBUTION_HISTORY_SUCCESS', action, state);\n\n newState = Object.assign({}, state);\n newState.app.pricingDistribution.historicalDistributions.loading = false;\n return newState;\n case 'POPULATE_DISTRIBUTION_HISTORY_ERROR':\n logger.debug('Reducing: POPULATE_DISTRIBUTION_HISTORY_SUCCESS', action, state);\n\n newState = Object.assign({}, state);\n newState.app.pricingDistribution.historicalDistributions.loading = false;\n return newState;\n case 'PRICING_DISTRIBUTION_SET_RANGE':\n logger.debug('Reducing: PRICING_DISTRIBUTION_SET_RANGE', action, state);\n if (!action.data.store) {\n logger.warn('no data store set');\n return state;\n }\n if (!action.data.shareClass) {\n logger.warn('no shareClass set');\n return state;\n }\n\n if (!DATE_RANGE_ENUM[action.data.dateRange]) {\n logger.warn('unknown date ENUM \\'' + action.data.dateRange + '\\'');\n return state;\n }\n\n newState = Object.assign({}, state);\n newSubState[action.data.store] = createDateRangeStore(action.data.shareClass, action.data.dateRange);\n\n if (!newSubState[action.data.store].navHistory) {\n var sinceInception = DATE_RANGE_ENUM.SINCE_INCEPTION.name;\n newSubState[action.data.store] = createDateRangeStore(action.data.shareClass, sinceInception);\n }\n\n newState.app.pricingDistribution = Object.assign({}, state.app.pricingDistribution, newSubState);\n return newState;\n case 'PRICING_DISTRIBUTION_SET_CUSTOM_DATES':\n logger.debug('Reducing: PRICING_DISTRIBUTION_SET_CUSTOM_DATES', action, state);\n if (!action.data.store) {\n logger.warn('no data store set');\n return state;\n }\n if (!action.data.shareClass) {\n logger.warn('no shareClass set');\n return state;\n }\n\n newSubState[action.data.store] = createCustomRangeStore(action.data.shareClass, action.data.toDate, action.data.fromDate);\n newState = Object.assign({}, state);\n newState.app.pricingDistribution = Object.assign({}, state.app.pricingDistribution, newSubState);\n return newState;\n default:\n return state;\n }\n }\n\n function createDateRangeStore(shareClass, dateRange) {\n var selectedDateRangeName = dateRange;\n var dateRangeOption = DATE_RANGE_ENUM[selectedDateRangeName];\n var navHist = shareClass[dateRangeOption.dataKey];\n var componentState = {\n init: true,\n selectedDateRange: selectedDateRangeName,\n\n selectedDateRangeObj: dateRangeOption,\n navHistory: navHist\n };\n\n if (navHist) {\n var dataStartMoment = (0, _moment2.default)((0, _last2.default)(navHist).navDate, 'YYYY-MM-DD');\n var dataEndMoment = (0, _moment2.default)(shareClass.asOfDateStd, 'YYYY-MM-DD');\n var fromStdDate = dateRangeOption.fromDate(dataStartMoment, dataEndMoment).format('YYYY-MM-DD');\n var toStdDate = dataEndMoment.format('YYYY-MM-DD');\n\n setStoreDateRanges(componentState, shareClass.minDate, toStdDate, fromStdDate);\n }\n return componentState;\n }\n\n function createCustomRangeStore(shareClass, toDate, fromDate) {\n var allHistory = shareClass[DATE_RANGE_ENUM.SINCE_INCEPTION.dataKey];\n\n var navHistory = allHistory.filter(function (nav) {\n return nav.navDate >= fromDate && nav.navDate <= toDate;\n });\n var componentState = {\n init: true,\n selectedDateRange: 'CUSTOM_RANGE',\n selectedDateRangeObj: null,\n navHistory: navHistory\n };\n setStoreDateRanges(componentState, shareClass.minDate, toDate, fromDate);\n return componentState;\n }\n\n function setStoreDateRanges(store, minDate, toDate, fromDate) {\n store.fromDate = fromDate;\n store.toDate = toDate;\n store.datePickerFromOpts = {\n minStdDate: minDate,\n maxStdDate: toDate\n };\n store.datePickerToOpts = {\n minStdDate: fromDate,\n maxStdDate: (0, _moment2.default)().format('YYYY-MM-DD')\n };\n }\n});\r\ndefine('components/products/pricing-distribution/ft-pricing-distribution/lib/utils',['exports', 'moment'], function (exports, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DATE_RANGE_ENUM = undefined;\n exports.getCurrentShareClass = getCurrentShareClass;\n exports.calculateFromDateStd = calculateFromDateStd;\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function getCurrentShareClass(pricingDistribution, currentShareClassCode) {\n var currentShareClass = void 0;\n if (currentShareClassCode) {\n currentShareClass = pricingDistribution.shareClasses.find(function (sc) {\n return sc.shareClassCode === currentShareClassCode;\n });\n }\n if (!currentShareClass) {\n currentShareClass = pricingDistribution.primaryShareClass;\n }\n return currentShareClass;\n }\n\n var DATE_RANGE_ENUM = exports.DATE_RANGE_ENUM = {\n ONE_MONTH: {\n name: 'ONE_MONTH',\n labelKey: '1-month',\n dataKey: 'navHistory1M',\n downloadKey: 'navHistory1M',\n period: {\n key: 'months',\n value: 1\n }\n },\n THREE_MONTHS: {\n name: 'THREE_MONTHS',\n labelKey: '3-months',\n dataKey: 'navHistory3M',\n downloadKey: 'navHistory3M',\n period: {\n key: 'months',\n value: 3\n }\n },\n SIX_MONTHS: {\n name: 'SIX_MONTHS',\n labelKey: '6-months',\n dataKey: 'navHistory6M',\n downloadKey: 'navHistory6M',\n period: {\n key: 'months',\n value: 6\n }\n },\n YTD: {\n name: 'YTD',\n labelKey: 'ytd',\n dataKey: 'navHistoryYTD',\n downloadKey: 'navHistoryYTD'\n },\n ONE_YEAR: {\n name: 'ONE_YEAR',\n labelKey: '1-year',\n dataKey: 'navHistory1Y',\n downloadKey: 'navHistory1Y',\n period: {\n key: 'years',\n value: 1\n }\n },\n THREE_YEARS: {\n name: 'THREE_YEARS',\n labelKey: '3-years',\n dataKey: 'navHistory3Y',\n downloadKey: 'navHistory3Y',\n period: {\n key: 'years',\n value: 3\n }\n },\n FIVE_YEARS: {\n name: 'FIVE_YEARS',\n labelKey: '5-years',\n dataKey: 'navHistory5Y',\n downloadKey: 'navHistory5Y',\n period: {\n key: 'years',\n value: 5\n }\n },\n SINCE_INCEPTION: {\n name: 'SINCE_INCEPTION',\n labelKey: 'since-inception',\n dataKey: 'navHistory',\n downloadKey: 'navHistoryDR'\n },\n\n CUSTOM_RANGE: {\n name: 'CUSTOM_RANGE',\n\n labelKey: 'custom-range',\n dataKey: 'navHistoryCR',\n downloadKey: 'navHistoryCR'\n }\n };\n\n function calculateFromDateStd(name, startDateStd, endDateStd) {\n var startMoment = (0, _moment2.default)(startDateStd, 'YYYY-MM-DD');\n var endMoment = (0, _moment2.default)(endDateStd, 'YYYY-MM-DD');\n switch (name) {\n case 'CUSTOM_RANGE':\n return startDateStd;\n case 'SINCE_INCEPTION':\n return startDateStd;\n case 'YTD':\n var startOfYear = endMoment.startOf('year');\n if (startOfYear.isBefore(startMoment)) {\n return startMoment.format('YYYY-MM-DD');\n }\n return startOfYear.format('YYYY-MM-DD');\n default:\n var period = DATE_RANGE_ENUM[name].period;\n var fromDate = endMoment.subtract(period.value, period.key);\n if (fromDate.isBefore(startMoment)) {\n return startMoment.format('YYYY-MM-DD');\n }\n return fromDate.format('YYYY-MM-DD');\n }\n }\n});\r\ndefine('components/products/tax/ft-german-tax/lib/tax.reducer',['exports', 'aurelia-framework', 'lodash/isEqual'], function (exports, _aureliaFramework, _isEqual) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.tax = tax;\n\n var _isEqual2 = _interopRequireDefault(_isEqual);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('tax');\n\n function tax(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'TAX_CHANGE_SORT':\n logger.debug('Reducing: TAX_CHANGE_SORT', action);\n var columns = state.app.tax.sort.columns;\n var newSortColumn = columns.get(action.columnName);\n if (newSortColumn) {\n switch (newSortColumn.direction) {\n case 'ASC':\n newSortColumn.direction = 'DESC';\n break;\n case 'DESC':\n newSortColumn.direction = 'ASC';\n break;\n default:\n newSortColumn.direction = newSortColumn.isNumeric ? 'DESC' : 'ASC';\n }\n columns.forEach(function (value, key) {\n if (key !== action.columnName) {\n columns.set(key, Object.defineProperty(value, 'direction', { value: null, configurable: true }));\n }\n });\n newState = Object.assign({}, state);\n Object.assign(newState.app.tax.sort, { columns: columns });\n return newState;\n }\n return state;\n case 'TAX_CHANGE_DROPDOWN':\n logger.debug('Reducing: TAX_CHANGE_DROPDOWN', action);\n var currentFilter = state.app.tax.filters.dropdowns.find(function (d) {\n return d.name === action.name;\n });\n if (currentFilter && !(0, _isEqual2.default)(currentFilter.selected.value, action.newValue.value)) {\n newState = Object.assign({}, state);\n Object.assign(newState.app.tax.filters.dropdowns.find(function (d) {\n return d.name === action.name;\n }).selected, action.newValue);\n return newState;\n }\n return state;\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/lists/ft-report-archive-c/lib/intl/report-archive-c.reducer',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.reportArchiveC = reportArchiveC;\n function reportArchiveC(state, action) {}\n});\r\ndefine('components/products/common/elements/ft-caveats/lib/caveat-utils',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.hasValues = hasValues;\n function hasValues(arr) {\n return arr.length && !arr.map(function (val) {\n return val.toUpperCase();\n }).includes('DISPLAY-ALL');\n }\n});\r\ndefine('components/products/common/elements/ft-caveats/lib/caveats.reducer',['exports', 'aurelia-framework', './caveat-utils', 'lodash/cloneDeep'], function (exports, _aureliaFramework, _caveatUtils, _cloneDeep) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.caveatsReducer = caveatsReducer;\n\n var _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('caveats-reducer');\n\n function caveatsReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n var newState = void 0;\n switch (action.type) {\n case 'REGISTER_FOOTNOTE':\n logger.debug('Reducing: REGISTER_FOOTNOTE', action.placement, state.app.registeredFootnotePlacements);\n newState = Object.assign({}, state);\n\n var registeredFootnotePlacements = [];\n action.orderedPlacements.forEach(function (op) {\n if (op.key === action.key || state.app.registeredFootnotePlacements.find(function (rfp) {\n return op.key === rfp.key;\n })) {\n registeredFootnotePlacements.push(op);\n }\n });\n\n var allFootnotes = state.footnotes;\n var visibleFootnotes = allFootnotes.filter(function (footnote) {\n if ((0, _caveatUtils.hasValues)(footnote.funds)) {\n return footnote.keys.reduce(function (result, key) {\n return result || registeredFootnotePlacements.find(function (rfp) {\n return rfp.key === key;\n });\n }, false);\n }\n return footnote.placements.reduce(function (result, placement) {\n return result || registeredFootnotePlacements.find(function (rfp) {\n return rfp.placement === placement;\n });\n }, false);\n });\n\n visibleFootnotes = visibleFootnotes.map(_cloneDeep2.default);\n\n visibleFootnotes.forEach(function (fn, idx) {\n fn.sortOrder = registeredFootnotePlacements.findIndex(function (rfp) {\n if ((0, _caveatUtils.hasValues)(fn.funds)) {\n return fn.keys.includes(rfp.key);\n }\n\n return fn.placements.includes(rfp.placement);\n });\n });\n\n visibleFootnotes.sort(function (a, b) {\n return a.sortOrder - b.sortOrder;\n });\n\n visibleFootnotes.forEach(function (fn, idx) {\n return fn.order = idx + 1;\n });\n\n newState.app.registeredFootnotePlacements = registeredFootnotePlacements;\n newState.app.visibleFootnotes = visibleFootnotes;\n return newState;\n case 'UNREGISTER_FOOTNOTES':\n logger.debug('Reducing: UNREGISTER_FOOTNOTES', action);\n return state;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/common/elements/ft-share-class-filter/lib/share-class-filter.reducer',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.shareClassFilterReducer = shareClassFilterReducer;\n function shareClassFilterReducer(state, action) {\n switch (action.type) {\n case 'CHANGE_SHARE_CLASS':\n var newState = Object.assign({}, state);\n Object.assign(newState.app, { currentShareClass: action.shareClass });\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/overview/ft-fund-information/lib/common/fund-information.reducer',['exports', 'lodash/find', 'lodash/includes', '../../../../lib/reducer-utils'], function (exports, _find, _includes, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.IDENTIFIER_FIELDS = undefined;\n exports.buildFundInformation = buildFundInformation;\n exports.updateDistributionYield = updateDistributionYield;\n\n var _find2 = _interopRequireDefault(_find);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var IDENTIFIER_FIELDS = exports.IDENTIFIER_FIELDS = {\n 'fundNumber': {\n dataKey: 'fundDetails.fundId.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'isin': {\n dataKey: 'normalised.currentClass.ISIN.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'cusip': {\n dataKey: 'normalised.currentClass.CUSIP.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'reuters': {\n dataKey: 'normalised.currentClass.rutrsSymb.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'bloomberg': {\n dataKey: 'normalised.currentClass.blmbrgIdentfr.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'wkn': {\n dataKey: 'normalised.currentClass.WKN.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'sedol': {\n dataKey: 'normalised.currentClass.SEDOL.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'valoren': {\n dataKey: 'normalised.currentClass.valrnSymb.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'mexid': {\n dataKey: 'normalised.currentClass.MEXID.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n\n 'ticker': {\n dataKey: 'fundDetails.TICKER.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n }\n };\n\n function buildFundInformation(hasDistributions, hasTradingCharacteristics, dataRepo, fields) {\n var hasData = typeof dataRepo !== 'undefined';\n var obj = {\n fundInformation: {\n hasData: false,\n data: []\n },\n salesCharges: {\n hasData: false,\n data: []\n },\n identifiers: {\n hasData: false,\n data: []\n },\n tradingCharacteristics: {\n asOf: '—',\n hasData: false,\n value: '—'\n },\n distributions: {\n asOf: '—',\n hasData: false,\n data: []\n }\n };\n if (hasData) {\n obj.fundInformation = {\n asOf: dataRepo.normalised.asOf,\n data: (0, _reducerUtils.extractFormattedValues)(dataRepo, fields.informationFields, dataRepo.normalised.baseCurrency, true)\n };\n obj.fundInformation.hasData = !!(0, _find2.default)(obj.fundInformation.data, { isValid: true });\n obj.salesCharges = {\n asOf: dataRepo.normalised.salesChargesAsOf,\n data: (0, _reducerUtils.extractFormattedValues)(dataRepo, fields.salesChargeFields, dataRepo.normalised.baseCurrency, true)\n };\n obj.salesCharges.hasData = !!(0, _find2.default)(obj.salesCharges.data, { isValid: true });\n obj.identifiers = {\n data: (0, _reducerUtils.extractFormattedValues)(dataRepo, fields.identifierFields, dataRepo.normalised.baseCurrency, true)\n };\n obj.identifiers.hasData = !!(0, _find2.default)(obj.identifiers.data, { isValid: true });\n\n if (hasTradingCharacteristics) {\n obj.tradingCharacteristics = {\n asOf: dataRepo.normalised.sharesOutstandingAsOf,\n hasData: true,\n value: dataRepo.normalised.sharesOutstandingVal\n };\n }\n\n if (hasDistributions) {\n obj.distributions = {\n asOf: dataRepo.normalised.distributionsAsOf,\n hasData: dataRepo.normalised.distributionsHasData,\n data: (0, _reducerUtils.extractFormattedValues)(dataRepo, fields.distributionFields, dataRepo.normalised.shareClassCurrency, true)\n };\n }\n }\n\n return obj;\n }\n\n var historicAssetClasses = ['Equity', 'Alternatives', 'Multi Asset'];\n\n function updateDistributionYield(newState, newDistributionYield, assetClass) {\n var distributionYield = (0, _find2.default)(newState.fundInformation.distributions.data, { id: 'distribution-yield' });\n distributionYield.val = (0, _reducerUtils.formatPercentage)(newDistributionYield);\n\n if ((0, _includes2.default)(historicAssetClasses, assetClass) && distributionYield) {\n distributionYield.id = 'historic-yield';\n }\n\n return newState;\n }\n});\r\ndefine('components/products/overview/ft-fund-static-bar/lib/gw-etf/fund-static-bar.reducer',['exports', 'aurelia-framework', 'lodash/get', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-fund-details', '../../../../lib/reducer-utils'], function (exports, _aureliaFramework, _get, _configDecorator, _utilsFundDetails, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundStaticBar = fundStaticBar;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-static-bar');\n function fundStaticBar(state, action, productState) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_FUND_STATIC_BAR_SUCCESS') {\n logger.debug('Reducing: POPULATE_FUND_STATIC_BAR_SUCCESS');\n\n var shareClass = (0, _get2.default)(productState, 'app.currentShareClass', '');\n var data = _getFundStaticBarData(action, shareClass);\n\n stateOBJ = Object.assign({}, state, {\n fundStaticBar: data\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _getFundStaticBarData(action, shareClass) {\n var _action$json = action.json,\n rawOverview = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n var data = {};\n\n if (rawOverview.etfFundOverviewValue) {\n data = _getETFData(rawOverview);\n } else {\n data = _getIntlData(rawOverview, rawFundDetails, shareClass);\n }\n\n if (data.investmentVehicle) {\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n data.hideYtdTotalReturnAtNav = (0, _get2.default)(config, 'general.hideYtdTotalReturnAtNav', []).includes(data.investmentVehicle);\n } else {\n data.hideYtdTotalReturnAtNav = false;\n }\n data.updateFreqLabel = 'updated-daily';\n\n return data;\n }\n\n function _getETFData(rawOverview) {\n var rawPriceDetails = (0, _get2.default)(rawOverview, 'etfFundOverviewValue.priceDet', {});\n var asOfDate = (0, _get2.default)(rawPriceDetails, 'asOfDateForNav.val', '—');\n var investmentVehicle = 'ETF';\n var rawNavDetail = (0, _get2.default)(rawPriceDetails, 'navDetailValue');\n var dlyNavPcnt = (0, _reducerUtils.formatPercentage)((0, _get2.default)(rawNavDetail, 'dlyNavPcnt.val'), true);\n var baseCurrency = (0, _get2.default)(rawOverview, 'etfFundOverviewValue.fundDet.shClsDet[0].shClsCur.val', '—');\n\n var navVal = (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawNavDetail, 'nav.val'), baseCurrency, true);\n var dlyNavChange = (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawNavDetail, 'dlyNavChange.val'), baseCurrency, true);\n var totRtnYTD = (0, _reducerUtils.formatPercentage)((0, _get2.default)(rawNavDetail, 'totRtnYTD.val'), true);\n var directionClass = (0, _reducerUtils.getDirectionClass)((0, _get2.default)(rawNavDetail, 'dlyNavChange.val'));\n\n return {\n asOfDate: asOfDate,\n navVal: navVal,\n dlyNavChange: dlyNavChange,\n dlyNavPcnt: dlyNavPcnt,\n totRtnYTD: totRtnYTD,\n directionClass: directionClass,\n investmentVehicle: investmentVehicle\n };\n }\n\n function _getIntlData(rawOverview, rawFundDetails, shareClass) {\n var rawPriceDetails = (0, _get2.default)(rawOverview, 'intlFundOverviewValue.priceDet.shClsPriceDet', []).find(function (i) {\n return i.shClsCD.val === shareClass;\n });\n var investmentVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var rawNavDetail = (0, _get2.default)(rawPriceDetails, 'navDet');\n var asOfDate = (0, _get2.default)(rawNavDetail, 'asOfDate.val', '—');\n var baseCurrency = (0, _get2.default)(rawPriceDetails, 'shClsCur.val', '—');\n\n var navVal = (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawNavDetail, 'nav.val'), baseCurrency, true);\n var dlyNavChange = (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawNavDetail, 'dlyNavChange.val'), baseCurrency, true);\n var totRtnYTD = (0, _reducerUtils.formatPercentage)((0, _get2.default)(rawNavDetail, 'totRtnYTD.val'), true);\n var directionClass = (0, _reducerUtils.getDirectionClass)((0, _get2.default)(rawNavDetail, 'dlyNavChange.val'));\n\n return {\n asOfDate: asOfDate,\n navVal: navVal,\n dlyNavChange: dlyNavChange,\n totRtnYTD: totRtnYTD,\n directionClass: directionClass,\n investmentVehicle: investmentVehicle\n };\n }\n});\r\ndefine('text!components/common/elements/ft-info-modal.html', ['module'], function(module) { module.exports = \"<template> <a click.delegate=\\\"show('<p></p>' + content)\\\" class=\\\"more-info\\\"> <i class=\\\"icon ft-icon-info\\\"> <span class=\\\"sr-only\\\"> ${ srText } </span> </i> </a> </template> \"; });\r\ndefine('text!components/common/elements/ft-legal-jump-link.html', ['module'], function(module) { module.exports = \"<template bindable=\\\"readImportant\\\"> <p class=\\\"legal-jump-link\\\"> <a href=\\\"#important-legal\\\" innerhtml.bind=\\\"readImportant\\\"></a> </p> </template> \"; });\r\ndefine('text!components/common/elements/charting/ft-chart.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-chart ${additionalClasses} ${ (series.length == 1 && series[0].data.length <= 4) || (series.length == 2 && (series[0].data.length + series[1].data.length) <= 4) ? 'ft-chart_few-items' : ''}\\\"> </template> \"; });\r\ndefine('text!components/common/elements/ft-back-to-top/ft-back-to-top.html', ['module'], function(module) { module.exports = \"<template> <div data-fti-module=\\\"back-to-top\\\" data-fti-component=\\\"back-to-top\\\" click.delegate=\\\"scrollToTop()\\\"> <a class=\\\"back-to-top\\\" href=\\\"#\\\" style=\\\"display:inline\\\"> <i class=\\\"glyphicon glyphicon-chevron-up\\\"></i><span innerhtml.one-time=\\\"getLabel('top')\\\"></span></a> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-carousel/ft-carousel-navigation.html', ['module'], function(module) { module.exports = \"<template> <a class=\\\"${direction}\\\" href=\\\"javascript:void(0)\\\" role=\\\"button\\\" data-slide=\\\"${slide}\\\" data-target=\\\"#${carousel.carouselNode.id}\\\"> <span>${linkTextBefore}</span> <img src=\\\"${image}\\\" alt=\\\"${linkText}\\\"> <span>${linkTextAfter}</span> </a> </template> \"; });\r\ndefine('text!components/common/elements/ft-carousel/ft-carousel.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"col-sm-12\\\" data-fti-component=\\\"carousel\\\"> <div id=\\\"ft-carousel-header\\\" class=\\\"carousel-header\\\"> ${currentSlideTitle} </div> <div class=\\\"nav-carousel\\\"> <a class=\\\"left\\\" href=\\\"javascript:void(0)\\\" role=\\\"button\\\" data-slide=\\\"prev\\\" data-target=\\\"#${carouselNode.id}\\\"> <img src=\\\"${imageL}\\\" alt=\\\"${leftLinkText}\\\"> <span>${leftLinkText}</span> </a> <a class=\\\"right\\\" href=\\\"javascript:void(0)\\\" role=\\\"button\\\" data-slide=\\\"next\\\" data-target=\\\"#${carouselNode.id}\\\"> <span>${rightLinkText}</span> <img src=\\\"${imageR}\\\" alt=\\\"${rightLinkText}\\\"> </a> </div> <div ref=\\\"carouselNode\\\" class=\\\"carousel slide\\\" data-ride=\\\"carousel\\\" data-interval=\\\"false\\\"> <slot></slot> <ol class=\\\"carousel-indicators ft-carousel-indicator\\\"> <li repeat.for=\\\"1 of numberOfSlides\\\" data-target=\\\"#${carouselNode.id}\\\" data-slide-to=\\\"${$index}\\\" class=\\\"${($index === 0) ? 'active' : 'inactive'}\\\"></li> </ol> </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-date-dropdown/ft-date-dropdown.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"row\\\"> <div class=\\\"col-xs-12\\\"> <div class=\\\"row\\\"> <div class=\\\"date-selector form-inline clearfix\\\"> <div class=\\\"date-picker date-dropdown input-group hasDatepicker\\\" id=\\\"dp1490008761101\\\"> <div class=\\\"ui-datepicker-inline ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\\\" style=\\\"display:block\\\"> <div class=\\\"ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all\\\"> <a class=\\\"ui-datepicker-prev ui-corner-all\\\" data-handler=\\\"prev\\\" data-event=\\\"click\\\" title=\\\"Prev\\\"><span class=\\\"ui-icon ui-icon-circle-triangle-w\\\">Prev</span></a><a class=\\\"ui-datepicker-next ui-corner-all ui-state-disabled\\\" title=\\\"Next\\\"><span class=\\\"ui-icon ui-icon-circle-triangle-e\\\">Next</span></a> <div class=\\\"ui-datepicker-title\\\"> <select class=\\\"ui-datepicker-month\\\" if.bind=\\\"dateFormat==='M-Y'\\\" value.bind=\\\"selectedMnth\\\"> <option value.bind=\\\"availableMonths\\\" repeat.for=\\\"month of availableMonths\\\" value=\\\"${ month.key }\\\">${ month.value }</option> <select> <select class=\\\"ui-datepicker-year\\\" change.delegate=\\\"yearChange()\\\" value.bind=\\\"selectedYr\\\"> <option repeat.for=\\\"year of availableYears\\\" value=\\\"${ year.year }\\\">${ year.year }</option> </select> </select></select></div> </div> </div> </div> <button class=\\\"btn btn-primary btn-show\\\" if.bind=\\\"submitType==='buttons'\\\" click.delegate=\\\"yearChange('button')\\\">Show Data</button> <button class=\\\"btn btn-default btn-disabled\\\" if.bind=\\\"submitType==='buttons'\\\" click.delegate=\\\"resetToCurrent()\\\">Reset to Current</button> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-datepicker/ft-datepicker.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-input-date\\\"> <input value.bind=\\\"localeValue\\\" class=\\\"form-control\\\"> <span class=\\\"ft-icon ft-icon-calendar\\\"></span> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-form/ft-form-input-validation.html', ['module'], function(module) { module.exports = \"<template> <div class.bind=\\\"errors.message ? 'form-group has-error' : 'form-group' \\\"> <label class=\\\"col-xs-12 col-sm-3 control-label\\\">${label}</label> <div class.bind=\\\"colClass\\\"> <slot></slot> <div if.bind=\\\"errors\\\"> <div class=\\\"help-block\\\"> <p class=\\\"required-text\\\">${errors.message}</p> </div> <i class=\\\"ft-icon ft-icon-error-msg\\\"></i> </div> </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-historical-modal/ft-historical-modal.html', ['module'], function(module) { module.exports = \"<template> <div>ft-historical-modal: replace me</div> </template> \"; });\r\ndefine('text!components/common/elements/ft-label/ft-label.html', ['module'], function(module) { module.exports = \"<template></template> \"; });\r\ndefine('text!components/common/elements/ft-modal/ft-modal.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"modal fade\\\" ref=\\\"footerModal\\\" id=\\\"footerModal\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\" aria-labelledby=\\\"exampleModalLabel\\\" aria-hidden=\\\"true\\\"> <div class=\\\"modal-dialog\\\" role=\\\"document\\\"> <div class=\\\"modal-content\\\"> <div class=\\\"modal-header grey\\\"> <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-label=\\\"Close\\\"> <span innerhtml.bind=\\\"modal.close\\\"></span> <span aria-hidden=\\\"true\\\"> <i class=\\\"ft-icon ft-icon-cross\\\"></i> </span> </button> <h4 if.bind=\\\"modal.title\\\" class=\\\"modal-title\\\" innerhtml.bind=\\\"modal.title\\\"></h4> </div> <div class=\\\"modal-body\\\"> <img if.bind=\\\"modal.image\\\" src=\\\"${modal.image}\\\" alt=\\\"\\\" class=\\\"manager-icon\\\"> <div innerhtml.bind=\\\"modal.contents\\\"></div> </div> <div class=\\\"modal-footer\\\" if.bind=\\\"modal.footer\\\"> <div innerhtml.bind=\\\"modal.footer\\\"></div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-modal-inline/ft-modal-inline.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"modal fade\\\" data-fti-component=\\\"manager-roster-modal\\\" ref=\\\"ftModal\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\" aria-hidden=\\\"true\\\"> <div class=\\\"modal-dialog\\\"> <div class=\\\"modal-content\\\"> <div class=\\\"modal-header grey\\\"> <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-label=\\\"Close\\\"><span aria-hidden=\\\"true\\\">${ close ? close : 'CLOSE ×' }</span></button> <h4 if.bind=\\\"title\\\" class=\\\"modal-title\\\" innerhtml.bind=\\\"title\\\"></h4> </div> <div class=\\\"modal-body\\\"> <slot name=\\\"body\\\"> </slot> </div> <div class=\\\"modal-footer blue\\\"> <slot name=\\\"footer\\\"> </slot> </div> </div> </div> </div> <div class=\\\"modal-backdrop fade\\\" ref=\\\"modalBackdrop\\\" style=\\\"display:none\\\"></div> </template> \"; });\r\ndefine('text!components/common/elements/ft-owl-carousel/ft-owl-carousel.html', ['module'], function(module) { module.exports = \" <template> <div class=\\\"row\\\" data-fti-component=\\\"announcements\\\"> <div class=\\\"col-xs-12\\\"> <div data-fti-component=\\\"carousel-announcements\\\" data-fti-module=\\\"carousel-announcements\\\"> <div ref=\\\"owlCarouselNode\\\" class=\\\"owl-carousel owl-theme\\\"> <slot></slot> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-owl-tabbed/ft-owl-tabbed.html', ['module'], function(module) { module.exports = \" <template> <ul id=\\\"carousel-announcements-tabbed\\\" class=\\\"list-unstyled list-inline nav-tabs-alt tabcollapse tabed owl-carousel owl-theme\\\" role=\\\"tablist\\\" ref=\\\"owlTabbedNode\\\"> <slot></slot> </ul> </template> \"; });\r\ndefine('text!components/common/elements/ft-pagination/ft-pagination.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"pagingInfo && pagingInfo.totalPages >= 2\\\" class=\\\"ft-table-pagination\\\"> <ul class=\\\"ft-table-pagination__list\\\"> <li class=\\\"ft-table-pagination__item ft-table-pagination__item--prev\\\"> <button class=\\\"btn btn-secondary ${pagingInfo.firstPage == pagingInfo.currentPage.page ? 'disabled' : ''}\\\" innerhtml.bind=\\\"getLabel('previous')\\\" disabled.bind=\\\"!pagingInfo.previousPage\\\" click.delegate=\\\"goToPage({page: pagingInfo.previousPage})\\\"></button> </li> <li repeat.for=\\\"page of pagingElements\\\" class=\\\"ft-table-pagination__item ${pagingInfo.currentPage.page !== page.page ? 'hidden-xs hidden-sm':'active'}\\\"> <button if.one-time=\\\"!page.isEllipsis\\\" class=\\\"ft-table-pagination__link\\\" click.delegate=\\\"goToPage({page: page.page})\\\"> ${page.page} <span if.bind=\\\"pagingInfo.currentPage.page == page.page\\\" class=\\\"sr-only\\\">(current)</span> </button> <span if.one-time=\\\"page.isEllipsis\\\">...</span> </li> <li class=\\\"ft-table-pagination__item ft-table-pagination__item--next\\\"> <button class=\\\"btn btn-secondary ${pagingInfo.lastPage == pagingInfo.currentPage.page ? 'disabled' : ''}\\\" innerhtml.bind=\\\"getLabel('next')\\\" disabled.bind=\\\"!pagingInfo.nextPage\\\" click.delegate=\\\"goToPage({page: pagingInfo.nextPage})\\\"></button> </li> </ul> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-prefix-or-dash/ft-prefix-or-dash.html', ['module'], function(module) { module.exports = \"<template></template> \"; });\r\ndefine('text!components/common/elements/ft-range-slider/ft-range-slider.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-range-slider\\\"> <label>${label}</label> <div class=\\\"row\\\"> <div class=\\\"col-xs-2 text-right left-label\\\"> ${min} </div> <div class=\\\"col-xs-8 bar\\\" ref=\\\"bar\\\"> <div class=\\\"line\\\"></div> <div ref=\\\"handle\\\" class=\\\"handle\\\" class.bind=\\\"dragging ? 'dragging' : ''\\\" css=\\\"top:0px; left: ${x}px;\\\" mousedown.delegate=\\\"mouseDown($event)\\\"> <div class=\\\"popover fade top in\\\"> <div class=\\\"arrow\\\"></div> <div class=\\\"popover-content\\\">${prefix}${value}${suffix}</div> </div> </div> </div> <div class=\\\"col-xs-2 right-label\\\"> ${prefix}${max}${suffix} </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-spinner/ft-spinner.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-spinner\\\"> <div class=\\\"ft-spinner-bg\\\"> <div class=\\\"ft-spinner-circle\\\"> </div> </div> </div> </template> \"; });\r\ndefine('text!components/common/elements/ft-tab-collapse/ft-tab-collapse.html', ['module'], function(module) { module.exports = \"<template> </template> \"; });\r\ndefine('text!components/common/elements/ft-th-sortable/ft-th-sortable.html', ['module'], function(module) { module.exports = \"<template view-cache=\\\"*\\\" class.bind=\\\"currentSortClass\\\" aria-sorted.bind=\\\"ariaSortDirection\\\"> <ft-label if.bind=\\\"!sort\\\" label.one-time=\\\"title\\\"></ft-label> <a if.bind=\\\"sort\\\" click.delegate=\\\"clickCallback()\\\"> <ft-label label.bind=\\\"title\\\"></ft-label> <ft-footnote if.bind=\\\"footnotePlacement\\\" placement.bind=\\\"footnotePlacement\\\"></ft-footnote> </a> </template> \"; });\r\ndefine('text!components/common/elements/ft-visual-hint/ft-visual-hint.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"visual-hint-container hidden-print\\\"> <div class=\\\"visual-hint\\\"></div> </div> </template> \"; });\r\ndefine('text!components/marketing/grids/ft-grid-filter/ft-grid-filter.html', ['module'], function(module) { module.exports = \"<template> <ft-grid-filter-form if.bind=\\\"showFilterForm\\\" filters.bind=\\\"filters\\\" show-view-toggle.bind=\\\"showViewToggle\\\" cid.bind=\\\"cid\\\" current-view.bind=\\\"currentView\\\"></ft-grid-filter-form> <div class=\\\"\\\" data-fti-component=\\\"commentary\\\"> <div class=\\\"col-sm-12\\\"> <div id=\\\"commentaryWrapper\\\" class=\\\"perspectives\\\" class.bind=\\\"wrapperClass\\\" data-fti-interface=\\\"cards\\\"> <div if.bind=\\\"showGridView\\\" repeat.for=\\\"card of cards\\\" data-fti-component=\\\"card\\\" class.bind=\\\"card.classes\\\" innerhtml.bind=\\\"card.content\\\"> </div> <table if.bind=\\\"showTableView\\\" class=\\\"table table-striped perspective-list-view tablesorter tablesorter-default\\\" role=\\\"grid\\\"> <thead> <tr class=\\\"header-sortable tablesorter-headerRow\\\" role=\\\"row\\\"> <th repeat.for=\\\"col of columns\\\" scope=\\\"col\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"col.label\\\" sort.bind=\\\"col\\\" click-callback.call=\\\"changeSort(col.name)\\\"></th> </tr> </thead> <tbody aria-live=\\\"polite\\\" aria-relevant=\\\"all\\\"> <tr repeat.for=\\\"card of cards\\\" role=\\\"row\\\"> <td repeat.for=\\\"col of columns\\\" innerhtml.bind=\\\"card.data | ftFormatGridCell:col.dataKey:'L'\\\" class.bind=\\\"col.class\\\"></td> </tr> </tbody> </table> </div> <div if.bind=\\\"showLoadMoreBtn\\\" class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"load-more\\\"> <button class=\\\"btn btn-default alt\\\" click.delegate=\\\"loadMore()\\\" innerhtml.bind=\\\"marketingLabels.loadMoreLink\\\"></button> </div> </div> </div> </div> </div> <div ref=\\\"cardsNode\\\"> <slot></slot> </div> <div ref=\\\"configNode\\\"> <slot name=\\\"config\\\"></slot> </div> </template> \"; });\r\ndefine('text!components/marketing/grids/ft-grid-filter-dropdown/ft-grid-filter-dropdown.html', ['module'], function(module) { module.exports = \"<template> <label for.one-time=\\\"filter.name\\\" class=\\\"sr-only\\\" innerhtml.bind=\\\"filter.label\\\"></label> <select id.one-time=\\\"filter.name\\\" value.bind=\\\"selected\\\" class=\\\"form-control\\\"> <option repeat.for=\\\"option of filter.options\\\" model.bind=\\\"option.value\\\" innerhtml.bind=\\\"option.label\\\"></option> </select> </template> \"; });\r\ndefine('text!components/marketing/grids/ft-grid-filter-form/ft-grid-filter-form.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"col-sm-12\\\"> <div class=\\\"panel\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-3 pad10px\\\" repeat.for=\\\"filter of filters\\\"> <ft-grid-filter-dropdown filter.bind=\\\"filter\\\" cid.bind=\\\"cid\\\" selected.bind=\\\"filter.selected\\\"></ft-grid-filter-dropdown> </div> <div if.bind=\\\"showViewToggle\\\" class=\\\"col-md-3\\\"> <div class=\\\"nav-tabs-list-grid\\\"> <p innerhtml.bind=\\\"marketingLabels.displayLabel\\\">Display</p> <ul class=\\\"nav nav-tabs\\\"> <li role=\\\"presentation\\\"> <a click.delegate=\\\"changeView('GRID')\\\" style.bind=\\\"gridViewClass\\\" class=\\\"ft-icon ft-icon-grid-view\\\" href=\\\"#\\\"> <span class=\\\"sr-only\\\" innerhtml.bind=\\\"marketingLabels.gridLabel\\\">Grid</span> </a> </li> <li role=\\\"presentation\\\"> <a click.delegate=\\\"changeView('TABLE')\\\" style.bind=\\\"tableViewClass\\\" class=\\\"ft-icon ft-icon-list-view\\\" href=\\\"#\\\"> <span class=\\\"sr-only\\\" innerhtml.bind=\\\"marketingLabels.listLabel\\\">List</span> </a> </li> </ul> </div> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-lump-sum-calculator/ft-lump-sum-calculator.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-lump-sum-calculator\\\"> <div> <ul class=\\\"nav nav-tabs-top-level nav-justified\\\" role=\\\"tablist\\\"> <li role=\\\"presentation\\\" class=\\\"hidden-print\\\" class.bind=\\\"tab == 1 ? 'active': ''\\\"> <a click.delegate=\\\"tab = 1\\\">How much could my investment be worth?</a> </li> <li role=\\\"presentation\\\" class=\\\"hidden-print\\\" class.bind=\\\"tab == 2 ? 'active': ''\\\"> <a click.delegate=\\\"tab = 2\\\">How long will it take to reach my goal?</a> </li> <li role=\\\"presentation\\\" class=\\\"hidden-print\\\" class.bind=\\\"tab == 3 ? 'active': ''\\\"> <a click.delegate=\\\"tab = 3\\\">How much should I be putting into savings?</a> </li> </ul> </div> <div class=\\\"row\\\"> <div class=\\\"col-xs-12 col-md-6\\\"> <div class=\\\"panel\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"row spaced\\\"> <label class=\\\"col-xs-12\\\">Initial Contribution</label> <div class=\\\"form-group col-xs-8\\\"> <ft-range-slider min.bind=\\\"0\\\" max.bind=\\\"100000\\\" value.two-way=\\\"val1\\\" prefix.bind=\\\"'£'\\\" \\\\></ft-range-slider> </div> <div class=\\\"form-group col-xs-4\\\"> <div class=\\\"input-group ft-input-group-inside\\\"> <span class=\\\"input-group-addon\\\">£</span> <input class=\\\"form-control\\\" type=\\\"number\\\" value.bind=\\\"val1\\\" min.bind=\\\"0\\\" max.bind=\\\"100000\\\"> </div> </div> </div> <div class=\\\"row spaced\\\"> <label class=\\\"col-xs-12\\\">Monthly Contribution</label> <div class=\\\"form-group col-xs-8\\\"> <ft-range-slider min.bind=\\\"0\\\" max.bind=\\\"5000\\\" value.two-way=\\\"val2\\\" prefix.bind=\\\"'£'\\\" suffix.bind=\\\"'&nbsp;PCM'\\\"></ft-range-slider> </div> <div class=\\\"form-group col-xs-4\\\"> <div class=\\\"input-group ft-input-group-inside\\\"> <span class=\\\"input-group-addon\\\">PCM</span> <input class=\\\"form-control\\\" type=\\\"number\\\" value.bind=\\\"val2\\\" min.bind=\\\"0\\\" max.bind=\\\"5000\\\"> </div> </div> </div> <div class=\\\"row spaced\\\"> <label class=\\\"col-xs-12\\\">Investment Period</label> <div class=\\\"form-group col-xs-8\\\"> <ft-range-slider min.bind=\\\"0\\\" max.bind=\\\"70\\\" value.two-way=\\\"val3\\\" suffix.bind=\\\"'&nbsp;years'\\\"></ft-range-slider> </div> <div class=\\\"form-group col-xs-4\\\"> <div class=\\\"input-group ft-input-group-inside\\\"> <span class=\\\"input-group-addon\\\">Years</span> <input class=\\\"form-control\\\" type=\\\"number\\\" value.bind=\\\"val3\\\" min.bind=\\\"0\\\" max.bind=\\\"70\\\"> </div> </div> </div> <div class=\\\"row spaced\\\"> <div class=\\\"form-group col-xs-6\\\"> <label>Initial Sales Charge</label> <div class=\\\"input-group ft-input-group-inside\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\" value.bind=\\\"val3\\\"> <span class=\\\"input-group-addon\\\">%</span> </div> </div> <div class=\\\"form-group col-xs-6\\\"> <label>Interest Rate</label> <div class=\\\"input-group ft-input-group-inside\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\" value.bind=\\\"val3\\\"> <span class=\\\"input-group-addon\\\">%</span> </div> </div> </div> <div> <button class=\\\"btn btn-primary\\\" if.bind=\\\"results\\\">Save Results</button> <button class=\\\"btn btn-default\\\" if.bind=\\\"results\\\">Print Results</button> <button class=\\\"pull-right btn btn-primary\\\" click.delegate=\\\"calculate()\\\">Calculate</button> </div> </div> </div> </div> <div class=\\\"col-xs-12 col-md-6\\\"> <div class=\\\"panel\\\"> <div class=\\\"panel-body\\\"> <div if.bind=\\\"results\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped\\\"> <tbody> <tr> <th scope=\\\"row\\\" class=\\\"th--bold\\\">Category </th><th scope=\\\"col\\\" class=\\\"th--bold\\\">Recommendations</th> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\"> Initial Contribution </th> <td> €50 per month </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\"> Final Capital </th> <td> €50 per month </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\"> <i class=\\\"chart-key chart-color-3\\\"></i> Investment Growth </th> <td> €50000 </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\"> <i class=\\\"chart-key chart-color-1\\\"></i> Investment Growth (+ £20PCM) </th> <td> €50000 </td> </tr> </tbody> </table> </div> <ft-column-chart style=\\\"min-height:300px\\\" hide-sm=\\\"false\\\" prefix.bind=\\\"'€'\\\" series.bind=\\\"chartData\\\" extra-options.bind=\\\"extraOptions\\\" type.bind=\\\"'column'\\\"></ft-column-chart> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step1.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-choose-subscription-step1\\\"> <div class=\\\"panel-body\\\"> <h2>Choose Subscriptions</h2> </div> <div repeat.for=\\\"option of config.sections\\\"> <div class=\\\"panel-body\\\"> <h3 class=\\\"header-product\\\">${option.GroupTitle }</h3> <p>${option.GroupDescription}</p> <h4>${option.OptionTitle}</h4> <div class=\\\"checkbox\\\" repeat.for=\\\"cb of option.OPTION\\\"> <label class=\\\"bold\\\"> <input type=\\\"checkbox\\\" name.bind=\\\"cb.name | ftFormatSubscriptionInputNames:'OPTION_'\\\" checked.bind=\\\"option.optionsSelected\\\" change.delegate=\\\"doSelectedCount()\\\" value.bind=\\\"cb.name\\\"> ${cb.name} </label> </div> <div id=\\\"GUIDE_OPTIONS_${$index}\\\"> <p> </p><p if.bind=\\\"option.GuideText !== ''\\\"> <span>${option.GuideText} <input name.bind=\\\"option.GuideText | ftFormatSubscriptionInputNames:'GUIDE_'\\\" type=\\\"text\\\" change.delegate=\\\"doSelectedCount()\\\"></span> </p> <span repeat.for=\\\"ot of option.OptionText\\\"> <p> ${ot.name} <input name.bind=\\\"ot.name | ftFormatSubscriptionInputNames:'OPTION_'\\\" type=\\\"text\\\" change.delegate=\\\"doSelectedCount()\\\"> </p> </span> <p></p> </div> <div if.bind=\\\"option.FUND.length > 0\\\"> <button class=\\\"btn btn-secondary xs-full-width\\\" click.delegate=\\\"openModal(option)\\\"> SELECT SUBSCRIPTIONS <span class=\\\"badge\\\">${ option.fundsSelected.length }</span> </button> </div> </div> <hr> </div> <ft-modal-inline view-model.ref=\\\"ftmodal\\\" title.bind=\\\"modal.modalTitle\\\"> <div slot=\\\"body\\\"> <ul class=\\\"list list-unstyled list-lined\\\"> <li repeat.for=\\\"item of modal.funds\\\"> <label class=\\\"fund-name\\\"> <input type=\\\"checkbox\\\" checked.bind=\\\"modal.fundsSelected\\\" change.delegate=\\\"$parent.doSelectedCount()\\\" value.bind=\\\"item.name\\\"> ${item.name} </label> </li> </ul> </div> <div slot=\\\"footer\\\"> <button class=\\\"btn btn-white pull-right\\\" data-dismiss=\\\"modal\\\">Close</button> </div> </ft-modal-inline> <div class=\\\"panel-body\\\"> <button disabled.bind=\\\"!(selectedCount > 0)\\\" class=\\\"btn btn-primary pull-right xs-full-width continue\\\" click.delegate=\\\"next()\\\">Continue</button> <button class=\\\"btn btn-secondary xs-full-width clear\\\" click.trigger=\\\"callReset()\\\" innerhtml.bind=\\\"config.formlabels.clearButton.name\\\">Clear</button> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step2.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-choose-subscription-step2\\\"> <require from=\\\"./dynamic-expression-binding-behavior\\\"></require> <div class=\\\"panel-body\\\"> <h2>Delivery Information</h2> <p class=\\\"note\\\">All fields are mandatory unless otherwise stated</p> <h3 class=\\\"header-product\\\">Personal Information</h3> <p>We just need a few details to be able to send you your subscriptions.</p> <div validation-errors.bind=\\\"errors\\\"> <div class=\\\"form-horizontal ft-form-horizontal\\\"> <span repeat.for=\\\"property of properties\\\"> <ft-form-input-validation errors.bind=\\\"parsedErrors & dynamicExpression:property.camelName\\\" label.bind=\\\"property.label\\\"> <input if.bind=\\\"property.isInput\\\" class=\\\"form-control required\\\" value.bind=\\\"model & dynamicExpression:property.expression & validate\\\"> <textarea if.bind=\\\"property.isTextArea\\\" class=\\\"form-control required\\\" value.bind=\\\"model & dynamicExpression:property.expression & validate\\\"></textarea> <select if.bind=\\\"property.isSelect\\\" class=\\\"form-control required\\\" value.bind=\\\"model & dynamicExpression:property.expression & validate\\\"> <option>Choose Option</option> <option>Mr</option> <option>Mrs</option> <option>Miss</option> <option>Ms</option> </select> </ft-form-input-validation> </span> <input value=\\\"doSubmit\\\" name=\\\"iwPreActions\\\" type=\\\"hidden\\\"> </div> </div> </div> <hr> <div class=\\\"panel-body\\\"> <button class=\\\"btn btn-primary pull-right xs-full-width submit\\\" click.delegate=\\\"submit()\\\">Continue</button> <button class=\\\"btn btn-secondary xs-full-width back\\\" click.delegate=\\\"back()\\\">Back</button> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-choose-subscription/ft-choose-subscription-step3.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-choose-subscription-step3\\\"> <div class=\\\"panel-body\\\"> <h2>Confirmation</h2> <h3 class=\\\"header-product\\\" innerhtml.bind=\\\"sentMessage\\\"></h3> <p>What would you like to do now?</p> <p><a href=\\\"/\\\">Go to home page</a></p> <p><a href=\\\"${sitesegment}/funds/\\\">Browse funds</a></p> <p><a href=\\\"${sitesegment}/literature/\\\">Literature</a></p> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-choose-subscription/ft-choose-subscription.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-choose-subscription\\\"> <div class=\\\"row\\\"> <div class=\\\"col-xs-12\\\"> <div class=\\\"panel steps\\\"> <div class=\\\"panel-body\\\"> <ul class=\\\"list list-inline\\\"> <li class.bind=\\\"step == 1 ? 'active' : ''\\\"> <span class=\\\"hidden-xs\\\" innerhtml.bind=\\\"config.formlabels.tab1Text.name\\\">Choose Subsriptions</span> <span class=\\\"visible-xs\\\">Step 1</span> </li> <li class.bind=\\\"step == 2 ? 'active' : ''\\\"> <span class=\\\"hidden-xs\\\" innerhtml.bind=\\\"config.formlabels.tab2Text.name\\\">Delivery Information</span> <span class=\\\"visible-xs\\\">Step 2</span> </li> <li class.bind=\\\"step == 3 ? 'active' : ''\\\"> <span class=\\\"hidden-xs\\\" innerhtml.bind=\\\"config.formlabels.tab3Text.name\\\">Confirmation</span> <span class=\\\"visible-xs\\\">Step 3</span> </li> </ul> </div> </div> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-md-12\\\"> <div class=\\\"panel\\\"> <ft-choose-subscription-step1 step.two-way=\\\"step\\\" if.bind=\\\"step == 1\\\" config.two-way=\\\"config\\\" reset-function.call=\\\"doReset()\\\"></ft-choose-subscription-step1> <ft-choose-subscription-step2 step.two-way=\\\"step\\\" if.bind=\\\"step == 2\\\" config.bind=\\\"config\\\"></ft-choose-subscription-step2> <ft-choose-subscription-step3 step.two-way=\\\"step\\\" if.bind=\\\"step == 3\\\"></ft-choose-subscription-step3> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-pension-calculator/ft-pension-calculator-step1.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-md-8\\\"> <div class=\\\"panel\\\"> <div class=\\\"panel-body\\\"> <h2>About You</h2> <div class=\\\"form-horizontal ft-form-horizontal\\\"> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Date Of Birth</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <ft-datepicker value.two-way=\\\"value\\\" label.bind=\\\"''\\\"></ft-datepicker> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Retirement Age</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Working since</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Gender</label> <div class=\\\"col-xs-6 col-sm-8\\\"> <div class=\\\"btn-group ft-btn-toggle-on-off\\\" data-toggle=\\\"buttons\\\"> <label class=\\\"btn btn-on-off active off\\\"> <input type=\\\"radio\\\"> Male </label> <label class=\\\"btn btn-on-off on\\\"> <input type=\\\"radio\\\" checked=\\\"\\\"> Female </label> </div> </div> </div> </div> <h2>Your Money</h2> <div class=\\\"form-horizontal ft-form-horizontal\\\"> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">First Gross Annual Income</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Current Gross Annual Income</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Other Monthly Income After Retiring</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Expected Monthly Expenditure After Retiring</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> </div> <h2>Remuneration Points</h2> <div class=\\\"form-horizontal ft-form-horizontal\\\"> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Federal State Employment</label> <div class=\\\"col-xs-6 col-sm-8\\\"> <div class=\\\"btn-group ft-btn-toggle-on-off\\\" data-toggle=\\\"buttons\\\"> <label class=\\\"btn btn-on-off active off\\\"> <input type=\\\"radio\\\"> Old </label> <label class=\\\"btn btn-on-off on\\\"> <input type=\\\"radio\\\" checked=\\\"\\\"> New </label> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Last Correspondence from DRV</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <ft-datepicker value.two-way=\\\"toDate\\\" label.bind=\\\"'label'\\\"></ft-datepicker> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"col-sm-4 col-xs-12 control-label\\\">Remuneration Points (if known)</label> <div class=\\\"col-xs-6 col-sm-6\\\"> <input class=\\\"form-control\\\" type=\\\"number\\\"> </div> </div> </div> <div class=\\\"text-right\\\"> <button class=\\\"btn btn-default\\\" click.delegate=\\\"next()\\\"> Calculate </button> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-pension-calculator/ft-pension-calculator-step2.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-md-12\\\"> <div class=\\\"panel\\\"> <div class=\\\"panel-body\\\"> <h2>Your Results At A Glance</h2> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped\\\"> <tbody> <tr> <th scope=\\\"row\\\" class=\\\"th--bold\\\">Category </th><th scope=\\\"col\\\" class=\\\"th--bold\\\">Recommendations</th> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Suggested additional pension contributions</th> <td> €50 per month </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Pension contribution term</th> <td> €50 per month </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Additional capital as result</th> <td> €50000 </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Additional monthly pension claim</th> <td> €50000 </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Additional annual value development</th> <td> €50000 </td> </tr> </tbody> </table> </div> <h2>Your Results In-Depth</h2> <div class=\\\"row margin-top-xs-15 margin-bottom-xs-15\\\"> <div class=\\\"col-xs-12 col-md-5\\\"> <span>Graph</span> <div class=\\\"btn-group ft-btn-toggle-on-off\\\" data-toggle=\\\"buttons\\\" click.delegate=\\\"multiselect = !multiselect \\\"> <label class=\\\"btn btn-on-off active off\\\"> <input type=\\\"radio\\\"> Bar </label> <label class=\\\"btn btn-on-off on\\\"> <input type=\\\"radio\\\" checked=\\\"\\\"> Curve </label> </div> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-xs-6 text-center\\\"> <h3>Your Statistics</h3> </div> <div class=\\\"col-xs-6 text-center\\\"> <h3>National Average Statistics</h3> </div> </div> <div class=\\\"margin-bottom-xs-15\\\"> <ft-column-chart hide-sm=\\\"false\\\" style=\\\"min-height:300px\\\" categories.bind=\\\"categories\\\" extra-options.bind=\\\"extraOptions\\\" prefix.bind=\\\"'€'\\\" series.bind=\\\"chartData\\\" type.bind=\\\"'column'\\\"></ft-column-chart> </div> <div class=\\\"table-responsive margin-top-xs-15\\\"> <table class=\\\"table table-striped\\\"> <tbody> <tr> <th scope=\\\"row\\\" class=\\\"th--bold\\\">Category </th><th scope=\\\"row\\\" class=\\\"th--bold\\\">Your Results </th><th scope=\\\"row\\\" class=\\\"th--bold\\\">National Average </th></tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Estimated pension claim</th> <td>€50000</td> <td>€50000</td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Height of your disposable unit</th> <td>€50000</td> <td>€50000 <i class=\\\"ft-icon ft-icon-success-msg text-success\\\"></i></td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Elected retirement age</th> <td>€50000</td> <td> €50000 <a href=\\\"javascript:void(0)\\\" data-html=\\\"true\\\" title=\\\"Title\\\" data-toggle=\\\"popover\\\" data-trigger=\\\"focus\\\" data-content=\\\"This is very low. The average is <b>60</b>\\\"> <i class=\\\"ft-icon ft-icon-info text-success\\\"></i> </a> </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Additional icone</th> <td>€50000</td> <td>€50000</td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Expected future care gap</th> <td>€50000</td> <td>€50000</td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\">Monthly expenditure including 2% inflation p/a</th> <td>€50000</td> <td> €50000 <a href=\\\"javascript:void(0)\\\" data-html=\\\"true\\\" title=\\\"Title\\\" data-toggle=\\\"popover\\\" data-trigger=\\\"focus\\\" data-content=\\\"This is very low. The average is <b>60</b>\\\"> <i class=\\\"ft-icon ft-icon-info text-danger\\\"></i> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-pension-calculator/ft-pension-calculator.html', ['module'], function(module) { module.exports = \"<template> <ft-pension-calculator-step1 step.two-way=\\\"step\\\" if.bind=\\\"step === 1\\\"></ft-pension-calculator-step1> <ft-pension-calculator-step2 if.bind=\\\"step === 2\\\">22222</ft-pension-calculator-step2> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs-content.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-sticky-tabs ${content.active ? 'active': ''}\\\"> <div ref=\\\"element\\\"> <slot></slot> </div> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs-label.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-sticky-tabs-label ${label.active ? 'active': ''}\\\"> <a class=\\\"hidden-xs\\\" click.trigger=\\\"go(e)\\\"> <span>${title}</span> </a> <a class=\\\"visible-xs\\\" click.trigger=\\\"goMob(e)\\\" data-toggle=\\\"collapse\\\" data-target=\\\".ft-tabs-list\\\"> <span>${title}</span> </a> </template> \"; });\r\ndefine('text!components/marketing/layouts/ft-sticky-tabs/ft-sticky-tabs.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-sticky-tabs\\\"> <div class=\\\"visible-xs\\\" ref=\\\"xstest\\\" style=\\\"height:1px\\\"></div> <slot></slot> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister-cell.html', ['module'], function(module) { module.exports = \"<template> <div repeat.for=\\\"link of cell.items | ftFilter : 'show' : true : items.length : cell.random\\\"> <span if.bind=\\\"$first\\\"> <ft-document-lister-dynamic-link class=\\\"link\\\" link.bind=\\\"link\\\" on-selected.bind=\\\"passOnSelected\\\" select-multiple.bind=\\\"selectMultiple\\\"></ft-document-lister-dynamic-link> </span> </div> <div class=\\\"ft-doclister-dropdown ${ selected ? 'selected-items' : '' }\\\" if.bind=\\\"cell.dropdownItems > 1\\\" ref=\\\"dropdown\\\"> <button class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\" click.delegate=\\\"toggleDropdown()\\\" ref=\\\"ddButton\\\"> <span innerhtml.bind=\\\"cell.marketingLabels.otherLabel\\\"></span> <span if.bind=\\\"(selected > 0) && selectMultiple\\\"><span class=\\\"badge primary\\\">${selected}</span></span> </button> <div class=\\\"dropdown-menu\\\" ref=\\\"ddDropdown\\\" css=\\\"left: ${ ddLeft }px; top: ${ ddTop }px; \\\"> <div repeat.for=\\\"link of cell.items | ftFilter : 'show' : true : items.length : cell.random\\\"> <span if.bind=\\\"!$first\\\"> <ft-document-lister-dynamic-link class=\\\"link\\\" link.bind=\\\"link\\\" on-selected.bind=\\\"passOnSelected\\\" select-multiple.bind=\\\"selectMultiple\\\"></ft-document-lister-dynamic-link> </span> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister-dynamic-link.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"selectMultiple\\\" click.trigger=\\\"onSelect($event)\\\" class=\\\"document selectable\\\" class.bind=\\\"link.selected ? 'selected' : ''\\\"> <a>${link.label}</a> </div> <div show.bind=\\\"!selectMultiple\\\"> <a class=\\\"document\\\" href.bind=\\\"link.url\\\" target=\\\"_blank\\\">${link.label}</a> </div> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister-group-row.html', ['module'], function(module) { module.exports = \"<template show.bind=\\\"row.show\\\"> <slot></slot> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister-group.html', ['module'], function(module) { module.exports = \"<template show.bind=\\\"group.show\\\"> <slot></slot> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister-link.html', ['module'], function(module) { module.exports = \"<template show.bind=\\\"link.show\\\"> <div if.bind=\\\"selectMultiple\\\" click.trigger=\\\"onSelect($event)\\\" class=\\\"doc-link\\\" class.bind=\\\"link.selected ? 'selected' : ''\\\"> ${label} </div> <div show.bind=\\\"!selectMultiple\\\"> <slot></slot> </div> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister-mobilelink.html', ['module'], function(module) { module.exports = \"<template show.bind=\\\"link.show\\\"> <slot></slot> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-document-lister/ft-document-lister.html', ['module'], function(module) { module.exports = \"<template> <slot></slot> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-report-archive-a/ft-report-archive-a.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-report-archive-a\\\"> <ft-spinner if.bind=\\\"loading\\\"></ft-spinner> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"col-sm-8 col-lg-7 col-xs-12\\\"> <div class=\\\"form-group ft-input-search\\\"> <label class=\\\"label-capitalized\\\" innerhtml.bind=\\\"marketingLabels.searchFundKeyword\\\"></label> <ft-type-ahead-search data.bind=\\\"typeAheadData\\\" on-selected.bind=\\\"onSelectFund\\\"></ft-type-ahead-search> </div> </div> </div> </div> <div class=\\\"panel panel-default\\\" if.bind=\\\"results\\\"> <ft-multi-select-bar multiselect.two-way=\\\"multiselect\\\" selected.bind=\\\"selected\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-multi-select-bar> <div class=\\\"panel-body\\\"> <h3>${fundName}</h3> </div> <ft-responsive-table data.bind=\\\"data\\\" multiselect.bind=\\\"multiselect\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-responsive-table> <div if.bind=\\\"!data.rows || (data.rows.length == 0)\\\" class=\\\"panel-body\\\" innerhtml.bind=\\\"data.noresults\\\"></div> <div if.bind=\\\"data.rows && (data.rows.length > 0)\\\" class=\\\"panel-body\\\" innerhtml.bind=\\\"data.footnote\\\"></div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-report-archive-b/ft-report-archive-b.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-report-archive-b\\\"> <ft-spinner if.bind=\\\"loading\\\"></ft-spinner> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"col-sm-8 col-lg-7 col-xs-12\\\"> <div class=\\\"form-group\\\"> <label class=\\\"label-capitalized\\\" innerhtml.bind=\\\"marketingLabels.searchFundKeyword\\\"></label> <ft-type-ahead-search data.bind=\\\"typeAheadData\\\" on-selected.bind=\\\"onSelectFund\\\"></ft-type-ahead-search> </div> </div> <div class=\\\"col-sm-4 col-lg-2 col-xs-12\\\" show.bind=\\\"results\\\"> <div class=\\\"form-group\\\"> <label>Year</label> <select class=\\\"form-control\\\" value.bind=\\\"selectedYear\\\" change.trigger=\\\"doYearChange()\\\"> <option repeat.for=\\\"year of reportsArchiveYears\\\" value.bind=\\\"year\\\">${year}</option> </select> </div> </div> </div> </div> <div class=\\\"panel panel-default\\\" if.bind=\\\"results\\\"> <ft-multi-select-bar multiselect.two-way=\\\"multiselect\\\" selected.bind=\\\"selected\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-multi-select-bar> <div class=\\\"panel-body\\\"> <h3>${fundName} - ${selectedYear}</h3> </div> <ft-responsive-table data.bind=\\\"data\\\" multiselect.bind=\\\"multiselect\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-responsive-table> <div class=\\\"panel-body\\\" if.bind=\\\"results && data.footnote\\\"> <div innerhtml.bind=\\\"data.footnote\\\"></div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-report-archive-c/ft-report-archive-c.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-report-archive-c\\\"> <ft-spinner if.bind=\\\"loading\\\"></ft-spinner> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"col-sm-4 col-lg-2 col-xs-12\\\"> <div class=\\\"form-group\\\"> <label>Year</label> <select class=\\\"form-control\\\" value.bind=\\\"selectedYear\\\" change.trigger=\\\"doYearChange()\\\"> <option repeat.for=\\\"year of reportsArchiveYears\\\" value.bind=\\\"year\\\">${year}</option> </select> </div> </div> </div> </div> <div class=\\\"panel panel-default\\\" if.bind=\\\"results\\\"> <ft-multi-select-bar multiselect.two-way=\\\"multiselect\\\" selected.bind=\\\"selected\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-multi-select-bar> <div class=\\\"panel-body\\\"> <h3>${data.title}</h3> </div> <ft-responsive-table data.bind=\\\"data\\\" multiselect.bind=\\\"multiselect\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-responsive-table> <div class=\\\"panel-body\\\" if.bind=\\\"results && data.footnote\\\"> <div innerhtml.bind=\\\"data.footnote\\\"></div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/lists/ft-report-archive-d/ft-report-archive-d.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-report-archive-d\\\"> <div class=\\\"panel panel-default\\\"> <ft-multi-select-bar multiselect.two-way=\\\"multiselect\\\" selected.bind=\\\"selected\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-multi-select-bar> <div repeat.for=\\\"row of data.groups\\\"> <div class=\\\"panel-body\\\"> <h3>${data.title}</h3> </div> <ft-responsive-table data.bind=\\\"row\\\" multiselect.bind=\\\"multiselect\\\" on-selected.bind=\\\"onSelectDocument\\\"></ft-responsive-table> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/video/ft-video-switch/ft-video-switch.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"currentVideo\\\" data-fti-component=\\\"video\\\" innerhtml.bind=\\\"currentVideo.content\\\"></div> <div if.bind=\\\"showControls\\\" class=\\\"transcript-controls\\\"> <div if.bind=\\\"showLanguageDropdown\\\" class=\\\"dropdown\\\" class.bind=\\\"dropdownClass\\\"> <button class=\\\"btn transcript-controls__language dropdown-normal-text dropdown-toggle\\\" type=\\\"button\\\" aria-haspopup=\\\"true\\\" aria-expanded.bind=\\\"dropdownOpen\\\" click.delegate=\\\"toggleDropdown()\\\"> <ft-label label.bind=\\\"currentLanguage\\\"></ft-label> <span class=\\\"caret\\\"></span> </button> <ul class=\\\"dropdown-menu\\\" aria-labelledby=\\\"\\\"> <li repeat.for=\\\"language of languages\\\"> <a innerhtml.bind=\\\"language\\\" click.delegate=\\\"changeLanguage(language)\\\"></a> </li> </ul> </div> <a if.bind=\\\"transcriptUrl\\\" href.bind=\\\"transcriptUrl\\\" class=\\\"transcript-controls__document\\\"><span innerhtml.bind=\\\"marketingLabels.transcriptLabel\\\"></span> <i class=\\\"ft-icon ft-icon-document\\\"></i></a> </div> <div ref=\\\"videosNode\\\"> <slot></slot> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-calendar-year-returns/ft-calendar-year-returns.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-calendar-year-returns\\\"> <div data-fti-component=\\\"calendar-year-returns\\\"> <div if.bind=\\\"isPopulated \\\"> <div if.bind=\\\"!showData\\\" class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <ft-label label.bind=\\\"getLabel('no-performance-data')\\\"></ft-label> </div> </div> <div if.bind=\\\"showData\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-calendar-component-heading' + dynamicLabel)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\" if.bind=\\\"showRefreshRates\\\"> <div class=\\\"hidden-xs\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of tabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" click.delegate=\\\"changeTab(tab.key)\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></a> </li> </ul> </div> <select class=\\\"form-control visible-xs margin-bottom-xs-15\\\" value.bind=\\\"timePeriodValue\\\" change.delegate=\\\"changeTab(timePeriodValue.key)\\\"> <option repeat.for=\\\"tab of tabs\\\" model.bind=\\\"tab\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></option> </select> </div> <h3 if.bind=\\\"!showRefreshRates\\\"> <ft-label if.bind=\\\"currentTab === 'MONTH_END'\\\" label.bind=\\\"getLabel('performance-monthly')\\\"></ft-label> <ft-label if.bind=\\\"currentTab === 'QUARTER_END'\\\" label.bind=\\\"getLabel('performance-quarterly')\\\"></ft-label> </h3> </div> </div> <ft-proximal placement=\\\"PerformanceCalendarProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div data-fti-module=\\\"ftichart\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" fti-chart-scale=\\\"0.95\\\" if.bind=\\\"!hideChart\\\"> <ft-column-chart series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\" suffix.bind=\\\"'%'\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\" if.bind=\\\"tableData\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"calendar-year-returns-table-monthly\\\" class=\\\"table table-striped table-md-padding table--border-bottom avoid-page-break-inside\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(dateGroup)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\" repeat.for=\\\"year of tableData.years\\\"> ${year} </th> <th if.bind=\\\"showYTD\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('inception-date')\\\"></ft-label></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> <ft-label if.bind=\\\"row.IASector\\\" label.bind=\\\"getLabel('sector-label')\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sevenYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.eightYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.nineYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr\\\"></td> <td if.bind=\\\"showYTD\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.ytd | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.inceptionDate | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> <div if.bind=\\\"tableData.allRows.length > 0\\\"> <div class=\\\"margin-bottom-xs-15 margin-top-xs-15 margin-top-lg-0\\\"> <a role=\\\"button\\\" class=\\\"ft-btn-collapse-reveal collapsed\\\" data-toggle=\\\"collapse\\\" href=\\\"#callYearAllClasses\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseExample\\\"> <strong>View All Share Class Performance</strong> </a> </div> <div id=\\\"callYearAllClasses\\\" class=\\\"collapse margin-bottom-xs-15\\\"> <h2>All Share Class Performance for ${fundName}</h2> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"calendar-year-returns-table-monthly-all\\\" class=\\\"table table-striped table-md-padding table--border-bottom\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(dateGroup)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\" repeat.for=\\\"year of tableData.years\\\"> ${year} </th> <th if.bind=\\\"showYTD\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('inception-date')\\\"></ft-label></th> <th scope=\\\"col\\\" class=\\\"text-right\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.allRows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sevenYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.eightYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.nineYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr\\\"></td> <td if.bind=\\\"showYTD\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.ytd | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.inceptionDate | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\"> <a href=\\\"${row.productLink}\\\"> <ft-label label.bind=\\\"getLabel('fund-information')\\\"></ft-label> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-calendar-year-returns/ft-calendar-year-tab.html', ['module'], function(module) { module.exports = \"<template> <table id=\\\"calendar-year-returns-table-monthly\\\" class=\\\"table table-striped table--border-bottom avoid-page-break-inside\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(dateGroup)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableDataAsOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\" repeat.for=\\\"year of tableDataYears\\\"> ${year} </th> <th if.bind=\\\"showYTD\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('inception-date')\\\"></ft-label></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableDataRows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i if.bind=\\\"hasLegend\\\" class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"row.name\\\"></ft-label> </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.nineYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.eightYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sevenYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr\\\"></td> <td if.bind=\\\"showYTD\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.ytd | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.inceptionDate | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </template> \"; });\r\ndefine('text!components/products/performance/ft-discrete-returns/ft-discrete-returns.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-discrete-returns\\\"> <div data-fti-component=\\\"discrete-returns\\\"> <div if.bind=\\\"isPopulated\\\"> <div if.bind=\\\"!showData\\\" class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <ft-label label.bind=\\\"getLabel('no-performance-data')\\\"></ft-label> </div> </div> <div if.bind=\\\"showData\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-discrete-component-heading' + dynamicLabel)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\" if.bind=\\\"showRefreshRates\\\"> <div class=\\\"hidden-xs\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of tabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" click.delegate=\\\"changeTab(tab.key)\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></a> </li> </ul> </div> <select class=\\\"form-control visible-xs margin-bottom-xs-15\\\" value.bind=\\\"timePeriodValue\\\" change.delegate=\\\"changeTab(timePeriodValue.key)\\\"> <option repeat.for=\\\"tab of tabs\\\" model.bind=\\\"tab\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></option> </select> </div> <h3 if.bind=\\\"!showRefreshRates\\\"> <ft-label if.bind=\\\"currentTab === 'MONTH_END'\\\" label.bind=\\\"getLabel('performance-monthly')\\\"></ft-label> <ft-label if.bind=\\\"currentTab === 'QUARTER_END'\\\" label.bind=\\\"getLabel('performance-quarterly')\\\"></ft-label> </h3> </div> </div> <ft-proximal placement=\\\"PerformanceDiscreateProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div data-fti-module=\\\"ftichart\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" id=\\\"discrete-returns-monthly\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" fti-chart-scale=\\\"0.95\\\" if.bind=\\\"!hideChart\\\"> <ft-column-chart series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\" if.bind=\\\"tableData\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"discrete-returns-table-monthly\\\" class=\\\"table table-striped table--border-bottom avoid-page-break-inside\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(dateGroup)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"showFundNumber\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\" repeat.for=\\\"year of tableData.years\\\"> ${year} </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('inception-date')\\\"></ft-label></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1} pull-left\\\"></i> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> <ft-label if.bind=\\\"row.IASector\\\" label.bind=\\\"getLabel('sector-label')\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\"> <span innerhtml.bind=\\\"row.taID\\\"></span> </td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.inceptionDate | ftFormatDateOrDash \\\"></td> </tr> </tbody> </table> </div> </div> <div if.bind=\\\"tableData.allRows.length > 0\\\"> <div class=\\\"margin-bottom-xs-15 margin-top-xs-15 margin-top-lg-0\\\"> <a role=\\\"button\\\" class=\\\"ft-btn-collapse-reveal collapsed\\\" data-toggle=\\\"collapse\\\" href=\\\"#allShareClassesDiscrete\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseExample\\\"> <strong>View All Share Class Performance</strong> </a> </div> <div id=\\\"allShareClassesDiscrete\\\" class=\\\"collapse margin-bottom-xs-15\\\"> <h2>All Share Class Performance for ${fundName}</h2> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"discrete-returns-table-monthly-all\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr> <th> <ft-label label.bind=\\\"getLabel(dateGroup)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" class=\\\"text-right\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> (%) </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"><ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" repeat.for=\\\"year of tableData.years\\\"> ${year} </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('inception-date')\\\"></ft-label></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.allRows\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> </th> <td if.bind=\\\"showFundNumber\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.taID\\\"></td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.inceptionDate | ftFormatDateOrDash \\\"></td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <ft-proximal placement=\\\"PerformanceDiscreateProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-performance-annualised/ft-performance-annualised.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-performance-annualised\\\"> <div data-fti-component=\\\"performance-annualised\\\"> <div if.bind=\\\"isPopulated \\\"> <div if.bind=\\\"!showData\\\" class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <ft-label label.bind=\\\"getLabel('no-performance-data')\\\"></ft-label> </div> </div> <div if.bind=\\\"showData\\\"> <div data-fti-module=\\\"date-toggle\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-annualised-heading' + dynamicLabel )\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\" if.bind=\\\"showRefreshRates\\\"> <div class=\\\"hidden-xs\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of tabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" click.delegate=\\\"changeTimePeriodTab(tab.key)\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></a> </li> </ul> </div> <select class=\\\"form-control visible-xs margin-bottom-xs-15\\\" value.bind=\\\"timePeriodValue\\\" change.delegate=\\\"changeTimePeriodTab(timePeriodValue.key)\\\"> <option repeat.for=\\\"tab of tabs\\\" model.bind=\\\"tab\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></option> </select> </div> <h3 if.bind=\\\"!showRefreshRates\\\"> <ft-label if.bind=\\\"currentTab === 'MONTH_END'\\\" label.bind=\\\"getLabel('performance-monthly')\\\"></ft-label> <ft-label if.bind=\\\"currentTab === 'QUARTER_END'\\\" label.bind=\\\"getLabel('performance-quarterly')\\\"></ft-label> </h3> </div> </div> <ft-proximal placement=\\\"PerformanceAnnualizedProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"tab-content1\\\"> <div id=\\\"performance-annualised-monthly-pane\\\" role=\\\"1tabpanel\\\" class=\\\"1tab-pane\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" id=\\\"performance-annualised-monthly\\\" if.bind=\\\"!hideChart\\\"> <ft-column-chart series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"performance-annualised-table-monthly\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(currentTab)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('15-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('inception')\\\"></ft-label> <small> <ft-label label.bind=\\\"inceptionDate | ftDashIfEmpty\\\"></ft-label> </small> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> <ft-label if.bind=\\\"row.IASector\\\" label.bind=\\\"getLabel('sector-label')\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneY | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeY | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveY | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenY | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiftnY | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.life | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> </div> <div if.bind=\\\"tableData.allRows.length > 0\\\"> <div class=\\\"margin-bottom-xs-15 margin-top-xs-15 margin-top-lg-0\\\"> <a role=\\\"button\\\" class=\\\"ft-btn-collapse-reveal collapsed\\\" data-toggle=\\\"collapse\\\" href=\\\"#addShareClasses\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseExample\\\"> <strong>View All Share Class Performance</strong> </a> </div> <div id=\\\"addShareClasses\\\" class=\\\"collapse margin-bottom-xs-15\\\"> <h2>All Share Class Performance for ${fundName}</h2> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"performance-annualised-table-monthly-all\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr> <th> <ft-label label.bind=\\\"getLabel(currentTab)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('15-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('inception')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('inception-date')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.allRows\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" innerhtml.bind=\\\"row.currency\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneY\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeY\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveY\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenY\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiftnY\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.life\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.inceptionDate | ftDashIfEmpty\\\"></td> <td class=\\\"text-right text-nowrap\\\"> <a href=\\\"${row.productLink}\\\"> <ft-label label.bind=\\\"getLabel('fund-information')\\\"></ft-label> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <ft-proximal placement=\\\"PerformanceAnnualizedProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-performance-cumulative/ft-performance-cumulative.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-performance-cumulative\\\"> <div data-fti-component=\\\"cumulative-total-returns\\\"> <div if.bind=\\\"populated\\\"> <div if.bind=\\\"!showData\\\" class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <ft-label label.bind=\\\"getLabel('no-performance-data')\\\"></ft-label> </div> </div> <div if.bind=\\\"showData\\\"> <div data-fti-module=\\\"date-toggle\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-cumulative-component-heading' + dynamicLabel)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\" if.bind=\\\"showRefreshRates\\\"> <div class=\\\"hidden-xs\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of timePeriodTabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" click.delegate=\\\"changeTimePeriodTab(tab.key, tab.labelKey)\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></a> </li> </ul> </div> <select class=\\\"form-control visible-xs margin-bottom-xs-15\\\" value.bind=\\\"yearGroupValue\\\" change.delegate=\\\"changeTimePeriodTab(yearGroupValue)\\\"> <option repeat.for=\\\"tab of timePeriodTabs\\\" model.bind=\\\"tab.key\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></option> </select> </div> <h3 if.bind=\\\"!showRefreshRates\\\"> <ft-label if.bind=\\\"currentMonthTab === 'MONTH_END'\\\" label.bind=\\\"getLabel('performance-monthly')\\\"></ft-label> <ft-label if.bind=\\\"currentMonthTab === 'QUARTER_END'\\\" label.bind=\\\"getLabel('performance-quarterly')\\\"></ft-label> </h3> </div> </div> <div class=\\\"row\\\" if.bind=\\\"!hideChart\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\"> <div class=\\\"hidden-xs\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of yearGroupTabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" class.bind=\\\"tab.isDisabled ? 'disabled' : ''\\\" click.delegate=\\\"changeYearGroupTab(tab.key)\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></a> </li> </ul> </div> <select class=\\\"form-control visible-xs margin-bottom-xs-15\\\" value.bind=\\\"yearGroupValue\\\" change.delegate=\\\"changeYearGroupTab(yearGroupValue)\\\"> <option repeat.for=\\\"tab of yearGroupTabs\\\" model.bind=\\\"tab.key\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></option> </select> </div> </div> </div> </div> <ft-proximal placement=\\\"PerformanceCumulativeProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"tab-content1\\\"> <div id=\\\"average-annual-total-return-monthly-pane\\\" role=\\\"1tabpanel\\\" class=\\\"1tab-pane\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" fti-chart-scale=\\\"0.95\\\" if.bind=\\\"!hideChart\\\"> <ft-performance-cumulative-chart hide-sm=\\\"false\\\" data.bind=\\\"chartData\\\" graph-names.bind=\\\"graphNames\\\" options.bind=\\\"chartOptions\\\"></ft-performance-cumulative-chart> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"performance-cumulative-table-monthly\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(currentMonthTabLabelKey)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th if.bind=\\\"showYTD\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th if.bind=\\\"show1M3M6M\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-mth')\\\"></ft-label> </th> <th if.bind=\\\"show1M3M6M\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-mth')\\\"></ft-label> </th> <th if.bind=\\\"show1M3M6M\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('6-mth')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th if.bind=\\\"tableData.rows[0].fifteen\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('15-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('since-inception')\\\"></ft-label> <small> <ft-label label.bind=\\\"tableData.rows[0].inceptionDate | ftDashIfEmpty\\\"></ft-label> </small> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" inn class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> <ft-label if.bind=\\\"row.IASector\\\" label.bind=\\\"getLabel('sector-label')\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" iclass=\\\"text-right\\\" innerhtml.bind=\\\"row.currency | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showYTD\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.ytd\\\"></td> <td if.bind=\\\"show1M3M6M\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneM\\\"></td> <td if.bind=\\\"show1M3M6M\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeM\\\"></td> <td if.bind=\\\"show1M3M6M\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixM\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.one\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.three\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.five\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.ten\\\"></td> <td if.bind=\\\"row.fifteen\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.fifteen\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.life | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> </div> <div if.bind=\\\"tableData.allRows.length > 0\\\"> <div class=\\\"margin-bottom-xs-15 margin-top-xs-15 margin-top-lg-0\\\"> <a role=\\\"button\\\" class=\\\"ft-btn-collapse-reveal collapsed\\\" data-toggle=\\\"collapse\\\" href=\\\"#performanceCumulativeAll\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseExample\\\"> <strong>View All Share Class Performance</strong> </a> </div> <div id=\\\"performanceCumulativeAll\\\" class=\\\"collapse margin-bottom-xs-15\\\"> <h2>All Share Class Performance for ${fundName}</h2> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"performance-cumulative-table-monthly-all\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(currentMonthTabLabelKey)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th if.bind=\\\"showFundNumber\\\" scope=\\\"col\\\"> <ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label> </th> <th if.bind=\\\"showCurrency\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('currency')\\\"></ft-label> </th> <th if.bind=\\\"showYTD\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th if.bind=\\\"show1M3M6M\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-mth')\\\"></ft-label> </th> <th if.bind=\\\"show1M3M6M\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-mth')\\\"></ft-label> </th> <th if.bind=\\\"show1M3M6M\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('6-mth')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th if.bind=\\\"tableData.rows[0].fifteen\\\" scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('15-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('since-inception')\\\"></ft-label> <small> <ft-label label.bind=\\\"tableData.rows[0].inceptionDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.allRows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" inn class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getParsedFundNameLabel(row.name)\\\"></ft-label> (%) </th> <td if.bind=\\\"showFundNumber\\\" innerhtml.bind=\\\"row.taID | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showCurrency\\\" iclass=\\\"text-right\\\" innerhtml.bind=\\\"row.currency | ftDashIfEmpty\\\"></td> <td if.bind=\\\"showYTD\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.ytd\\\"></td> <td if.bind=\\\"show1M3M6M\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneM\\\"></td> <td if.bind=\\\"show1M3M6M\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeM\\\"></td> <td if.bind=\\\"show1M3M6M\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixM\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.one\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.three\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.five\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.ten\\\"></td> <td if.bind=\\\"row.fifteen\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.fifteen\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.life | ftDashIfEmpty\\\"></td> <td class=\\\"text-right text-nowrap\\\"> <a href=\\\"${row.productLink}\\\"> <ft-label label.bind=\\\"getLabel('fund-information')\\\"></ft-label> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <ft-proximal placement=\\\"PerformanceCumulativeProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-performance-risk-statistics/ft-performance-risk-statistics.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"populated\\\"> <div if.bind=\\\"showStatistics === true\\\" data-fti-component=\\\"performance-risk-statistics\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-risk-statistics-component-heading')\\\"></ft-label> <span if.bind=\\\"standardDeviationTable.fundRow.shareClassCode !== 'SINGLCLASS'\\\">&mdash; <ft-label label.bind=\\\"standardDeviationTable.fundRow.name\\\"></ft-label></span> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"RiskStatisticsProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <div class=\\\"col-sm-6\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"portfolio-risks-statistics-table\\\" class=\\\"table text-right table-striped\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"><ft-label label.bind=\\\"getLabel('statistics')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label></th> </tr> </thead> <tbody> <tr if.bind=\\\"showAlpha === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.alphaRow.name)\\\"></ft-label> <ft-footnote placement=\\\"Alpha\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.alphaRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.alphaRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.alphaRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showBeta === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.betaRow.name)\\\"></ft-label> <ft-footnote placement=\\\"Beta\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.betaRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.betaRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.betaRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showInfoRatio === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.infRatioRow.name)\\\"></ft-label> <ft-footnote placement=\\\"InformationRatio\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.infRatioRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.infRatioRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.infRatioRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showTrackingError === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.histTrackRow.name)\\\"></ft-label> <ft-footnote placement=\\\"TrackingError\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.histTrackRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.histTrackRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.histTrackRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showRSquared === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.rSquaredRow.name)\\\"></ft-label> <ft-footnote placement=\\\"RSquaredRow\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.rSquaredRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.rSquaredRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.rSquaredRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showCorrelation === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.correlationRow.name)\\\"> <ft-footnote placement=\\\"CorrelationRow\\\"></ft-footnote> </ft-label> </th> <td><ft-label label.bind=\\\"statisticsTable.correlationRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.correlationRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.correlationRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showUpsideCapture === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.upsideCap.name)\\\"></ft-label> <ft-footnote placement=\\\"UpsideCapture\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.upsideCap.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.upsideCap.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.upsideCap.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr if.bind=\\\"showDownsideCapture === true\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(statisticsTable.downsideCap.name)\\\"></ft-label> <ft-footnote placement=\\\"DownsideCapture\\\"></ft-footnote> </th> <td><ft-label label.bind=\\\"statisticsTable.downsideCap.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.downsideCap.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"statisticsTable.downsideCap.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> </tbody> </table> </div> </div> <div class=\\\"col-md-6 col-sm-6\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"portfolio-risks-standard-deviation-table\\\" class=\\\"table text-right table-striped\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel('standard-deviation')\\\"></ft-label> <ft-footnote placement=\\\"StandardDeviation\\\"></ft-footnote> </th> <th class=\\\"text-right\\\" if.bind=\\\"showFundNr === true\\\"><ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label></th> </tr> </thead> <tbody> <tr class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"standardDeviationTable.fundRow.name\\\"></ft-label> <ft-footnote placement=\\\"PrimaryBenchmarkRiskStatistics\\\"></ft-footnote> </th> <td if.bind=\\\"showFundNr === true\\\"><ft-label label.bind=\\\"standardDeviationTable.fundRow.fundNr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"standardDeviationTable.fundRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"standardDeviationTable.fundRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"standardDeviationTable.fundRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"standardDeviationTable.bmRow.name\\\"></ft-label> <ft-footnote placement=\\\"SecondaryBenchmarkRiskStatistics\\\"></ft-footnote> </th> <td if.bind=\\\"showFundNr === true\\\">&mdash;</td> <td><ft-label label.bind=\\\"standardDeviationTable.bmRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"standardDeviationTable.bmRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"standardDeviationTable.bmRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> </tbody> </table> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"portfolio-risks-sharp-ratio-table\\\" class=\\\"table text-right table-striped\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel('sharp-ratio')\\\"></ft-label> <ft-footnote placement=\\\"SharpeRatio\\\"></ft-footnote> </th> <th class=\\\"text-right\\\" if.bind=\\\"showFundNr === true\\\"><ft-label label.bind=\\\"getLabel('fund-number')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label></th> <th class=\\\"text-right\\\"><ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label></th> </tr> </thead> <tbody> <tr class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"sharpeRatioTable.fundRow.name\\\"></ft-label> <ft-footnote placement=\\\"PrimaryBenchmarkRiskStatistics\\\"></ft-footnote> </th> <td if.bind=\\\"showFundNr === true\\\"><ft-label label.bind=\\\"sharpeRatioTable.fundRow.fundNr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"sharpeRatioTable.fundRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"sharpeRatioTable.fundRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"sharpeRatioTable.fundRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> <tr class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"sharpeRatioTable.bmRow.name\\\"></ft-label> <ft-footnote placement=\\\"SecondaryBenchmarkRiskStatistics\\\"></ft-footnote> </th> <td if.bind=\\\"showFundNr === true\\\">&mdash;</td> <td><ft-label label.bind=\\\"sharpeRatioTable.bmRow.oneYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"sharpeRatioTable.bmRow.threeYr | ftDashIfEmpty\\\"></ft-label></td> <td><ft-label label.bind=\\\"sharpeRatioTable.bmRow.fiveYr | ftDashIfEmpty\\\"></ft-label></td> </tr> </tbody> </table> </div> </div> <div class=\\\"col-sm-12\\\"> <ft-proximal placement=\\\"RiskStatisticsProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-fund-ratings/ft-fund-ratings.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"row\\\" if.bind=\\\"populated\\\"> <div class=\\\"col-sm-12\\\"> <h2 class=\\\"header-product\\\"> <span innerhtml.one-time=\\\"getLabel('ratings-header')\\\"></span> <ft-footnote placement=\\\"RatingsOverview\\\"></ft-footnote> </h2> </div> <div class=\\\"col-xs-12 col-md-6\\\" if.bind=\\\"showMorningStar\\\"> <div class=\\\"overall-morningstar-rating intl\\\"> <h3 innerhtml.one-time=\\\"getLabel('overall-morningstar-rating')\\\"> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate\\\"></ft-label> </small> </h3> <div class=\\\"overall-rating\\\"> <i class=\\\"glyphicon glyphicon-star\\\" repeat.for=\\\"1 of msNumberOfStars\\\"></i> </div> <p> <ft-label label.bind=\\\"getLabel('rating-category')\\\">[rating-category]</ft-label> <strong innerhtml.bind=\\\"msCategory\\\"></strong> </p> <div class=\\\"morningstar-blurb prominent\\\"> <img alt=\\\"Morningstar\\\" src=\\\"/assets/img/morning.png\\\"> <ft-proximal placement=\\\"MorningStarRatingsProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> <div class=\\\"col-xs-12 col-md-6\\\" if.bind=\\\"showLipper\\\"> <div class=\\\"cols-sm-6 lipper-rating\\\"> <h3 class=\\\"header-product\\\"> Overall Lipper Rating <small>Overall Lipper rating from launch date.</small> </h3> <div class=\\\"lipper-leaders\\\"> <div class=\\\"row\\\"> <div class=\\\"col-xs-4 col-lg-2\\\"> <b class=\\\"icon-circle ${lipperTotalReturn === '5'? 'high' : 'low'}\\\">${lipperTotalReturn}</b> <span class=\\\"category\\\"><ft-label label.bind=\\\"getLabel('lipper-total-return')\\\"></ft-label></span> </div> <div class=\\\"col-xs-4 col-lg-2\\\"> <b class=\\\"icon-circle ${lipperConsistentReturn === '5'? 'high' : 'low'}\\\">${lipperConsistentReturn}</b> <span class=\\\"category\\\"><ft-label label.bind=\\\"getLabel('lipper-consistent-return')\\\"></ft-label></span> </div> <div class=\\\"col-xs-4 col-lg-2\\\"> <b class=\\\"icon-circle ${lipperPreservation === '5'? 'high' : 'low'}\\\">${lipperPreservation}</b> <span class=\\\"category\\\"><ft-label label.bind=\\\"getLabel('lipper-preservation')\\\"></ft-label></span> </div> <div class=\\\"col-xs-4 col-lg-2\\\"> <b class=\\\"icon-circle ${lipperTaxEfficiency === '5'? 'high' : 'low'}\\\">${lipperTaxEfficiency}</b> <span class=\\\"category\\\"><ft-label label.bind=\\\"getLabel('lipper-tax-efficiency')\\\"></ft-label></span> </div> <div class=\\\"col-xs-4 col-lg-2\\\"> <b class=\\\"icon-circle ${lipperExpense === '5'? 'high' : 'low'}\\\">${lipperExpense}</b> <span class=\\\"category\\\"><ft-label label.bind=\\\"getLabel('lipper-expense')\\\"></ft-label></span> </div> </div> </div> <img class=\\\"lipper-logo\\\" src=\\\"/assets/img/LipperLogo.png\\\" alt=\\\"Lipper Logo\\\"> <ft-proximal placement=\\\"LipperRatingsProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> <div class=\\\"col-xs-12 col-md-6\\\" if.bind=\\\"showObsr\\\"> <p>OBSR placeholder </p> </div> <div class=\\\"col-xs-12 col-md-6\\\" if.bind=\\\"showAnalizy\\\"> <p>Analizy placeholder </p> </div> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-fund-static-bar/ft-fund-static-bar.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('price-and-ytd-return')\\\"></span> <ft-footnote placement=\\\"PriceHeaderOverview\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.asOfDate\\\"></span> <span innerhtml.bind=\\\"getLabel(data.updateFreqLabel)\\\"></span> </small> </h3> <table class=\\\"table table-static-nav-bar table-vertical-borders hidden-sm hidden-xs\\\"> <thead> <tr> <th> <b innerhtml.bind=\\\"getLabel('nav')\\\"></b> <ft-footnote placement=\\\"NavOverview\\\"></ft-footnote> </th> <th> <b innerhtml.bind=\\\"getLabel('nav-change')\\\"></b> <ft-footnote placement=\\\"NavChangeOverview\\\"></ft-footnote> </th> <th if.bind=\\\"!data.hideYtdTotalReturnAtNav\\\"> <b innerhtml.bind=\\\"getLabel('ytd-total-ret')\\\"></b> <ft-footnote placement=\\\"YTDNAVOverview\\\"></ft-footnote> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"> <b class=\\\"fund-price\\\" innerhtml.bind=\\\"data.navVal\\\"></b> </td> <td class=\\\"text-left\\\"> <b class=\\\"fund-price ${data.directionClass}\\\" innerhtml.bind=\\\"data.dlyNavChange\\\"></b> </td> <td class=\\\"text-left\\\" if.bind=\\\"!data.hideYtdTotalReturnAtNav\\\"> <b class=\\\"fund-price\\\" innerhtml.bind=\\\"data.totRtnYTD\\\"></b> </td> </tr> <tr if.bind=\\\"data.dlyNavPcnt !== undefined\\\"> <td></td> <td class=\\\"text-left\\\"><span class=\\\"${data.directionClass}\\\" innerhtml.bind=\\\"data.dlyNavPcnt\\\"></span></td> <td></td> </tr> </tbody> </table> <table class=\\\"table table-static-nav-bar hidden-md hidden-lg\\\"> <tbody> <tr> <th class=\\\"th--bold\\\"> <span innerhtml.bind=\\\"getLabel('nav')\\\"></span> <ft-footnote placement=\\\"NavOverview\\\"></ft-footnote> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\" innerhtml.bind=\\\"data.navVal\\\"></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <span innerhtml.bind=\\\"getLabel('nav-change')\\\"></span> <ft-footnote placement=\\\"NavChangeOverview\\\"></ft-footnote> </th> <td class=\\\"text-right\\\" if.bind=\\\"data.dlyNavPcnt !== undefined\\\"><span class=\\\"${data.directionClass}\\\" innerhtml.bind=\\\"data.dlyNavPcnt\\\"></span></td> <td class=\\\"text-right\\\"><span if.bind=\\\"data.dlyNavPcnt === undefined\\\"><span class=\\\"${data.directionClass}\\\"></span>&nbsp;</span><b class=\\\"fund-price\\\" innerhtml.bind=\\\"data.dlyNavChange\\\"></b></td> </tr> <tr if.bind=\\\"!data.hideYtdTotalReturnAtNav\\\"> <th class=\\\"th--bold\\\"> <span innerhtml.bind=\\\"getLabel('ytd-total-ret')\\\"></span> <ft-footnote placement=\\\"YTDNAVOverview\\\"></ft-footnote> </th> <td class=\\\"text-right\\\" colspan=\\\"2\\\"><b class=\\\"fund-price\\\" innerhtml.bind=\\\"data.totRtnYTD\\\"></b></td> </tr> </tbody> </table> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-performance-snapshot/annualised-snapshot.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-annualised-heading' + dynamicLabel)\\\"></ft-label> <ft-footnote placement=\\\"PerformanceSnapshotAnnualized\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceSnapshotProximalAnnualized\\\" position=\\\"top\\\"></ft-proximal> <table class=\\\"table table-static-nav-bar table-vertical-borders hidden-sm hidden-xs\\\"> <thead> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('inception')\\\"></ft-label> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneY | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeY | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fiveY | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].tenY | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].life | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <table class=\\\"table table-static-nav-bar hidden-md hidden-lg\\\"> <tbody> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneY | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeY | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fiveY | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].tenY | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('inception')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].life | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <ft-proximal placement=\\\"PerformanceSnapshotProximalAnnualized\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-performance-snapshot/calendar-year-snapshot.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-calendar-component-heading' + dynamicLabel)\\\"></ft-label> <ft-footnote placement=\\\"PerformanceSnapshotCalendar\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceSnapshotProximalCalendar\\\" position=\\\"top\\\"></ft-proximal> <table class=\\\"table table-static-nav-bar table-vertical-borders hidden-sm hidden-xs\\\"> <thead> <tr> <th class=\\\"th--bold\\\" repeat.for=\\\"i of 5\\\"> ${tableData.years[9 - i]} </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].twoYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fourYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fiveYr | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <table class=\\\"table table-static-nav-bar hidden-md hidden-lg\\\"> <tbody> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[9]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[8]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].twoYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[7]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[6]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fourYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[5]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fiveYr | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <ft-proximal placement=\\\"PerformanceSnapshotProximalCalendar\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-performance-snapshot/cumulative-snapshot-alternative.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"populated\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-cumulative-component-heading' + dynamicLabel)\\\"></ft-label> <ft-footnote placement=\\\"PerformanceSnapshotCumulative\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceSnapshotProximalCumulative\\\" position=\\\"top\\\"></ft-proximal> <table class=\\\"table table-static-nav-bar table-vertical-borders hidden-sm hidden-xs\\\"> <thead> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-mth')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('3-mth')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('6-mth')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].ytd | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneM | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeM | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].sixM | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].one | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <table class=\\\"table table-static-nav-bar hidden-md hidden-lg\\\"> <tbody> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].ytd | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-mth')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneM | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('3-mth')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeM | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('6-mth')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].sixM | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].one | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <ft-proximal placement=\\\"PerformanceSnapshotProximalCumulative\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-performance-snapshot/cumulative-snapshot.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"populated\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-cumulative-component-heading' + dynamicLabel)\\\"></ft-label> <ft-footnote placement=\\\"PerformanceSnapshotCumulative\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceSnapshotProximalCumulative\\\" position=\\\"top\\\"></ft-proximal> <table class=\\\"table table-static-nav-bar table-vertical-borders hidden-sm hidden-xs\\\"> <thead> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('since-inception')\\\"></ft-label> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].ytd | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].one | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].three | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].five | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].ten | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].life | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <table class=\\\"table table-static-nav-bar hidden-md hidden-lg\\\"> <tbody> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].ytd | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].one | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].three | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].five | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].ten | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"getLabel('since-inception')\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].life | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <ft-proximal placement=\\\"PerformanceSnapshotProximalCumulative\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-performance-snapshot/discrete-snapshot.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-discrete-component-heading' + dynamicLabel)\\\"></ft-label> <ft-footnote placement=\\\"PerformanceSnapshotDiscrete\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceSnapshotProximalDiscrete\\\" position=\\\"top\\\"></ft-proximal> <table class=\\\"table table-static-nav-bar table-vertical-borders hidden-sm hidden-xs\\\"> <thead> <tr> <th class=\\\"th--bold\\\" repeat.for=\\\"year of tableData.years\\\"> ${year} </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].twoYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fourYr | ftFormatPercentage\\\"></nobr></b></td> <td class=\\\"text-left\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fiveYr | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <table class=\\\"table table-static-nav-bar hidden-md hidden-lg\\\"> <tbody> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[0]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].oneYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[1]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].twoYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[2]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].threeYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[3]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fourYr | ftFormatPercentage\\\"></nobr></b></td> </tr> <tr> <th class=\\\"th--bold\\\"> <ft-label label.bind=\\\"tableData.years[4]\\\"></ft-label> </th> <td colspan=\\\"2\\\" class=\\\"text-right\\\"><b class=\\\"fund-price\\\"><nobr innerhtml.bind=\\\"tableData.rows[0].fiveYr | ftFormatPercentage\\\"></nobr></b></td> </tr> </tbody> </table> <ft-proximal placement=\\\"PerformanceSnapshotProximalDiscrete\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-performance-snapshot/ft-performance-snapshot.html', ['module'], function(module) { module.exports = \"<template> <compose if.bind=\\\"performanceType === 'Discrete'\\\" view=\\\"./discrete-snapshot.html\\\" view-model=\\\"../../performance/ft-discrete-returns/ft-discrete-returns\\\" model.bind=\\\"self\\\"></compose> <compose if.bind=\\\"performanceType === 'Calendar Year'\\\" view=\\\"./calendar-year-snapshot.html\\\" view-model=\\\"../../performance/ft-calendar-year-returns/ft-calendar-year-returns\\\" model.bind=\\\"self\\\"></compose> <compose if.bind=\\\"performanceType === 'Annualised'\\\" view=\\\"./annualised-snapshot.html\\\" view-model=\\\"../../performance/ft-performance-annualised/ft-performance-annualised\\\" model.bind=\\\"self\\\"></compose> <compose if.bind=\\\"performanceType === 'Cumulative'\\\" view=\\\"./cumulative-snapshot.html\\\" view-model=\\\"../../performance/ft-performance-cumulative/ft-performance-cumulative\\\" model.bind=\\\"self\\\"></compose> <compose if.bind=\\\"performanceType === 'Cumulative 1M 3M 6M'\\\" view=\\\"./cumulative-snapshot-alternative.html\\\" view-model=\\\"../../performance/ft-performance-cumulative/ft-performance-cumulative\\\" model.bind=\\\"self\\\"></compose> </template> \"; });\r\ndefine('text!components/products/portfolio/common/ft-generic-chart-component-base.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"data.date | ftDashIfEmpty\\\"></ft-label> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> <span if.bind=\\\"!data.calType && data.calTypeStd\\\" innerhtml.bind=\\\"getLabel(data.calTypeStd)\\\"></span> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-bar-chart suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel(DATA_COLUMN_LABEL_ID)\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span if.bind=\\\"data.showChart\\\" class=\\\"table-text__icon-wrapper\\\"> <i class=\\\"chart-key ${row.graphColour}\\\"></i> </span> <span class=\\\"table-text__header-text\\\"> ${ row.name } </span> </span> </th> <td> <b> <ft-label label.bind=\\\"row.val | ftFormatPercentage\\\"></ft-label> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/common/ft-generic-exposure-component.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> <span if.bind=\\\"!data.calType && data.calTypeStd\\\" innerhtml.bind=\\\"getLabel(data.calTypeStd)\\\"></span> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-multi-bar-chart suffix.bind=\\\"'%'\\\" data.bind=\\\"data.multiChart.series\\\" categories.bind=\\\"data.multiChart.categories\\\"></ft-multi-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\" repeat.for=\\\"valueObj of data.table[0].values\\\" innerhtml.bind=\\\"valueObj.key\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__header-text\\\"> ${ row.name } </span> </span> </th> <td repeat.for=\\\"valueObj of row.values\\\"> <b> <span innerhtml.bind=\\\"valueObj.val | ftFormatPercentage\\\"></span> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-portfolio-allocation/ft-portfolio-allocation.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> <span if.bind=\\\"!data.calType && data.calTypeStd\\\" innerhtml.bind=\\\"getLabel(data.calTypeStd)\\\"></span> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"table-responsive table-text--expandable\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table\\\"> <thead> <tr> <td if.bind=\\\"data.hasNestedChildren\\\"> <a click.delegate=\\\"expandAll()\\\"><span innerhtml.bind=\\\"getLabel('expand-all')\\\"></span></a> | <a click.delegate=\\\"collapseAll()\\\"><span innerhtml.bind=\\\"getLabel('collapse-all')\\\"></span></a> </td> <td if.bind=\\\"!data.hasNestedChildren\\\"></td> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('risk-allocation')\\\"></th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('net-exposure-of-total')\\\"></th> </tr> </thead> <tbody repeat.for=\\\"row of data.tableTwoLevel\\\"> <tr if.bind=\\\"(!row.inOverflow || isShowingMore) && (row.isParentNode || row.isExpanded)\\\"> <th if.bind=\\\"row.isParentNode && row.hasChildren\\\" scope=\\\"row\\\" click.delegate=\\\"toggleRowExpansion(row)\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"table-text__toggle ${row.isExpanded ? 'table-text__toggle--expanded' : ''}\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper\\\"></span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </a> </th> <th if.bind=\\\"row.isParentNode && !row.hasChildren\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </th> <td class=\\\"text-right\\\" if.bind=\\\"row.isParentNode\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"row.isParentNode\\\" class=\\\"col-xs-4\\\"> <b innerhtml.bind=\\\"row.valOfTotal | ftFormatPercentage\\\"></b> </td> <th if.bind=\\\"!row.isParentNode\\\" class=\\\"table-text__header--no-key\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__header-text table-text__header-nested\\\"> ${row.name} </span> </span> </th> <td class=\\\"text-right\\\" if.bind=\\\"!row.isParentNode\\\"> <span innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></span> </td> <td class=\\\"text-right\\\" if.bind=\\\"!row.isParentNode\\\"> <span innerhtml.bind=\\\"row.valOfTotal | ftFormatPercentage\\\"></span> </td> </tr> </tbody> </table> </div> <p if.bind=\\\"data.hasOverflow\\\"> <a click.delegate=\\\"toggleShowMore()\\\"> <span if.bind=\\\"!isShowingMore\\\" innerhtml.bind=\\\"getLabel('view-more')\\\"></span> <span if.bind=\\\"isShowingMore\\\" innerhtml.bind=\\\"getLabel('view-less')\\\"></span> </a> </p> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-portfolio-no-data-message/ft-portfolio-no-data-message.html', ['module'], function(module) { module.exports = \"<template> <section if.bind=\\\"hasErrors\\\"> <span innerhtml.bind=\\\"getLabel('no-portfolio-data')\\\"></span> </section> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-top-exposures/ft-top-exposures.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && longExposureData.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"longExposureData | ftJson\\\" hidden> </div> <div class=\\\"col-sm-6\\\" if.bind=\\\"isPopulated && longExposureData.visible\\\"> <div> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(longExposureData.labelId)\\\"></span> <ft-footnote placement.bind=\\\"longExposureData.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"longExposureData.date | ftDashIfEmpty\\\"></span> <span if.bind=\\\"longExposureData.calType\\\">(<span innerhtml.bind=\\\"longExposureData.calType\\\"></span>)</span> <span if.bind=\\\"longExposureData.calTypeStd\\\">(<span innerhtml.bind=\\\"getLabel(longExposureData.calTypeStd)\\\"></span>)</span> <span if.bind=\\\"longExposureData.refreshRate\\\" innerhtml.bind=\\\"getLabel(longExposureData.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"longExposureData.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <ul class=\\\"btn-group nav-tabs-button-group hidden-xs\\\"> <li role=\\\"presentation\\\" class=\\\"label-tab ${longExposureDataTab == 'table' ? 'active' : ''}\\\"> <a class=\\\"btn\\\" click.delegate=\\\"longExposureDataTab = 'table'\\\"> <ft-label label.bind=\\\"getLabel('table')\\\"></ft-label> </a> </li> <li role=\\\"presentation\\\" class=\\\"label-tab ${longExposureDataTab == 'chart' ? 'active' : ''}\\\"> <a class=\\\"btn\\\" click.delegate=\\\"longExposureDataTab = 'chart'\\\"> <ft-label label.bind=\\\"getLabel('chart')\\\"></ft-label> </a> </li> </ul> <div class=\\\"tab-content\\\"> <div class=\\\"tab-pane ${longExposureDataTab == 'table' ? 'active' : ''}\\\"> <table class=\\\"table table-text table-legend\\\"> <tbody> <tr repeat.for=\\\"row of longExposureData.table\\\"> <th scope=\\\"row\\\"> ${ row.name } </th> <td> <b> <span innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></span> </b> </td> </tr> </tbody> </table> </div> <div class=\\\"tab-pane ${longExposureDataTab == 'chart' ? 'active' : ''}\\\"> <ft-bar-chart if.bind=\\\"longExposureDataTab == 'chart'\\\" suffix.bind=\\\"'%'\\\" series.bind=\\\"longExposureChartData\\\" altlabel.bind=\\\"true\\\"></ft-bar-chart> </div> </div> <ft-proximal placement.bind=\\\"longExposureData.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> <div if.bind=\\\"!isPopulated && shortExposureData.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"shortExposureData | ftJson\\\" hidden> </div> <div class=\\\"col-sm-6\\\" if.bind=\\\"isPopulated && shortExposureData.visible\\\"> <div> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(shortExposureData.labelId)\\\"></span> <ft-footnote placement.bind=\\\"shortExposureData.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"shortExposureData.date | ftDashIfEmpty\\\"></span> <span if.bind=\\\"shortExposureData.calType\\\">(<span innerhtml.bind=\\\"shortExposureData.calType\\\"></span>)</span> <span if.bind=\\\"shortExposureData.calTypeStd\\\">(<span innerhtml.bind=\\\"getLabel(shortExposureData.calTypeStd)\\\"></span>)</span> <span if.bind=\\\"shortExposureData.refreshRate\\\" innerhtml.bind=\\\"getLabel(shortExposureData.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"shortExposureData.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <ul class=\\\"btn-group nav-tabs-button-group hidden-xs\\\"> <li role=\\\"presentation\\\" class=\\\"label-tab ${shortExposureDataTab == 'table' ? 'active' : ''}\\\"> <a class=\\\"btn\\\" click.delegate=\\\"shortExposureDataTab = 'table'\\\"> <ft-label label.bind=\\\"getLabel('table')\\\"></ft-label> </a> </li> <li role=\\\"presentation\\\" class=\\\"label-tab ${shortExposureDataTab == 'chart' ? 'active' : ''}\\\"> <a class=\\\"btn\\\" click.delegate=\\\"shortExposureDataTab = 'chart'\\\"> <ft-label label.bind=\\\"getLabel('chart')\\\"></ft-label> </a> </li> </ul> <div class=\\\"tab-content\\\"> <div class=\\\"tab-pane ${shortExposureDataTab == 'table' ? 'active' : ''}\\\"> <table class=\\\"table table-text table-legend\\\"> <tbody> <tr repeat.for=\\\"row of shortExposureData.table\\\"> <th scope=\\\"row\\\"> ${ row.name } </th> <td> <b> <span innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></span> </b> </td> </tr> </tbody> </table> </div> <div class=\\\"tab-pane ${shortExposureDataTab == 'chart' ? 'active' : ''}\\\"> <ft-bar-chart if.bind=\\\"shortExposureDataTab == 'chart'\\\" suffix.bind=\\\"'%'\\\" series.bind=\\\"shortExposureChartData\\\" altlabel.bind=\\\"true\\\"></ft-bar-chart> </div> </div> <ft-proximal placement.bind=\\\"shortExposureData.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/ppss/ft-find-a-fund/ft-find-a-fund.html', ['module'], function(module) { module.exports = \"<template> <form action=\\\"#\\\" class=\\\"find-a-fund--v2\\\"> <div class=\\\"find-a-fund--v2__form\\\"> <div class=\\\"find-a-fund--v2__input-container\\\"> <input type=\\\"text\\\" class=\\\"find-a-fund--v2__input\\\" value.two-way=\\\"searchString & debounce:500\\\" title.one-time=\\\"getLabel('find-a-fund-placeholder')\\\" placeholder.one-time=\\\"getLabel('find-a-fund-placeholder')\\\" focus.trigger=\\\"toggleResults(true)\\\" aria-controls=\\\"find-a-fund_results\\\"> <span class=\\\"ft-icon ft-icon-search find-a-fund--v2__utility-icon find-a-fund--v2__icon-search\\\"></span> <span role=\\\"button\\\" class=\\\"ft-icon ft-icon-cross find-a-fund--v2__utility-icon find-a-fund--v2__icon-clear\\\" if.one-way=\\\"showClear\\\" click.delegate=\\\"clearClicked()\\\"></span> </div> <button type=\\\"button\\\" class=\\\"btn btn-primary find-a-fund--v2__submit\\\" if.one-way=\\\"showGo\\\" innerhtml.one-time=\\\"getLabel('go')\\\" click.delegate=\\\"goClicked()\\\"></button> </div> <div class=\\\"find-a-fund--v2__results-container find-a-fund--v2__results-container--typing\\\" class.one-way=\\\"resultsClass\\\" if.one-way=\\\"showResults\\\"> <ul class=\\\"find-a-fund--v2__list-results\\\" id=\\\"find-a-fund_results\\\" role=\\\"region\\\" aria-live=\\\"polite\\\"> <li class=\\\"find-a-fund--v2__list-results-item\\\" repeat.for=\\\"fund of matchingFunds\\\"> <a class=\\\"fund-name find-a-fund--v2__list-results-link\\\" href.one-way=\\\"fund.link\\\" textcontent.one-way=\\\"fund.fundNameFull\\\"></a> </li> </ul> <p class=\\\"find-a-fund--v2__no-results\\\" if.one-way=\\\"showNoResultsMessage\\\"> <ft-label label.one-time=\\\"getLabel('no-results-for')\\\"></ft-label> <ft-label label.one-way=\\\"searchString\\\"></ft-label> </p> <div class=\\\"find-a-fund--v2__results-all-funds\\\" innerhtml.one-time=\\\"getLabel('find-a-fund-instructions')\\\"></div> </div> </form> </template> \"; });\r\ndefine('text!components/products/ppss/ft-find-a-fund-btn/ft-find-a-fund-btn.html', ['module'], function(module) { module.exports = \"<template> <a if.one-way=\\\"populated\\\" innerhtml.one-way=\\\"getLabel('find-a-fund-btn')\\\" click.trigger=\\\"openModal()\\\" class=\\\"btn btn-primary btn-small\\\"></a> <ft-modal-inline if.one-way=\\\"populated\\\" view-model.ref=\\\"modal\\\" title.one-time=\\\"getLabel('find-a-fund-modal-title')\\\"> <div slot=\\\"body\\\"> <ft-find-a-fund is-modal=\\\"true\\\"></ft-find-a-fund> </div> </ft-modal-inline> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-etf/ft-ppss-etf.html', ['module'], function(module) { module.exports = \"<template> <table class=\\\"table table-striped table-ppss responsive\\\"> <thead> <tr class=\\\"header-utilities\\\" hidden-print> <td class=\\\"search-area\\\" scope=\\\"colgroup\\\" colspan=\\\"5\\\">&nbsp;</td> <th scope=\\\"col\\\" class=\\\"asof-th text-center\\\" colspan.one-way=\\\"navColspan\\\"> <small> <ft-label label.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.one-way=\\\"navAsOfDate\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"asof-th text-right\\\" colspan=\\\"1\\\"> <small> <ft-label label.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.one-way=\\\"chargesAsOfDate\\\"></ft-label> </small> </th> <th scope=\\\"colgroup\\\" colspan=\\\"1\\\" class=\\\"date-range avann-th\\\">&nbsp;</th> </tr> <tr class=\\\"header-sortable\\\" data-fti-sticky-item=\\\"etf\\\"> <th scope=\\\"col\\\" class=\\\"fund\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fund-name')\\\" sort.one-way=\\\"sort.columns.get('FUND_NAME')\\\" click-callback.call=\\\"changeSort('FUND_NAME')\\\"></th> <th scope=\\\"col\\\" class=\\\"asset-class\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('assetclass')\\\" sort.one-way=\\\"sort.columns.get('ASSET_CLASS')\\\" click-callback.call=\\\"changeSort('ASSET_CLASS')\\\"></th> <th scope=\\\"col\\\" class=\\\"currency\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('currency')\\\" sort.one-way=\\\"sort.columns.get('CURRENCY')\\\" click-callback.call=\\\"changeSort('CURRENCY')\\\"></th> <th scope=\\\"col\\\" class=\\\"inception-date\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('inception-date')\\\" sort.one-way=\\\"sort.columns.get('INCEPTION_DATE')\\\" click-callback.call=\\\"changeSort('INCEPTION_DATE')\\\"></th> <th scope=\\\"col\\\" class=\\\"income-use\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('income-use')\\\" sort.one-way=\\\"sort.columns.get('INCOME_USE')\\\" click-callback.call=\\\"changeSort('INCOME_USE')\\\" footnote-placement=\\\"DistributionType\\\"></th> <th scope=\\\"col\\\" class=\\\"nav text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('nav')\\\" sort.one-way=\\\"sort.columns.get('NAV')\\\" click-callback.call=\\\"changeSort('NAV')\\\" footnote-placement=\\\"NAVFundExplorer\\\"></th> <th scope=\\\"col\\\" class=\\\"nav-change text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('nav-change')\\\" sort.one-way=\\\"sort.columns.get('NAV_CHANGE')\\\" click-callback.call=\\\"changeSort('NAV_CHANGE')\\\" footnote-placement=\\\"NavChangeFundExplorer\\\"></th> <th scope=\\\"col\\\" class=\\\"ytd-total-return-at-nav text-right\\\" if.one-time=\\\"config.showYtdTotalReturnAtNAV\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ytd-total-ret')\\\" sort.one-way=\\\"sort.columns.get('YTD_TOTAL_RETURN_AT_NAV')\\\" click-callback.call=\\\"changeSort('YTD_TOTAL_RETURN_AT_NAV')\\\" footnote-placement=\\\"YTDNAVFundExplorer\\\"></th> <th scope=\\\"col\\\" class=\\\"ter text-right\\\" if.one-time=\\\"config.showTer\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ter')\\\" sort.one-way=\\\"sort.columns.get('TER')\\\" click-callback.call=\\\"changeSort('TER')\\\" footnote-placement=\\\"TERFundExplorer\\\"></th> <th scope=\\\"col\\\" class=\\\"ongoing-charges text-right\\\" if.one-time=\\\"config.showOngoingCharges\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ongoing-charges')\\\" sort.one-way=\\\"sort.columns.get('ONGOING_CHARGES')\\\" click-callback.call=\\\"changeSort('ONGOING_CHARGES')\\\" footnote-placement=\\\"OngoingChargesFundExplorer\\\"></th> <th scope=\\\"col\\\" class=\\\"factsheet\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('factsheet')\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"fund of funds\\\"> <td class=\\\"fund-name\\\"> <p> <a if.one-way=\\\"fund.isActive\\\" class=\\\"fund-name\\\" href.one-way=\\\"fund.link\\\" innerhtml.one-way=\\\"fund.fundName\\\"></a> <span if.one-way=\\\"fund.isSoftLaunch\\\" class=\\\"fund-name\\\" innerhtml.one-way=\\\"fund.fundName\\\"></span> </p> <p> <small> <strong innerhtml.one-way=\\\"getLabel('isin')\\\"></strong> <ft-label label.one-way=\\\"fund.isin | ftDashIfEmpty\\\"></ft-label> </small> </p> <p repeat.for=\\\"fl of fund.fundAlerts\\\" class=\\\"msg msg-table msg-closure-hard\\\" textcontent.one-way=\\\"fl.alert\\\"></p> </td> <td class=\\\"asset-class\\\" innerhtml.one-way=\\\"fund.assetClass\\\"></td> <td class=\\\"currency\\\" innerhtml.one-way=\\\"fund.currency\\\"></td> <td class=\\\"inception-date\\\" innerhtml.one-way=\\\"fund.inceptionDate\\\"></td> <td class=\\\"income-use\\\" innerhtml.one-way=\\\"fund.incomeUse\\\"></td> <td class=\\\"nav text-right\\\" innerhtml.one-way=\\\"fund.nav\\\"></td> <td class=\\\"nav-change text-right\\\"> <ft-label label.one-way=\\\"fund.navChange\\\"></ft-label> <small class.one-way=\\\"navChangeClass(fund.navChangeDirection)\\\" innerhtml.one-way=\\\"fund.navChangePercent | ftFormatPercentage\\\"></small> </td> <td if.one-time=\\\"config.showYtdTotalReturnAtNAV\\\" class=\\\"ytd-total-return-at-nav text-right\\\" innerhtml.one-way=\\\"fund.ytdTotalReturnAtNav | ftFormatPercentage\\\"></td> <td if.one-time=\\\"config.showTer\\\" class=\\\"ter text-right\\\" innerhtml.one-way=\\\"fund.ter | ftFormatPercentage\\\"></td> <td if.one-time=\\\"config.showOngoingCharges\\\" class=\\\"ongoing-charges text-right\\\" innerhtml.one-way=\\\"fund.ongoingCharges | ftFormatPercentage\\\"></td> <td class=\\\"factsheet\\\"> <a if.one-way=\\\"!fund.isSoftLaunch\\\" if.one-way=\\\"fund.documentsLink\\\" href.one-way=\\\"fund.documentsLink\\\" innerhtml.one-time=\\\"getLabel('download')\\\"></a> </td> </tr> <tr if.one-way=\\\"showNoResultsMessage\\\"> <td colspan=\\\"10\\\"> <ft-label label.one-time=\\\"getLabel('noResultsMessage')\\\"></ft-label> </td> </tr> </tbody> </table> <span data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"etf\\\"></span> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-favorite/ft-ppss-favorite.html', ['module'], function(module) { module.exports = \"<template> <a if.bind=\\\"user.loggedIn\\\" href=\\\"#${instrId}\\\" data-fti-module=\\\"favorite-a-fund\\\" data-fti-component=\\\"favorite-a-fund\\\" data-favorite-instr-id.bind=\\\"instrId\\\" data-sync=\\\"true\\\"> <span class=\\\"sr-only\\\">Favorite</span> <i data-toggle=\\\"tooltip\\\" data-html=\\\"true\\\" data-placement=\\\"bottom\\\" title=\\\"<p>{{#isFav instrId.alt}}Remove from Favorites{{else}}Add to Favorites{{/isFav}}</p>\\\" data-template=\\\"<div class=\\\\'tooltip signed-in-tooltip\\\\' role=\\\\'tooltip\\\\'><div class=\\\\'tooltip-arrow\\\\'></div><div class=\\\\'tooltip-inner\\\\' ></div></div>\\\" class=\\\"icon ft-icon-favorite{{#isFav instrId.alt}}-active{{else}}{{/isFav}}\\\"></i> </a> <a if.bind=\\\"!user.loggedIn\\\" href=\\\"#${instrId}\\\" data-fti-module=\\\"favorite-a-fund\\\" data-fti-component=\\\"favorite-a-fund\\\" data-favorite-logged-off=\\\"true\\\"> <span class=\\\"sr-only\\\">Favorite</span> <i data-toggle=\\\"popover\\\" data-placement=\\\"bottom\\\" title=\\\"<button type=\\\\'button\\\\' class=\\\\'close\\\\' data-dismiss=\\\\'popover\\\\' aria-label=\\\\'Close\\\\'>Close <span aria-hidden=\\\\'true\\\\'>&times;</span></button>\\\" data-content=\\\"<p>To create a favorite list, you must <strong><a class=\\\\'popover-link\\\\' href=\\\\'{{signinUrl}}\\\\' title=\\\\'Sign in\\\\'>sign in</a></strong> or <strong><a class=\\\\'popover-link\\\\' href=\\\\'{{registrationUrl}}\\\\'>register</a></strong></p>\\\" data-html=\\\"true\\\" data-template=\\\"<div class=\\\\'popover signed-out-tooltip\\\\' role=\\\\'tooltip\\\\'><div class=\\\\'arrow\\\\'></div><h3 class=\\\\'popover-title\\\\'></h3><div class=\\\\'popover-content\\\\'></div></div>\\\" class=\\\"icon ft-icon-favorite\\\"></i> </a> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-fund-filter/ft-ppss-fund-filter.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"panel panel-default panel-results\\\" if.bind=\\\"showFilterForm\\\"> <h2 class=\\\"panel-results__title\\\" innerhtml.one-way=\\\"resultsMessage\\\">Displaying <strong>153</strong> results for \\\"income\\\"</h2> <div class=\\\"panel-body\\\"> <ft-find-a-fund show-go=\\\"true\\\" go-callback.bind=\\\"changeKeywords\\\"></ft-find-a-fund> <form action=\\\"#\\\" class=\\\"fund-filters-flex-layout\\\"> <ft-dropdown repeat.for=\\\"filter of filters.dropdowns\\\" show.bind=\\\"filter.visible\\\" filter.bind=\\\"filter\\\" selected.bind=\\\"filter.selected\\\" select-callback.bind=\\\"changeFilter\\\" label.one-time=\\\"label\\\"></ft-dropdown> </form> </div> </div> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-fund-identifiers/ft-ppss-fund-identifiers.html', ['module'], function(module) { module.exports = \"<template> <table id=\\\"table-1\\\" class=\\\"table table-striped responsive\\\"> <thead> <tr class=\\\"header-sortable\\\"> <th scope=\\\"col\\\" class=\\\"fund\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fund-name')\\\" sort.one-way=\\\"sort.columns.get('FUND_NAME')\\\" click-callback.call=\\\"changeSort('FUND_NAME')\\\"></th> <th repeat.for=\\\"fi of fundIdentifiers & oneTime\\\" scope=\\\"col\\\" class=\\\"fund-identifier\\\" sort.one-way=\\\"sort.columns.get(fi.name)\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel(fi.labelKey)\\\" click-callback.call=\\\"changeSort(fi.name)\\\"></th> </tr> </thead> <tbody repeat.for=\\\"[vehicle, funds] of fundsByVehicle\\\"> <tr class=\\\"investment-vehicle\\\"> <td class=\\\"investment-vehicle__title\\\" colspan=\\\"8\\\" textcontent.one-way=\\\"vehicle\\\"> </td> </tr> <tr repeat.for=\\\"fund of funds\\\"> <td class=\\\"fund-name\\\" as-element=\\\"ft-ppss-fund-name\\\" fund.one-way=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" tab=\\\"performance\\\"></td> <td repeat.for=\\\"fi of fundIdentifiers & oneTime\\\" scope=\\\"col\\\" class=\\\"fund-identifier\\\" innerhtml.one-way=\\\"fund[fi.dataKey] | ftDashIfEmpty\\\"></td> </tr> </tbody> <tbody if.one-way=\\\"showNoResultsMessage\\\"> <tr> <td colspan=\\\"10\\\"> <ft-label label.one-way=\\\"noResultsMessage\\\"></ft-label> </td> </tr> </tbody> </table> <span data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"fund-identifiers\\\"></span> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-fund-name/ft-ppss-fund-name.html', ['module'], function(module) { module.exports = \"<template view-cache=\\\"*\\\"> <a if.one-way=\\\"!fund.isSoftLaunch\\\" href.bind=\\\"fund.link\\\" class=\\\"fund-name\\\"> <span class=\\\"hidden-xs hidden-sm\\\" textcontent.one-way=\\\"fund.fundLegalName\\\"></span> <span class=\\\"hidden-md hidden-lg\\\" textcontent.one-way=\\\"fund.fundShortName\\\"></span> - <ft-label label.one-way=\\\"fund.shareClass\\\"></ft-label> </a> <div if.one-way=\\\"fund.isSoftLaunch\\\"> <span class=\\\"hidden-xs hidden-sm\\\" textcontent.one-way=\\\"fund.fundLegalName\\\"></span> <span class=\\\"hidden-md hidden-lg\\\" textcontent.one-way=\\\"fund.fundShortName\\\"></span> - <ft-label label.one-way=\\\"fund.shareClass\\\"></ft-label> </div> <p repeat.for=\\\"fl of fund.fundAlerts\\\" class=\\\"msg msg-table msg-closure-hard\\\" textcontent.one-way=\\\"fl.alert\\\"></p> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-performance/ft-ppss-performance.html', ['module'], function(module) { module.exports = \"<template> <table id=\\\"table-1\\\" class=\\\"table table-striped table-ppss\\\"> <thead> <tr class=\\\"header-utilities hidden-print\\\"> <th colspan=\\\"11\\\" class=\\\"\\\"> <div class=\\\"show-performance-controls\\\"> <div class=\\\"show-performance-controls__performance-type\\\"> <span class=\\\"show-performance-controls__label-inline\\\" innerhtml.one-time=\\\"getLabel('show-performance')\\\"></span> <span class=\\\"show-performance-controls__label-inline\\\" if.one-time=\\\"!showPerformanceToggle\\\" innerhtml.one-time=\\\"getLabel(performanceView.labelKey)\\\"></span> <span class=\\\"btn-group btn-data-toggle\\\" if.one-time=\\\"showPerformanceToggle\\\" data-ppss-sales-charges=\\\"toggle\\\"> <label repeat.for=\\\"opt of config.performanceViewOptions\\\" class=\\\"btn btn-on-off\\\" class.one-way=\\\"opt.name === performanceView.name ? 'active' : ''\\\"> <input type=\\\"radio\\\" name=\\\"performance-view\\\" model.bind=\\\"opt.defaultPerformanceView\\\" click.delegate=\\\"updatePerformanceView(opt.defaultPerformanceView)\\\" matcher.bind=\\\"pvNameMatcher\\\" checked.bind=\\\"performanceView\\\"> <ft-label label.one-time=\\\"getLabel(opt.labelKey)\\\"></ft-label> </label> </span> </div> <span if.one-way=\\\"showPeriodEndsToggle\\\" class=\\\"show-performance-controls__performance-range hidden-print\\\"> <select id=\\\"mth-end\\\" class=\\\"show-performance-controls__mth-end form-control\\\" aria-labelledby=\\\"mth-end\\\" value.bind=\\\"periodEnd\\\"> <option repeat.for=\\\"opt of periodEnds\\\" model.bind=\\\"opt.periodEnd\\\" textcontent.one-time=\\\"opt.label\\\"></option> </select> </span> </div> </th> </tr> <tr class=\\\"header-sortable\\\"> <th scope=\\\"col\\\" class=\\\"fund\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fund-name')\\\" sort.one-way=\\\"sort.columns.get('FUND_NAME')\\\" click-callback.call=\\\"changeSort('FUND_NAME')\\\"></th> <th scope=\\\"col\\\" class=\\\"currency\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('currency')\\\" sort.one-way=\\\"sort.columns.get('CURRENCY')\\\" click-callback.call=\\\"changeSort('CURRENCY')\\\"></th> <th scope=\\\"col\\\" class=\\\"nav text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('nav')\\\" sort.one-way=\\\"sort.columns.get('NAV')\\\" click-callback.call=\\\"changeSort('NAV')\\\" footnote-placement=\\\"NavPPSS\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('AVG_ANNUAL')\\\" show.one-way=\\\"showAvgAnnualDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('1yr')\\\" sort.one-way=\\\"sort.columns.get('AVG_ANNUAL_1YR')\\\" click-callback.call=\\\"changeSort('AVG_ANNUAL_1YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('AVG_ANNUAL')\\\" show.one-way=\\\"showAvgAnnualDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('3yr')\\\" sort.one-way=\\\"sort.columns.get('AVG_ANNUAL_3YR')\\\" click-callback.call=\\\"changeSort('AVG_ANNUAL_3YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('AVG_ANNUAL')\\\" show.one-way=\\\"showAvgAnnualDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('5yr')\\\" sort.one-way=\\\"sort.columns.get('AVG_ANNUAL_5YR')\\\" click-callback.call=\\\"changeSort('AVG_ANNUAL_5YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('AVG_ANNUAL')\\\" show.one-way=\\\"showAvgAnnualDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('10yr')\\\" sort.one-way=\\\"sort.columns.get('AVG_ANNUAL_10YR')\\\" click-callback.call=\\\"changeSort('AVG_ANNUAL_10YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('AVG_ANNUAL')\\\" show.one-way=\\\"showAvgAnnualDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('inception')\\\" sort.one-way=\\\"sort.columns.get('AVG_ANNUAL_INC')\\\" click-callback.call=\\\"changeSort('AVG_ANNUAL_INC')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('calendar-year-ytd')\\\" sort.one-way=\\\"sort.columns.get('CALENDAR_YEAR_YTD')\\\" click-callback.call=\\\"changeSort('CALENDAR_YEAR_YTD')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"calendarYearLabels['calendar-year-1yr']\\\" sort.one-way=\\\"sort.columns.get('CALENDAR_YEAR_1YR')\\\" click-callback.call=\\\"changeSort('CALENDAR_YEAR_1YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"calendarYearLabels['calendar-year-2yr']\\\" sort.one-way=\\\"sort.columns.get('CALENDAR_YEAR_2YR')\\\" click-callback.call=\\\"changeSort('CALENDAR_YEAR_2YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"calendarYearLabels['calendar-year-3yr']\\\" sort.one-way=\\\"sort.columns.get('CALENDAR_YEAR_3YR')\\\" click-callback.call=\\\"changeSort('CALENDAR_YEAR_3YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"calendarYearLabels['calendar-year-4yr']\\\" sort.one-way=\\\"sort.columns.get('CALENDAR_YEAR_4YR')\\\" click-callback.call=\\\"changeSort('CALENDAR_YEAR_4YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"calendarYearLabels['calendar-year-5yr']\\\" sort.one-way=\\\"sort.columns.get('CALENDAR_YEAR_5YR')\\\" click-callback.call=\\\"changeSort('CALENDAR_YEAR_5YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CALENDAR_YEAR')\\\" show.one-way=\\\"showCalendarYearDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('calendar-year-inception')\\\" sort.one-way=\\\"sort.columns.get('PERFORMANCE_INCEPTION_DATE')\\\" click-callback.call=\\\"changeSort('PERFORMANCE_INCEPTION_DATE')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CUMULATIVE')\\\" show.one-way=\\\"showCumulativeDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ytd')\\\" sort.one-way=\\\"sort.columns.get('CUMULATIVE_YTD')\\\" click-callback.call=\\\"changeSort('CUMULATIVE_YTD')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CUMULATIVE')\\\" show.one-way=\\\"showCumulativeDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('1yr')\\\" sort.one-way=\\\"sort.columns.get('CUMULATIVE_1YR')\\\" click-callback.call=\\\"changeSort('CUMULATIVE_1YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CUMULATIVE')\\\" show.one-way=\\\"showCumulativeDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('3yr')\\\" sort.one-way=\\\"sort.columns.get('CUMULATIVE_3YR')\\\" click-callback.call=\\\"changeSort('CUMULATIVE_3YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CUMULATIVE')\\\" show.one-way=\\\"showCumulativeDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('5yr')\\\" sort.one-way=\\\"sort.columns.get('CUMULATIVE_5YR')\\\" click-callback.call=\\\"changeSort('CUMULATIVE_5YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CUMULATIVE')\\\" show.one-way=\\\"showCumulativeDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('10yr')\\\" sort.one-way=\\\"sort.columns.get('CUMULATIVE_10YR')\\\" click-callback.call=\\\"changeSort('CUMULATIVE_10YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('CUMULATIVE')\\\" show.one-way=\\\"showCumulativeDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('inception')\\\" sort.one-way=\\\"sort.columns.get('CUMULATIVE_INC')\\\" click-callback.call=\\\"changeSort('CUMULATIVE_INC')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('DISCRETE')\\\" show.one-way=\\\"showDiscreteDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"discreteLabels['discrete-1yr']\\\" sort.one-way=\\\"sort.columns.get('DISCRETE_1YR')\\\" click-callback.call=\\\"changeSort('DISCRETE_1YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('DISCRETE')\\\" show.one-way=\\\"showDiscreteDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"discreteLabels['discrete-2yr']\\\" sort.one-way=\\\"sort.columns.get('DISCRETE_2YR')\\\" click-callback.call=\\\"changeSort('DISCRETE_2YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('DISCRETE')\\\" show.one-way=\\\"showDiscreteDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"discreteLabels['discrete-3yr']\\\" sort.one-way=\\\"sort.columns.get('DISCRETE_3YR')\\\" click-callback.call=\\\"changeSort('DISCRETE_3YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('DISCRETE')\\\" show.one-way=\\\"showDiscreteDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"discreteLabels['discrete-4yr']\\\" sort.one-way=\\\"sort.columns.get('DISCRETE_4YR')\\\" click-callback.call=\\\"changeSort('DISCRETE_4YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('DISCRETE')\\\" show.one-way=\\\"showDiscreteDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-way=\\\"discreteLabels['discrete-5yr']\\\" sort.one-way=\\\"sort.columns.get('DISCRETE_5YR')\\\" click-callback.call=\\\"changeSort('DISCRETE_5YR')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"isAvailableDataset('DISCRETE')\\\" show.one-way=\\\"showDiscreteDataset\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('discrete-inception')\\\" sort.one-way=\\\"sort.columns.get('PERFORMANCE_INCEPTION_DATE')\\\" click-callback.call=\\\"changeSort('PERFORMANCE_INCEPTION_DATE')\\\"></th> <th scope=\\\"col\\\" class=\\\"overall-rating\\\" if.one-time=\\\"config.showMorningStarColumn\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('morningstar-rating')\\\" sort.one-way=\\\"sort.columns.get('MSTAR_OVERALL')\\\" click-callback.call=\\\"changeSort('MSTAR_OVERALL')\\\" footnote-placement=\\\"RatingsPPSS\\\"></th> </tr> </thead> <tbody repeat.for=\\\"[vehicle, funds] of fundsByVehicle\\\"> <tr class=\\\"investment-vehicle\\\"> <td colspan=\\\"2\\\" class=\\\"investment-vehicle__title\\\" textcontent.one-way=\\\"vehicle\\\">Franklin Templeton Funds</td> <th colspan=\\\"1\\\" class=\\\"text-right\\\"> <small class=\\\"investment-vehicle__subtitle\\\"> <ft-label innerhtml.one-time=\\\"getLabel('nav-as-of')\\\"></ft-label> <ft-label textcontent.one-way=\\\"funds[0].navAsOfDate\\\"></ft-label> </small> </th> <th colspan=\\\"8\\\"> <ft-label innerhtml.one-way=\\\"performanceViewLabel\\\"></ft-label> <small class=\\\"investment-vehicle__subtitle\\\"> <ft-label innerhtml.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label if.one-way=\\\"performanceView.periodEnd === 'MONTHLY'\\\" textcontent.one-way=\\\"funds[0].performanceAsOfDateMonthly\\\"></ft-label> <ft-label if.one-way=\\\"performanceView.periodEnd === 'QUARTERLY'\\\" textcontent.one-way=\\\"funds[0].performanceAsOfDateQuarterly\\\"></ft-label> </small> </th> </tr> <tr repeat.for=\\\"fund of funds\\\"> <td class=\\\"fund-name\\\" as-element=\\\"ft-ppss-fund-name\\\" fund.one-way=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" tab=\\\"performance\\\"></td> <td class=\\\"currency\\\" textcontent.one-way=\\\"fund.currency\\\"></td> <td class=\\\"nav text-right\\\"> <ft-label label.one-way=\\\"fund.nav\\\"></ft-label> <small class.one-way=\\\"navChangeClass(fund.navChangeDirection)\\\" textcontent.one-way=\\\"fund.navChange\\\"></small> </td> <td class=\\\"col1 text-right\\\" textcontent.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'col1'\\\"></td> <td class=\\\"col2 text-right\\\" textcontent.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'col2'\\\"></td> <td class=\\\"col3 text-right\\\" textcontent.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'col3'\\\"></td> <td class=\\\"col4 text-right\\\" textcontent.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'col4'\\\"></td> <td show.one-way=\\\"showCol5\\\" class=\\\"col5 text-right\\\" textcontent.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'col5'\\\"></td> <td show.one-way=\\\"showCol6\\\" class=\\\"col6 text-right\\\" textcontent.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'col6'\\\"></td> <td show.one-way=\\\"showColInception\\\" class=\\\"col-inception text-right\\\" textcontent.one-way=\\\"fund.performanceInceptionDateLocal\\\"></td> <td show.one-way=\\\"showColInceptionCombined\\\" class=\\\"col-inception-combined text-right\\\"> <ft-label label.one-way=\\\"fund | ftPpssPerformanceCell:performanceView:'colInception'\\\"></ft-label> <small textcontent.one-way=\\\"fund.performanceInceptionDateLocal\\\"></small> </td> <td class=\\\"overall-rating\\\" if.one-time=\\\"config.showMorningStarColumn\\\"> <span class=\\\"sr-only\\\">${fund.mStarRatingOverall} Stars</span> <i if.one-way=\\\"fund.mStarRatingOverall\\\" repeat.for=\\\"i of fund.mStarRatingOverall\\\" class=\\\"glyphicon glyphicon-star\\\"></i> </td> </tr> </tbody> <tbody if.one-way=\\\"showNoResultsMessage\\\"> <tr> <td colspan=\\\"11\\\"> <ft-label label.one-way=\\\"noResultsMessage\\\"></ft-label> </td> </tr> </tbody> </table> <span data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"performance\\\"></span> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss/ft-ppss.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated\\\"> <div class=\\\"ft-spinner-block\\\"> <span class=\\\"sr-only\\\" innerhtml.one-time=\\\"getLabel('loading-data')\\\"></span> <div class=\\\"ft-spinner-bg\\\"> <div class=\\\"ft-spinner-circle\\\"> </div> </div> </div> </div> <div if.bind=\\\"isPopulated\\\" class=\\\"ppss\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <ft-ppss-fund-filter filters.bind=\\\"filters\\\" search-string.one-way=\\\"filters.keywords.searchString\\\" num-results.one-way=\\\"funds.length\\\" label.one-time=\\\"label\\\"></ft-ppss-fund-filter> <ft-ppss-tab-header config.one-time=\\\"config\\\" label.one-time=\\\"label\\\" current-table.bind=\\\"currentTable\\\" show-sales-charge-toggle.bind=\\\"config.showSalesChargeToggle\\\" include-sales-charges.bind=\\\"display.includeSalesCharges\\\"></ft-ppss-tab-header> <div class=\\\"tab-content\\\"> <div if.one-time=\\\"config.showPerformanceTab\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" class.bind=\\\"getPerformanceClass\\\" id=\\\"performance\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <ft-ppss-performance funds.bind=\\\"funds\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" filters.bind=\\\"filters\\\" sort.bind=\\\"sort\\\" show-performance-toggle.bind=\\\"config.showPerformanceToggle\\\" performance-view.bind=\\\"performanceView\\\" calendar-year-labels.bind=\\\"calendarYearLabels\\\" discrete-labels.bind=\\\"discreteLabels\\\"></ft-ppss-performance> </div> </div> <div if.one-time=\\\"config.showFundIdentifiersTab\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" class.bind=\\\"getFundIdentifiersClass\\\" id=\\\"fund-identifiers\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <ft-ppss-fund-identifiers funds.bind=\\\"funds\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" fund-identifiers.one-time=\\\"config.fundIdentifiers\\\" filters.bind=\\\"filters\\\" sort.bind=\\\"sort\\\"></ft-ppss-fund-identifiers> </div> </div> <div if.one-time=\\\"config.showEtfTab\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" class.bind=\\\"getEtfClass\\\" id=\\\"etf-table\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <ft-ppss-etf funds.bind=\\\"funds\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" sort.bind=\\\"sort\\\" nav-as-of-date.one-time=\\\"navAsOfDate\\\" charges-as-of-date.one-time=\\\"chargesAsOfDate\\\"></ft-ppss-etf> </div> </div> <div if.one-time=\\\"config.showYieldTab\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" class.bind=\\\"getYieldClass\\\" id=\\\"yield-and-price\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <ft-ppss-yield funds.bind=\\\"funds\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" filters.bind=\\\"filters\\\" sort.bind=\\\"sort\\\" user.bind=\\\"user\\\" dist-rate-nav-as-of-date.one-time=\\\"distRateNavAsOfDate\\\" standard-yield-as-of-date.one-time=\\\"standardYieldAsOfDate\\\" standard-yield-as-of-date-money-fund.one-time=\\\"standardYieldAsOfDateMoneyFund\\\" include-sales-charges.bind=\\\"display.includeSalesCharges\\\"></ft-ppss-yield> </div> </div> <div if.one-time=\\\"config.showRatingsTab\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" class.bind=\\\"getRatingsClass\\\" id=\\\"ratings\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <ft-ppss-ratings funds.bind=\\\"funds\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" filters.bind=\\\"filters\\\" sort.bind=\\\"sort\\\" user.bind=\\\"user\\\" morningstar-as-of-date.one-time=\\\"morningstarAsOfDate\\\" fund-category-as-of-date.one-time=\\\"fundCategoryAsOfDate\\\"></ft-ppss-ratings> </div> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-ratings/ft-ppss-ratings-row.html', ['module'], function(module) { module.exports = \"<template view-cache=\\\"*\\\" bindable=\\\"fund, label, config\\\"> <td class=\\\"checkbox-select hidden-print\\\"> <input type=\\\"checkbox\\\" value.bind=\\\"fund.fundId\\\" class=\\\"fund-${fund.fundId}\\\"> </td> <td class=\\\"fund-symbol\\\"><span class=\\\"symbol\\\" innerhtml.bind=\\\"fund.symbol\\\"></span></td> <td class=\\\"fund-name\\\" as-element=\\\"ft-ppss-fund-name\\\" fund.bind=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" tab=\\\"ratings\\\"></td> <td if.one-time=\\\"config.showFavorites\\\" class=\\\"favorites hidden-print\\\" as-element=\\\"ft-ppss-favorite\\\" fund.bind=\\\"fund\\\" user.bind=\\\"user\\\"></td> <td if.bind=\\\"fund.noRating\\\" class=\\\"morningstar-category\\\" colspan=\\\"8\\\" innerhtml.one-time=\\\"getLabel('morningstar.not-rated')\\\"></td> <td if.bind=\\\"fund.minRatingTooLow\\\" class=\\\"morningstar-category\\\" colspan=\\\"8\\\" innerhtml.one-time=\\\"getLabel('morningstar.rating-too-low')\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"morningstar-category\\\" innerhtml.bind=\\\"fund.mStarCategory\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"overall-rating\\\"> <span class=\\\"sr-only\\\">${fund.mStarRatingOverall} Stars</span> <i if.bind=\\\"fund.mStarRatingOverall\\\" repeat.for=\\\"i of fund.mStarRatingOverall\\\" class=\\\"glyphicon glyphicon-star\\\"></i> </td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"morning-star-3-yr\\\" innerhtml.bind=\\\"fund.mStarRating3Yr\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"morning-star-5-yr\\\" innerhtml.bind=\\\"fund.mStarRating5Yr\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"morning-star-10-yr\\\" innerhtml.bind=\\\"fund.mStarRating10Yr\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"funds-in-category-3-yr\\\" innerhtml.bind=\\\"fund.rating3YearsUniv\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"funds-in-category-5-yr\\\" innerhtml.bind=\\\"fund.rating5YearsUniv\\\"></td> <td if.bind=\\\"fund.showRatingInfo\\\" class=\\\"funds-in-category-10-yr\\\" innerhtml.bind=\\\"fund.rating10YearsUniv\\\"></td> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-ratings/ft-ppss-ratings.html', ['module'], function(module) { module.exports = \"<template> <table class=\\\"table table-striped responsive\\\"> <thead> <tr class=\\\"header-utilities\\\"> <th class=\\\"search-area hidden-print\\\" scope=\\\"colgroup\\\" colspan.one-time=\\\"searchAreaColspan\\\"> <span class=\\\"num-results\\\"> <ft-label label.bind=\\\"resultsNumberMessage\\\"></ft-label> <small>(<ft-label label.bind=\\\"shareClassDisplayed\\\"></ft-label>)</small> </span> <span if.one-time=\\\"filters.keywords\\\" class=\\\"pull-right search-box hidden-print\\\"> <ft-ppss-search-box label.one-time=\\\"label\\\" search-string.bind=\\\"filters.keywords.searchString\\\"></ft-ppss-search-box> </span> </th> <th class=\\\"search-area visible-print\\\" scope=\\\"colgroup\\\" colspan=\\\"2\\\"> <span class=\\\"num-results\\\"> <ft-label label.bind=\\\"resultsNumberMessage\\\"></ft-label> <small>(<ft-label label.bind=\\\"shareClassDisplayed\\\"></ft-label>)</small> </span> <span if.one-time=\\\"filters.keywords\\\" class=\\\"pull-right search-box hidden-print\\\"> <ft-ppss-search-box label.one-time=\\\"label\\\" search-string.bind=\\\"filters.keywords.searchString\\\"></ft-ppss-search-box> </span> </th> <th></th> <th scope=\\\"colgroup\\\" colspan=\\\"4\\\"> <ft-label label.one-time=\\\"getLabel('morningstar-rating')\\\"></ft-label> <small> <ft-label label.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"morningstarAsOfDate\\\"></ft-label> </small> </th> <th scope=\\\"colgroup\\\" colspan=\\\"3\\\"> <ft-label label.one-time=\\\"getLabel('nb-funds-in-category')\\\"></ft-label> <small> <ft-label label.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"fundCategoryAsOfDate\\\"></ft-label> </small> <span data-fti-module=\\\"sticky-header\\\" data-max-viewport=\\\"md\\\" data-fti-sticky-for=\\\"ratings\\\" data-fti-sticky-trigger=\\\"start\\\"></span> </th> </tr> <tr class=\\\"header-sortable\\\" data-fti-sticky-item=\\\"ratings\\\"> <th scope=\\\"col\\\" class=\\\"checkbox-select hidden-print\\\"> <input type=\\\"checkbox\\\" value=\\\"select-all\\\" id=\\\"select-all\\\" data-ppss-favorite=\\\"select-all\\\"> </th> <th scope=\\\"col\\\" class=\\\"fund-symbol\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('symbol')\\\"></th> <th scope=\\\"col\\\" class=\\\"fund\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fund-name')\\\" sort.bind=\\\"sort.columns.get('FUND_NAME')\\\" click-callback.call=\\\"changeSort('FUND_NAME')\\\"></th> <th scope=\\\"col\\\" class=\\\"fund-fav hidden-print\\\" if.one-time=\\\"config.showFavorites\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fav')\\\"></th> <th scope=\\\"col\\\" class=\\\"morningstar-category\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('morningstar-category')\\\" sort.bind=\\\"sort.columns.get('MSTAR_CATEGORY')\\\" click-callback.call=\\\"changeSort('MSTAR_CATEGORY')\\\"></th> <th scope=\\\"col\\\" class=\\\"overall-rating\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('overall')\\\" sort.bind=\\\"sort.columns.get('MSTAR_OVERALL')\\\" click-callback.call=\\\"changeSort('MSTAR_OVERALL')\\\"></th> <th scope=\\\"col\\\" class=\\\"morning-star-3-yr\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('3yr')\\\" sort.bind=\\\"sort.columns.get('MSTAR_RATING_3_YEAR')\\\" click-callback.call=\\\"changeSort('MSTAR_RATING_3_YEAR')\\\"></th> <th scope=\\\"col\\\" class=\\\"morning-star-5-yr\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('5yr')\\\" sort.bind=\\\"sort.columns.get('MSTAR_RATING_5_YEAR')\\\" click-callback.call=\\\"changeSort('MSTAR_RATING_5_YEAR')\\\"></th> <th scope=\\\"col\\\" class=\\\"morning-star-10-yr\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('10yr')\\\" sort.bind=\\\"sort.columns.get('MSTAR_RATING_10_YEAR')\\\" click-callback.call=\\\"changeSort('MSTAR_RATING_10_YEAR')\\\"></th> <th scope=\\\"col\\\" class=\\\"funds-in-category-3-yr\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('3yr')\\\" sort.bind=\\\"sort.columns.get('RATING_3_YEAR_UNIV')\\\" click-callback.call=\\\"changeSort('RATING_3_YEAR_UNIV')\\\"></th> <th scope=\\\"col\\\" class=\\\"funds-in-category-5-yr\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('5yr')\\\" sort.bind=\\\"sort.columns.get('RATING_5_YEAR_UNIV')\\\" click-callback.call=\\\"changeSort('RATING_5_YEAR_UNIV')\\\"></th> <th scope=\\\"col\\\" class=\\\"funds-in-category-10-yr\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('10yr')\\\" sort.bind=\\\"sort.columns.get('RATING_10_YEAR_UNIV')\\\" click-callback.call=\\\"changeSort('RATING_10_YEAR_UNIV')\\\"></th> </tr> <tr as-element=\\\"ft-ppss-table-toolbar\\\" label.one-time=\\\"label\\\" user.bind=\\\"user\\\" class=\\\"table-toolbar hidden\\\" data-ppss-favorite=\\\"tool-bar\\\" data-fti-sticky-item=\\\"ratings\\\"></tr> </thead> <tbody data-fti-template=\\\"/assets/templates/html/components/products/price-and-performance/ratings-template.html\\\"> <tr repeat.for=\\\"fund of otherFunds\\\" as-element=\\\"ft-ppss-ratings-row\\\" fund.bind=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\"> </tr> <tr if.bind=\\\"showMoneyFundheader\\\"> <th class=\\\"nested-header money-funds\\\" colspan.one-time=\\\"moneyFundHeaderColspan\\\" scope=\\\"colgroup\\\" data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"ratings\\\" innerhtml.one-time=\\\"getLabel('money-funds')\\\"></th> </tr> <tr if.bind=\\\"showMoneyFundheader\\\" class=\\\"header-utilities\\\"> <th class=\\\"search-area\\\" scope=\\\"colgroup\\\" colspan.one-time=\\\"searchAreaColspan\\\"></th> <th class=\\\"hidden-print\\\"></th> <th scope=\\\"colgroup\\\" colspan=\\\"4\\\"> <ft-label label.one-time=\\\"getLabel('morningstar-rating')\\\"></ft-label> <small> <ft-label label.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"morningstarAsOfDate\\\"></ft-label> </small> </th> <th scope=\\\"colgroup\\\" colspan=\\\"3\\\"> <ft-label label.one-time=\\\"getLabel('nb-funds-in-category')\\\"></ft-label> <small> <ft-label label.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"fundCategoryAsOfDate\\\"></ft-label> </small> </th> </tr> <tr if.bind=\\\"showMoneyFundheader\\\" class=\\\"header-sortable\\\"> <th scope=\\\"col\\\" class=\\\"checkbox-select hidden-print\\\"></th> <th scope=\\\"col\\\" class=\\\"fund-symbol\\\" innerhtml.one-time=\\\"getLabel('symbol')\\\"></th> <th scope=\\\"col\\\" class=\\\"fund\\\" innerhtml.one-time=\\\"getLabel('fund-name')\\\"></th> <th if.one-time=\\\"config.showFavorites\\\" scope=\\\"col\\\" class=\\\"fund-fav hidden-print\\\" innerhtml.one-time=\\\"getLabel('fav')\\\"></th> <th scope=\\\"col\\\" class=\\\"ytd-total-rtn-at-nav text-right\\\" innerhtml.one-time=\\\"getLabel('morningstar-category')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-1-yr text-right\\\" innerhtml.one-time=\\\"getLabel('overall')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-3-yr text-right\\\" innerhtml.one-time=\\\"getLabel('3yr')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-5-yr text-right\\\" innerhtml.one-time=\\\"getLabel('5yr')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-10-yr text-right\\\" innerhtml.one-time=\\\"getLabel('10yr')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-3-yr text-right\\\" innerhtml.one-time=\\\"getLabel('3yr')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-5-yr text-right\\\" innerhtml.one-time=\\\"getLabel('5yr')\\\"></th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-10-yr text-right\\\" innerhtml.one-time=\\\"getLabel('10yr')\\\"></th> </tr> <tr repeat.for=\\\"fund of moneyFunds\\\" as-element=\\\"ft-ppss-ratings-row\\\" fund.bind=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\"> </tr> <tr if.bind=\\\"showNoResultsMessage\\\"> <td colspan=\\\"10\\\"> <ft-label label.bind=\\\"noResultsMessage\\\"></ft-label> </td> </tr> </tbody> </table> <span data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"ratings\\\"></span> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-search-box/ft-ppss-search-box.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"input-group search-box hidden-print\\\"> <input type=\\\"text\\\" class=\\\"form-control filter-inbox\\\" placeholder.one-time=\\\"getLabel('search-fields') | ftNormalizeSpace\\\" title.one-time=\\\"getLabel('search-fields') | ftNormalizeSpace\\\" value.bind=\\\"searchString & debounce:500\\\"> <span class=\\\"ft-icon ft-icon-search\\\"></span> </div> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-tab-header/ft-ppss-tab-header.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"tab-header\\\"> <div class=\\\"sort-controls\\\"> <div if.one-time=\\\"config.showSalesChargeToggle\\\" class=\\\"sort-control control-sales-charge\\\"> <p> <ft-label label.one-time=\\\"getLabel('salescharges')\\\"></ft-label> <span class=\\\"btn-group\\\" data-ppss-sales-charges=\\\"toggle\\\"> <label class=\\\"btn btn-on-off\\\" class.bind=\\\"includeSalesCharges ? 'active' : ''\\\"> <input type=\\\"radio\\\" name=\\\"sales-charges\\\" id=\\\"sales-charges-on\\\" model.bind=\\\"true\\\" checked.bind=\\\"includeSalesCharges\\\"> <ft-label label.one-time=\\\"getLabel('on')\\\"></ft-label> </label> <label class=\\\"btn btn-on-off\\\" class.bind=\\\"includeSalesCharges ? '' : 'active'\\\"> <input type=\\\"radio\\\" name=\\\"sales-charges\\\" id=\\\"sales-charges-off\\\" model.bind=\\\"false\\\" checked.bind=\\\"includeSalesCharges\\\"> <ft-label label.one-time=\\\"getLabel('off')\\\"></ft-label> </label> </span> </p> </div> </div> <ul if.one-time=\\\"showTabs\\\" class=\\\"nav nav-tabs nav-tabs-ppss\\\" data-fti-module=\\\"tab-history-location\\\"> <li if.one-time=\\\"config.showPerformanceTab\\\" role=\\\"presentation\\\" class.bind=\\\"getPerformanceClass\\\"> <a href=\\\"#performance\\\" click.delegate=\\\"changeTab('PERFORMANCE')\\\" aria-controls=\\\"performance\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" innerhtml.one-time=\\\"getLabel('performance-tab')\\\"></a> </li> <li if.one-time=\\\"config.showFundIdentifiersTab\\\" role=\\\"presentation\\\" class.bind=\\\"getFundIdentifiersClass\\\"> <a href=\\\"#fund-identifiers\\\" click.delegate=\\\"changeTab('FUND_IDENTIFIERS')\\\" aria-controls=\\\"fund-identifiers\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" innerhtml.one-time=\\\"getLabel('fund-identifiers')\\\"></a> </li> <li if.one-time=\\\"config.showEtfTab\\\" role=\\\"presentation\\\" class.bind=\\\"getEtfClass\\\"> <a href=\\\"#etf-table\\\" click.delegate=\\\"changeTab('ETF')\\\" aria-controls=\\\"etf-table\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" innerhtml.one-time=\\\"getLabel('etf')\\\"></a> </li> <li if.one-time=\\\"config.showYieldTab\\\" role=\\\"presentation\\\" class.bind=\\\"getYieldClass\\\"> <a href=\\\"#yield-and-price\\\" click.delegate=\\\"changeTab('YIELD')\\\" aria-controls=\\\"yield-and-price\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" innerhtml.one-time=\\\"getLabel('yield-tab')\\\"></a> </li> <li if.one-time=\\\"config.showRatingsTab\\\" role=\\\"presentation\\\" class.bind=\\\"getRatingsClass\\\"> <a href=\\\"#ratings\\\" click.delegate=\\\"changeTab('RATINGS')\\\" aria-controls=\\\"ratings\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" innerhtml.one-time=\\\"getLabel('ratings-tab')\\\"></a> </li> </ul> </div> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-table-toolbar/ft-ppss-table-toolbar.html', ['module'], function(module) { module.exports = \"<template> <td class=\\\"hidden-print\\\"></td> <td colspan=\\\"11\\\" aria-live=\\\"polite\\\"> <span class=\\\"badge\\\">0<span class=\\\"sr-only\\\"><ft-label label.one-time=\\\"getLabel('funds-selected')\\\"></ft-label></span></span> <ul class=\\\"list-inline links\\\"> <li if.bind=\\\"showCompare\\\"> <a href=\\\"#\\\" data-ppss-favorite=\\\"compare\\\" innerhtml.one-time=\\\"getLabel('compare-selected-funds')\\\"></a> </li> <li if.bind=\\\"showAddFavourite\\\"> <a href=\\\"#\\\" data-ppss-favorite=\\\"add-selected\\\"> <i class=\\\"ft-icon ft-icon-favourite\\\"></i> <span data-view=\\\"remove-or-add\\\" innerhtml.one-time=\\\"getLabel('add-to-favourite.add')\\\"></span> </a> </li> <li> <a href=\\\"#\\\" data-ppss-favorite=\\\"add-fact-sheet\\\" innerhtml.one-time=\\\"getLabel('add-to-factsheet-to-cart')\\\"></a> </li> </ul> </td> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-yield/ft-ppss-yield-row.html', ['module'], function(module) { module.exports = \"<template view-cache=\\\"*\\\"> <td class=\\\"checkbox-select hidden-print\\\"> <input type=\\\"checkbox\\\" value.bind=\\\"fund.fundId\\\" class=\\\"fund-${fund.fundId}\\\"> </td> <td class=\\\"fund-symbol\\\"><span class=\\\"symbol\\\" innerhtml.bind=\\\"fund.symbol\\\"></span></td> <td class=\\\"fund-name\\\" as-element=\\\"ft-ppss-fund-name\\\" fund.bind=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" tab=\\\"yield\\\"></td> <td if.one-time=\\\"config.showFavorites\\\" class=\\\"favorites hidden-print\\\" as-element=\\\"ft-ppss-favorite\\\" fund.bind=\\\"fund\\\" user.bind=\\\"user\\\"></td> <td if.bind=\\\"!fund.isMoneyFund\\\" class=\\\"distribution-rate-at-nav text-right\\\" innerhtml.bind=\\\"distributionRate | ftFormatPercentage\\\"></td> <td if.bind=\\\"!fund.isMoneyFund && !showSecYieldWoWvr\\\" class=\\\"standardized-yield-30-day text-right\\\" innerhtml.bind=\\\"standardizedYield30Day | ftFormatPercentage\\\"></td> <td if.bind=\\\"!fund.isMoneyFund && showSecYieldWoWvr\\\" class=\\\"standardized-yield-30-day text-right\\\"> <small innerhtml.one-time=\\\"getLabel('yield.w-waiver')\\\"></small> <ft-label label.bind=\\\"fund.secYield | ftFormatPercentage\\\"></ft-label> <br> <small innerhtml.one-time=\\\"getLabel('yield.wo-waiver')\\\"></small> <ft-label label.bind=\\\"fund.secYieldWoWvr | ftFormatPercentage\\\"></ft-label> </td> <td if.bind=\\\"fund.isMoneyFund && !showCurrent7DayYieldWoWvr\\\" class=\\\"distribution-rate-at-nav text-right\\\" innerhtml.bind=\\\"current7DayYield | ftFormatPercentage\\\"></td> <td if.bind=\\\"fund.isMoneyFund && showCurrent7DayYieldWoWvr\\\" class=\\\"distribution-rate-at-nav text-right\\\"> <small innerhtml.one-time=\\\"getLabel('yield.w-waiver')\\\"></small> <ft-label label.bind=\\\"fund.current7DayYield | ftFormatPercentage\\\"></ft-label> <br> <small innerhtml.one-time=\\\"getLabel('yield.wo-waiver')\\\"></small> <ft-label label.bind=\\\"fund.current7DayYieldWoWvr | ftFormatPercentage\\\"></ft-label> </td> <td if.bind=\\\"fund.isMoneyFund && !showEffective7DayYieldWoWvr\\\" class=\\\"standardized-yield-30-day text-right\\\" innerhtml.bind=\\\"effective7DayYield | ftFormatPercentage\\\"></td> <td if.bind=\\\"fund.isMoneyFund && showEffective7DayYieldWoWvr\\\" class=\\\"standardized-yield-30-day text-right\\\"> <small innerhtml.one-time=\\\"getLabel('yield.w-waiver')\\\"></small> <ft-label label.bind=\\\"fund.effective7DayYield | ftFormatPercentage\\\"></ft-label> <br> <small innerhtml.one-time=\\\"getLabel('yield.wo-waiver')\\\"></small> <ft-label label.bind=\\\"fund.effective7DayYieldWoWvr | ftFormatPercentage\\\"></ft-label> </td> </template> \"; });\r\ndefine('text!components/products/ppss/ft-ppss-yield/ft-ppss-yield.html', ['module'], function(module) { module.exports = \"<template> <table class=\\\"table table-striped responsive\\\"> <thead> <tr class=\\\"header-utilities\\\"> <th class=\\\"search-area hidden-print\\\" scope=\\\"colgroup\\\" colspan.one-time=\\\"searchAreaColspan\\\"> <span class=\\\"num-results\\\"> <ft-label label.bind=\\\"resultsNumberMessage\\\"></ft-label> <small>(<ft-label label.bind=\\\"shareClassDisplayed\\\"></ft-label>)</small> </span> <span if.one-time=\\\"filters.keywords\\\" class=\\\"pull-right search-box hidden-print\\\"> <ft-ppss-search-box label.one-time=\\\"label\\\" search-string.bind=\\\"filters.keywords.searchString\\\"></ft-ppss-search-box> </span> </th> <th class=\\\"search-area visible-print\\\" scope=\\\"colgroup\\\" colspan=\\\"2\\\"> <span class=\\\"num-results\\\"> <ft-label label.bind=\\\"resultsNumberMessage\\\"></ft-label> <small>(<ft-label label.bind=\\\"shareClassDisplayed\\\"></ft-label>)</small> </span> <span if.one-time=\\\"filters.keywords\\\" class=\\\"pull-right search-box hidden-print\\\"> <ft-ppss-search-box label.one-time=\\\"label\\\" search-string.bind=\\\"filters.keywords.searchString\\\"></ft-ppss-search-box> </span> </th> <th scope=\\\"col\\\"> <small> <ft-label label.bind=\\\"distRateNavAsOfDate\\\"></ft-label> </small> </th> <th scope=\\\"col\\\"> <small> <ft-label if.bind=\\\"!hasOnlyMoneyFunds\\\" label.bind=\\\"standardYieldAsOfDate\\\"></ft-label> <ft-label if.bind=\\\"hasOnlyMoneyFunds\\\" label.bind=\\\"standardYieldAsOfDateMoneyFund\\\"></ft-label> </small> <span data-fti-module=\\\"sticky-header\\\" data-max-viewport=\\\"md\\\" data-fti-sticky-for=\\\"yield\\\" data-fti-sticky-trigger=\\\"start\\\"></span> </th> </tr> <tr class=\\\"header-sortable\\\" data-fti-sticky-item=\\\"yield\\\"> <th scope=\\\"col\\\" class=\\\"checkbox-select hidden-print\\\"> <input type=\\\"checkbox\\\" value=\\\"select-all\\\" id=\\\"select-all\\\" data-ppss-favorite=\\\"select-all\\\"> </th> <th scope=\\\"col\\\" class=\\\"fund-symbol\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('symbol')\\\"></th> <th scope=\\\"col\\\" class=\\\"fund\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fund-name')\\\" sort.bind=\\\"sort.columns.get('FUND_NAME')\\\" click-callback.call=\\\"changeSort('FUND_NAME')\\\"></th> <th scope=\\\"col\\\" class=\\\"fund-fav hidden-print\\\" if.one-time=\\\"config.showFavorites\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fav')\\\"></th> <th scope=\\\"col\\\" class=\\\"distribution-rate-at-nav text-right\\\" as-element=\\\"ft-th-sortable\\\" title.bind=\\\"distributionRateColumnTitle\\\" sort.bind=\\\"sort.columns.get('DISTRIBUTION_RATE')\\\" click-callback.call=\\\"changeSort('DISTRIBUTION_RATE')\\\"></th> <th scope=\\\"col\\\" class=\\\"standardized-yield-30-day text-right\\\" as-element=\\\"ft-th-sortable\\\" title.bind=\\\"secYieldColumnTitle\\\" sort.bind=\\\"sort.columns.get('SEC_YIELD')\\\" click-callback.call=\\\"changeSort('SEC_YIELD')\\\"></th> </tr> <tr as-element=\\\"ft-ppss-table-toolbar\\\" label.one-time=\\\"label\\\" user.bind=\\\"user\\\" class=\\\"table-toolbar hidden\\\" data-ppss-favorite=\\\"tool-bar\\\" data-fti-sticky-item=\\\"yield\\\"></tr> </thead> <tbody> <tr repeat.for=\\\"fund of otherFunds\\\" as-element=\\\"ft-ppss-yield-row\\\" fund.bind=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\" include-sales-charges.bind=\\\"includeSalesCharges\\\"> </tr> <tr if.bind=\\\"showMoneyFundheader\\\"> <th class=\\\"nested-header money-funds\\\" colspan.one-time=\\\"moneyFundHeaderColspan\\\" scope=\\\"colgroup\\\" data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"yield\\\" innerhtml.one-time=\\\"getLabel('money-funds')\\\"></th> </tr> <tr if.bind=\\\"showMoneyFundheader\\\" class=\\\"header-utilities\\\"> <th class=\\\"search-area\\\" scope=\\\"colgroup\\\" colspan.one-time=\\\"searchAreaColspan\\\"></th> <th scope=\\\"col\\\"> <small> <ft-label label.bind=\\\"distRateNavAsOfDate\\\"></ft-label> </small> </th> <th scope=\\\"col\\\"> <small> <ft-label label.bind=\\\"standardYieldAsOfDateMoneyFund\\\"></ft-label> </small> </th> </tr> <tr if.bind=\\\"showMoneyFundheader\\\" class=\\\"header-sortable\\\"> <th scope=\\\"col\\\" class=\\\"checkbox-select hidden-print\\\"></th> <th scope=\\\"col\\\" class=\\\"fund-symbol\\\" innerhtml.one-time=\\\"getLabel('symbol')\\\"></th> <th scope=\\\"col\\\" class=\\\"fund\\\" innerhtml.one-time=\\\"getLabel('fund-name')\\\"></th> <th if.one-time=\\\"config.showFavorites\\\" scope=\\\"col\\\" class=\\\"fund-fav hidden-print\\\" innerhtml.one-time=\\\"getLabel('fav')\\\"></th> <th scope=\\\"col\\\" class=\\\"distribution-rate-at-nav\\\"> <ft-label label.one-time=\\\"getLabel('7-day-current-yield')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"avg-total-rtn-at-nav-1-yr text-right\\\"> <ft-label label.one-time=\\\"getLabel('7-day-effective-yield')\\\"></ft-label> </th> </tr> <tr repeat.for=\\\"fund of moneyFunds\\\" as-element=\\\"ft-ppss-yield-row\\\" fund.bind=\\\"fund\\\" label.one-time=\\\"label\\\" config.one-time=\\\"config\\\"> </tr> <tr if.bind=\\\"showNoResultsMessage\\\"> <td colspan=\\\"10\\\"> <ft-label label.bind=\\\"noResultsMessage\\\"></ft-label> </td> </tr> </tbody> </table> <span data-fti-sticky-trigger=\\\"stop\\\" data-fti-sticky-for=\\\"yield\\\"></span> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-dividends/ft-dividends.html', ['module'], function(module) { module.exports = \"<template> <h2 class=\\\"header-product\\\" innerhtml.one-time=\\\"getLabel('dividends')\\\"></h2> <ft-proximal placement=\\\"DividendsProximal\\\" position=\\\"top\\\"></ft-proximal> <h3 class=\\\"header-product\\\"> <ft-label innerhtml.one-time=\\\"getLabel('dividends-per-share')\\\"></ft-label> <ft-footnote placement=\\\"DividendsPriceDistribution\\\"></ft-footnote> <small if.bind=\\\"shareClass.dividend.asOfDate\\\"> <ft-label innerhtml.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label innerhtml.one-way=\\\"shareClass.dividend.asOfDate\\\"></ft-label> </small> </h3> <div if.bind=\\\"!shareClass.dividend\\\"> <span class=\\\"no-data-message\\\" innerhtml.one-time=\\\"getLabel('no-distributions-paid-to-date')\\\"></span> </div> <div class=\\\"table-responsive\\\" if.bind=\\\"shareClass.dividend\\\"> <table class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr> <th scope=\\\"col\\\" class=\\\"th--bold\\\" if.one-way=\\\"showShareClassColumn\\\" innerhtml.one-time=\\\"getLabel('share-class')\\\"></th> <th scope=\\\"col\\\" class=\\\"th--bold\\\" innerhtml.one-time=\\\"getLabel('currency')\\\"></th> <th scope=\\\"col\\\" class=\\\"th--bold text-right\\\" innerhtml.one-time=\\\"getLabel('record-date')\\\"></th> <th scope=\\\"col\\\" class=\\\"th--bold text-right\\\" innerhtml.one-time=\\\"getLabel('ex-dividend-date')\\\"></th> <th scope=\\\"col\\\" class=\\\"th--bold text-right\\\" innerhtml.one-time=\\\"getLabel('distribution-date')\\\"></th> <th scope=\\\"col\\\" class=\\\"th--bold text-right\\\" innerhtml.one-time=\\\"getLabel('dividends-per-share')\\\"></th> </tr> </thead> <tbody> <tr> <td if.one-way=\\\"showShareClassColumn\\\" innerhtml.one-way=\\\"shareClass.className | ftDashIfEmpty\\\"></td> <td innerhtml.one-way=\\\"shareClass.currency | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-way=\\\"shareClass.dividend.recordDate | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-way=\\\"shareClass.dividend.exDividendDate | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-way=\\\"shareClass.dividend.distributionDate | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-way=\\\"shareClass.dividend.dividendsPerShare\\\"></td> </tr> </tbody> </table> </div> <ft-proximal placement=\\\"DividendsProximal\\\" position=\\\"bottom\\\"></ft-proximal> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-dividends-historical/ft-dividends-historical.html', ['module'], function(module) { module.exports = \"<template> <section class=\\\"fund-content--collapse has-nested-panel\\\" if.bind=\\\"isPopulated\\\"> <h2 class=\\\"header-product\\\"> <a role=\\\"button\\\" class=\\\"${accordionOpen ? 'collapsed' : ''}\\\" aria-expanded=\\\"${accordionOpen ? 'true' : 'false'}\\\" href=\\\"javascript:void(0)\\\" aria-controls=\\\"${uniqueId}\\\" click.delegate=\\\"toggleAccordion()\\\"> <i class=\\\"ft-icon ft-icon-right-carrot ft-icon-rotate-90\\\"></i> <ft-label innerhtml.one-time=\\\"getLabel('view-historical-dividends-data')\\\"></ft-label> </a> </h2> <div id=\\\"${uniqueId}\\\" class=\\\"${accordionOpen ? '' : 'collapse'}\\\"> <div if.bind=\\\"accordionOpen\\\"> <h3 class=\\\"header-product\\\"> <ft-label innerhtml.one-time=\\\"getLabel('historical-data-distribution-rate-share')\\\"></ft-label> </h3> <label> <ft-label innerhtml.one-time=\\\"getLabel('select-a-year')\\\"></ft-label> <select class=\\\"form-control select-inline\\\" value.bind=\\\"selectedYear\\\"> <option repeat.for=\\\"year of shareClass.dividendYears\\\" value.bind=\\\"year\\\">${year}</option> <option value=\\\"sinceInception\\\">${getLabel('since-inception')}</option> </select> </label> <div class=\\\"panel\\\"> <div class=\\\"panel-body panel-body--nested\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-6\\\"> <ul class=\\\"list-unstyled margin-bottom-xs-15\\\"> <li> <ft-label innerhtml.one-time=\\\"getLabel('historical-dividend-results')\\\"></ft-label> <ft-label innerhtml.one-time=\\\"getLabel('from')\\\"></ft-label> <strong innerhtml.bind=\\\"historicalStartDate | ftDashIfEmpty\\\"></strong> <ft-label innerhtml.one-time=\\\"getLabel('to')\\\"></ft-label> <strong innerhtml.bind=\\\"historicalEndDate | ftDashIfEmpty\\\"></strong> </li> </ul> </div> <div class=\\\"col-md-6 text-right\\\"> <p> <a class=\\\"btn btn-secondary\\\" target=\\\"_blank\\\" download=\\\"\\\" href.bind=\\\"downloadUrl\\\"> <i class=\\\"ft-icon ft-icon-download\\\"></i> <ft-label innerhtml.one-time=\\\"getLabel('download-distributions-data')\\\"></ft-label> (<span innerhtml.one-time=\\\"getLabel('xls-file-extension')\\\"></span>) </a> </p> </div> </div> <div class=\\\"table-responsive table-responsive__no-bottom-margin\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped\\\"> <thead> <tr> <th innerhtml.one-time=\\\"getLabel('currency')\\\"></th> <th innerhtml.one-time=\\\"getLabel('record-date')\\\" class=\\\"text-right\\\"></th> <th innerhtml.one-time=\\\"getLabel('ex-dividend-date')\\\" class=\\\"text-right\\\"></th> <th innerhtml.one-time=\\\"getLabel('distribution-date')\\\" class=\\\"text-right\\\"></th> <th innerhtml.one-time=\\\"getLabel('dividends-per-share')\\\" class=\\\"text-right\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"dividend of paginatedHistoricalDividends\\\"> <td innerhtml.one-time=\\\"shareClass.currency | ftDashIfEmpty\\\"></td> <td innerhtml.one-time=\\\"dividend.recordDate | ftDashIfEmpty\\\" class=\\\"text-right\\\"></td> <td innerhtml.one-time=\\\"dividend.exDividendDate | ftDashIfEmpty\\\" class=\\\"text-right\\\"></td> <td innerhtml.one-time=\\\"dividend.distributionDate | ftDashIfEmpty\\\" class=\\\"text-right\\\"></td> <td innerhtml.one-time=\\\"dividend.dividendsPerShare\\\" class=\\\"text-right\\\"></td> </tr> </tbody> </table> </div> <ft-pagination label.bind=\\\"label\\\" paging-info.bind=\\\"pagingInfo & debounce:0\\\" go-to-page.call=\\\"goToPage(page)\\\"></ft-pagination> </div> </div> </div> </div> </section> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-nav-high-low/ft-nav-high-low.html', ['module'], function(module) { module.exports = \"<template> <section> <h3 class=\\\"header-product\\\"> <span innerhtml.one-time=\\\"getLabel('highest-lowest-nav')\\\"></span> <small> <span innerhtml.one-time=\\\"getLabel('as-of')\\\"></span> <span innerhtml.one-time=\\\"navAsOfDate\\\"></span> <span innerhtml.one-time=\\\"getLabel('updated-daily')\\\"></span> </small> </h3> <div class=\\\"visible-xs-block\\\"> <table class=\\\"table table-striped-column--alt table--border-bottom\\\"> <tbody> <tr> <th class=\\\"th--bold\\\" innerhtml.bind=\\\"getLabel('year')\\\"></th> <th class=\\\"th--bold text-right\\\" innerhtml.bind=\\\"getLabel('highest-nav')\\\"></th> <th class=\\\"th--bold text-right\\\" innerhtml.bind=\\\"getLabel('lowest-nav')\\\"></th> </tr> <tr repeat.for=\\\"navYear of shareClass.highLowNav\\\"> <th scope=\\\"col\\\" class=\\\"text-left th--normal\\\" innerhtml.bind=\\\"navYear.year | ftDashIfEmpty\\\"></th> <td class=\\\"text-right\\\"> <span innerhtml.bind=\\\"navYear.highNav | ftDashIfEmpty\\\"></span> <small if.bind=\\\"showHighLowOnDate && navYear.highNavDate\\\"> <span innerhtml.bind=\\\"getLabel('on')\\\"></span> <span innerhtml.bind=\\\"navYear.highNavDate\\\"></span> </small> </td> <td class=\\\"text-right\\\"> <span innerhtml.bind=\\\"navYear.lowNav | ftDashIfEmpty\\\"></span> <small if.bind=\\\"showHighLowOnDate && navYear.lowNavDate\\\"> <span innerhtml.bind=\\\"getLabel('on')\\\"></span> <span innerhtml.bind=\\\"navYear.lowNavDate\\\"></span> </small> </td> </tr> </tbody> </table> </div> <div class=\\\"hidden-xs\\\"> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped-column--alt table--border-bottom\\\"> <tbody> <tr> <th scope=\\\"row\\\" class=\\\"th--bold\\\" innerhtml.bind=\\\"getLabel('year')\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right th--normal\\\" repeat.for=\\\"navYear of shareClass.highLowNav\\\" innerhtml.bind=\\\"navYear.year | ftDashIfEmpty\\\"></th> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\" innerhtml.bind=\\\"getLabel('highest-nav')\\\"></th> <td class=\\\"text-right\\\" repeat.for=\\\"navYear of shareClass.highLowNav\\\"> <span innerhtml.bind=\\\"navYear.highNav | ftDashIfEmpty\\\"></span> <small if.bind=\\\"showHighLowOnDate && navYear.highNavDate\\\"> <span innerhtml.bind=\\\"getLabel('on')\\\"></span> <span innerhtml.bind=\\\"navYear.highNavDate\\\"></span> </small> </td> </tr> <tr> <th class=\\\"th--bold\\\" scope=\\\"row\\\" innerhtml.bind=\\\"getLabel('lowest-nav')\\\"></th> <td class=\\\"text-right\\\" repeat.for=\\\"navYear of shareClass.highLowNav\\\"> <span innerhtml.bind=\\\"navYear.lowNav | ftDashIfEmpty\\\"></span> <small if.bind=\\\"showHighLowOnDate && navYear.lowNavDate\\\"> <span innerhtml.bind=\\\"getLabel('on')\\\"></span> <span innerhtml.bind=\\\"navYear.lowNavDate\\\"></span> </small> </td> </tr> </tbody> </table> </div> </div> </section> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-price-chart/ft-price-chart.html', ['module'], function(module) { module.exports = \"<template> <section> <h2 class=\\\"header-product\\\"> <ft-label innerhtml.one-time=\\\"getLabel('pricing')\\\"></ft-label> <small> <ft-label innerhtml.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label innerhtml.one-time=\\\"shareClass.asOfDate\\\"></ft-label> <ft-label innerhtml.one-time=\\\"getLabel('updated-daily')\\\"></ft-label> </small> </h2> <ft-proximal placement=\\\"HistoricalPriceChartProximal\\\" position=\\\"top\\\"></ft-proximal> <form> <div class=\\\"row\\\"> <label class=\\\"col-xs-2 col-sm-1 col-form-label\\\"> <ft-label innerhtml.one-time=\\\"getLabel('show')\\\"></ft-label> </label> <div class=\\\"visible-xs visible-sm col-xs-10 col-sm-11\\\"> <select class=\\\"form-control\\\" value.bind=\\\"opt\\\" change.delegate=\\\"setDateRange(opt.name)\\\"> <option repeat.for=\\\"opt of dateRangeOptions\\\" model.bind=\\\"opt\\\" disabled.bind=\\\"opt.disabled\\\"> ${getLabel('pricing-' + opt.labelKey)} </option> </select> </div> <div class=\\\"visible-md visible-lg col-md-11\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"opt of dateRangeOptions\\\" class.bind=\\\"getOptionClass(opt)\\\" class=\\\"label-tab\\\"> <a class=\\\"btn\\\" click.delegate=\\\"setDateRange(opt.name)\\\" class.bind=\\\"getOptionClass(opt)\\\"> <ft-label label.one-time=\\\"getLabel('pricing-' + opt.labelKey)\\\"></ft-label> </a> </li> </ul> </div> </div> <div class=\\\"row margin-bottom-xs-15 margin-top-xs-15 margin-top-lg-0\\\"> <div class=\\\"col-xs-10 col-xs-offset-2 col-sm-11 col-sm-offset-1\\\"> <a role=\\\"button\\\" class=\\\"ft-btn-collapse-reveal collapsed\\\" data-toggle=\\\"collapse\\\" href=\\\"#historicalDates\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseExample\\\"> <strong innerhtml.one-time=\\\"getLabel('choose-historical-dates')\\\"></strong> <small class=\\\"inline\\\">(<span innerhtml.one-time=\\\"getLabel('optional')\\\"></span>)</small> </a> </div> </div> <div id=\\\"historicalDates\\\" class=\\\"collapse margin-bottom-xs-15\\\"> <div class=\\\"row\\\"> <div class=\\\"col-xs-10 col-xs-offset-2 col-sm-11 col-sm-offset-1\\\"> <label class=\\\"pull-left col-form-label\\\"> <ft-label innerhtml.one-time=\\\"getLabel('from')\\\"></ft-label> </label> <div class=\\\"col-xs-4\\\"> <ft-datepicker value.two-way=\\\"fromDate\\\" label.bind=\\\"label\\\" options.bind=\\\"datePickerFromOpts\\\"></ft-datepicker> </div> <label class=\\\"pull-left col-form-label\\\"> <ft-label innerhtml.one-time=\\\"getLabel('to')\\\"></ft-label> </label> <div class=\\\"col-xs-4\\\"> <ft-datepicker value.two-way=\\\"toDate\\\" label.bind=\\\"label\\\" options.bind=\\\"datePickerToOpts\\\"></ft-datepicker> </div> </div> </div> </div> </form> <ft-chart options.bind=\\\"navChartOptions\\\" series.bind=\\\"navChartSeries\\\"></ft-chart> <ft-proximal placement=\\\"HistoricalPriceChartProximal\\\" position=\\\"bottom\\\"></ft-proximal> </section> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-price-historical/ft-price-historical.html', ['module'], function(module) { module.exports = \"<template> <section class=\\\"fund-content--collapse has-nested-panel\\\" if.bind=\\\"isPopulated\\\"> <h2 class=\\\"header-product\\\"> <a role=\\\"button\\\" class=\\\"${accordionOpen ? 'collapsed' : ''}\\\" aria-expanded=\\\"${accordionOpen ? 'true' : 'false'}\\\" href=\\\"javascript:void(0)\\\" aria-controls=\\\"${uniqueId}\\\" click.delegate=\\\"toggleAccordion()\\\"> <i class=\\\"ft-icon ft-icon-right-carrot ft-icon-rotate-90\\\"></i> <ft-label innerhtml.one-time=\\\"getLabel('view-historical-price-data')\\\"></ft-label> </a> </h2> <div id=\\\"${uniqueId}\\\" class=\\\"${accordionOpen ? '' : 'collapse'}\\\"> <div if.bind=\\\"accordionOpen\\\"> <h3 class=\\\"header-product\\\"> <ft-label innerhtml.one-time=\\\"getLabel('historical-data-daily-fund-prices')\\\"></ft-label> </h3> <form> <div class=\\\"row\\\"> <label class=\\\"col-xs-2 col-sm-1 col-form-label\\\"> <ft-label innerhtml.one-time=\\\"getLabel('show')\\\"></ft-label> </label> <div class=\\\"visible-xs visible-sm col-xs-10 col-sm-11\\\"> <select class=\\\"form-control\\\" value.bind=\\\"opt\\\" change.delegate=\\\"setDateRange(opt.name)\\\"> <option repeat.for=\\\"opt of dateRangeOptions\\\" model.bind=\\\"opt\\\" disabled.bind=\\\"opt.disabled\\\"> ${getLabel('pricing-' + opt.labelKey)} </option> </select> </div> <div class=\\\"visible-md visible-lg col-md-11\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"opt of dateRangeOptions\\\" class.bind=\\\"getOptionClass(opt)\\\" class=\\\"label-tab\\\"> <a class=\\\"btn\\\" click.delegate=\\\"setDateRange(opt.name)\\\" class.bind=\\\"getOptionClass(opt)\\\"> <ft-label label.one-time=\\\"getLabel('pricing-' + opt.labelKey)\\\"></ft-label> </a> </li> </ul> </div> </div> <div class=\\\"row margin-bottom-xs-15 margin-top-xs-15 margin-top-lg-0\\\"> <div class=\\\"col-xs-10 col-xs-offset-2 col-sm-11 col-sm-offset-1\\\"> <a role=\\\"button\\\" class=\\\"ft-btn-collapse-reveal collapsed\\\" data-toggle=\\\"collapse\\\" href=\\\"#priceHistoricalDates\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseExample\\\"> <strong innerhtml.one-time=\\\"getLabel('choose-historical-dates')\\\"></strong> <small class=\\\"inline\\\">(<span innerhtml.one-time=\\\"getLabel('optional')\\\"></span>)</small> </a> </div> </div> <div id=\\\"priceHistoricalDates\\\" class=\\\"collapse margin-bottom-xs-15\\\"> <div class=\\\"row\\\"> <div class=\\\"col-xs-10 col-xs-offset-2 col-sm-11 col-sm-offset-1\\\"> <label class=\\\"pull-left col-form-label\\\"> <ft-label innerhtml.one-time=\\\"getLabel('from')\\\"></ft-label> </label> <div class=\\\"col-xs-4\\\"> <ft-datepicker value.two-way=\\\"fromDate\\\" label.bind=\\\"label\\\" options.bind=\\\"pdData.priceTable.datePickerFromOpts\\\"></ft-datepicker> </div> <label class=\\\"pull-left col-form-label\\\"> <ft-label innerhtml.one-time=\\\"getLabel('to')\\\"></ft-label> </label> <div class=\\\"col-xs-4\\\"> <ft-datepicker value.two-way=\\\"toDate\\\" label.bind=\\\"label\\\" options.bind=\\\"pdData.priceTable.datePickerToOpts\\\"></ft-datepicker> </div> </div> </div> </div> </form> <div class=\\\"panel\\\"> <div class=\\\"panel-body panel-body--nested\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-6\\\"> <ul class=\\\"list-unstyled\\\"> <li> <span innerhtml.one-time=\\\"getLabel('nav')\\\"></span> <strong innerhtml.bind=\\\"lastNavPoint.navFormatted | ftDashIfEmpty\\\"></strong> (<strong innerhtml.bind=\\\"shareClass.currency\\\"></strong>) <span innerhtml.one-time=\\\"getLabel('as-of')\\\"></span> <strong innerhtml.bind=\\\"lastNavPoint.navDateFormatted | ftDashIfEmpty\\\"></strong> </li> <li> <span innerhtml.one-time=\\\"getLabel('historical-pricing-results')\\\"></span> <span innerhtml.one-time=\\\"getLabel('from')\\\"></span> <strong innerhtml.bind=\\\"pdData.priceTable.fromDate | ftFormatDateOrDash\\\"></strong> <span innerhtml.one-time=\\\"getLabel('to')\\\"></span> <strong innerhtml.bind=\\\"pdData.priceTable.toDate | ftFormatDateOrDash\\\"></strong> </li> <li> <span innerhtml.one-time=\\\"getLabel('highest-nav')\\\"></span> <strong innerhtml.bind=\\\"highestNavPoint.navFormatted | ftDashIfEmpty\\\"></strong> (<strong innerhtml.bind=\\\"shareClass.currency\\\"></strong>) <span innerhtml.one-time=\\\"getLabel('on')\\\"></span> <strong innerhtml.bind=\\\"highestNavPoint.navDateFormatted | ftDashIfEmpty\\\"></strong> </li> <li> <span innerhtml.one-time=\\\"getLabel('lowest-nav')\\\"></span> <strong innerhtml.bind=\\\"lowestNavPoint.navFormatted | ftDashIfEmpty\\\"></strong> (<strong innerhtml.bind=\\\"shareClass.currency\\\"></strong>) <span innerhtml.one-time=\\\"getLabel('on')\\\"></span> <strong innerhtml.bind=\\\"lowestNavPoint.navDateFormatted | ftDashIfEmpty\\\"></strong> </li> </ul> </div> <div class=\\\"col-md-6 text-right\\\"> <a class=\\\"btn btn-secondary\\\" target=\\\"_blank\\\" download=\\\"\\\" href.bind=\\\"downloadUrl\\\"> <i class=\\\"ft-icon ft-icon-download\\\"></i> <ft-label innerhtml.one-time=\\\"getLabel('download-historical-price-data')\\\"></ft-label> (<span innerhtml.one-time=\\\"getLabel('xls-file-extension')\\\"></span>) </a> </div> </div> <div class=\\\"table-responsive table-responsive__no-bottom-margin\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr> <th innerhtml.one-time=\\\"getLabel('date')\\\"></th> <th class=\\\"text-right\\\"> <ft-label innerhtml.bind=\\\"getLabel('nav')\\\"></ft-label> (<ft-label innerhtml.bind=\\\"shareClass.currency\\\"></ft-label>) </th> <th class=\\\"text-right\\\"> <ft-label innerhtml.bind=\\\"getLabel('nav-change')\\\"></ft-label> (<ft-label innerhtml.bind=\\\"shareClass.currency\\\"></ft-label>) </th> <th class=\\\"text-right\\\"> <ft-label innerhtml.bind=\\\"getLabel('nav-change')\\\"></ft-label> (%) </th> </tr> </thead> <tbody> <tr repeat.for=\\\"navPoint of paginatedNavResults\\\"> <td innerhtml.one-time=\\\"navPoint.navDateFormatted\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-time=\\\"navPoint.navFormatted\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-time=\\\"navPoint.navChangeFormatted\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-time=\\\"navPoint.navChangePercentFormatted\\\"></td> </tr> </tbody> </table> </div> <ft-pagination label.bind=\\\"label\\\" paging-info.bind=\\\"pagingInfo & debounce:0\\\" go-to-page.call=\\\"goToPage(page)\\\"></ft-pagination> </div> </div> </div> </div> </section> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-pricing-distribution/ft-pricing-distribution.html', ['module'], function(module) { module.exports = \"<template> <section if.bind=\\\"hasErrors\\\"> <span innerhtml.bind=\\\"getLabel('no-pricing-distribution-data')\\\"></span> </section> <section if.bind=\\\"!hasErrors && isPopulated\\\"> <ft-price-chart if.bind=\\\"currentShareClass.showPerformanceData\\\" label.bind=\\\"label\\\" share-class.bind=\\\"currentShareClass\\\" price-chart-data.bind=\\\"pdData.priceChart\\\" date-range-options.bind=\\\"dateRangeOptions\\\"></ft-price-chart> <h2 class=\\\"header-product\\\"> <ft-label innerhtml.one-time=\\\"getLabel('daily-fund-prices')\\\"></ft-label> <ft-footnote placement=\\\"DailyFundPricesPriceDistribution\\\"></ft-footnote> </h2> <ft-proximal placement=\\\"DailyPricesProximal\\\" position=\\\"top\\\"></ft-proximal> <ft-share-prices label.bind=\\\"label\\\" share-class.bind=\\\"currentShareClass\\\"></ft-share-prices> <ft-nav-high-low label.bind=\\\"label\\\" show-high-low-on-date.bind=\\\"showHighLowOnDate\\\" share-class.bind=\\\"currentShareClass\\\"></ft-nav-high-low> <ft-proximal placement=\\\"DailyPricesProximal\\\" position=\\\"bottom\\\"></ft-proximal> <ft-price-historical label.bind=\\\"label\\\" pd-data.bind=\\\"pdData\\\" share-class.bind=\\\"currentShareClass\\\" date-range-options.bind=\\\"dateRangeOptions\\\"></ft-price-historical> <ft-dividends if.bind=\\\"currentShareClass.isDistributionClass\\\" label.bind=\\\"label\\\" share-class.bind=\\\"currentShareClass\\\"></ft-dividends> <ft-spinner if.one-way=\\\"historicalDividendsLoading\\\"></ft-spinner> <ft-dividends-historical if.bind=\\\"currentShareClass.isDistributionClass && currentShareClass.dividend\\\" label.bind=\\\"label\\\" page-size.bind=\\\"pageSize\\\" share-class.bind=\\\"currentShareClass\\\"></ft-dividends-historical> </section> </template> \"; });\r\ndefine('text!components/products/pricing-distribution/ft-share-prices/ft-share-prices.html', ['module'], function(module) { module.exports = \"<template> <section> <h3 class=\\\"header-product\\\"> <span innerhtml.one-time=\\\"getLabel('share-prices')\\\"></span> <ft-footnote placement=\\\"DailyFundPricesPriceDistribution\\\" page-order=\\\"1\\\"></ft-footnote> <small> <span innerhtml.one-time=\\\"getLabel('as-of')\\\"></span> <span innerhtml.one-time=\\\"shareClass.asOfDate\\\"></span> <span innerhtml.one-time=\\\"getLabel('updated-daily')\\\"></span> </small> </h3> <div class=\\\"row\\\"> <div class=\\\"col-md-4\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr> <th scope=\\\"row\\\"> <span innerhtml.one-time=\\\"getLabel('nav')\\\"></span> <ft-footnote placement=\\\"NavPriceDistribution\\\"></ft-footnote> <small class=\\\"inline\\\" innerhtml.one-time=\\\"getLabel('nav-net-asset-value')\\\"></small> </th> <td class=\\\"text-right\\\"><b innerhtml.bind=\\\"shareClass.nav | ftDashIfEmpty\\\"></b></td> </tr> <tr> <th scope=\\\"row\\\"> <span innerhtml.one-time=\\\"getLabel('nav-change')\\\"></span> <ft-footnote placement=\\\"NavChangePriceDistribution\\\"></ft-footnote> </th> <td class=\\\"text-right\\\"><b class.bind=\\\"navChangeClass\\\" innerhtml.bind=\\\"shareClass.navChange | ftDashIfEmpty\\\"></b></td> </tr> <tr if.bind=\\\"shareClass.navChangePercent\\\"> <th scope=\\\"row\\\"> <span innerhtml.one-time=\\\"getLabel('nav-change-percent')\\\"></span> <ft-footnote placement=\\\"NavChangePercentDistribution\\\"></ft-footnote> </th> <td class=\\\"text-right\\\"><b innerhtml.bind=\\\"shareClass.navChangePercent | ftFormatPercentage\\\"></b></td> </tr> </tbody> </table> </div> </div> </section> </template> \"; });\r\ndefine('text!components/products/tax/ft-german-tax/ft-german-tax.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!populated\\\"> <div class=\\\"ft-spinner-block\\\"> <span class=\\\"sr-only\\\" innerhtml.one-time=\\\"getLabel('loading-data')\\\"></span> <div class=\\\"ft-spinner-bg\\\"> <div class=\\\"ft-spinner-circle\\\"> </div> </div> </div> </div> <div if.bind=\\\"populated\\\"> <div class=\\\"panel panel-default panel-results\\\" if.bind=\\\"showFilterForm\\\"> <div class=\\\"panel-body\\\"> <form action=\\\"#\\\" class=\\\"fund-filters-flex-layout\\\"> <ft-dropdown repeat.for=\\\"filter of filters.dropdowns\\\" show.bind=\\\"filter.visible\\\" filter.bind=\\\"filter\\\" selected.bind=\\\"filter.selected\\\" select-callback.bind=\\\"changeFilter\\\" label.one-time=\\\"label\\\"></ft-dropdown> </form> </div> </div> <table class=\\\"table table-striped table-ppss\\\"> <thead> <tr> <th scope=\\\"col\\\" class=\\\"fund\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('fund-name')\\\" sort.one-way=\\\"sort.columns.get('FUND_NAME')\\\" click-callback.call=\\\"changeSort('FUND_NAME')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showTaId\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ta-id')\\\" sort.one-way=\\\"sort.columns.get('TA_ID')\\\" click-callback.call=\\\"changeSort('TA_ID')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showIsin\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('isin')\\\" sort.one-way=\\\"sort.columns.get('ISIN')\\\" click-callback.call=\\\"changeSort('ISIN')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('currency')\\\" sort.one-way=\\\"sort.columns.get('CURRENCY')\\\" click-callback.call=\\\"changeSort('CURRENCY')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('nav')\\\" sort.one-way=\\\"sort.columns.get('NAV')\\\" click-callback.call=\\\"changeSort('NAV')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('redemption-price')\\\" sort.one-way=\\\"sort.columns.get('REDEMPTION_PRICE')\\\" click-callback.call=\\\"changeSort('REDEMPTION_PRICE')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showTaxColumns\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('interim-profit')\\\" sort.one-way=\\\"sort.columns.get('INTERIM_PROFIT')\\\" click-callback.call=\\\"changeSort('INTERIM_PROFIT')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showTaxColumns\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('estg-equity-gain')\\\" sort.one-way=\\\"sort.columns.get('ESTG')\\\" click-callback.call=\\\"changeSort('ESTG')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showTaxColumns\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('kstg-equity-gain')\\\" sort.one-way=\\\"sort.columns.get('KSTG')\\\" click-callback.call=\\\"changeSort('KSTG')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showTaxColumns\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('real-estate-profit')\\\" sort.one-way=\\\"sort.columns.get('REAL_ESTATE_PROFIT')\\\" click-callback.call=\\\"changeSort('REAL_ESTATE_PROFIT')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" if.one-time=\\\"config.showTaxColumns\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('accumulated-dividend-income')\\\" sort.one-way=\\\"sort.columns.get('ACCUMULATED_DIVIDEND_INCOME')\\\" click-callback.call=\\\"changeSort('ACCUMULATED_DIVIDEND_INCOME')\\\"></th> </tr> </thead> <tbody repeat.for=\\\"[vehicle, shareClasses] of shareClassesByVehicle\\\"> <tr class=\\\"investment-vehicle\\\"> <td class=\\\"investment-vehicle__title\\\" colspan.one-time=\\\"ivColspan\\\" textcontent.one-way=\\\"vehicle\\\"> </td> <th class=\\\"text-right\\\" colspan=\\\"1\\\"> <small class=\\\"investment-vehicle__subtitle\\\"> <ft-label innerhtml.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label textcontent.one-way=\\\"shareClasses[0].asOf\\\"></ft-label> </small> </th> </tr> <tr repeat.for=\\\"shareClass of shareClasses\\\"> <td class=\\\"fund-name\\\" textcontent.one-way=\\\"shareClass.fundShareClassName|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td if.one-time=\\\"config.showTaId\\\" class=\\\"ta-id text-right\\\" textcontent.one-way=\\\"shareClass.taId|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td if.one-time=\\\"config.showIsin\\\" class=\\\"isin text-right\\\" textcontent.one-way=\\\"shareClass.isin|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td class=\\\"currency text-right\\\"> <ft-label label.one-way=\\\"shareClass.currency|ftReplaceDashWith:getLabel('no-information')\\\"></ft-label> <ft-footnote if.one-way=\\\"shareClass.showCurrencyFootnote\\\" placement=\\\"PriceTaxCurrency\\\"></ft-footnote> </td> <td class=\\\"nav text-right\\\" textcontent.one-way=\\\"shareClass.nav|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td class=\\\"redemption-price text-right\\\" textcontent.one-way=\\\"shareClass.redemptionPrice|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td if.one-time=\\\"config.showTaxColumns\\\" class=\\\"interim-profit text-right\\\"> <ft-label label.one-way=\\\"shareClass.interimProfit|ftReplaceDashWith:getLabel('no-information')\\\"></ft-label> <ft-footnote if.one-way=\\\"shareClass.showPositiveProfitFootnote\\\" placement=\\\"InterimProfitPositive\\\"></ft-footnote> <ft-footnote if.one-way=\\\"shareClass.showNegativeProfitFootnote\\\" placement=\\\"InterimProfitNegative\\\"></ft-footnote> </td> <td if.one-time=\\\"config.showTaxColumns\\\" class=\\\"estg-equity-gain text-right\\\" textcontent.one-way=\\\"shareClass.equityGainEstG|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td if.one-time=\\\"config.showTaxColumns\\\" class=\\\"kstg-equity-gain text-right\\\" textcontent.one-way=\\\"shareClass.equityGainKstG|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td if.one-time=\\\"config.showTaxColumns\\\" class=\\\"real-estate-profit text-right\\\" textcontent.one-way=\\\"shareClass.realEstateProfit|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td if.one-time=\\\"config.showTaxColumns\\\" class=\\\"accumulated-dividend-income text-right\\\" textcontent.one-way=\\\"shareClass.accumulatedDividendIncome|ftReplaceDashWith:getLabel('no-information')\\\"></td> </tr> </tbody> </table> </div> </template> \"; });\r\ndefine('text!components/marketing/common/elements/ft-multi-select-bar/ft-multi-select-bar.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"panel-body ft-multi-select-bar\\\"> <ft-modal-inline view-model.ref=\\\"modal\\\" title.bind=\\\"modalTitle\\\"> <div slot=\\\"body\\\"> <div class=\\\"ft-form-horizontal\\\"> <div class=\\\"ft-multi-select-bar-doc-list\\\" if.bind=\\\"stage === 'edit'\\\"> <p innerhtml.bind=\\\"marketingLabels.editSelectedDocumentsText\\\">Edit Selected Documents</p> <ul class=\\\"list list-unstyled\\\"> <li repeat.for=\\\"document of selected\\\"> <ft-label label.bind=\\\"document.url | ftFilenameFromFolders:document.url\\\"></ft-label> <span click.delegate=\\\"$parent.toggle(document)\\\" class=\\\"pull-right remove\\\"><i class=\\\"ft-icon ft-icon-cross\\\"></i></span> </li> </ul> </div> <div if.bind=\\\"stage === 'email'\\\"> <div class.bind=\\\"(form.errors.from === true) ? 'form-group has-error' : 'form-group' \\\"> <div class=\\\"row\\\"> <label class=\\\"col-sm-3 col-xs-12 control-label\\\" innerhtml.bind=\\\"marketingLabels.fromNameText\\\">From name</label> <div class=\\\"col-xs-11 col-sm-8\\\"> <input class=\\\"form-control required\\\" value.bind=\\\"form.from & validate\\\" required> <div class=\\\"help-block\\\"> <p class=\\\"required-text\\\" innerhtml.bind=\\\"marketingLabels.validFromName\\\"> From name is required </p> </div> <i class=\\\"ft-icon ft-icon-error-msg\\\"></i> </div> </div> </div> <div class=\\\"recipients\\\"> <div repeat.for=\\\"toEmail of form.toEmails\\\" class=\\\"recipient-list\\\"> <div class.bind=\\\"(toEmail.errors.name === true) ? 'form-group has-error' : 'form-group' \\\"> <div class=\\\"row\\\"> <div class=\\\"col-xs-12\\\" if.bind=\\\"$index > 0\\\"> <a click.delegate=\\\"removeEmail($index)\\\"><span innerhtml.bind=\\\"marketingLabels.removeRecipientText\\\">Remove recipient</span> <i class=\\\"ft-icon ft-icon-cross\\\"></i></a> </div> <label class=\\\"col-sm-3 col-xs-12 control-label\\\" innerhtml.bind=\\\"marketingLabels.recipientNameText\\\">Recipient name</label> <div class=\\\"col-xs-11 col-sm-8\\\"> <input class=\\\"form-control required\\\" value.bind=\\\"toEmail.name & validate\\\" required> <div class=\\\"help-block\\\"> <p class=\\\"required-text\\\" innerhtml.bind=\\\"marketingLabels.validToName\\\"> Name is required </p> </div> <i class=\\\"ft-icon ft-icon-error-msg\\\"></i> </div> </div> </div> <div class.bind=\\\"(toEmail.errors.email === true) ? 'form-group has-error' : 'form-group' \\\"> <div class=\\\"row\\\"> <label class=\\\"col-sm-3 col-xs-12 control-label\\\" innerhtml.bind=\\\"marketingLabels.recipientEmailText\\\">Recipient email</label> <div class=\\\"col-xs-11 col-sm-8\\\"> <input class=\\\"form-control required\\\" type=\\\"email\\\" value.bind=\\\"toEmail.email & validate\\\" required> <div class=\\\"help-block\\\"> <p class=\\\"required-text\\\" innerhtml.bind=\\\"marketingLabels.validEmail\\\"> Valid email is required </p> </div> <i class=\\\"ft-icon ft-icon-error-msg\\\"></i> </div> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-3\\\"></div> <div class=\\\"col-md-5\\\"> <a click.delegate=\\\"addEmail()\\\"><i class=\\\"ft-icon ft-icon-expand\\\"></i> <span innerhtml.bind=\\\"marketingLabels.addRecipientText\\\">Add recipient</span></a> </div> </div> </div> <div> <div class=\\\"row\\\"> <label class=\\\"col-md-3 control-label\\\" innerhtml.bind=\\\"marketingLabels.messageLabel\\\">Message</label> <div class=\\\"col-md-8\\\"> <textarea class=\\\"form-control\\\" rows=\\\"5\\\" value.bind=\\\"form.message\\\"></textarea> </div> </div> </div> <div if.bind=\\\"response\\\"> <div innerhtml.bind=\\\"response\\\"></div> </div> </div> <div if.bind=\\\"stage === 'send'\\\"> <p innerhtml.bind=\\\"marketingLabels.yourDocumentsSentText\\\">Your documents have been sent</p> <div innerhtml.bind=\\\"response\\\"></div> </div> </div> </div> <div slot=\\\"footer\\\"> <div if.bind=\\\"type === 'email'\\\"> <a href=\\\"#\\\" if.bind=\\\"stage === 'email'\\\" class=\\\"btn btn-primary btn-white-outline pull-left\\\" click.delegate=\\\"stage = 'edit'\\\" innerhtml.bind=\\\"marketingLabels.backLabel\\\"> Back </a> <a href=\\\"#\\\" if.bind=\\\"stage === 'edit'\\\" class=\\\"btn btn-white\\\" click.delegate=\\\"stage = 'email'\\\" innerhtml.bind=\\\"marketingLabels.continueLabel\\\"> Continue </a> <a href=\\\"#\\\" if.bind=\\\"stage === 'email'\\\" class=\\\"btn btn-white\\\" click.delegate=\\\"send()\\\" innerhtml.bind=\\\"marketingLabels.sendLink\\\"> Send </a> </div> <div if.bind=\\\"type === 'download'\\\"> <form method=\\\"POST\\\" action=\\\"/en-gb/download.page\\\" ref=\\\"downloadForm\\\"> <input name=\\\"ZipFile\\\" type=\\\"hidden\\\" repeat.for=\\\"document of selected\\\" value=\\\"${document.url}\\\"> <a href=\\\"#\\\" class=\\\"btn btn-white\\\" click.delegate=\\\"download()\\\" innerhtml.bind=\\\"marketingLabels.downloadLink\\\"> Download </a> </form> </div> </div> </ft-modal-inline> <div class=\\\"row\\\"> <div class=\\\"col-xs-12 col-md-5\\\"> <span class=\\\"ft-multi-select-label\\\" innerhtml.bind=\\\"marketingLabels.selectMultiple\\\"></span> <div class=\\\"btn-group ft-btn-toggle-on-off\\\" data-toggle=\\\"buttons\\\" click.delegate=\\\"multiselect = !multiselect \\\"> <label class=\\\"btn btn-on-off on ${ multiselect ? 'active' : ''}\\\"> <input type=\\\"radio\\\" checked=\\\"\\\"> <span innerhtml.bind=\\\"marketingLabels.onState\\\"></span> </label> <label class=\\\"btn btn-on-off off ${ multiselect ? '' : 'active'}\\\"> <input type=\\\"radio\\\"> <span innerhtml.bind=\\\"marketingLabels.offState\\\"></span> </label> </div> </div> <div class=\\\"col-xs-12 col-md-7 text-md-right\\\" if.bind=\\\"multiselect\\\"> <span> <span innerhtml.bind=\\\"marketingLabels.selectedPdfs\\\">Selected</span> <span class=\\\"badge primary\\\">${ selected.length }</span> <a if.bind=\\\"selected.length > 0\\\" click.trigger=\\\"openModel('edit')\\\" innerhtml.bind=\\\"marketingLabels.editLabel\\\"></a> </span> <a href=\\\"#\\\" class=\\\"btn btn-default ${ (selected.length > 0) ? '' : 'disabled' }\\\" click.trigger=\\\"openModel('email')\\\"> <i class=\\\"glyphicon glyphicon-envelope\\\"></i> <span class=\\\"hidden-xs\\\" innerhtml.bind=\\\"marketingLabels.emailSelectedLabel\\\">Email Selected</span> </a> <a href=\\\"#\\\" class=\\\"btn btn-default ${ (selected.length > 0) ? '' : 'disabled' }\\\" click.trigger=\\\"openModel('download')\\\"> <i class=\\\"glyphicon glyphicon-download-alt\\\"></i> <span class=\\\"hidden-xs\\\" innerhtml.bind=\\\"marketingLabels.downloadLink\\\">Download</span> </a> </div> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/common/elements/ft-responsive-table-flow/ft-responsive-table-flow-document.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"media ft-document-icon\\\"> <div class=\\\"media-left\\\"> <span class=\\\"icon-docs pdf-sm-white-bg\\\">pdf</span> </div> <div class=\\\"media-body\\\"> <ft-label label.bind=\\\"document.title\\\"></ft-label> </div> </div> </template> \"; });\r\ndefine('text!components/marketing/common/elements/ft-responsive-table-flow/ft-responsive-table-flow.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-table-responsive-flow\\\"> <table class=\\\"table\\\"> <thead class=\\\"hidden-xs\\\"> <tr> <th repeat.for=\\\"col of data.cols\\\" scope=\\\"col\\\"> ${col} </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.rows \\\"> <td class=\\\"col-sm-4 visible-xs-block visible-sm visible-md visible-lg\\\"> <span class=\\\"hidden-xs\\\" innerhtml.bind=\\\"row.label\\\"></span> <a class=\\\"visible-xs ft-collapse-label ${expanded ? 'expanded' : 'collapsed'}\\\" data-toggle=\\\"collapse\\\" click.delegate=\\\"expanded ? expanded = false : expanded = true\\\" data-target=\\\"${'.expand'+ $index}\\\" aria-expanded=\\\"false\\\" innerhtml.bind=\\\"row.label\\\"></a> </td> <td repeat.for=\\\"col of row.cols \\\" class=\\\"remove-cell-padding col-sm-4 visible-xs-block visible-sm visible-md visible-lg\\\"> <div class=\\\"${'expand'+ $parent.$index} collapse\\\"> <div class=\\\"cell-padding\\\"> <div if.bind=\\\"col.noresults\\\" innerhtml.bind=\\\"col.noresults\\\"></div> <div repeat.for=\\\"document of col.documents\\\" class=\\\"document ${ document.selected ? 'selected' : '' } ${ multiselect ? 'selectable' : '' }\\\"> <div if.bind=\\\"document.url && multiselect\\\" click.delegate=\\\"toggle(document)\\\"> <ft-responsive-table-flow-document document.bind=\\\"document\\\"></ft-responsive-table-flow-document> </div> <a if.bind=\\\"document.url && !multiselect\\\" href=\\\"${document.url}\\\" target=\\\"_blank\\\"> <ft-responsive-table-flow-document document.bind=\\\"document\\\"></ft-responsive-table-flow-document> </a> <span if.bind=\\\"(!document.url)\\\"> ${document.title} </span> </div> </div> </div> </td> </tr> </tbody> </table> </div> </template> \"; });\r\ndefine('text!components/marketing/common/elements/ft-gateway/ft-gateway.html', ['module'], function(module) { module.exports = \"<template> <div ref=\\\"gateway\\\"> <slot name=\\\"gateway\\\"></slot> </div> </template> \"; });\r\ndefine('text!components/marketing/common/elements/ft-type-ahead-search/ft-type-ahead-search.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"ft-type-ahead-search ft-input-search\\\"> <div class=\\\"search\\\"> <input class=\\\"form-control\\\" placeholder.bind=\\\"marketingLabels.searchInput\\\" type=\\\"text\\\" value.bind=\\\"query & debounce:350\\\" change.trigger=\\\"focus()\\\" focus.trigger=\\\"focus()\\\" keyup.trigger=\\\"focus()\\\"> <div class=\\\"list-group\\\" if.bind=\\\"showTypeAhead && query\\\" ref=\\\"mySelect\\\" filtered.bind=\\\"data | ftTypeAheadFilter: query\\\"> <a class=\\\"list-group-item\\\" repeat.for=\\\"element of data | ftTypeAheadFilter: query\\\" mousedown.delegate=\\\"select(element)\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-4\\\"> ${element.isin} </div> <div class=\\\"col-sm-5\\\"> <strong>${element.label}</strong> </div> <div class=\\\"col-sm-3\\\"> ${marketingLabels.classLabel} ${element.shareClass} </div> </div> </a> <div class=\\\"list-group-item\\\" if.bind=\\\"mySelect.filtered.length === 0\\\" innerhtml.bind=\\\"marketingLabels.emptyResults\\\"> </div> </div> <span class=\\\"ft-icon ft-icon-search\\\"></span> </div> </div> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-caveats/ft-caveats.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"\\\" if.bind=\\\"populated\\\"> <div class=\\\"caveat-debug\\\" if.bind=\\\"debug\\\">[Caveats: ${placement} : Show footnotes=${footnotes}]</div> <h3 class=\\\"ili-heading\\\" if.bind=\\\"displayLegalInfo\\\" innerhtml.bind=\\\"getLabel('important-legal-title')\\\"></h3> <div repeat.for=\\\"ilf of impLegalInfo\\\" innerhtml.bind=\\\"ilf.content\\\"></div> <h3 class=\\\"footnotes-heading\\\" if.bind=\\\"displayFootnotes\\\" innerhtml.bind=\\\"getLabel('footnotes')\\\"></h3> <ol if.bind=\\\"displayFootnotes\\\"> <li repeat.for=\\\"footnote of visibleFootnotes\\\" innerhtml.bind=\\\"footnote.content\\\"></li> </ol> </div> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-dropdown/ft-dropdown.html', ['module'], function(module) { module.exports = \"<template class=\\\"fund-filters__item\\\"> <label for.one-time=\\\"filter.name\\\" class=\\\"\\\"> <ft-label label.one-time=\\\"getLabel(filter.labelKey)\\\"></ft-label> </label> <select id.one-time=\\\"filter.name\\\" value.bind=\\\"selected\\\" matcher.one-time=\\\"optionMatcher\\\" class=\\\"form-control\\\"> <option model.bind=\\\"allOption\\\" innerhtml.one-time=\\\"getLabel('all')\\\"></option> <option repeat.for=\\\"option of filter.options\\\" model.bind=\\\"option\\\" innerhtml.one-time=\\\"prefixOption(option.label)\\\"></option> </select> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-footnote/ft-footnote.html', ['module'], function(module) { module.exports = \" <template class=\\\"text-nowrap\\\">&#65279; <span if.bind=\\\"isPopulated && hasFootnotes\\\" class=\\\"footnote\\\"> <sup repeat.for=\\\"footnote of footnotes\\\"> ${footnote}<span if.bind=\\\"!$last\\\">,&nbsp;</span> </sup> </span> <sup if.bind=\\\"debug\\\" class=\\\"caveat-debug\\\" title=\\\"key = '${placement}'\\\" data-placement=\\\"${placement}\\\">&nbsp;[F]</sup> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-fund-alert/ft-fund-alert.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"populated && fundAlerts.length\\\" data-fti-component=\\\"fund-alert\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-12\\\"> <div class=\\\"alert-box\\\" role=\\\"alert\\\"> <div class=\\\"alert-header sr-only\\\"> <i class=\\\"pull-left ft-icon ft-icon-error-msg ft-1-5x\\\"></i> <h2 class=\\\"alert-heading\\\" innerhtml.one-time=\\\"getLabel('alert-heading')\\\"></h2> </div> <ul repeat.for=\\\"alert of fundAlerts\\\" class=\\\"list-unstyled alerts\\\"> <li> <div class=\\\"collapsable-header\\\" data-fti-module=\\\"toggle-collapse\\\"> <i class=\\\"icon ft-icon-right-carrot\\\"></i> <a aria-expanded.one-way=\\\"alert.collapsed ? 'false' : 'true'\\\" href=\\\"#alert-${$index}\\\" aria-controls=\\\"alert-${$index}\\\" click.delegate=\\\"toggleAlert(alert)\\\"> <strong textcontent.one-way=\\\"alert.title\\\"></strong> - <ft-label innerhtml.one-time=\\\"getLabel('read-more')\\\"></ft-label> </a> </div> <div innerhtml.one-way=\\\"alert.content\\\" class=\\\"alert-body collapsable-content collapse\\\" class.one-way=\\\"alert.collapsed ? '' : 'in'\\\" id=\\\"alert-${$index}\\\" aria-expanded.one-way=\\\"alert.collapsed ? 'false' : 'true'\\\"> </div> </li> </ul> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-fund-alert-banner/ft-fund-alert-banner.html', ['module'], function(module) { module.exports = \"<template> <p class=\\\"msg hidden-print\\\" repeat.for=\\\"fa of fundAlerts\\\" innerhtml.one-way=\\\"fa.alert\\\"></p> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-labels/ft-labels.html', ['module'], function(module) { module.exports = \"<template> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-proximal/ft-proximal.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"proximal-container-${position}\\\"> <div class=\\\"caveat-debug\\\" if.bind=\\\"debug\\\">[Proximal: ${placement} : ${position}]</div> <div if.bind=\\\"isPopulated\\\" repeat.for=\\\"proximal of proximals\\\" innerhtml.bind=\\\"proximal\\\" class=\\\"caveat-container proximal\\\"></div> </div> </template> \"; });\r\ndefine('text!components/products/common/elements/ft-share-class-filter/ft-share-class-filter.html', ['module'], function(module) { module.exports = \"<template> <div class=\\\"dropdown\\\" if.bind=\\\"shareClasses.size > 1\\\"> <button id=\\\"share-class\\\" type=\\\"button\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">${currentShareClassName}<span> </span> </button> <ul class=\\\"dropdown-menu\\\" aria-labelledby=\\\"share-class\\\"> <li repeat.for=\\\"[shareClassCode, shareClass] of shareClasses\\\"> <a click.delegate=\\\"changeShareClass(shareClassCode)\\\">${shareClass}</a> </li> </ul> </div> </template> \"; });\r\ndefine('text!components/products/overview/en-us-retails/ft-fund-mmfr-stable-nav-header/ft-fund-mmfr-stable-nav-header.html', ['module'], function(module) { module.exports = \"<template> <table class=\\\"table table-text table-price\\\"> <tbody class=\\\"row\\\" data-pricingavail=\\\"${data.pricingAvailable}\\\"> <tr class=\\\"col-print-5 stable-nav col-sm-4 col-lg-4 mmfr\\\"> <th scope=\\\"row\\\"> <span class=\\\"sections-title\\\"> <ft-label label.bind=\\\"labels['Stable-NAV']\\\"></ft-label>&nbsp; <small if.bind=\\\"data.displayStatus != 'P'\\\"> <ft-label label.bind=\\\"labels['as-of']\\\"></ft-label> <ft-label label.bind=\\\"data.navdate\\\"></ft-label> </small> </span> </th> <td class=\\\"net-asset-value\\\"> <span if.bind=\\\"data.nvcBool == true && data.isPartial != 'Y'\\\"> <span class=\\\"loss\\\" if.bind=\\\"data.nvc != '' && data.nvc < 0\\\"> <span class=\\\"sr-only\\\">down </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenavfourdeci\\\"></ft-prefix-or-dash> </span> <span class=\\\"gain\\\" if.bind=\\\"data.nvc != '' && data.nvc > 0\\\"> <span class=\\\"sr-only\\\">up </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenavfourdeci\\\"></ft-prefix-or-dash> </span> <span class=\\\"static\\\" if.bind=\\\"data.nvc != '' && data.nvc == 0\\\"> <span class=\\\"sr-only\\\">up </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenavfourdeci\\\"></ft-prefix-or-dash> </span> <span class=\\\"nodata\\\" if.bind=\\\"data.nvc == ''\\\"> <span class=\\\"sr-only\\\">nodata </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenavfourdeci\\\"></ft-prefix-or-dash> </span> </span> </td> </tr> <tr class=\\\"col-print-3 market-nav col-sm-4 col-lg-4 mmfr\\\"> </tr></tbody> </table> </template> \"; });\r\ndefine('text!components/products/overview/en-us-retails/ft-fund-nav-header/ft-fund-nav-header.html', ['module'], function(module) { module.exports = \" <template> <table class=\\\"table table-text table-price\\\"> <tbody class=\\\"row\\\" data-pricingavail=\\\"${data.pricingAvailable}\\\"> <tr class=\\\"net-asset-value col-print-4 col-sm-3 col-lg-4\\\"> <th scope=\\\"row\\\"> <span class=\\\"sections-title\\\"> <ft-label label.bind=\\\"labels['nav']\\\"></ft-label>&nbsp; <span class=\\\"loss\\\" if.bind=\\\"data.nvc != '' && data.nvc < 0\\\"> <span class=\\\"sr-only\\\">down </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenav\\\"></ft-prefix-or-dash> </span> <span class=\\\"gain\\\" if.bind=\\\"data.nvc != '' && data.nvc > 0\\\"> <span class=\\\"sr-only\\\">up </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenav\\\"></ft-prefix-or-dash> </span> <span class=\\\"static\\\" if.bind=\\\"data.nvc != '' && data.nvc == 0\\\"> <span class=\\\"sr-only\\\">up </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenav\\\"></ft-prefix-or-dash> </span> <span class=\\\"nodata\\\" if.bind=\\\"data.nvc == ''\\\"> <span class=\\\"sr-only\\\">nodata </span> <ft-prefix-or-dash prefix.bind=\\\"data.prefix\\\" val.bind=\\\"data.pricenav\\\"></ft-prefix-or-dash> </span> </span> </th> <td class=\\\"net-asset-value\\\"> <ft-label label.bind=\\\"data.nav | ftWithDollarOrDash:data.displayStatus\\\"></ft-label> </td> </tr> </tbody> </table> </template> \"; });\r\ndefine('text!components/products/overview/en-us-retails/ft-fund-price-header/ft-fund-price-header.html', ['module'], function(module) { module.exports = \"<template> <h2 class=\\\"header-product-h3 header-price\\\" if.bind=\\\"data.headerTemplate == 'price-header'\\\"> <ft-label label.bind=\\\"labels['price']\\\"></ft-label> <ft-footnote placement=\\\"PriceHeaderOverview\\\"></ft-footnote> <small> <ft-label label.bind=\\\"labels['as-of']\\\"></ft-label>&nbsp; <ft-label label.bind=\\\"data.asOfDate\\\"></ft-label> </small> </h2> <h2 class=\\\"header-product-h3 header-price\\\" if.bind=\\\"data.headerTemplate == 'price-header-money'\\\"> <ft-label label.bind=\\\"labels['price-money']\\\"></ft-label> <ft-footnote placement=\\\"PriceHeaderOverview\\\"></ft-footnote> <small if.bind=\\\"data.displayStatus == 'P'\\\"> <ft-label label.bind=\\\"labels['as-of']\\\"></ft-label>&nbsp; <ft-label label.bind=\\\"data.asOfDate\\\"></ft-label> </small> </h2> <h2 class=\\\"header-product-h3 header-price\\\" if.bind=\\\"data.headerTemplate == 'price-header-vip'\\\"> <ft-label label.bind=\\\"labels['total-returns']\\\"></ft-label> <ft-footnote placement=\\\"PriceHeaderOverview\\\"></ft-footnote> <small> <ft-label label.bind=\\\"labels['as-of']\\\"></ft-label>&nbsp; <ft-label label.bind=\\\"data.asOfDate\\\"></ft-label> </small> </h2> </template> \"; });\r\n//# sourceMappingURL=web-platform-app.js.map","define('configuration/etf-gb/main',['exports', '../common/configure', '../etf/beans', '../etf/components', '../etf/reducers', '../etf/state', '../../components/products/overview/ft-fund-information/lib/etf-gb/fund-information.reducer', '../../components/products/overview/ft-fund-information/lib/etf/fund-information.reducer'], function (exports, _configure, _beans, _components, _reducers, _state, _fundInformation, _fundInformation2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(aurelia) {\n var state = (0, _state.getState)();\n\n _reducers.reducers.products.specific.splice(1, _reducers.reducers.products.specific.indexOf(_fundInformation2.fundInformation), _fundInformation.fundInformation);\n\n (0, _configure.commonConfigure)(aurelia, {\n reducers: _reducers.reducers,\n state: state,\n beans: _beans.beans,\n components: _components.components,\n dataServiceConf: 'etf'\n });\n }\n});\r\ndefine('configuration/etf/beans',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var beans = exports.beans = {\n component: {\n caveats: ['gw.caveats'],\n caveatsFund: ['gw.caveats', 'etf.fund-details'],\n configuration: ['gw.fund-config'],\n findAFund: ['etf.ppss', 'gw.fund-config', 'gw.fund-alert'],\n fundAlert: ['gw.fund-alert'],\n fundDetails: ['etf.fund-details'],\n labels: ['etf.fund-labels'],\n labelsMarketing: ['gw.marketing-component-labels', 'gw.json-content-type-labels'],\n ppss: ['etf.ppss', 'gw.fund-config', 'gw.fund-alert'],\n tax: ['etf.price-tax'],\n portfolioCharting: ['etf.portfolio', 'etf.fund-details', 'gw.fund-config'],\n portfolioStatisticsAndPositions: ['etf.portfolio', 'etf.fund-details', 'gw.fund-config'],\n portfolioGeographicAllocation: ['etf.portfolio', 'etf.fund-details', 'gw.fund-config'],\n portfolioHoldings: ['etf.portfolio', 'etf.fund-details', 'gw.fund-config'],\n performance: ['etf.performance', 'etf.performance-history', 'gw.fund-config', 'etf.fund-details'],\n performanceSimply: ['etf.performance', 'gw.fund-config', 'etf.fund-details'],\n pricingDistribution: ['etf.price', 'etf.price-history', 'etf.distribution-history', 'etf.fund-details', 'gw.fund-config'],\n backtestedPerformance: ['etf.performance', 'etf.fund-details', 'gw.fund-config'],\n backtestedPerformanceHistory: ['etf.performance-history'],\n fundInformation: ['etf.overview', 'etf.fund-details', 'etf.price', 'gw.fund-config'],\n tradingInformation: ['etf.fund-details'],\n fundStaticBar: ['etf.overview', 'etf.fund-details', 'gw.fund-config']\n },\n\n bean: {\n 'etf.distribution-history': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.fund-details': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.fund-labels': {\n parameters: new Map([['debug', 'debug']])\n },\n 'etf.overview': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.performance': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.performance-history': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.portfolio': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.price': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'etf.price-history': {\n parameters: new Map([['fundId', 'FundID']])\n }\n }\n };\n});\r\ndefine('configuration/etf/components',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var components = exports.components = ['components/products/overview/ft-fund-information/etf/ft-fund-information', 'components/products/overview/ft-fund-static-bar/ft-fund-static-bar', 'components/products/overview/ft-trading-information/etf/ft-trading-information', 'components/products/performance/ft-backtested-performance-annualised/etf/ft-backtested-performance-annualised', 'components/products/performance/ft-backtested-performance-calendar/etf/ft-backtested-performance-calendar', 'components/products/performance/ft-backtested-performance-cumulative/etf/ft-backtested-performance-cumulative', 'components/products/performance/ft-calendar-year-returns/ft-calendar-year-returns', 'components/products/performance/ft-discrete-returns/ft-discrete-returns', 'components/products/performance/ft-performance-annualised/ft-performance-annualised', 'components/products/performance/ft-performance-cumulative/ft-performance-cumulative', 'components/products/performance/ft-performance-risk-statistics/ft-performance-risk-statistics', 'components/products/portfolio/ft-geographic-allocation/etf/ft-geographic-allocation', 'components/products/portfolio/ft-holdings/etf/ft-holdings', 'components/products/portfolio/ft-market-capitalisation/ft-market-capitalisation', 'components/products/portfolio/ft-portfolio-no-data-message/ft-portfolio-no-data-message', 'components/products/portfolio/ft-portfolio-statistics-and-positions/etf/ft-portfolio-statistics-and-positions', 'components/products/portfolio/ft-sector-allocation/etf/ft-sector-allocation', 'components/products/ppss/ft-find-a-fund/ft-find-a-fund', 'components/products/ppss/ft-find-a-fund-btn/ft-find-a-fund-btn', 'components/products/ppss/ft-ppss-etf/ft-ppss-etf', 'components/products/ppss/ft-ppss-favorite/ft-ppss-favorite', 'components/products/ppss/ft-ppss-fund-filter/ft-ppss-fund-filter', 'components/products/ppss/ft-ppss-fund-name/ft-ppss-fund-name', 'components/products/ppss/ft-ppss-search-box/ft-ppss-search-box', 'components/products/ppss/ft-ppss-tab-header/ft-ppss-tab-header', 'components/products/ppss/ft-ppss-table-toolbar/ft-ppss-table-toolbar', 'components/products/ppss/ft-ppss/ft-ppss', 'components/products/pricing-distribution/ft-dividends-historical/ft-dividends-historical', 'components/products/pricing-distribution/ft-dividends/ft-dividends', 'components/products/pricing-distribution/ft-nav-high-low/ft-nav-high-low', 'components/products/pricing-distribution/ft-price-chart/ft-price-chart', 'components/products/pricing-distribution/ft-price-historical/ft-price-historical', 'components/products/pricing-distribution/ft-pricing-distribution/ft-pricing-distribution', 'components/products/pricing-distribution/ft-share-prices/ft-share-prices', 'components/products/tax/ft-german-tax/etf/ft-german-tax'];\n});\r\ndefine('configuration/etf/main',['exports', '../common/configure', './beans', './components', './reducers', './state'], function (exports, _configure, _beans, _components, _reducers, _state) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(aurelia) {\n var state = (0, _state.getState)();\n\n (0, _configure.commonConfigure)(aurelia, {\n reducers: _reducers.reducers,\n state: state,\n beans: _beans.beans,\n components: _components.components,\n dataServiceConf: 'etf'\n });\n }\n});\r\ndefine('configuration/etf/reducers',['exports', '../../components/products/lib/combine-products-reducers', '../common/marketing-reducers', '../../lib/general.reducer', '../../components/products/lib/reducers/labels/label-loader.reducer', '../../components/products/lib/reducers/fund-details/fund-details.reducer', '../../components/products/lib/reducers/fund-config/config-loader.reducer', '../../components/common/elements/ft-modal/lib/ft-modal.reducer', '../../components/products/common/elements/ft-caveats/lib/caveats.reducer', '../../components/products/lib/reducers/caveats/caveats.reducer', '../../components/products/ppss/ft-ppss/lib/ppss.reducer', '../../components/products/ppss/ft-find-a-fund/lib/find-a-fund.reducer', '../../components/products/performance/ft-performance-cumulative/lib/performance-cumulative.reducer', '../../components/products/performance/ft-performance-annualised/lib/performance-annualised.reducer', '../../components/products/overview/ft-fund-information/lib/etf/fund-information.reducer', '../../components/products/overview/ft-trading-information/etf/lib/etf/trading-information.reducer', '../../components/products/overview/ft-trading-information/etf/lib/ft-trading-information.reducer', '../../components/products/overview/ft-fund-static-bar/lib/gw-etf/fund-static-bar.reducer', '../../components/products/common/elements/ft-fund-alert/lib/gw/fund-alert.reducer', '../../components/products/ppss/ft-ppss/lib/etf/ppss.reducer', '../../components/products/pricing-distribution/ft-pricing-distribution/lib/pricing-distribution.reducer', '../../components/products/pricing-distribution/ft-pricing-distribution/lib/etf/pricing-distribution.reducer', '../../components/products/performance/ft-performance-cumulative/lib/etf/performance-cumulative.reducer', '../../components/products/performance/ft-performance-annualised/lib/etf/performance-annualised.reducer', '../../components/products/performance/ft-calendar-year-returns/lib/calendar-year-returns.reducer', '../../components/products/performance/ft-calendar-year-returns/lib/etf/calendar-year-returns.reducer', '../../components/products/performance/ft-discrete-returns/lib/discrete-returns.reducer', '../../components/products/performance/ft-discrete-returns/lib/etf/discrete-returns.reducer', '../../components/products/performance/ft-backtested-performance-annualised/lib/etf/backtested-performance-annualised.reducer', '../../components/products/performance/ft-backtested-performance-calendar/lib/etf/backtested-performance-calendar.reducer', '../../components/products/performance/ft-backtested-performance-cumulative/lib/etf/backtested-performance-cumulative.reducer', '../../components/products/tax/ft-german-tax/lib/etf/german-tax.reducer', '../../components/products/performance/ft-performance-risk-statistics/lib/gw/performance-risk-statistics.reducer', '../../components/products/portfolio/lib/etf/portfolio-chart.reducer', '../../components/products/portfolio/ft-portfolio-statistics-and-positions/lib/etf/portfolio-statistics-and-positions.reducer', '../../components/products/portfolio/ft-holdings/etf/lib/etf/holdings.reducer', '../../components/products/portfolio/ft-holdings/etf/lib/holdings.reducer', '../../components/products/portfolio/ft-geographic-allocation/etf/lib/etf/geographic-allocation.reducer', '../../components/products/portfolio/ft-portfolio-no-data-message/lib/portfolio-no-data-message.reducer'], function (exports, _combineProductsReducers, _marketingReducers, _general, _labelLoader, _fundDetails, _configLoader, _ftModal, _caveats, _caveats2, _ppss, _findAFund, _performanceCumulative, _performanceAnnualised, _fundInformation, _tradingInformation, _ftTradingInformation, _fundStaticBar, _fundAlert, _ppss2, _pricingDistribution, _pricingDistribution2, _performanceCumulative2, _performanceAnnualised2, _calendarYearReturns, _calendarYearReturns2, _discreteReturns, _discreteReturns2, _backtestedPerformanceAnnualised, _backtestedPerformanceCalendar, _backtestedPerformanceCumulative, _germanTax, _performanceRiskStatistics, _portfolioChart, _portfolioStatisticsAndPositions, _holdings, _holdings2, _geographicAllocation, _portfolioNoDataMessage) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.reducers = undefined;\n var reducers = exports.reducers = {\n products: (0, _combineProductsReducers.combineProductsReducers)({\n general: [_fundDetails.fundDetailsReducer, _labelLoader.labelLoader, _configLoader.configurationLoader, _caveats2.caveatsReducer, _caveats.caveatsReducer, _ftModal.modalReducer, _fundAlert.fundAlert, _ppss.ppss, _ppss2.ppss, _findAFund.findAFund, _pricingDistribution.pricingDistribution, _performanceCumulative.performanceCumulative, _performanceAnnualised.performanceAnnualised, _calendarYearReturns.calendarYearReturns, _discreteReturns.discreteReturns, _holdings2.holdings, _germanTax.germanTax, _geographicAllocation.geographicAllocationReducer, _portfolioChart.portfolioChartReducer],\n specific: [_portfolioStatisticsAndPositions.portfolioStatisticsAndPositions, _performanceCumulative2.performanceCumulative, _performanceAnnualised2.performanceAnnualised, _calendarYearReturns2.calendarYearReturns, _discreteReturns2.discreteReturns, _backtestedPerformanceAnnualised.backtestedPerformanceAnnualised, _backtestedPerformanceCalendar.backtestedPerformanceCalendar, _backtestedPerformanceCumulative.backtestedPerformanceCumulative, _portfolioNoDataMessage.portfolioNoDataMessageReducer, _holdings.holdings, _fundInformation.fundInformation, _tradingInformation.tradingInformation, _ftTradingInformation.ftTradingInformation, _pricingDistribution2.pricingDistribution, _performanceRiskStatistics.performanceRiskStatistics, _fundStaticBar.fundStaticBar]\n }),\n marketing: _marketingReducers.marketingReducers,\n general: _general.general\n };\n});\r\ndefine('configuration/etf/state',['exports', '../common/configure'], function (exports, _configure) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getState = getState;\n function getState() {\n var state = (0, _configure.getInitialState)();\n\n state.products.app.ppss.config.showPerformanceTab = false;\n state.products.app.ppss.config.showEtfTab = true;\n state.products.app.ppss.config.showTer = false;\n state.products.app.ppss.config.showOngoingCharges = true;\n state.products.app.ppss.config.performanceViewOptions = [];\n state.products.app.ppss.currentTable = 'ETF';\n\n state.products.app.ppss.findAFund.searchProperties = [{ name: 'FUND_NAME_FULL', dataKey: 'fundNameFull' }, { name: 'ASSET_CLASS', dataKey: 'assetClass' }, { name: 'CURRENCY', dataKey: 'currency' }, { name: 'DOMICILE', dataKey: 'domicile' }, { name: 'INCOME_USE', dataKey: 'incomeUse' }, { name: 'ISIN', dataKey: 'isin' }];\n\n return state;\n }\n});\r\ndefine('components/products/overview/ft-fund-information/etf/ft-fund-information',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundInformation = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtFundInformation = exports.FtFundInformation = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtFundInformation, _ReduxComponentBase);\n\n function FtFundInformation(store, beans, element) {\n _classCallCheck(this, FtFundInformation);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _initDefineProp(_this, 'currentShareClass', _descriptor, _this);\n\n _this.store = store;\n _this.fundId = _this.fundId = element.getAttribute('fund-id');\n _this.beans = beans.component.fundInformation;\n var currentState = _this.store.getState();\n _this.currentShareClass = (0, _get2.default)(currentState, 'products.app.currentShareClass', false);\n _this.segment = (0, _get2.default)(currentState, 'general.segment');\n\n _this.currentShareClassChanged();\n return _this;\n }\n\n FtFundInformation.prototype.currentShareClassChanged = function currentShareClassChanged() {\n this.dispatch({\n type: 'POPULATE_FUND_INFORMATION',\n beans: this.beans,\n fundId: this.fundId,\n segment: this.segment,\n shareClassKey: this.currentShareClass\n });\n };\n\n FtFundInformation.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.currentShareClass = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!fundState || !fundState.fundInformation || !this.label) {\n this.isPopulated = false;\n return;\n }\n var vo = fundState.fundInformation;\n\n this.fundInformation = vo.fundInformation;\n this.salesCharges = vo.salesCharges;\n this.identifiers = vo.identifiers;\n this.distributions = vo.distributions;\n this.tradingCharacteristics = vo.tradingCharacteristics;\n\n var halfWayPoint = Math.ceil(vo.fundInformation.data.length / 2);\n this.fundInformationPart1 = vo.fundInformation.data.slice(0, halfWayPoint);\n this.fundInformationPart2 = vo.fundInformation.data.slice(halfWayPoint, vo.fundInformation.data.length);\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtFundInformation;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'currentShareClass', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/overview/ft-trading-information/etf/ft-trading-information',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTradingInformation = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtTradingInformation = exports.FtTradingInformation = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtTradingInformation, _ReduxComponentBase);\n\n FtTradingInformation.prototype.selectedExchangeChanged = function selectedExchangeChanged() {\n this.dispatch({\n type: 'TRADING_INFORMATION_EXCHANGE_CHANGE',\n fundId: this.fundId,\n cid: this.cid,\n data: this.selectedExchange\n });\n };\n\n FtTradingInformation.prototype.changeSort = function changeSort(filterName) {\n this.dispatch({\n type: 'TRADING_INFORMATION_SORT_CHANGE',\n fundId: this.fundId,\n cid: this.cid,\n data: filterName\n });\n };\n\n function FtTradingInformation(store, beans, element) {\n _classCallCheck(this, FtTradingInformation);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.hasData = false;\n _this.filteredExchanges = [];\n _this.exchangeNames = {};\n _this.sortFilters = {};\n\n _initDefineProp(_this, 'selectedExchange', _descriptor, _this);\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.dispatch({\n type: 'POPULATE_TRADING_INFORMATION',\n beans: beans.component.tradingInformation,\n fundId: _this.fundId,\n cid: _this.cid,\n data: element.getAttribute('default-exchange') || ''\n });\n return _this;\n }\n\n FtTradingInformation.prototype.mapState = function mapState(newState) {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n var filteredExchanges = (0, _get2.default)(fundState, 'tradingInformation.filteredExchanges', false);\n var totalExchanges = (0, _get2.default)(fundState, 'tradingInformation.exchanges', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (filteredExchanges && this.label) {\n this.filteredExchanges = filteredExchanges;\n this.exchangeNames = (0, _get2.default)(fundState, 'tradingInformation.exchangeNames', []);\n this.selectedExchange = (0, _get2.default)(fundState, 'tradingInformation.selectedExchange', '');\n this.sortFilters = (0, _get2.default)(fundState, 'tradingInformation.sortFilters', {});\n this.isPopulated = true;\n this.hasData = totalExchanges.length !== 0;\n } else {\n this.filteredExchanges = [];\n this.exchangeNames = {};\n this.selectedExchange = '';\n this.sortFilters = {};\n this.isPopulated = false;\n this.hasData = false;\n }\n };\n\n return FtTradingInformation;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'selectedExchange', [_aureliaFramework.bindable], {\n enumerable: true,\n initializer: function initializer() {\n return '';\n }\n })), _class2)) || _class);\n});\r\ndefine('components/products/performance/ft-backtested-performance-annualised/etf/ft-backtested-performance-annualised',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtBacktestedPerformanceAnnualised = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtBacktestedPerformanceAnnualised = exports.FtBacktestedPerformanceAnnualised = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtBacktestedPerformanceAnnualised, _ReduxComponentBase);\n\n function FtBacktestedPerformanceAnnualised(store, beans, element) {\n _classCallCheck(this, FtBacktestedPerformanceAnnualised);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.chartData = [];\n _this.chartOptions = {};\n\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = beans.component.backtestedPerformance;\n _this.backtestedPerformanceHistory = beans.component.backtestedPerformanceHistory;\n _this.populateData(store);\n return _this;\n }\n\n FtBacktestedPerformanceAnnualised.prototype.populateData = function populateData(store) {\n var currentState = store.getState();\n var segment = (0, _get2.default)(currentState, 'general.segment');\n this.dispatch({\n type: 'POPULATE_BACKTESTED_PERFORMANCE_ANNUALISED',\n beans: this.performanceBeans,\n fundId: this.fundId,\n segment: segment\n });\n };\n\n FtBacktestedPerformanceAnnualised.prototype.checkFundState = function checkFundState(fundState) {\n var fundStateCond = true;\n if (!this.label || !fundState || !fundState.backtestedPerformanceAnnualised || !this.checkFundStatePC(fundState)) {\n fundStateCond = false;\n }\n return fundStateCond;\n };\n\n FtBacktestedPerformanceAnnualised.prototype.checkFundStatePC = function checkFundStatePC(fundState) {\n var fundStateCondPF = true;\n if ((!fundState.backtestedPerformanceAnnualised.performances || !fundState.backtestedPerformanceAnnualised.performances.tableData) && !fundState.backtestedPerformanceAnnualised.error) {\n fundStateCondPF = false;\n }\n return fundStateCondPF;\n };\n\n FtBacktestedPerformanceAnnualised.prototype.mapState = function mapState(newState) {\n try {\n var fundState = void 0;\n this.logger.info('mapState()');\n fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.checkFundState(fundState)) {\n this.isPopulated = false;\n return;\n }\n\n if (fundState.backtestedPerformanceAnnualised.error) {\n this.isPopulated = true;\n this.hasErrored = true;\n return;\n }\n\n this.tableHeaders = fundState.backtestedPerformanceAnnualised.tableHeaders;\n this.performances = fundState.backtestedPerformanceAnnualised.performances.tableData;\n\n if (fundState.backtestedPerformanceAnnualised.error || fundState.backtestedPerformanceAnnualised.performances.tableData.rows.length === 0) {\n this.isPopulated = true;\n this.bm1DataTriggered = true;\n this.bm2DataTriggered = true;\n this.hasErrored = true;\n return;\n }\n\n this.asOfDate = fundState.backtestedPerformanceAnnualised.performances.tableData.rows[0].asOfDate;\n this.chartCategories = [this.label.get('1-yr'), this.label.get('3-yr'), this.label.get('5-yr'), this.label.get('10-yr'), this.label.get('15-yr')];\n this.chartItems = fundState.backtestedPerformanceAnnualised.performances.graphData;\n\n var chartItems = this.chartItems;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n this.chartData = aryChartData;\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtBacktestedPerformanceAnnualised;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/performance/ft-backtested-performance-calendar/etf/ft-backtested-performance-calendar',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtBacktestedPerformanceCalendar = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtBacktestedPerformanceCalendar = exports.FtBacktestedPerformanceCalendar = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtBacktestedPerformanceCalendar, _ReduxComponentBase);\n\n function FtBacktestedPerformanceCalendar(store, beans, element) {\n _classCallCheck(this, FtBacktestedPerformanceCalendar);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.chartData = [];\n _this.chartOptions = {};\n\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = beans.component.backtestedPerformance;\n _this.backtestedPerformanceHistory = beans.component.backtestedPerformanceHistory;\n _this.populateData(store);\n return _this;\n }\n\n FtBacktestedPerformanceCalendar.prototype.populateData = function populateData(store) {\n var currentState = store.getState();\n var segment = (0, _get2.default)(currentState, 'general.segment');\n this.dispatch({\n type: 'POPULATE_BACKTESTED_PERFORMANCE_CALENDAR',\n beans: this.performanceBeans,\n fundId: this.fundId,\n segment: segment\n });\n };\n\n FtBacktestedPerformanceCalendar.prototype.mapState = function mapState(newState) {\n try {\n this.logger.info('mapState()');\n\n this.label = (0, _get2.default)(newState, 'products.label');\n\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n\n if (!this.label || !fundState || !fundState.backtestedPerformanceCalendar || !fundState.backtestedPerformanceCalendar.benchMrkList && !fundState.backtestedPerformanceCalendar.error) {\n this.isPopulated = false;\n return;\n }\n\n if (fundState.backtestedPerformanceCalendar.error) {\n this.isPopulated = true;\n this.bm1DataTriggered = true;\n this.hasErrored = true;\n return;\n }\n\n this.tableHeaders = fundState.backtestedPerformanceCalendar.tableHeaders;\n this.performances = fundState.backtestedPerformanceCalendar.performances.tableData;\n this.asOfDate = fundState.backtestedPerformanceCalendar.performances.tableData.rows[0].asOfDate;\n\n this.chartCategories = this.tableHeaders;\n this.chartItems = fundState.backtestedPerformanceCalendar.performances.graphData;\n\n var chartItems = this.chartItems;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n this.chartData = aryChartData;\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtBacktestedPerformanceCalendar;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/performance/ft-backtested-performance-cumulative/etf/ft-backtested-performance-cumulative',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', '../../../../../configuration/il8n/currency', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _currency, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtBacktestedPerformanceCumulative = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtBacktestedPerformanceCumulative = exports.FtBacktestedPerformanceCumulative = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtBacktestedPerformanceCumulative, _ReduxComponentBase);\n\n function FtBacktestedPerformanceCumulative(store, beans, element) {\n _classCallCheck(this, FtBacktestedPerformanceCumulative);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.hasErrored = false;\n _this.chartData = [];\n _this.chartOptions = {};\n\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = beans.component.backtestedPerformance;\n _this.backtestedPerformanceHistory = beans.component.backtestedPerformanceHistory;\n _this.populateData(store);\n return _this;\n }\n\n FtBacktestedPerformanceCumulative.prototype.populateData = function populateData(store) {\n var currentState = store.getState();\n var segment = (0, _get2.default)(currentState, 'general.segment');\n this.dispatch({\n type: 'POPULATE_BACKTESTED_PERFORMANCE_CUMULATIVE',\n beans: this.performanceBeans,\n fundId: this.fundId,\n segment: segment\n });\n };\n\n FtBacktestedPerformanceCumulative.prototype.populateBM = function populateBM(fundState, bmrkId) {\n var bmNr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var bm1State = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var bm1Data = null;\n if (bm1State) bm1Data = bm1State.backtestedPerformanceCumulative.bm1Data;\n this.dispatch({\n type: 'POPULATE_BACKTESTED_PERFORMANCE_BM' + bmNr + '_CUMULATIVE',\n beans: this.backtestedPerformanceHistory,\n fundId: bmrkId,\n fundData: fundState.backtestedPerformanceCumulative,\n bm1Data: bm1Data\n });\n };\n\n FtBacktestedPerformanceCumulative.prototype.checkFundState = function checkFundState(fundState) {\n var fundStateCond = true;\n if (!this.label || !fundState || !fundState.backtestedPerformanceCumulative || !this.checkFundStatePC(fundState)) {\n fundStateCond = false;\n }\n return fundStateCond;\n };\n\n FtBacktestedPerformanceCumulative.prototype.checkFundStatePC = function checkFundStatePC(fundState) {\n var fundStateCondPF = true;\n if ((!fundState.backtestedPerformanceCumulative.performances || !fundState.backtestedPerformanceCumulative.baseFundDetails || !fundState.backtestedPerformanceCumulative.performances.tableData) && !fundState.backtestedPerformanceCumulative.error) {\n fundStateCondPF = false;\n }\n return fundStateCondPF;\n };\n\n FtBacktestedPerformanceCumulative.prototype.checkBmState = function checkBmState(bmState) {\n var bmStateCond = true;\n if (!bmState || (!bmState.backtestedPerformanceCumulative || !bmState.backtestedPerformanceCumulative.bmDataRead) && !bmState.backtestedPerformanceCumulative.error) {\n bmStateCond = false;\n }\n return bmStateCond;\n };\n\n FtBacktestedPerformanceCumulative.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n\n if (!this.checkFundState(fundState)) {\n this.isPopulated = false;\n return;\n }\n\n if (fundState.backtestedPerformanceCumulative.error) {\n this.isPopulated = true;\n this.hasErrored = true;\n return;\n }\n\n this.bmrkId = fundState.backtestedPerformanceCumulative.benchMrkList[0].bmrkId.val;\n\n if (!this.bm1DataTriggered) {\n this.bm1DataTriggered = true;\n this.populateBM(fundState, this.bmrkId);\n }\n\n var bm1State = (0, _mapStateUtils.getFundState)(newState, this.bmrkId);\n if (!this.checkBmState(bm1State)) {\n this.isPopulated = false;\n return;\n }\n\n if (bm1State.backtestedPerformanceCumulative.error) {\n this.isPopulated = true;\n this.bm2DataTriggered = true;\n this.hasErrored = true;\n return;\n }\n\n this.bmrk2Id = fundState.backtestedPerformanceCumulative.benchMrkList[1].bmrkId.val;\n if (!this.bm2DataTriggered) {\n this.bm2DataTriggered = true;\n this.populateBM(fundState, this.bmrk2Id, 2, bm1State);\n }\n\n var bm2State = (0, _mapStateUtils.getFundState)(newState, this.bmrk2Id);\n if (!this.checkBmState(bm2State)) {\n this.isPopulated = false;\n return;\n }\n\n this.performances = bm2State.backtestedPerformanceCumulative.performances.tableData;\n this.asOfDate = bm2State.backtestedPerformanceCumulative.performances.tableData.rows[0].asOfDate;\n this.fundCurrency = bm2State.backtestedPerformanceCumulative.baseFundDetails.fundBaseCur.val;\n this.dates = bm2State.backtestedPerformanceCumulative.dates;\n\n this.chartData = bm2State.backtestedPerformanceCumulative.graphData;\n this.graphNames = bm2State.backtestedPerformanceCumulative.graphNames;\n var currencySymbol = _currency.symbols.get(this.fundCurrency.toUpperCase());\n if (typeof currencySymbol === 'undefined') currencySymbol = '';\n this.valPrefix = currencySymbol;\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtBacktestedPerformanceCumulative;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/etf/ft-calendar-year-returns',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCalendarYearReturns = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtCalendarYearReturns = exports.FtCalendarYearReturns = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtCalendarYearReturns, _ReduxComponentBase);\n\n function FtCalendarYearReturns(store, beans, element) {\n _classCallCheck(this, FtCalendarYearReturns);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.currentTab = null;\n _this.tabs = [{\n key: 'MONTH_END',\n labelKey: 'month-end',\n ariaControl: 'calendar-year-return-monthly-pane',\n isActive: false\n }, {\n key: 'QUARTER_END',\n labelKey: 'quarter-end',\n ariaControl: 'calendar-year-total-return-quarterly-pane',\n isActive: false\n }];\n\n _this.fundId = element.getAttribute('fund-id');\n _this.calendarYearBeans = beans.component.performanceSimply;\n _this.taxYear = element.getAttribute('tax-year');\n\n _this.dispatch({\n type: 'POPULATE_CALENDAR_YEAR_RETURNS',\n beans: _this.calendarYearBeans,\n fundId: _this.fundId,\n taxYear: _this.taxYear\n });\n\n _this.dispatch({\n type: 'CALENDAR_YEAR_RETURNS_CHANGE_TAB',\n tab: 'MONTH_END'\n });\n return _this;\n }\n\n FtCalendarYearReturns.prototype.changeTab = function changeTab(key) {\n this.dispatch({\n type: 'CALENDAR_YEAR_RETURNS_CHANGE_TAB',\n tab: key\n });\n };\n\n FtCalendarYearReturns.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n this.logger.debug('mapState() - FtCalendarYearReturns');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.currentTab = (0, _get2.default)(newState, 'products.app.performance.calendarYearReturns.currentTab');\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.currentTab || !this.label || !fundState || !fundState.calendarYearReturns) {\n this.isPopulated = false;\n return;\n }\n this.data = fundState.calendarYearReturns.data;\n this.tableData = fundState.calendarYearReturns[this.currentTab].calData;\n this.dateGroup = fundState.calendarYearReturns[this.currentTab].dateGroup;\n this.tableData.years.sort(function (a, b) {\n return b - a;\n });\n this.chartCategories = this.tableData.years;\n\n var chartData = fundState.calendarYearReturns[this.currentTab].chartData;\n var chartItems = chartData;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n\n this.chartData = aryChartData;\n\n this.tabs = this.tabs.map(function (tab) {\n tab.value = _this2.label[tab.labelKey];\n tab.isActive = tab.key === _this2.currentTab;\n return tab;\n });\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtCalendarYearReturns;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/performance/ft-performance-annualised/etf/ft-performance-annualised',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPerformanceAnnualised = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtPerformanceAnnualised = exports.FtPerformanceAnnualised = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtPerformanceAnnualised, _ReduxComponentBase);\n\n function FtPerformanceAnnualised(store, beans, element) {\n _classCallCheck(this, FtPerformanceAnnualised);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.currentTimePeriodTab = null;\n _this.TimePeriodTabs = [{\n key: 'MONTH_END',\n labelKey: 'month-end',\n ariaControl: 'performance-annualised-monthly-pane',\n isActive: false\n }, {\n key: 'QUARTER_END',\n labelKey: 'quarter-end',\n ariaControl: 'performance-annualised-quarterly-pane',\n isActive: false\n }];\n _this.chartData = [];\n _this.chartOptions = {};\n\n _this.fundId = element.getAttribute('fund-id');\n _this.performanceBeans = beans.component.performanceSimply;\n\n _this.dispatch({\n type: 'POPULATE_PERFORMANCE_ANNUALISED',\n beans: _this.performanceBeans,\n fundId: _this.fundId,\n segment: store.getState().general.segment\n });\n\n _this.dispatch({\n type: 'PERFORMANCE_ANNUALISED_DEFAULT_STATE',\n timePeriodTab: 'MONTH_END'\n });\n return _this;\n }\n\n FtPerformanceAnnualised.prototype.changeTimePeriodTab = function changeTimePeriodTab(key) {\n this.logger.info('Disptaching PERFORMANCE_ANNUALISED_CHANGE_TIME_PERIOD_TAB');\n this.dispatch({\n type: 'PERFORMANCE_ANNUALISED_CHANGE_TIME_PERIOD_TAB',\n tab: key\n });\n };\n\n FtPerformanceAnnualised.prototype.mapState = function mapState(newState) {\n var _this2 = this;\n\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n\n this.currentTab = (0, _get2.default)(newState, 'products.app.performance.performanceAnnualised.currentTimePeriodTab');\n this.currentTimePeriodTab = (0, _get2.default)(fundState, 'performanceAnnualised[' + this.currentTab + '].label');\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.currentTab || !this.currentTimePeriodTab || !this.label) {\n this.isPopulated = false;\n return;\n }\n\n this.tableHeaders = fundState.performanceAnnualised.tableHeaders;\n this.navDate = fundState.performanceAnnualised.navDate;\n this.performances = fundState.performanceAnnualised[this.currentTab].performances;\n\n this.chartCategories = [this.label.get('1-yr'), this.label.get('3-yr'), this.label.get('5-yr'), this.label.get('10-yr'), this.label.get('15-yr'), this.label.get('inception')];\n this.chartData = this.performances.graphData;\n\n if (this.chartData) {\n var chartItems = this.chartData;\n var chartType = 'column';\n var aryChartData = [];\n for (var _iterator = Object.keys(chartItems), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n var thisChartItem = {\n data: chartItems[key],\n type: chartType\n };\n aryChartData.push(thisChartItem);\n }\n this.chartData = aryChartData;\n }\n\n this.TimePeriodTabs = this.TimePeriodTabs.map(function (tab) {\n tab.value = _this2.label[tab.labelKey];\n tab.isActive = tab.key === _this2.currentTab;\n return tab;\n });\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPerformanceAnnualised;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-geographic-allocation/etf/ft-geographic-allocation',['exports', 'aurelia-framework', '../../common/ft-generic-hierarchical-component-base', 'lodash/get'], function (exports, _aureliaFramework, _ftGenericHierarchicalComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGeographicAllocation = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtGeographicAllocation = exports.FtGeographicAllocation = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtGenericHierarchica) {\n _inherits(FtGeographicAllocation, _FtGenericHierarchica);\n\n function FtGeographicAllocation(store, beans, element) {\n _classCallCheck(this, FtGeographicAllocation);\n\n var _this = _possibleConstructorReturn(this, _FtGenericHierarchica.call(this, store));\n\n _this.isPopulated = false;\n _this.hasRequestBenchMarkData = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioGeographicAllocation;\n _this.portfolioBeans.push(_this.cid);\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_GEOGRAPHIC_ALLOCATION',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'geographic-allocation',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtGeographicAllocation.prototype.requestBenchMarkData = function requestBenchMarkData() {\n this.dispatch({\n type: 'POPULATE_GEOGRAPHIC_ALLOCATION_BMDATA',\n beans: this.portfolioBeans,\n fundId: this.data.bmrkId,\n cid: this.cid\n });\n };\n\n FtGeographicAllocation.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.geoAllocation[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n this.chartData = [{\n data: chartState.chart,\n type: 'bar',\n colorByPoint: true\n }];\n\n if (chartState.isSuppressed || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n if (chartState.missingBenchmarkData) {\n if (!this.hasRequestBenchMarkData) {\n this.hasRequestBenchMarkData = true;\n this.requestBenchMarkData();\n }\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtGeographicAllocation;\n }(_ftGenericHierarchicalComponentBase.FtGenericHierarchicalComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-holdings/etf/ft-holdings',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../../../lib/paging-utils', '../../../../../lib/sort-utils', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _pagingUtils, _sortUtils, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtHoldings = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\n var FtHoldings = exports.FtHoldings = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec2 = (0, _aureliaFramework.computedFrom)('pagingInfo'), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtHoldings, _ReduxComponentBase);\n\n function FtHoldings(store, beans, element) {\n _classCallCheck(this, FtHoldings);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'currentPageNumber', _descriptor, _this);\n\n _initDefineProp(_this, 'searchString', _descriptor2, _this);\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.path = store.getState().general.path;\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_HOLDINGS_STATE',\n beans: beans.component.portfolioHoldings,\n fundId: _this.fundId,\n portfolioComponent: 'holdings',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtHoldings.prototype.changeSort = function changeSort(name) {\n this.dispatch({\n type: 'HOLDINGS_CHANGE_SORT',\n columnName: name\n });\n };\n\n FtHoldings.prototype.goToPage = function goToPage(page) {\n this.dispatch({\n type: 'HOLDINGS_CHANGE_PAGE',\n page: page\n });\n };\n\n FtHoldings.prototype.currentPageNumberChanged = function currentPageNumberChanged(page) {\n this.goToPage(page);\n };\n\n FtHoldings.prototype.searchStringChanged = function searchStringChanged(newSearchString) {\n this.dispatch({\n type: 'HOLDINGS_CHANGE_SEARCH',\n searchString: newSearchString\n });\n };\n\n FtHoldings.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label || !fundState || !fundState.holdings) {\n this.isPopulated = false;\n return;\n }\n\n var holdingsAppState = newState.products.app.holdings;\n this.sort = holdingsAppState.sort;\n this.searchString = holdingsAppState.search.searchString;\n\n this.holdings = fundState.holdings;\n\n var allHoldings = fundState.holdings.holdingsList.filter(this._createFilterFunction(holdingsAppState.search)).sort(this._createSortFunction(this.sort));\n\n this.pagingInfo = (0, _pagingUtils.getPagingInfo)(allHoldings.length, holdingsAppState.paging.pageSize, holdingsAppState.paging.currentPage);\n\n var currentPage = this.pagingInfo.currentPage;\n this.currentPageNumber = currentPage ? currentPage.page : null;\n this.paginatedRows = allHoldings.filter(function (holding, index) {\n var recordNumber = index + 1;\n return currentPage && currentPage.startRecord <= recordNumber && recordNumber <= currentPage.endRecord;\n });\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n FtHoldings.prototype._createFilterFunction = function _createFilterFunction(search) {\n if (search.searchString) {\n var searchString = search.searchString.toLowerCase();\n var fields = search.fields;\n return function (holding) {\n return fields.reduce(function (success, field) {\n return success || (0, _get2.default)(holding, field, '').toLowerCase().includes(searchString);\n }, false);\n };\n }\n return function (holding) {\n return true;\n };\n };\n\n FtHoldings.prototype._createSortFunction = function _createSortFunction(sort) {\n var sortColumn = Array.from(sort.columns.values()).find(function (col) {\n return col.direction;\n });\n this.logger.debug('sortColumn', sortColumn);\n var dataKey = sortColumn.dataKey;\n var secondaryCompare = sort.secondary ? (0, _sortUtils.createCompare)(sort.secondary.dataKey, sort.secondary.direction, { isNumeric: sort.secondary.isNumeric, isDate: sort.secondary.isDate }) : null;\n return (0, _sortUtils.createCompare)(dataKey, sortColumn.direction, { secondaryCompare: secondaryCompare, isNumeric: sortColumn.isNumeric, isDate: sortColumn.isDate });\n };\n\n _createClass(FtHoldings, [{\n key: 'hasResults',\n get: function get() {\n return this.pagingInfo.totalRecords > 0;\n }\n }, {\n key: 'downloadUrl',\n get: function get() {\n return this.path + '?gwbid=gw.portfolio';\n }\n }]);\n\n return FtHoldings;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'currentPageNumber', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'searchString', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _applyDecoratedDescriptor(_class2.prototype, 'hasResults', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'hasResults'), _class2.prototype)), _class2)) || _class);\n});\r\ndefine('components/products/portfolio/ft-portfolio-statistics-and-positions/etf/ft-portfolio-statistics-and-positions',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPortfolioStatisticsAndPositions = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtPortfolioStatisticsAndPositions = exports.FtPortfolioStatisticsAndPositions = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtPortfolioStatisticsAndPositions, _ReduxComponentBase);\n\n function FtPortfolioStatisticsAndPositions(store, beans, element) {\n _classCallCheck(this, FtPortfolioStatisticsAndPositions);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioStatisticsAndPositions;\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_STATISTICS_AND_POSITIONS',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtPortfolioStatisticsAndPositions.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n var labels = (0, _get2.default)(newState, 'products.label');\n if (!fundState || !fundState.portfolioStatisticsAndPositions || !fundState.portfolioStatisticsAndPositions.isValid || fundState.portfolioStatisticsAndPositions.data.length === 0 || !labels) {\n this.isPopulated = false;\n return;\n }\n this.label = labels;\n var data = fundState.portfolioStatisticsAndPositions.data;\n\n var midWayPoint = Math.ceil(data.length / 3);\n this.dataFirstThird = data.slice(0, midWayPoint);\n this.dataSecondThird = data.slice(midWayPoint, midWayPoint * 2);\n this.dataLastThird = data.slice(midWayPoint * 2, data.length);\n\n midWayPoint = Math.ceil(data.length / 2);\n this.dataFirstHalf = data.slice(0, midWayPoint);\n this.dataSecondHalf = data.slice(midWayPoint, data.length);\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPortfolioStatisticsAndPositions;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-sector-allocation/etf/ft-sector-allocation',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtSectorAllocation = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtSectorAllocation = exports.FtSectorAllocation = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtSectorAllocation, _ReduxComponentBase);\n\n function FtSectorAllocation(store, beans, element) {\n _classCallCheck(this, FtSectorAllocation);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n _this.hasRequestBenchMarkData = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n chartType: 'SECTOR_ALLOCATION',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'sector-allocation',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtSectorAllocation.prototype.requestBenchMarkData = function requestBenchMarkData(benchmarkId) {\n this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART_BMDATA',\n chartType: 'SECTOR_ALLOCATION',\n beans: this.portfolioBeans,\n fundId: benchmarkId,\n cid: this.cid\n });\n };\n\n FtSectorAllocation.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n if (chartState.missingBenchmarkData) {\n if (!this.hasRequestBenchMarkData) {\n this.hasRequestBenchMarkData = true;\n this.requestBenchMarkData(chartState.bmrkId);\n }\n this.isPopulated = false;\n return;\n }\n\n this.chartData = [{\n data: chartState.chart,\n type: 'bar',\n colorByPoint: true\n }];\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtSectorAllocation;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/lib/etf/portfolio-chart.reducer',['exports', 'lodash/set', 'lodash/get', 'lodash/find', '../../util/util', '../../../common/util/utils-config', '../../../common/util/utils-fund-details', '../../../lib/decorators/config-decorator', 'aurelia-framework'], function (exports, _set, _get, _find, _util, _utilsConfig, _utilsFundDetails, _configDecorator, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CHART_TYPES_ENUM = undefined;\n exports.portfolioChartReducer = portfolioChartReducer;\n\n var _set2 = _interopRequireDefault(_set);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('portfolio-chart-reducer');\n var CHART_TYPES_ENUM = exports.CHART_TYPES_ENUM = {\n 'MARKET_CAPITAL_ALLOCATION': {\n labelId: 'market-capitalisation-heading',\n caveatId: 'MarketCapitalisation',\n dataKey: 'MARKET_CAPITAL_ALLOCATION',\n options: {\n sorted: true\n }\n },\n 'SECTOR_ALLOCATION': {\n labelId: 'sector-allocation-heading',\n caveatId: 'SectorAllocation',\n dataKey: 'SECTOR_ALLOCATION',\n options: {\n sorted: true,\n tableMappingKeys: {\n val: 'val.val',\n bmVal: null\n }\n },\n forceChart: true\n },\n\n 'ASSET_ALLOCATION': {\n dataKey: 'ASSET_ALLOCATION',\n caveatId: 'AssetAllocation',\n options: {\n sorted: false\n },\n forceChart: true\n },\n 'CURRENCY_ALLOCATION': {\n dataKey: 'CURRENCY_ALLOCATION',\n caveatId: 'CurrencyBreakdown',\n options: {\n sorted: false\n },\n forceChart: true\n },\n 'GEOGRAPHIC_BREAKDOWN': {\n caveatId: 'GeographicBreakdown',\n dataKey: 'COUNTRY_ALLOCATION',\n options: {},\n forceChart: false\n },\n 'MANAGER_ALLOCATION': {\n dataKey: 'MANAGER_ALLOCATION'\n },\n 'COUPON_ALLOCATION': {\n dataKey: 'COUPON_ALLOCATION'\n },\n 'QUALITY_ALLOCATION': {\n dataKey: 'QUALITY_ALLOCATION'\n },\n 'PRODUCT_AUM': {\n dataKey: 'PRODUCT_AUM'\n },\n 'HEDGE_ALLOCATION': {\n dataKey: 'HEDGE_ALLOCATION'\n },\n 'SECURITY_EXPOSURE': {\n dataKey: 'SECURITY_EXPOSURE'\n },\n 'K2_SECTOR_ALLOCATION': {\n dataKey: 'K2_SECTOR_ALLOCATION'\n },\n 'K2_PORTFOLIO_ALLOCATION': {\n dataKey: 'K2_PORTFOLIO_ALLOCATION'\n },\n 'ASSET_EXPOSURE': {\n dataKey: 'ASSET_EXPOSURE'\n },\n 'ASSET_SECURITY_EXPOSURE': {\n dataKey: 'ASSET_SECURITY_EXPOSURE'\n }\n };\n\n function portfolioChartReducer(state, action) {\n var cid = action.cid;\n var newState = void 0;\n var key = void 0;\n var chartObj = void 0;\n switch (action.type) {\n case 'POPULATE_PORTFOLIO_CHART_SUCCESS':\n if (!action.cid) {\n logger.error('no cid given');\n return state;\n }\n if (!CHART_TYPES_ENUM[action.chartType]) {\n logger.error('invalid chart type given : ' + action.chartType);\n return state;\n }\n var _action$json = action.json,\n rawPortfolioFeed = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2],\n rawPageJsonConfig = _action$json[3];\n\n chartObj = chartDataFactory(rawPortfolioFeed, rawFundDetails, rawConfig, rawPageJsonConfig, action);\n newState = Object.assign({}, state);\n key = !action.subKey ? 'app.portfolio.chart[' + cid + ']' : 'app.portfolio.chart[' + cid + '][' + action.subKey + ']';\n (0, _set2.default)(newState, key, chartObj);\n return newState;\n\n case 'POPULATE_PORTFOLIO_CHART_BMDATA_SUCCESS':\n if (!action.cid) {\n logger.error('no cid given');\n return state;\n }\n if (!CHART_TYPES_ENUM[action.chartType]) {\n logger.error('invalid chart type given : ' + action.chartType);\n return state;\n }\n key = !action.subKey ? 'app.portfolio.chart[' + cid + ']' : 'app.portfolio.chart[' + cid + '][' + action.subKey + ']';\n chartObj = (0, _get2.default)(state, key);\n if (!chartObj) {\n logger.error('no existing chart data to append benchamrk data to');\n return state;\n }\n var _action$json2 = action.json,\n rawBenchmarkPortfolioFeed = _action$json2[0];\n\n chartObj = appendBenchmarkData(chartObj, rawBenchmarkPortfolioFeed, action.chartType);\n\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, key, chartObj);\n return newState;\n default:\n return state;\n }\n }\n\n function chartDataFactory(rawPortfolioFeed, rawFundDetails, rawConfig, rawPageJsonConfig, action) {\n var chartType = action.chartType;\n var chartTypeConfig = CHART_TYPES_ENUM[chartType];\n\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetails);\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, action.portfolioComponent, fundCategory);\n\n if (isSuppressed) {\n return {\n visible: false,\n isSuppressed: true\n };\n }\n\n var rawBreakdowns = (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var currentBreakdown = (0, _find2.default)(rawBreakdowns, { 'type': chartTypeConfig.dataKey });\n if (!currentBreakdown) {\n return {\n visible: false,\n isSuppressedByLackOfData: true\n };\n }\n\n var suppressionCondition = (0, _get2.default)(chartTypeConfig, 'options.suppressionCondition', null);\n if (suppressionCondition && suppressionCondition(decoratedConfig, rawPortfolioFeed, currentBreakdown)) {\n return {\n visible: false,\n isSuppressedByCondition: true\n };\n }\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n var refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n var obj = {\n caveatFootnote: chartTypeConfig.caveatId ? chartTypeConfig.caveatId : 'Portfolio',\n caveatProximal: chartTypeConfig.caveatId ? chartTypeConfig.caveatId + 'Proximal' : 'PortfolioProximal',\n labelId: chartTypeConfig.labelId,\n visible: true,\n refreshRate: refreshRate\n };\n\n var tempBreakdown = _util.portfolioUtils.getEtfSimplifiedBreakdown(currentBreakdown, chartTypeConfig.options);\n obj = Object.assign({}, obj, tempBreakdown);\n\n var rawBenchmarks = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.benchMrkList');\n\n if (rawBenchmarks !== undefined) {\n obj.bmrkId = _util.portfolioUtils.getBenchmarkID(rawBenchmarks);\n }\n obj.missingBenchmarkData = obj.bmrkId !== undefined;\n\n if (chartTypeConfig.forceChart) {\n obj.showChart = true;\n obj.spanRow = true;\n } else {\n var pageJsonConfig = _util.portfolioUtils.parsePageJsonConfig(rawPageJsonConfig);\n obj.showChart = pageJsonConfig.showChart;\n obj.spanRow = pageJsonConfig.spanRow;\n }\n return obj;\n }\n\n function appendBenchmarkData(chartObj, rawBenchmarkPortfolioFeed, chartType) {\n var chartTypeConfig = CHART_TYPES_ENUM[chartType];\n var rawBreakdowns = (0, _get2.default)(rawBenchmarkPortfolioFeed, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var appendBreakdown = (0, _find2.default)(rawBreakdowns, { 'type': chartTypeConfig.dataKey });\n\n var appendOpts = {\n fieldId: 'bmVal',\n nameKey: 'name.val',\n fieldKey: 'val.val',\n appendNonMatched: true\n };\n _util.portfolioUtils.appendTableData(chartObj.table, appendBreakdown, appendOpts);\n chartObj.missingBenchmarkData = false;\n\n return chartObj;\n }\n});\r\ndefine('components/products/tax/ft-german-tax/etf/ft-german-tax',['exports', '../../../../../lib/redux-component-base', 'aurelia-framework', 'lodash/get'], function (exports, _reduxComponentBase, _aureliaFramework, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGermanTax = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3;\n\n var FtGermanTax = exports.FtGermanTax = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtGermanTax, _ReduxComponentBase);\n\n function FtGermanTax(store, beans, element) {\n _classCallCheck(this, FtGermanTax);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _initDefineProp(_this, 'isPopulated', _descriptor, _this);\n\n _initDefineProp(_this, 'funds', _descriptor2, _this);\n\n _initDefineProp(_this, 'asOf', _descriptor3, _this);\n\n _this.funds = [];\n _this.asOf = '—';\n _this.isPopulated = false;\n\n _this.dispatch({\n type: 'POPULATE_GERMAN_TAX',\n beans: beans.component.tax\n });\n return _this;\n }\n\n FtGermanTax.prototype.mapState = function mapState(newState) {\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!newState.products.tax || !this.label) {\n this.funds = [];\n this.asOf = '—';\n this.isPopulated = false;\n return;\n }\n this.funds = newState.products.tax.funds;\n this.asOf = newState.products.tax.asOf;\n this.isPopulated = true;\n };\n\n return FtGermanTax;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'isPopulated', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'funds', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'asOf', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/overview/ft-fund-information/lib/etf/fund-information.reducer',['exports', 'lodash/get', '../../../../lib/reducer-utils', 'aurelia-framework', '../../../../lib/decorators/config-decorator', '../common/fund-information.reducer', '../../../../common/util/utils-fund-details'], function (exports, _get, _reducerUtils, _aureliaFramework, _configDecorator, _fundInformation, _utilsFundDetails) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DISTRIBUTION_FIELDS = exports.INFORMATION_FIELDS = exports.SALES_CHARGE_FIELDS = undefined;\n exports.fundInformation = fundInformation;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-information');\n var SALES_CHARGE_FIELDS = exports.SALES_CHARGE_FIELDS = {\n 'maximum-sales-charge': {\n dataKey: 'fundOverview.fundDet.feeCharges.maxAdmnFee.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE\n },\n 'maintenance-charge': {\n dataKey: 'fundOverview.fundDet.feeCharges.mtnceChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE\n },\n 'management-charge': {\n dataKey: 'fundOverview.fundDet.feeCharges.mgmtChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE\n },\n 'total-expenses': {\n dataKey: 'fundOverview.fundDet.feeCharges.expRatioWthWvr.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'TEROverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'ongoing-charges': {\n dataKey: 'fundOverview.fundDet.feeCharges.ongoingChrgeRatio.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'OngoingChargesOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'total-annual-charge': {\n dataKey: 'fundOverview.fundDet.feeCharges.totAnulChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE\n },\n 'minimum-initial-amount': {\n dataKey: 'fundOverview.fundDet.feeCharges.initSalesChrge.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY\n },\n 'minimum-subsequent-amount': {\n dataKey: 'fundOverview.fundDet.feeCharges.XXX.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY\n }\n };\n\n var INFORMATION_FIELDS = exports.INFORMATION_FIELDS = {\n 'fund-inception-date': {\n dataKey: 'fundOverview.fundDet.fundIncpDt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'fund-based-currency': {\n dataKey: 'fundOverview.fundDet.fundBaseCur.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'share-class-inception-date': {\n dataKey: 'fundOverview.fundDet.fundIncpDt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'share-class-currency': {\n dataKey: 'normalised.currentClass.shClsCur.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'asset-class': {\n dataKey: 'fundDetails.fundCatgry.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'investment-category': {\n dataKey: 'fundOverview.fundDet.etfDet.invstmtCat.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'region': {\n dataKey: 'fundOverview.fundDet.etfDet.region.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'total-net-assets': {\n dataKey: 'fundOverview.portDet.etfStat.totalNetAsset.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY,\n addendumData: {\n asOf: {\n dataKey: 'fundOverview.portDet.etfStat.asOfDateTna.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'TotalNetAssetsOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'investment-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.bmrkName.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'PrimaryBenchmarkOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'underlying-index': {\n dataKey: 'normalised.keyedBenchMrks.INST2.bmrkName.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'SecondaryBenchmarkOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'etf-type': {\n dataKey: 'fundOverview.fundDet.fundStat.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'ETFTypeOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'domicile': {\n dataKey: 'fundOverview.fundDet.etfDet.DOMICILE.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'ucits': {\n dataKey: 'fundOverview.fundDet.etfDet.UCITS.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'methodology': {\n dataKey: 'fundOverview.fundDet.etfDet.methodology.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'MethodologyOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'product-structure': {\n dataKey: 'fundOverview.fundDet.etfDet.prodStructure.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'ProductStructureOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'frequency-of-index-reconstitution': {\n dataKey: 'fundOverview.fundDet.reBalFreq.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'use-of-income': {\n dataKey: 'fundOverview.fundDet.useOfIncome.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'fiscal-year-end': {\n dataKey: 'fundOverview.fundDet.fundMiscDet.fiscYearEndDt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n\n 'custodian': {\n dataKey: 'fundOverview.fundDet.etfDet.custodian.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'CustodianOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'administrator': {\n dataKey: 'fundOverview.fundDet.etfDet.administrator.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'AdministratorOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }\n };\n\n var DISTRIBUTION_FIELDS = exports.DISTRIBUTION_FIELDS = {\n 'distribution-per-unit': {\n dataKey: 'priceDetails.dividend.divPerUnit.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY\n },\n 'distribution-date': {\n dataKey: 'priceDetails.dividend.distDt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'dividend-frequency': {\n dataKey: 'normalised.currentClass.dvndFreq.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'distribution-yield': {\n dataKey: 'priceDetails.dvndYld.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'DistirbutionYieldOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n asOf: {\n dataKey: 'priceDetails.dvndYldAsOfDate.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n updateFreq: {\n dataKey: 'updated-monthly',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }\n };\n\n function fundInformation(state, action) {\n switch (action.type) {\n case 'POPULATE_FUND_INFORMATION_SUCCESS':\n logger.debug('Reducing: POPULATE_FUND_INFORMATION_SUCCESS');\n return Object.assign({}, state, {\n fundInformation: _infoBuilder(action)\n });\n default:\n return state;\n }\n }\n\n function _infoBuilder(action) {\n var _action$json = action.json,\n rawOverview = _action$json[0],\n rawFundDetails = _action$json[1],\n rawPrice = _action$json[2],\n rawConfig = _action$json[3];\n\n var fundOverview = (0, _get2.default)(rawOverview, 'etfFundOverviewValue');\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var priceDetails = (0, _get2.default)(rawPrice, 'globalProductsValue.etfPriceDivValue');\n\n var hasDistributions = (0, _get2.default)(fundDetails, 'distributionFlag.val', '').toLocaleUpperCase() === 'Y';\n\n var shareClasses = (0, _get2.default)(fundOverview, 'fundDet.shClsDet');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var normalised = {};\n normalised.currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n normalised.currentShareClassCode = (0, _get2.default)(normalised.currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n normalised.asOf = (0, _get2.default)(fundOverview, 'fundDet.etfDet.expAsOfDt.val', '—');\n normalised.salesChargesAsOf = (0, _get2.default)(fundOverview, 'fundDet.feeCharges.asOfDate.val', '—');\n normalised.sharesOutstandingAsOf = (0, _get2.default)(fundOverview, 'priceDet.asOfDateForNav.val', '—');\n normalised.sharesOutstandingVal = (0, _get2.default)(fundOverview, 'priceDet.navDetailValue.shreOutStndng.val', '—');\n normalised.distributionsAsOf = (0, _get2.default)(fundOverview, 'priceDet.dividend.distDt.val', '—');\n normalised.distributionsHasData = !!(0, _get2.default)(fundOverview, 'priceDet.dividend.divPerUnit.val', false);\n normalised.baseCurrency = _utilsFundDetails.utilsFundDetails.getFundCurrency(fundDetails);\n normalised.shareClassCurrency = _utilsFundDetails.utilsFundDetails.getShareClassCurrency(fundDetails, normalised.currentShareClassCode);\n normalised.assetClass = _utilsFundDetails.utilsFundDetails.getAssetClass(fundDetails);\n normalised.keyedBenchMrks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, normalised.currentShareClassCode);\n\n var dataRepo = {\n fundOverview: fundOverview,\n fundDetails: fundDetails,\n priceDetails: priceDetails,\n normalised: normalised\n };\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var vehicleConfig = (0, _get2.default)(decoratedConfig, 'overview.investmentVehicles.ETF');\n var desiredSaleChargeFieldIds = (0, _get2.default)(vehicleConfig, 'salesCharges', []);\n var desiredIdentifierFieldIds = (0, _get2.default)(vehicleConfig, 'fundIdentifiers', []);\n var desiredInformationFieldIds = (0, _get2.default)(vehicleConfig, 'fundInformationElements', []);\n var fields = {\n salesChargeFields: (0, _reducerUtils.extractCamelCaseIds)(SALES_CHARGE_FIELDS, desiredSaleChargeFieldIds),\n identifierFields: (0, _reducerUtils.extractCamelCaseIds)(_fundInformation.IDENTIFIER_FIELDS, desiredIdentifierFieldIds),\n informationFields: (0, _reducerUtils.extractCamelCaseIds)(INFORMATION_FIELDS, desiredInformationFieldIds),\n distributionFields: DISTRIBUTION_FIELDS\n };\n\n return (0, _fundInformation.buildFundInformation)(hasDistributions, true, dataRepo, fields);\n }\n});\r\ndefine('components/products/overview/ft-fund-information/lib/etf-gb/fund-information.reducer',['exports', 'lodash/get', 'aurelia-framework', '../etf/fund-information.reducer', '../common/fund-information.reducer'], function (exports, _get, _aureliaFramework, _fundInformation, _fundInformation2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundInformation = fundInformation;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-information');\n function fundInformation(state, action) {\n switch (action.type) {\n case 'POPULATE_FUND_INFORMATION_SUCCESS':\n logger.debug('Reducing: POPULATE_FUND_INFORMATION_SUCCESS for UK');\n var newState = (0, _fundInformation.fundInformation)(state, action);\n if (newState !== state && newState.fundInformation.distributions) {\n var _action$json = action.json,\n rawFundDetails = _action$json[1],\n rawPrice = _action$json[2];\n\n var ukDistributionYield = (0, _get2.default)(rawPrice, 'globalProductsValue.etfPriceDivValue.dvndYldUK.val');\n var assetClass = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.etfDet.asstCls.val');\n newState = (0, _fundInformation2.updateDistributionYield)(newState, ukDistributionYield, assetClass);\n }\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/overview/ft-trading-information/etf/lib/ft-trading-information.reducer',['exports', 'aurelia-framework', '../../../../../../lib/sort-utils'], function (exports, _aureliaFramework, _sortUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DEFAULT_SORT_FILTER = undefined;\n exports.ftTradingInformation = ftTradingInformation;\n exports.getFilteredExchanges = getFilteredExchanges;\n\n\n var logger = _aureliaFramework.LogManager.getLogger('trading-information');\n\n function ftTradingInformation(state, action) {\n var tradingInformation = void 0;\n var exchanges = void 0;\n var filteredExchanges = void 0;\n var selectedExchange = void 0;\n var sortFilters = void 0;\n var sortColumn = void 0;\n switch (action.type) {\n case 'TRADING_INFORMATION_EXCHANGE_CHANGE':\n exchanges = state.tradingInformation.exchanges;\n selectedExchange = action.data;\n sortColumn = state.tradingInformation.sortColumn;\n filteredExchanges = getFilteredExchanges(exchanges, selectedExchange, sortColumn);\n\n tradingInformation = Object.assign({}, state.tradingInformation, {\n filteredExchanges: filteredExchanges,\n selectedExchange: selectedExchange\n });\n return Object.assign({}, state, { tradingInformation: tradingInformation });\n case 'TRADING_INFORMATION_SORT_CHANGE':\n exchanges = state.tradingInformation.exchanges;\n selectedExchange = state.tradingInformation.selectedExchange;\n sortFilters = state.tradingInformation.sortFilters;\n var sortColumnKey = action.data;\n sortFilters = (0, _sortUtils.toggleSortFilters)(sortFilters, sortColumnKey);\n sortColumn = sortFilters[sortColumnKey];\n filteredExchanges = getFilteredExchanges(exchanges, selectedExchange, sortColumn);\n\n tradingInformation = Object.assign({}, state.tradingInformation, {\n filteredExchanges: filteredExchanges,\n sortFilters: sortFilters,\n sortColumn: sortColumn\n });\n return Object.assign({}, state, { tradingInformation: tradingInformation });\n default:\n return state;\n }\n }\n\n function getFilteredExchanges(exchanges, selectedExchange) {\n var sortConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var validExchanges = exchanges;\n var searchNeedle = '';\n if (validExchanges.length === 0) {\n return exchanges;\n }\n if (selectedExchange) {\n searchNeedle = selectedExchange.trim().toLocaleLowerCase();\n validExchanges = exchanges.filter(function (exchange) {\n var exchangeName = exchange.name.toLocaleLowerCase();\n return exchangeName.indexOf(searchNeedle) !== -1;\n });\n }\n if (validExchanges.length === 0) {\n logger.error('ERR: invalid selectedExchange matched no exchanges :' + searchNeedle);\n return exchanges;\n }\n if (sortConfig) {\n return validExchanges.sort((0, _sortUtils.createCompare)(sortConfig.dataKey, sortConfig.direction));\n }\n return validExchanges;\n }\n\n var DEFAULT_SORT_FILTER = exports.DEFAULT_SORT_FILTER = {\n exchangeName: {\n dataKey: 'name',\n direction: null,\n isNumeric: false\n },\n ticker: {\n dataKey: 'ticker',\n direction: null,\n isNumeric: false\n },\n currency: {\n dataKey: 'currency',\n direction: null,\n isNumeric: false\n },\n bloombergTicker: {\n dataKey: 'bloombergTicker',\n direction: null,\n isNumeric: false\n },\n ric: {\n dataKey: 'ric',\n direction: null,\n isNumeric: false\n },\n sedol: {\n dataKey: 'sedol',\n direction: null,\n isNumeric: false\n }\n };\n});\r\ndefine('components/products/performance/ft-backtested-performance-annualised/lib/etf/backtested-performance-annualised.reducer',['exports', '../../../../common/util/utils', '../../../../lib/decorators/config-decorator', 'lodash/get', 'aurelia-framework'], function (exports, _utils, _configDecorator, _get, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.backtestedPerformanceAnnualised = backtestedPerformanceAnnualised;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('backtested-annualised');\n var perfType = 'backtested-annualised';\n\n function backtestedPerformanceAnnualised(state, action) {\n var stateOBJ = void 0;\n stateOBJ = state;\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_ANNUALISED_SUCCESS') {\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n\n var decoratingConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var benchmarkOrder = (0, _get2.default)(decoratingConfig, 'performance.investmentVehicles.ETF.benchmarkOrder', []);\n\n var etfBenchmarkOrder = benchmarkOrder;\n\n var benchMrkList = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.benchMrkList');\n\n if (rawPerformance === undefined || rawPerformance.globalProductsValue === undefined || rawFundDetails === undefined || etfBenchmarkOrder === undefined) {\n return (0, _utils.getErrorObject)(state, perfType);\n }\n\n var PI = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var PB = (0, _get2.default)(PI, 'perfBackTestedDetailsList');\n var performances = typeof PB !== 'undefined' ? _performanceBuilder(PB, benchMrkList, etfBenchmarkOrder) : null;\n\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceAnnualised: {\n performances: performances,\n benchmarkOrder: etfBenchmarkOrder,\n benchMrkList: benchMrkList\n }\n });\n }\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_BM_ANNUALISED_SUCCESS') {\n var _action$json2 = action.json,\n performanceGraphBm = _action$json2[0];\n\n\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceAnnualised: {\n fundData: action.fundData,\n bm1Data: performanceGraphBm,\n bmDataRead: true\n }\n });\n }\n\n return stateOBJ;\n }\n\n function _backtestedDataAnnual(theseItems, thisName, asOfDate) {\n var backtested = {\n name: thisName,\n asOfDate: asOfDate,\n oneYr: theseItems.oneYrBMC,\n threeYr: theseItems.threeYrBMC,\n fiveYr: theseItems.fiveYrBMC,\n tenYr: theseItems.tenYrBMC\n };\n return backtested;\n }\n\n function _performanceBuilder(performances, benchMrkList) {\n var etfBenchmarkOrder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var aggPerfs = [];\n var graphData = [];\n\n if (etfBenchmarkOrder !== null) {\n for (var _iterator = etfBenchmarkOrder, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var benchMrkListCounter = _ref;\n\n var benchMrkId = (0, _utils.getBmIdByLbs)(benchMrkList, benchMrkListCounter);\n var bmIndex = (0, _utils.findIndexByBbmkId)(performances, benchMrkId);\n try {\n var avgAnnual = (0, _get2.default)(performances[bmIndex], 'avgAnnual');\n var asOfDate = performances[bmIndex].asOfDate.val;\n var thisName = (0, _utils.getBmrkNameById)(benchMrkList, benchMrkId);\n\n var avgAnnualValueFields = ['oneYrBMC', 'threeYrBMC', 'fiveYrBMC', 'tenYrBMC'];\n var dataFields = (0, _utils.getDetailItems)(avgAnnualValueFields, avgAnnual);\n var backtested = _backtestedDataAnnual(dataFields, thisName, asOfDate);\n aggPerfs.push(backtested);\n var yearsArray = ['oneYr', 'threeYr', 'fiveYr', 'tenYr'];\n var graphPoints = (0, _utils.getChartDataForArrayKeys)(backtested, yearsArray);\n graphData.push(graphPoints);\n } catch (e) {\n logger.info('No Benchmark data');\n }\n }\n }\n\n var calDataObj = {\n rows: aggPerfs\n };\n\n var dataObj = {\n tableData: calDataObj,\n graphData: graphData\n };\n return dataObj;\n }\n});\r\ndefine('components/products/performance/ft-backtested-performance-calendar/lib/etf/backtested-performance-calendar.reducer',['exports', '../../../../common/util/utils', '../../../../lib/decorators/config-decorator', 'lodash/get', 'aurelia-framework'], function (exports, _utils, _configDecorator, _get, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.backtestedPerformanceCalendar = backtestedPerformanceCalendar;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('backtested-calendar');\n var perfType = 'backtested-calendar';\n\n function backtestedPerformanceCalendar(state, action) {\n var stateOBJ = void 0;\n stateOBJ = state;\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_CALENDAR_SUCCESS') {\n var _action$json = action.json,\n performance = _action$json[0],\n fundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n\n var decoratingConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var benchmarkOrder = (0, _get2.default)(decoratingConfig, 'performance.investmentVehicles.ETF.benchmarkOrder', []);\n\n var etfBenchmarkOrder = benchmarkOrder;\n\n var benchMrkList = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.benchMrkList');\n\n var PI = (0, _get2.default)(performance, 'globalProductsValue.performanceIntl');\n var PB = (0, _get2.default)(PI, 'perfBackTestedDetailsList');\n\n var tableHeaders = typeof PB !== 'undefined' && PB.length > 0 ? _performanceCalendarHeaders(PB) : null;\n var performances = typeof PB !== 'undefined' && PB.length > 0 ? _performanceBuilder(PB, tableHeaders, benchMrkList, etfBenchmarkOrder) : null;\n\n if (!performances) {\n stateOBJ = (0, _utils.getErrorObject)(state, perfType);\n return stateOBJ;\n }\n\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceCalendar: {\n tableHeaders: tableHeaders,\n performances: performances,\n benchmarkOrder: etfBenchmarkOrder,\n benchMrkList: benchMrkList\n }\n });\n }\n\n return stateOBJ;\n }\n\n function _backtestedDataCalendar(dataFields, thisName, asOfDate) {\n if (!dataFields || !thisName || !asOfDate) {\n return;\n }\n var backtested = {\n asOfDate: asOfDate,\n name: thisName,\n oneYr: dataFields.oneYrBMC,\n twoYr: dataFields.twoYrBMC,\n threeYr: dataFields.threeYrBMC,\n fourYr: dataFields.fourYrBMC,\n fiveYr: dataFields.fiveYrBMC,\n sixYr: dataFields.sixYrBMC,\n sevenYr: dataFields.sevenYrBMC,\n eightYr: dataFields.eightYrBMC,\n nineYr: dataFields.nineYrBMC,\n tenYr: dataFields.tenYrBMC\n };\n\n return backtested;\n }\n\n function _performanceBuilder(performances, tableHeaders, benchMrkList) {\n var etfBenchmarkOrder = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var aggPerfs = [];\n var graphData = [];\n var yearAry = tableHeaders;\n\n if (etfBenchmarkOrder !== null) {\n for (var _iterator = etfBenchmarkOrder, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var benchMrkListCounter = _ref;\n\n var benchMrkId = (0, _utils.getBmIdByLbs)(benchMrkList, benchMrkListCounter);\n var bmIndex = (0, _utils.findIndexByBbmkId)(performances, benchMrkId);\n try {\n var calDetail = (0, _get2.default)(performances[bmIndex], 'calendarDetail');\n var asOfDate = performances[bmIndex].asOfDate.val;\n var thisName = (0, _utils.getBmrkNameById)(benchMrkList, benchMrkId);\n\n var calDetailValueFields = ['oneYrBMC', 'twoYrBMC', 'threeYrBMC', 'fourYrBMC', 'fiveYrBMC', 'sixYrBMC', 'sevenYrBMC', 'eightYrBMC', 'nineYrBMC', 'tenYrBMC'];\n var dataFields = (0, _utils.getDetailItems)(calDetailValueFields, calDetail);\n var backtested = _backtestedDataCalendar(dataFields, thisName, asOfDate);\n aggPerfs.push(backtested);\n var yearsArray = ['oneYr', 'twoYr', 'threeYr', 'fourYr', 'fiveYr', 'sixYr', 'sevenYr', 'eightYr', 'nineYr', 'tenYr'];\n var graphPoints = (0, _utils.getChartDataForArrayKeys)(backtested, yearsArray);\n graphData.push(graphPoints);\n } catch (e) {\n logger.info('No Benchmark data');\n }\n }\n }\n\n var calDataObj = {\n years: yearAry,\n rows: aggPerfs\n };\n\n var dataObj = {\n tableData: calDataObj,\n graphData: graphData\n };\n return dataObj;\n }\n\n function _performanceCalendarHeaders(action) {\n if (typeof action === 'undefined') {\n return;\n }\n var thisCalDetail = action[0];\n var calHeaderItems = ['perf1Yr', 'perf2Yr', 'perf3Yr', 'perf4Yr', 'perf5Yr', 'perf6Yr', 'perf7Yr', 'perf8Yr', 'perf9Yr', 'perf10Yr'];\n return calHeaderItems.map(function (item) {\n return thisCalDetail[item].hasOwnProperty('val') ? thisCalDetail[item].val : null;\n });\n }\n});\r\ndefine('components/products/performance/ft-backtested-performance-cumulative/lib/etf/backtested-performance-cumulative.reducer',['exports', 'lodash/get', '../../../../common/util/utils', 'moment', '../../../../lib/decorators/config-decorator', 'aurelia-framework'], function (exports, _get, _utils, _moment, _configDecorator, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.backtestedPerformanceCumulative = backtestedPerformanceCumulative;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('backtested-cumulative');\n var perfType = 'backtested-cumulative';\n\n function backtestedPerformanceCumulative(state, action) {\n var stateOBJ = state;\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_CUMULATIVE_SUCCESS') {\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n var decoratingConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var benchmarkOrder = (0, _get2.default)(decoratingConfig, 'performance.investmentVehicles.ETF.benchmarkOrder', []);\n var etfBenchmarkOrder = benchmarkOrder;\n\n if (rawPerformance === undefined || rawPerformance.globalProductsValue === undefined || rawFundDetails === undefined || etfBenchmarkOrder === undefined) {\n return (0, _utils.getErrorObject)(state, perfType);\n }\n\n var fundDetailsOBJ = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var benchMrkList = typeof fundDetailsOBJ !== 'undefined' ? fundDetailsOBJ.benchMrkList : null;\n var PI = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var PB = (0, _get2.default)(PI, 'perfBackTestedDetailsList');\n var performances = typeof PB !== 'undefined' ? _performanceBuilder(PB, benchMrkList, etfBenchmarkOrder) : null;\n\n if (performances !== null && performances.tableData.rows.length === 0) {\n return (0, _utils.getErrorObject)(state, perfType);\n }\n\n var baseFundDetails = _getBaseFundDetails(fundDetailsOBJ);\n var years = _checkYears(performances);\n var dates = _getFirstAndLastDate(performances, years);\n\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceCumulative: {\n performances: performances,\n baseFundDetails: baseFundDetails,\n dates: dates,\n benchmarkOrder: etfBenchmarkOrder,\n benchMrkList: benchMrkList\n }\n });\n }\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_BM_CUMULATIVE_SUCCESS') {\n var _action$json2 = action.json,\n performanceGraphBm = _action$json2[0];\n\n if (performanceGraphBm === undefined || performanceGraphBm.globalProductsValue === undefined) {\n return (0, _utils.getErrorObject)(state, perfType);\n }\n\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceCumulative: {\n fundData: action.fundData,\n bm1Data: performanceGraphBm,\n bmDataRead: true\n }\n });\n }\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_BM2_CUMULATIVE_SUCCESS') {\n var _action$json3 = action.json,\n _performanceGraphBm = _action$json3[0];\n\n var performanceGraphBm2 = action.bm1Data;\n if (performanceGraphBm2 === undefined || performanceGraphBm2.globalProductsValue === undefined) {\n return (0, _utils.getErrorObject)(state, perfType);\n }\n var _etfBenchmarkOrder = action.fundData.benchmarkOrder;\n var _benchMrkList = action.fundData.benchMrkList;\n\n var PG = [];\n PG[0] = (0, _get2.default)(_performanceGraphBm, 'globalProductsValue.perfHistoryGraphs');\n PG[1] = (0, _get2.default)(performanceGraphBm2, 'globalProductsValue.perfHistoryGraphs');\n\n var performanceGraphs = PG.length > 0 ? _processPerformanceChartData(PG, 3, _etfBenchmarkOrder, _benchMrkList) : null;\n var performanceGraphNames = PG.length > 0 ? _getSeriesNames(PG, _etfBenchmarkOrder, _benchMrkList) : null;\n\n stateOBJ = Object.assign({}, state, {\n backtestedPerformanceCumulative: {\n performances: action.fundData.performances,\n graphNames: performanceGraphNames,\n graphData: performanceGraphs,\n baseFundDetails: action.fundData.baseFundDetails,\n dates: action.fundData.dates,\n benchmarkOrder: action.fundData.benchmarkOrder,\n bmDataRead: true\n }\n });\n }\n\n if (action.type === 'POPULATE_BACKTESTED_PERFORMANCE_CUMULATIVE_ERROR' || action.type === 'POPULATE_BACKTESTED_PERFORMANCE_BM_CUMULATIVE_ERROR' || action.type === 'POPULATE_BACKTESTED_PERFORMANCE_BM2_CUMULATIVE_ERROR') {\n return (0, _utils.getErrorObject)(state, perfType);\n }\n\n return stateOBJ;\n }\n\n function _backtestedDataCumulative(theseItems, thisName, asOfDate, asOfDateStd) {\n if (!theseItems || !thisName || !asOfDate) {\n return;\n }\n var backtested = {\n name: thisName,\n asOfDate: asOfDate,\n asOfDateStd: asOfDateStd,\n ytd: theseItems.ytdBMC,\n oneMth: theseItems.oneMthBMC,\n threeMth: theseItems.threeMthBMC,\n sixMth: theseItems.sixMthBMC,\n oneYr: theseItems.oneYrBMC,\n threeYr: theseItems.threeYrBMC,\n fiveYr: theseItems.fiveYrBMC,\n sevenYr: theseItems.sevenYrBMC,\n tenYr: theseItems.tenYrBMC,\n SI: theseItems.sinceIncpBMC\n };\n\n return backtested;\n }\n\n function _performanceBuilder(performances, benchMrkList) {\n var etfBenchmarkOrder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var aggPerfs = [];\n if (etfBenchmarkOrder !== null) {\n for (var _iterator = etfBenchmarkOrder, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var benchMrkListCounter = _ref;\n\n var benchMrkId = (0, _utils.getBmIdByLbs)(benchMrkList, benchMrkListCounter);\n var bmIndex = (0, _utils.findIndexByBbmkId)(performances, benchMrkId);\n try {\n var calDetail = (0, _get2.default)(performances[bmIndex], 'cumulativeDetail');\n var asOfDate = (0, _get2.default)(performances[bmIndex], 'asOfDate.val');\n var asOfDateStd = performances[bmIndex].asOfDateStd.val;\n var thisName = (0, _utils.getBmrkNameById)(benchMrkList, benchMrkId);\n var calDetailValueFields = ['ytdBMC', 'oneMthBMC', 'threeMthBMC', 'sixMthBMC', 'oneYrBMC', 'threeYrBMC', 'fiveYrBMC', 'sevenYrBMC', 'tenYrBMC', 'sinceIncpBMC'];\n var dataFields = (0, _utils.getDetailItems)(calDetailValueFields, calDetail);\n var backtested = _backtestedDataCumulative(dataFields, thisName, asOfDate, asOfDateStd);\n aggPerfs.push(backtested);\n } catch (e) {\n logger.info('No Benchmark data');\n }\n }\n }\n\n var calDataObj = {\n rows: aggPerfs\n };\n\n return {\n tableData: calDataObj\n };\n }\n\n function _checkDataEmpty(data, bmIndex) {\n var graphIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 4;\n\n var bmDataObj = [];\n for (var i = graphIndex; i >= 0; i--) {\n bmDataObj = data[bmIndex].monthlyGraphs[i].bmData;\n if (bmDataObj.length > 0) {\n return bmDataObj;\n }\n }\n }\n\n function _processPerformanceChartData(data) {\n var graphIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;\n var etfBenchmarkOrder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var benchMrkList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var graphData = [];\n var bmData = void 0;\n var bmDataObj = [];\n var counter = 0;\n if (etfBenchmarkOrder !== null) {\n for (var _iterator2 = etfBenchmarkOrder, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var bmCounter = _ref2;\n\n var benchMrkId = (0, _utils.getBmIdByLbs)(benchMrkList, bmCounter);\n var bmIndex = (0, _utils.findIndexByBbmkId)(data, benchMrkId, 'bmId.val');\n\n if (Object.keys(data).length > 0 && counter < 2) {\n bmDataObj = _checkDataEmpty(data, bmIndex, graphIndex);\n\n bmData = bmDataObj.map(function (detail) {\n return [_moment2.default.utc(detail.chartKey.val, 'MM/YY').valueOf(), _get10KChartValue(detail.chartValue.val)];\n }).sort(function (a, b) {\n return a[0] - b[0];\n });\n graphData.push(bmData);\n }\n counter++;\n }\n }\n return graphData;\n }\n\n function _get10KChartValue(val) {\n return parseFloat(val) * 100;\n }\n\n function _getSeriesNames(data, etfBenchmarkOrder, benchMrkList) {\n var seriesNames = [];\n var bmName = void 0;\n var counter = 0;\n if (Object.keys(data).length > 0 && etfBenchmarkOrder !== null) {\n for (var _iterator3 = etfBenchmarkOrder, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var bmCounter = _ref3;\n\n if (Object.keys(data).length > 0 && counter < 2) {\n var benchMrkId = (0, _utils.getBmIdByLbs)(benchMrkList, bmCounter);\n var bmIndex = (0, _utils.findIndexByBbmkId)(data, benchMrkId, 'bmId.val');\n bmName = data[bmIndex].bmName.val;\n seriesNames.push(bmName);\n }\n counter++;\n }\n }\n return seriesNames;\n }\n\n function _getBaseFundDetails(fundDetails) {\n if (!fundDetails) {\n return;\n }\n var baseFundDetails = {\n fundName: fundDetails.fundName,\n fundCatgry: fundDetails.fundCatgry,\n fundBaseCur: fundDetails.fundBaseCur\n };\n return baseFundDetails;\n }\n\n function _getFirstAndLastDate(performances) {\n var yearsOff = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n\n if (!performances) {\n return;\n }\n var firstDate = void 0;\n var lastDate = void 0;\n if (typeof performances.tableData.rows !== 'undefined' && performances.tableData.rows.length > 0) {\n var asOfDate = (0, _moment2.default)(performances.tableData.rows[0].asOfDateStd, 'YYYY-MM-DD').valueOf();\n var asOfDateTenYearsBefore = (0, _moment2.default)(asOfDate).subtract(yearsOff, 'years').add(4, 'day');\n var firstDayAsOfDate = (0, _moment2.default)(asOfDateTenYearsBefore).startOf('month').valueOf();\n firstDate = (0, _moment2.default)(firstDayAsOfDate).format('LL');\n lastDate = (0, _moment2.default)(asOfDate).format('LL');\n }\n var dates = [firstDate, lastDate];\n return dates;\n }\n\n function _checkYears(performances) {\n var providedYears = 10;\n if (performances.tableData.rows[0].tenYr !== null) {\n providedYears = 10;\n } else if (performances.tableData.rows[0].fiveYr !== null) {\n providedYears = 5;\n } else if (performances.tableData.rows[0].threeYr !== null) {\n providedYears = 3;\n } else if (performances.tableData.rows[0].oneYr !== null) {\n providedYears = 1;\n }\n return providedYears;\n }\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/lib/etf/calendar-year-returns.reducer',['exports', 'lodash/get', 'lodash/find', 'moment', 'moment-parseformat', 'aurelia-framework', '../calendar-utils', '../../../util/util', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config'], function (exports, _get, _find, _moment, _momentParseformat, _aureliaFramework, _calendarUtils, _util, _configDecorator, _utilsFundDetails, _utilsConfig) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.calendarYearReturns = calendarYearReturns;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _momentParseformat2 = _interopRequireDefault(_momentParseformat);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('calendar-year-returns');\n function calendarYearReturns(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_CALENDAR_YEAR_RETURNS_SUCCESS') {\n logger.debug('Reducing: POPULATE_CALENDAR_YEAR_RETURNS_SUCCESS', action);\n\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2];\n\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n var showYTD = !(0, _get2.default)(config, 'performance.hideYTDForCumulativeAndCalendarYear', true);\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var fundName = (0, _get2.default)(fundDetails, 'fundName.val');\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n\n var thisMonthlyCalendar = void 0;\n var thisQuarterlyCalendar = void 0;\n var monthEnd = void 0;\n var quarterEnd = void 0;\n\n logger.debug('shareClassCodeshareClassCode', shareClassCode);\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyCalendar = _getThisCalendar(monthlyData, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, fundName);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyCalendar = _getThisCalendar(quarterlyData, peerRnksListQtly, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, fundName);\n }\n\n if (typeof thisMonthlyCalendar !== 'undefined') {\n monthEnd = {\n calData: thisMonthlyCalendar.tableData,\n chartData: thisMonthlyCalendar.graphData,\n dateGroup: 'month-end',\n dynamicLabel: thisMonthlyCalendar.dynamicLabel,\n hideChart: thisMonthlyCalendar.hideChart,\n showData: thisMonthlyCalendar.showData,\n fundName: thisMonthlyCalendar.fundName\n };\n }\n\n if (typeof thisQuarterlyCalendar !== 'undefined') {\n quarterEnd = {\n calData: thisQuarterlyCalendar.tableData,\n chartData: thisQuarterlyCalendar.graphData,\n dateGroup: 'quarter-end',\n dynamicLabel: thisQuarterlyCalendar.dynamicLabel,\n hideChart: thisQuarterlyCalendar.hideChart,\n showData: thisQuarterlyCalendar.showData,\n fundName: thisQuarterlyCalendar.fundName\n };\n }\n\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', siteVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', siteVehicle);\n\n stateOBJ = Object.assign({}, state, {\n calendarYearReturns: {\n MONTH_END: monthEnd,\n QUARTER_END: quarterEnd,\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels,\n showYTD: showYTD\n }\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _getThisCalendar(performances, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, fundName) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var inceptionDate = (0, _get2.default)(thisPerformanceObj, 'fundIncDt.val');\n var inceptionDateLoc = (0, _get2.default)(thisPerformanceObj, 'fundIncDtLoc.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var rows = [];\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideCalendarYearChartFundList', showMDash, perfIncDt);\n\n var asOfFormat = (0, _momentParseformat2.default)(asOfDate);\n var lastYear = (0, _moment2.default)(asOfDate, asOfFormat).get('year');\n var calendarYears = _calendarUtils.calendarUtils.calendarYears(lastYear, true);\n var yearAry = calendarYears.yearAry;\n\n if (thisPerformanceObj) {\n rows.push(_calendarUtils.calendarUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails, fundName));\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.bmcName.val = (0, _get2.default)(benchMarks, item + '.bmrkName.val');\n rows.push(_calendarUtils.calendarUtils.getBMTableRow(bm, false, mdash));\n }\n });\n\n var chartColumns = calendarYears.chartColumns;\n var graphData = _util.performanceUtils.tableDataToChartData(rows, chartColumns);\n\n var showData = true;\n if (rows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'cumulativeDetail.sinceIncp.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n years: yearAry,\n asOfDate: asOfDate,\n rows: rows\n },\n inceptionDate: inceptionDateLoc,\n graphData: graphData,\n dynamicLabel: dynamicLabel,\n hideChart: hideChart,\n fundName: fundName,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-discrete-returns/lib/etf/discrete-returns.reducer',['exports', 'lodash/get', 'lodash/take', 'lodash/find', '../discrete-returns-utils', '../../../util/util', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-fund-details', 'aurelia-framework'], function (exports, _get, _take, _find, _discreteReturnsUtils, _util, _utilsConfig, _configDecorator, _utilsFundDetails, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.discreteReturns = discreteReturns;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _take2 = _interopRequireDefault(_take);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('discrete-returns');\n\n function discreteReturns(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_DISCRETE_RETURNS_SUCCESS') {\n logger.debug('Reducing: POPULATE_DISCRETE_RETURNS_SUCCESS');\n\n var _action$json = action.json,\n rawPerformanceFeed = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2],\n compConfig = _action$json[3];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n\n var fundVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', fundVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', fundVehicle);\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformanceFeed, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var fundName = (0, _get2.default)(fundDetails, 'fundName.val');\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n var hideDiscreteBMOlderThanMainClass = (0, _get2.default)(compConfig, 'SuppressOldBenchmarkData.0', '') === 'YES';\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var thisMonthlyDiscrete = void 0;\n var thisQuarterlyDiscrete = void 0;\n var monthEnd = void 0;\n var quarterEnd = void 0;\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyDiscrete = _getThisDiscrete(monthlyData, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, fundName, hideDiscreteBMOlderThanMainClass);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyDiscrete = _getThisDiscrete(quarterlyData, peerRnksListQtly, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, fundName, hideDiscreteBMOlderThanMainClass);\n }\n\n if (typeof thisMonthlyDiscrete !== 'undefined') {\n monthEnd = {\n tableData: thisMonthlyDiscrete.tableData,\n chartData: thisMonthlyDiscrete.graphData,\n fundName: thisMonthlyDiscrete.fundName,\n dynamicLabel: thisMonthlyDiscrete.dynamicLabel,\n dateGroup: 'month-end',\n hideChart: thisMonthlyDiscrete.hideChart,\n showData: thisMonthlyDiscrete.showData\n };\n }\n\n if (typeof thisQuarterlyDiscrete !== 'undefined') {\n quarterEnd = {\n tableData: thisQuarterlyDiscrete.tableData,\n chartData: thisQuarterlyDiscrete.graphData,\n dynamicLabel: thisQuarterlyDiscrete.dynamicLabel,\n fundName: thisQuarterlyDiscrete.fundName,\n dateGroup: 'quarter-end',\n hideChart: thisQuarterlyDiscrete.hideChart,\n showData: thisQuarterlyDiscrete.showData\n };\n }\n\n stateOBJ = Object.assign({}, state, {\n discreteReturns: {\n MONTH_END: monthEnd,\n QUARTER_END: quarterEnd,\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels\n }\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _getThisDiscrete(performances, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, fundName, hideDiscreteBMOlderThanMainClass) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var shareClassDetails = (0, _find2.default)(allShareClassDetails, { shCls: { val: shareClassCode } });\n\n var inceptionDate = (0, _get2.default)(shareClassDetails, 'perfIncpDt.val');\n var inceptionDateLoc = (0, _get2.default)(shareClassDetails, 'perfIncDtLcl.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var allYears = _discreteReturnsUtils.discreteUtils.countYears(asOfDate, inceptionDate, true);\n var yearsSinceStartDate = _discreteReturnsUtils.discreteUtils.countYearsChart(asOfDate, inceptionDate, true);\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideDiscreteAnnualChartFundList', showMDash, perfIncDt);\n\n var chartColumns = ['oneYr', 'twoYr', 'threeYr', 'fourYr', 'fiveYr'];\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var rows = [];\n var hasIAorBm = false;\n\n if (thisPerformanceObj) {\n rows.push(_discreteReturnsUtils.discreteUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails, fundName));\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.bmcName.val = (0, _get2.default)(benchMarks, item + '.bmrkName.val');\n rows.push(_discreteReturnsUtils.discreteUtils.getBMTableRow(bm, false, mdash, yearsSinceStartDate.length, hideDiscreteBMOlderThanMainClass));\n }\n hasIAorBm = true;\n });\n\n var chartCols = [];\n var graphData = [];\n\n if (!hideChart) {\n if (hasIAorBm) {\n chartCols = allYears;\n } else {\n chartCols = yearsSinceStartDate;\n }\n graphData = _util.performanceUtils.tableDataToChartData(rows, chartColumns);\n\n if (chartCols.length < 5) {\n graphData = graphData.map(function (row) {\n return (0, _take2.default)(row, chartCols.length);\n });\n }\n }\n\n var showData = true;\n if (rows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'discreteDetail.oneYr.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n asOfDate: asOfDate,\n rows: rows,\n years: allYears,\n chartCols: chartCols\n },\n graphData: graphData,\n inceptionDate: inceptionDateLoc,\n dynamicLabel: dynamicLabel,\n hideChart: hideChart,\n fundName: fundName,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-performance-annualised/lib/etf/performance-annualised.reducer',['exports', 'aurelia-framework', '../../../../lib/decorators/config-decorator', '../../../util/util', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../performance-annualised-utils', 'lodash/get', 'lodash/find'], function (exports, _aureliaFramework, _configDecorator, _util, _utilsFundDetails, _utilsConfig, _performanceAnnualisedUtils, _get, _find) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceAnnualised = performanceAnnualised;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-annualised');\n\n function performanceAnnualised(state, action) {\n var stateOBJ = void 0;\n stateOBJ = state;\n if (action.type === 'POPULATE_PERFORMANCE_ANNUALISED_SUCCESS') {\n logger.debug('Reducing: POPULATE_PERFORMANCE_ANNUALISED_SUCCESS', action);\n\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2];\n\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var fundName = (0, _get2.default)(fundDetails, 'fundName.val');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n var fundKey = action.fundId + '-' + shareClassCode;\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n\n var thisMonthlyTable = void 0;\n var thisQuarterlyTable = void 0;\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyTable = _performanceBuilder(monthlyData, config, shareClassCode, benchMarks, sortedBenchmarkOrder, fundKey, allShareClassDetails, fundId, fundName);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyTable = _performanceBuilder(monthlyData, config, shareClassCode, benchMarks, sortedBenchmarkOrder, fundKey, allShareClassDetails, fundId, fundName);\n }\n\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', siteVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', siteVehicle);\n\n stateOBJ = Object.assign({}, state, {\n performanceAnnualised: {\n MONTH_END: {\n performances: thisMonthlyTable,\n label: 'month-end'\n },\n QUARTER_END: {\n performances: thisQuarterlyTable,\n label: 'quarter-end'\n },\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels\n }\n }\n });\n }\n\n return stateOBJ;\n }\n\n function _performanceBuilder(performances, config, shareClassCode, benchMarks, sortedBenchmarkOrder, fundKey, allShareClassDetails, fundId, fundName) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var inceptionDate = (0, _get2.default)(thisPerformanceObj, 'fundIncDt.val');\n\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var perfIncDtLoc = (0, _get2.default)(thisPerformanceObj, 'perfIncDtLoc.val');\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideAverageAnnualChartFundList', showMDash, perfIncDt);\n\n var rows = [];\n\n if (thisPerformanceObj) {\n rows.push(_performanceAnnualisedUtils.annualisedUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails, fundName));\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.bmcName.val = (0, _get2.default)(benchMarks, item + '.bmrkName.val');\n rows.push(_performanceAnnualisedUtils.annualisedUtils.getBMTableRow(bm, false, mdash));\n }\n });\n\n var graphData = void 0;\n if (!hideChart) {\n if (showMDash || config.performance.hideAverageAnnualChartFundList.includes(fundKey)) {\n graphData = null;\n } else {\n var chartColumns = ['oneY', 'threeY', 'fiveY', 'tenY', 'fiftnY', 'life'];\n graphData = _util.performanceUtils.tableDataToChartData(rows, chartColumns);\n }\n }\n\n var showData = true;\n if (rows.length === 0 && allRows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'avgAnnual.sinceIncp.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n asOfDate: asOfDate,\n rows: rows\n },\n inceptionDate: perfIncDtLoc,\n graphData: graphData,\n dynamicLabel: dynamicLabel,\n fundName: fundName,\n hideChart: hideChart,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-performance-cumulative/lib/etf/performance-cumulative.reducer',['exports', 'lodash/get', 'lodash/find', '../../../util/util', '../../../../common/util/utils-fund-details', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-config', '../performance-cumulative-utils', 'aurelia-framework'], function (exports, _get, _find, _util, _utilsFundDetails, _configDecorator, _utilsConfig, _performanceCumulativeUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceCumulative = performanceCumulative;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-cumulative');\n\n function performanceCumulative(state, action, productState) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_PERFORMANCE_CUMULATIVE_SUCCESS') {\n logger.debug('Reducing: POPULATE_PERFORMANCE_CUMULATIVE_SUCCESS');\n\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n performanceGraph = _action$json[1],\n rawConfig = _action$json[2],\n rawFundDetails = _action$json[3];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n var show1M3M6M = (0, _get2.default)(config, 'performance.showYtd1M3M6M', true);\n var showYTD = !(0, _get2.default)(config, 'performance.hideYTDForCumulativeAndCalendarYear', true);\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var fundName = (0, _get2.default)(fundDetails, 'fundName.val');\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n\n var thisMonthlyTable = {};\n var thisQuarterlyTable = {};\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyTable = _performanceBuilder(monthlyData, peersRankList, shareClassCode, benchMarks, sortedBenchmarkOrder, config, allShareClassDetails, fundId, fundName);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyTable = _performanceBuilder(quarterlyData, peerRnksListQtly, shareClassCode, benchMarks, sortedBenchmarkOrder, config, allShareClassDetails, fundId, fundName);\n }\n\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', siteVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', siteVehicle);\n\n stateOBJ = Object.assign({}, state, {\n performanceCumulative: {\n MONTH_END: {\n graphNames: thisMonthlyTable.graphNames,\n tableData: thisMonthlyTable.tableData,\n inceptionDate: thisMonthlyTable.inceptionDate,\n dynamicLabel: thisMonthlyTable.dynamicLabel,\n hideChart: thisMonthlyTable.hideChart,\n fundName: thisMonthlyTable.fundName,\n showData: thisMonthlyTable.showData,\n PC_1YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 0, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_3YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 1, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_5YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 2, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_10YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 3, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_15YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 4, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_LIFE: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 5, 'monthlyGraphs', sortedBenchmarkOrder)\n },\n QUARTER_END: {\n graphNames: thisQuarterlyTable.graphNames,\n tableData: thisQuarterlyTable.tableData,\n inceptionDate: thisQuarterlyTable.inceptionDate,\n dynamicLabel: thisQuarterlyTable.dynamicLabel,\n hideChart: thisQuarterlyTable.hideChart,\n fundName: thisQuarterlyTable.fundName,\n showData: thisQuarterlyTable.showData,\n PC_1YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 0, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_3YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 1, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_5YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 2, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_10YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 3, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_15YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 4, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_LIFE: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 5, 'quarterlyGraphs', sortedBenchmarkOrder)\n },\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels,\n show1M3M6M: show1M3M6M,\n showYTD: showYTD\n }\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _performanceBuilder(performances, peersRankList, shareClassCode, benchMarks, sortedBenchmarkOrder, config, allShareClassDetails, fundId, fundName) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n\n\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var inceptionDate = (0, _get2.default)(thisPerformanceObj, 'fundIncDt.val');\n var inceptionDateLoc = (0, _get2.default)(thisPerformanceObj, 'fundIncDtLoc.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n\n var rows = [];\n var graphNames = [];\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideCumulativeChartFundList', showMDash, perfIncDt);\n\n if (thisPerformanceObj) {\n logger.debug('thisPerformanceObj', thisPerformanceObj);\n var shRow = _performanceCumulativeUtils.cumulativeUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails, fundName);\n rows.push(shRow);\n graphNames.push(shRow.name);\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.bmcName.val = (0, _get2.default)(benchMarks, item + '.bmrkName.val');\n var bmRow = _performanceCumulativeUtils.cumulativeUtils.getBMTableRow(bm, false, mdash);\n rows.push(bmRow);\n graphNames.push(bmRow.name);\n }\n });\n\n var showData = true;\n if (rows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'cumulativeDetail.sinceIncp.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n asOfDate: asOfDate,\n rows: rows\n },\n inceptionDate: inceptionDateLoc,\n dynamicLabel: dynamicLabel,\n fundName: fundName,\n graphNames: graphNames,\n hideChart: hideChart,\n showData: showData\n };\n }\n});\r\ndefine('components/products/portfolio/ft-holdings/etf/lib/holdings.reducer',['exports', 'aurelia-framework'], function (exports, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.holdings = holdings;\n\n\n var logger = _aureliaFramework.LogManager.getLogger('holdings');\n\n function holdings(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'HOLDINGS_CHANGE_SORT':\n logger.debug('Reducing: HOLDINGS_CHANGE_SORT', action);\n var columns = state.app.holdings.sort.columns;\n var newSortColumn = columns.get(action.columnName);\n if (newSortColumn) {\n switch (newSortColumn.direction) {\n case 'ASC':\n newSortColumn.direction = 'DESC';\n break;\n case 'DESC':\n newSortColumn.direction = 'ASC';\n break;\n default:\n newSortColumn.direction = newSortColumn.isNumeric ? 'DESC' : 'ASC';\n }\n columns.forEach(function (value, key) {\n if (key !== action.columnName) {\n columns.set(key, Object.defineProperty(value, 'direction', { value: null, configurable: true }));\n }\n });\n newState = Object.assign({}, state);\n Object.assign(newState.app.holdings.sort, { columns: columns });\n return newState;\n }\n return state;\n case 'HOLDINGS_CHANGE_PAGE':\n if (Number.isInteger(action.page)) {\n newState = Object.assign({}, state);\n newState.app.holdings.paging.currentPage = action.page;\n return newState;\n }\n return state;\n case 'HOLDINGS_CHANGE_SEARCH':\n if (action.searchString !== state.app.holdings.search.searchString) {\n newState = Object.assign({}, state);\n newState.app.holdings.search.searchString = action.searchString;\n\n newState.app.holdings.paging.currentPage = 1;\n return newState;\n }\n return state;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/portfolio/ft-portfolio-statistics-and-positions/lib/etf/portfolio-statistics-and-positions.reducer',['exports', 'lodash/get', '../../../../common/util/utils-fund-details', '../../../util/util', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../../lib/reducer-utils', 'aurelia-framework'], function (exports, _get, _utilsFundDetails, _util, _utilsConfig, _configDecorator, _reducerUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FIELDS = undefined;\n exports.portfolioStatisticsAndPositions = portfolioStatisticsAndPositions;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('portfolio-statistics-and-positions');\n\n var STATISTICS_PORTFOLIO_SUPPRESSION_ID = 'statistics';\n\n var FIELDS = exports.FIELDS = {\n 'total-net-assets': {\n dataKey: 'etfStat.totalNetAsset.val',\n type: _reducerUtils.FORMAT_TYPES.APPEND_CURRENCY,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateTna.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'TotalNetAssetsPortfolio',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'number-of-holdings': {\n dataKey: 'etfStat.numberOfHoldings.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateNoh.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'NumberOfHoldings',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'weighted-avg-market-cap': {\n dataKey: 'etfStat.wtAvgMarketCap.val',\n type: _reducerUtils.FORMAT_TYPES.APPEND_CURRENCY,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateWtAvgMktCap.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'WeightedAverageMarketCap',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'number-of-holdings-investment-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.bmNumberOfHoldings.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateNoh.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'NumberOfHoldingsOfInvestmentUniverse',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'pb-ratio': {\n dataKey: 'etfStat.pbRatio.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDatePbRation.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'PriceToBookRatio',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'pb-ratio-investment-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.pbRatioBm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDatePbRation.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'PriceToBookRatioOfInvestmentUniverse',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'pe-ratio-ttm': {\n dataKey: 'etfStat.peRatioTtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDatePeRatioTtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'PriceToEarningTrailing',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'pe-ratio-ttm-invest-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.peRatioBm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDatePeRatioTtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'PriceToBookRatioOfInvestmentUniverseTrailing',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'pe-ratio-ftm': {\n dataKey: 'etfStat.peRatioFtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDatePeRatioFtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'PriceToEarningForward',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'pe-ratio-ftm-invest-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.peRatioBmFtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDatePeRatioFtm.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'PriceToBookRatioOfInvestmentUniverseForward',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'return-on-equity': {\n dataKey: 'etfStat.returnOnEquity.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateRoe.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'ReturnOnEquity',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'return-on-equity-invest-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.returnOnEquityBm.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateRoe.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'ReturnOnEquityInvestmentUniverse',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'return-on-assets': {\n dataKey: 'etfStat.returnOnAssets.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateRoa.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'ReturnOnAssets',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'return-on-assets-invest-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.returnOnAssetsBm.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateRoa.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'ReturnOnAssetsInvestmentUniverse',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'debt-of-assets': {\n dataKey: 'etfStat.finacialLeverage.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateRoa.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'DebtToAssets',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'debt-of-assets-invest-universe': {\n dataKey: 'normalised.keyedBenchMrks.INST1.financialLevrageBm.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n asOf: {\n dataKey: 'etfStat.asOfDateRoa.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'DebtToAssetsInvestmentUniverse',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-daily',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }\n };\n\n function portfolioStatisticsAndPositions(state, action) {\n switch (action.type) {\n case 'POPULATE_PORTFOLIO_STATISTICS_AND_POSITIONS_SUCCESS':\n logger.debug('Reducing: POPULATE_PORTFOLIO_STATISTICS_AND_POSITIONS_SUCCESS ETF');\n\n var data = _populateStatPositions(action);\n\n return Object.assign({}, state, {\n portfolioStatisticsAndPositions: data\n });\n default:\n return state;\n }\n }\n\n function _populateStatPositions(action) {\n var _action$json = action.json,\n rawPortfolio = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetails);\n var isStatsSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, STATISTICS_PORTFOLIO_SUPPRESSION_ID, fundCategory);\n\n var etfStat = (0, _get2.default)(rawPortfolio, 'globalProductsValue.portfolioIntlValue.etfStat');\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n\n if (!etfStat) {\n return {\n isValid: false,\n isSuppressedByLackOfData: true,\n data: []\n };\n } else if (isStatsSuppressed) {\n return {\n isValid: false,\n isSuppressed: true,\n data: []\n };\n }\n\n var baseCurrency = _utilsFundDetails.utilsFundDetails.getFundCurrency(fundDetails);\n var normalised = {};\n normalised.keyedBenchMrks = _util.portfolioUtils.benchmarkByKey(rawPortfolio);\n var data = (0, _reducerUtils.extractFormattedValues)({\n etfStat: etfStat,\n fundDetails: fundDetails,\n normalised: normalised\n }, FIELDS, baseCurrency, true);\n return {\n isValid: true,\n data: data\n };\n }\n});\r\ndefine('components/products/ppss/ft-ppss/lib/etf/ppss.reducer',['exports', 'aurelia-framework', 'lodash/get', 'lodash/kebabCase', 'moment', '../../../../common/elements/ft-fund-alert/lib/gw/fund-alert.reducer', '../../../../lib/reducer-utils', '../../../../lib/decorators/config-decorator'], function (exports, _aureliaFramework, _get, _kebabCase, _moment, _fundAlert, _reducerUtils, _configDecorator) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ppss = ppss;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _kebabCase2 = _interopRequireDefault(_kebabCase);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('ppss');\n\n function ppss(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'POPULATE_PPSS_STATE_SUCCESS':\n logger.debug('Reducing: POPULATE_PPSS_STATE_SUCCESS');\n\n var _action$json = action.json,\n ppssData = _action$json[0],\n fundConfig = _action$json[1],\n alertData = _action$json[2];\n\n var config = (0, _configDecorator.configDecorator)(fundConfig, action.segment);\n\n var fundAlerts = (0, _fundAlert.parseFundAlerts)(alertData);\n\n var chargesColumn = (0, _get2.default)(config, 'ppss.ongoingCharges', 'OCR');\n\n var tabsets = (0, _get2.default)(config, 'tabSets.tabSet', []);\n if (!Array.isArray(tabsets)) {\n tabsets = [tabsets];\n }\n tabsets = tabsets.map(function (ts) {\n var tabArray = (0, _get2.default)(ts, 'tabs.tab', []);\n var docsPage = (0, _get2.default)(ts, 'tabs.tab[' + (tabArray.length - 1) + '].page', '');\n var baseLink = '/' + action.segment + '/' + (0, _get2.default)(ts, 'tabs.tab[0].page', '');\n var baseDocumentsLink = '/' + action.segment + '/' + docsPage;\n if (!action.hideSite) {\n baseLink = '/' + action.site + baseLink;\n baseDocumentsLink = '/' + action.site + baseDocumentsLink;\n }\n return {\n id: ts.id,\n funds: (0, _get2.default)(ts, 'funds', '').split(','),\n baseLink: baseLink,\n\n baseDocumentsLink: baseDocumentsLink\n };\n });\n\n var funds = ppssData.globalProductsValue.fundExplrVal.map(_createFundMapper(config, fundAlerts)).filter(_createFundFilter(config)).map(_createFundLinks(tabsets));\n\n var filterOptions = _createFilterOptions(funds, state.app.ppss.filters);\n var navAsOfDateFund = funds.find(function (fund) {\n return fund.navAsOfDate;\n });\n var chargesAsOfDateFund = funds.find(function (fund) {\n return fund.terAsOfDate;\n });\n\n newState = Object.assign({\n fundAlerts: fundAlerts,\n ppss: {\n funds: funds,\n filterOptions: filterOptions,\n navAsOfDate: navAsOfDateFund ? navAsOfDateFund.navAsOfDate : '',\n chargesAsOfDate: chargesAsOfDateFund ? chargesAsOfDateFund.terAsOfDate : ''\n }\n }, state);\n newState.app.ppss.config.showTer = chargesColumn === 'TER';\n newState.app.ppss.config.showOngoingCharges = chargesColumn === 'OCR';\n newState.app.ppss.config.showYtdTotalReturnAtNAV = !(0, _get2.default)(config, 'general.hideYtdTotalReturnAtNav', []).includes('ETF');\n return newState;\n default:\n return state;\n }\n }\n\n function _createFundFilter(config) {\n var softLaunchList = config.softLaunchList;\n var activeList = config.activeList;\n var filters = [];\n filters.push(function (fund) {\n return activeList.includes(fund.fundId) || softLaunchList.includes(fund.fundId);\n });\n if (config.general.currencyList.length) {\n filters.push(function (fund) {\n return config.general.currencyList.includes(fund.currency);\n });\n }\n return function (fund) {\n return filters.reduce(function (pass, filter) {\n return pass && filter(fund);\n }, true);\n };\n }\n\n function _createFundMapper(config, fundAlerts) {\n var softLaunchList = config.softLaunchList;\n var activeList = config.activeList;\n var mdash = '';\n var sixMonthsAgo = (0, _moment2.default)().subtract(6, 'months');\n var oneYearAgo = (0, _moment2.default)().subtract(1, 'years');\n return function (fund) {\n var fundId = (0, _get2.default)(fund, 'fundId', '');\n var fundName = (0, _get2.default)(fund, 'fundName.val', '');\n var currency = (0, _get2.default)(fund, 'baseCur.val', '-');\n var navChange = (0, _get2.default)(fund, 'navc.val', '');\n var aum = (0, _get2.default)(fund, 'AUM.val', '');\n var inceptionDate = (0, _get2.default)(fund, 'inceptionDtLcl.val', '');\n var showMDash = false;\n\n if (config.general.showMDashForUnder1Year) {\n showMDash = (0, _moment2.default)(inceptionDate).isAfter(oneYearAgo);\n } else if (config.general.showMDashForUnder6Months) {\n showMDash = (0, _moment2.default)(inceptionDate).isAfter(sixMonthsAgo);\n }\n var alerts = fundAlerts.filter(function (alert) {\n return alert.fundId === fundId.toString();\n });\n var fundObj = {\n fundId: fundId,\n currency: currency,\n fundName: fundName,\n fundNameFull: fundName,\n inceptionDate: inceptionDate,\n assetClass: (0, _get2.default)(fund, 'assetCls.val', ''),\n nav: (0, _reducerUtils.formatCurrency)((0, _get2.default)(fund, 'nav.val', ''), currency),\n navChange: (0, _reducerUtils.formatCurrency)(navChange, currency),\n navChangePercent: (0, _get2.default)(fund, 'navChngPct.val', ''),\n navChangeDirection: (0, _reducerUtils.navDirection)(navChange),\n navAsOfDate: (0, _get2.default)(fund, 'navAsOfDt.val', ''),\n domicile: (0, _get2.default)(fund, 'domicile.val', ''),\n isActive: activeList.includes(fundId),\n isSoftLaunch: softLaunchList.includes(fundId),\n fundAlerts: alerts,\n\n isin: (0, _get2.default)(fund, 'ISIN.val', ''),\n incomeUse: (0, _get2.default)(fund, 'useOfIncom.val', ''),\n ytdTotalReturnAtNav: showMDash ? mdash : (0, _get2.default)(fund, 'ytdRtnAtNAV.val', ''),\n aum: (0, _get2.default)(fund, 'aumStd.val', ''),\n aumDisplay: (0, _reducerUtils.formatCurrency)(aum, currency),\n ter: (0, _get2.default)(fund, 'termPcntg.val', ''),\n terAsOfDate: (0, _get2.default)(fund, 'termAsOfDt.val', ''),\n terAsOfDateStd: (0, _get2.default)(fund, 'termAsOfDtStd.val', ''),\n ongoingCharges: (0, _get2.default)(fund, 'ongoingChrgs.val', '')\n };\n return fundObj;\n };\n }\n\n function _createFundLinks(tabsets) {\n return function (fund) {\n fund.link = tabsets.reduce(function (link, tabset) {\n return tabset.id === 'default' || tabset.funds.includes(fund.fundId.toString()) ? tabset.baseLink : link;\n }, null);\n if (fund.link) fund.link += '/' + fund.fundId + '/' + (0, _kebabCase2.default)(fund.fundName);\n\n fund.documentsLink = tabsets.reduce(function (link, tabset) {\n return tabset.id === 'default' || tabset.funds.includes(fund.fundId.toString()) ? tabset.baseDocumentsLink : link;\n }, null);\n if (fund.documentsLink) fund.documentsLink += '/' + fund.fundId + '/' + (0, _kebabCase2.default)(fund.fundName);\n return fund;\n };\n }\n\n function _createFilterOptions(funds, filters) {\n logger.debug('_createFilterOptions', filters);\n return {\n ASSET_CLASS: (0, _reducerUtils.getUniqOptions)('assetClass')(funds),\n CURRENCY: (0, _reducerUtils.getUniqOptions)('currency')(funds)\n };\n }\n});\r\ndefine('components/products/pricing-distribution/ft-pricing-distribution/lib/etf/pricing-distribution.reducer',['exports', 'lodash/get', 'lodash/has', 'lodash/first', 'lodash/last', '../../../../lib/reducer-utils', '../../../../lib/date-utils', '../../../../../../lib/sort-utils', '../../../../lib/decorators/config-decorator', '../../../../performance/util/util', '../../../../common/util/utils', 'aurelia-framework'], function (exports, _get, _has, _first, _last, _reducerUtils, _dateUtils, _sortUtils, _configDecorator, _util, _utils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.pricingDistribution = pricingDistribution;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _has2 = _interopRequireDefault(_has);\n\n var _first2 = _interopRequireDefault(_first);\n\n var _last2 = _interopRequireDefault(_last);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('pricing-distribution');\n\n function pricingDistribution(state, action) {\n switch (action.type) {\n case 'POPULATE_PRICING_DISTRIBUTION_ERROR':\n return Object.assign({}, state, {\n pricingDistribution: {\n error: true\n }\n });\n case 'POPULATE_PRICING_DISTRIBUTION_SUCCESS':\n var _action$json = action.json,\n priceDetailsData = _action$json[0],\n priceHistoryData = _action$json[1],\n distHistoryData = _action$json[2],\n fundDetailsData = _action$json[3],\n rawConfig = _action$json[4];\n\n logger.debug('Reducing: POPULATE_PRICING_DISTRIBUTION_SUCCESS');\n\n if ((0, _utils.isEmptyDeep)(priceDetailsData) && (0, _utils.isEmptyDeep)(priceHistoryData) && (0, _utils.isEmptyDeep)(distHistoryData) && (0, _utils.isEmptyDeep)(fundDetailsData)) {\n return Object.assign({}, state, {\n pricingDistribution: {\n error: true\n }\n });\n }\n var fundId = (0, _get2.default)(priceDetailsData, 'globalProductsValue.etfPriceDivValue.fundID.val', '');\n var decoratoredConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var navHist = priceHistoryData.globalProductsValue.etfPriceDivValue.navHist.find(function (nh) {\n return nh.shareClassCurrency.val === nh.baseCurrency.val;\n });\n var divHist = (0, _get2.default)(distHistoryData, 'globalProductsValue.etfPriceDivValue.divHist', []);\n\n var rawClasses = [priceDetailsData.globalProductsValue.etfPriceDivValue];\n var shareClasses = rawClasses.map(_createParseShareClass(fundId, fundDetailsData, decoratoredConfig));\n shareClasses.forEach(_createAddNavHistory(navHist));\n shareClasses.forEach(_createAddDivHistory(divHist));\n\n var primaryShareClass = shareClasses[0];\n return Object.assign({}, state, {\n pricingDistribution: {\n hasDistributionClasses: shareClasses.some(function (sc) {\n return sc.isDistributionClass;\n }),\n shareClasses: shareClasses,\n primaryShareClass: primaryShareClass\n }\n });\n default:\n return state;\n }\n }\n\n function _createAddNavHistory(navHist) {\n return function (sc) {\n var currency = navHist.shareClassCurrency.val;\n sc.navHistory = _parseNavHistory(navHist.navHistory, currency);\n sc.navHistory1M = _parseNavHistory(navHist.navHistory1M, currency);\n sc.navHistory3M = _parseNavHistory(navHist.navHistory3M, currency);\n sc.navHistory6M = _parseNavHistory(navHist.navHistory6M, currency);\n sc.navHistoryYTD = _parseNavHistory(navHist.navHistoryYTD, currency);\n sc.navHistory1Y = _parseNavHistory(navHist.navHistory1Y, currency);\n sc.navHistory3Y = _parseNavHistory(navHist.navHistory3Y, currency);\n sc.navHistory5Y = _parseNavHistory(navHist.navHistory5Y, currency);\n sc.navHistoryDR = _parseNavHistory(navHist.navHistoryDR, currency);\n sc.minDate = (0, _last2.default)(sc.navHistory).navDate;\n sc.maxDate = (0, _first2.default)(sc.navHistory).navDate;\n\n if (sc.navHistory.length === 0) {\n sc.navHistory = [];\n }\n };\n }\n\n function _createAddDivHistory(divHist) {\n return function (sc) {\n var historicalShareData = divHist.find(function (o) {\n var fundId = (0, _get2.default)(o, 'fundID.val');\n var classCode = (0, _get2.default)(o, 'shareClassCode.val');\n var currency = (0, _get2.default)(o, 'shareClassCurrency.val');\n return sc.shareClassKey === fundId + '-' + classCode && sc.currency === currency;\n });\n if (historicalShareData) {\n sc.dividendHistory = historicalShareData.divHistory.map(function (o) {\n return _parseDividend(o, sc.currency);\n });\n\n var hashOfYears = {};\n sc.dividendHistory.forEach(function (dividend) {\n var normalisedDate = dividend.asOfDateStd;\n var year = normalisedDate.match(/([0-9]{4})/);\n if (year) {\n var yearInt = year[1];\n if (!hashOfYears[yearInt]) {\n hashOfYears[yearInt] = [];\n }\n hashOfYears[yearInt].push(dividend);\n }\n });\n\n var descendingOrder = function descendingOrder(a, b) {\n return b - a;\n };\n sc.dividendHistoryByYear = hashOfYears;\n sc.dividendYears = Object.keys(hashOfYears).sort(descendingOrder);\n }\n };\n }\n\n function _parseNavHistory(navData, currency) {\n if (!navData || navData.length === 0) {\n return null;\n }\n return navData.map(function (navPoint) {\n var nav = (0, _get2.default)(navPoint, 'nav.val', '');\n var navChange = (0, _get2.default)(navPoint, 'dlyNavChange.val', '');\n var navDate = (0, _get2.default)(navPoint, 'navEffectiveDateStd.val', '');\n var navDateFormatted = (0, _get2.default)(navPoint, 'navEffectiveDate.val', '');\n var navChangePercent = (0, _get2.default)(navPoint, 'dlyNavPcnt.val', '');\n return {\n navDate: navDate,\n navDateFormatted: navDateFormatted,\n nav: (0, _reducerUtils.parseNumber)(nav),\n navChange: (0, _reducerUtils.parseNumber)(navChange),\n navChangePercent: navChangePercent,\n navFormatted: (0, _reducerUtils.formatCurrency)(nav, currency, true),\n navChangeFormatted: (0, _reducerUtils.formatCurrency)(navChange, currency, true),\n navChangePercentFormatted: (0, _reducerUtils.formatPercentage)(navChangePercent, true)\n };\n }).sort((0, _sortUtils.createCompare)('navDate', 'DESC'));\n }\n\n function _parseDividend(dvd, currency) {\n if (!(0, _has2.default)(dvd, 'divPerUnit.val')) return null;\n return {\n asOfDateStd: (0, _get2.default)(dvd, 'asOfDtStd.val', '—'),\n asOfDate: (0, _get2.default)(dvd, 'asOfDt.val', '—'),\n recordDate: (0, _get2.default)(dvd, 'recordDt.val', '—'),\n exDividendDate: (0, _get2.default)(dvd, 'exDivDt.val', '—'),\n distributionDate: (0, _get2.default)(dvd, 'distDt.val', '—'),\n dividendsPerShare: (0, _reducerUtils.formatCurrency)((0, _get2.default)(dvd, 'divPerUnit.val', ''), currency, true)\n };\n }\n\n function _parseHighLowNav(highLowValues, currency) {\n var populatedHighLowValues = [];\n highLowValues.forEach(function (navYear) {\n var year = (0, _get2.default)(navYear, 'navYear.val', '');\n var highNav = (0, _get2.default)(navYear, 'ytdCurrYrHighNAV.val', null);\n var highNavDate = (0, _get2.default)(navYear, 'ytdCurrYrHighDt.val', '');\n var lowNav = (0, _get2.default)(navYear, 'ytdCurrYrLowNAV.val', null);\n var lowNavDate = (0, _get2.default)(navYear, 'ytdCurrYrLowDt.val', '');\n\n if (highNav !== null && lowNav !== null) {\n populatedHighLowValues.push({\n year: year,\n highNavDate: highNavDate,\n lowNavDate: lowNavDate,\n highNav: (0, _reducerUtils.formatCurrency)(highNav, currency, true),\n lowNav: (0, _reducerUtils.formatCurrency)(lowNav, currency, true)\n });\n }\n });\n return populatedHighLowValues;\n }\n\n function _createParseShareClass(fundId, fundDetailsData, decoratoredConfig) {\n return function (shareClass) {\n var classCode = (0, _get2.default)(shareClass, 'shareClassCode.val', '');\n var shareClassKey = classCode ? fundId + '-' + classCode : fundId;\n var navChange = (0, _get2.default)(shareClass, 'navDetailValue.dlyNavChange.val', '');\n var currency = (0, _get2.default)(shareClass, 'shareClassCurrency.val', '');\n var asOfDate = (0, _get2.default)(shareClass, 'asOfDateForNav.val', '');\n\n var performanceInceptionStdDate = (0, _get2.default)(fundDetailsData, 'globalProductsValue.fundDetailIntl.shClsDet[0].perfIncpDt.val', null);\n\n var showPerformanceData = !_util.performanceUtils.mustHidePerformanceData(decoratoredConfig, performanceInceptionStdDate);\n\n var isDistributionClass = (0, _get2.default)(fundDetailsData, 'globalProductsValue.fundDetailIntl.distributionFlag.val', '').toLocaleUpperCase() === 'Y';\n return {\n shareClassKey: shareClassKey,\n currency: currency,\n primary: true,\n dividendHistory: [],\n showPerformanceData: showPerformanceData,\n isDistributionClass: isDistributionClass,\n asOfDate: asOfDate,\n asOfDateStd: (0, _dateUtils.formatLocaleDateToStdDate)(asOfDate),\n nav: (0, _reducerUtils.formatCurrency)((0, _get2.default)(shareClass, 'navDetailValue.nav.val', ''), currency),\n navChange: (0, _reducerUtils.formatCurrency)(navChange, currency),\n navChangeDirection: (0, _reducerUtils.navDirection)(navChange),\n navChangePercent: (0, _get2.default)(shareClass, 'navDetailValue.dlyNavPcnt.val', ''),\n dividend: _parseDividend(shareClass.dividend, currency),\n highLowNav: _parseHighLowNav((0, _get2.default)(shareClass, 'highLowValues', []), currency),\n shareClassInceptionDate: (0, _get2.default)(fundDetailsData, 'globalProductsValue.fundDetailIntl.fundIncpDt.val', '—'),\n performanceInceptionStdDate: performanceInceptionStdDate\n };\n };\n }\n});\r\ndefine('components/products/tax/ft-german-tax/lib/etf/german-tax.reducer',['exports', 'aurelia-framework', 'lodash/get', '../../../../lib/reducer-utils'], function (exports, _aureliaFramework, _get, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.germanTax = germanTax;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('german-tax');\n\n function germanTax(state, action) {\n switch (action.type) {\n case 'POPULATE_GERMAN_TAX_SUCCESS':\n var _action$json = action.json,\n germanTaxData = _action$json[0];\n\n logger.debug('Reducing: POPULATE_GERMAN_TAX_SUCCESS', germanTaxData);\n var rawFundsData = (0, _get2.default)(germanTaxData, 'globalProductsValue.etfListPriceTax') || [];\n var asOf = '—';\n var funds = rawFundsData.map(function (rawFundData) {\n var baseCurrency = (0, _get2.default)(rawFundData, 'fundBaseCurrency.val', '—');\n asOf = (0, _get2.default)(rawFundData, 'asOfDate.val', '—');\n return {\n fundName: (0, _get2.default)(rawFundData, 'fundName.val', '—'),\n ticker: (0, _get2.default)(rawFundData, 'ticker.val', '—'),\n isin: (0, _get2.default)(rawFundData, 'isin.val', '—'),\n baseCurrency: baseCurrency,\n\n nav: (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawFundData, 'gemOfferPriceValue.val'), baseCurrency, true),\n interimProfit: (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawFundData, 'interimProfit.val'), baseCurrency, true),\n intrmProfitStd: (0, _get2.default)(rawFundData, 'intrmProfitStd.val', '0'),\n equityGainEstG: (0, _reducerUtils.formatPercentage)((0, _get2.default)(rawFundData, 'equityGain.val'), true),\n equityGainKstG: (0, _reducerUtils.formatPercentage)((0, _get2.default)(rawFundData, 'kstgEquityGain.val'), true),\n realEstateProfit: (0, _reducerUtils.formatCurrency)((0, _get2.default)(rawFundData, 'realEstateGain.val'), baseCurrency, true),\n addi: (0, _get2.default)(rawFundData, 'accuDeemedDist.val', '—'),\n asOf: asOf\n };\n });\n return Object.assign({\n tax: {\n funds: funds,\n asOf: asOf\n }\n }, state);\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/overview/ft-trading-information/etf/lib/etf/trading-information.reducer',['exports', 'lodash/get', '../ft-trading-information.reducer', 'aurelia-framework'], function (exports, _get, _ftTradingInformation, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.tradingInformation = tradingInformation;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('trading-information');\n\n function tradingInformation(state, action) {\n switch (action.type) {\n case 'POPULATE_TRADING_INFORMATION_SUCCESS':\n logger.debug('Reducing: POPULATE_TRADING_INFORMATION_SUCCESS');\n var _action$json = action.json,\n rawFundDetail = _action$json[0];\n\n var rawExchanges = (0, _get2.default)(rawFundDetail, 'globalProductsValue.fundDetailIntl.exchangeDet', []);\n\n var exchanges = getExchanges(rawExchanges);\n var exchangeNames = getExchangeNames(exchanges);\n var selectedExchange = action.data;\n var filteredExchanges = (0, _ftTradingInformation.getFilteredExchanges)(exchanges, selectedExchange);\n\n return Object.assign({}, state, {\n tradingInformation: {\n exchanges: exchanges,\n exchangeNames: exchangeNames,\n selectedExchange: selectedExchange,\n filteredExchanges: filteredExchanges,\n sortFilters: _ftTradingInformation.DEFAULT_SORT_FILTER,\n sortColumn: null\n }\n });\n default:\n return state;\n }\n }\n\n function getExchangeNames(exchanges) {\n var exchangeNames = {};\n exchanges.forEach(function (exchange) {\n exchangeNames[exchange.name] = true;\n });\n return Object.keys(exchangeNames);\n }\n\n function getExchanges(rawExchanges) {\n return rawExchanges.map(function (rawExchange) {\n return {\n name: (0, _get2.default)(rawExchange, 'exchngName.val', '—'),\n ticker: (0, _get2.default)(rawExchange, 'ticker.val', '—'),\n currency: (0, _get2.default)(rawExchange, 'trdCur.val', '—'),\n\n sedol: (0, _get2.default)(rawExchange, 'sedol.val', '—'),\n bloombergTicker: (0, _get2.default)(rawExchange, 'blmbrg.val', '—'),\n\n ric: (0, _get2.default)(rawExchange, 'reuters.val', '—')\n };\n });\n }\n});\r\ndefine('components/products/portfolio/ft-geographic-allocation/etf/lib/etf/geographic-allocation.reducer',['exports', 'lodash/get', 'lodash/set', '../../../../util/util', '../../../../../common/util/utils-fund-details', '../../../../util/hierarchical-utils', '../../../../../common/util/utils-config', '../../../../../lib/decorators/config-decorator', 'aurelia-framework'], function (exports, _get, _set, _util, _utilsFundDetails, _hierarchicalUtils, _utilsConfig, _configDecorator, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.geographicAllocationReducer = geographicAllocationReducer;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _set2 = _interopRequireDefault(_set);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('quality-breakdown');\n\n function geographicAllocationReducer(state, action) {\n var chartObj = void 0;\n var newState = void 0;\n switch (action.type) {\n case 'POPULATE_GEOGRAPHIC_ALLOCATION_SUCCESS':\n if (!action.cid) {\n logger.error('no cid given');\n return state;\n }\n chartObj = buildInitialState(action, 'COUNTRY_ALLOCATION');\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.portfolio.geoAllocation[' + action.cid + ']', chartObj);\n return newState;\n case 'POPULATE_GEOGRAPHIC_ALLOCATION_BMDATA_SUCCESS':\n if (!action.cid) {\n logger.error('no cid given');\n return state;\n }\n chartObj = (0, _get2.default)(state, 'app.portfolio.geoAllocation[' + action.cid + ']');\n if (!chartObj) {\n logger.error('POPULATE_GEOGRAPHIC_ALLOCATION_BMDATA called before POPULATE_GEOGRAPHIC_ALLOCATION');\n return state;\n }\n\n var _action$json = action.json,\n rawPortfolioBenchmark = _action$json[0];\n\n chartObj = (0, _hierarchicalUtils.appendBenchmarkDataToState)(chartObj, rawPortfolioBenchmark, 'COUNTRY_ALLOCATION');\n chartObj.missingBenchmarkData = false;\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'app.portfolio.geoAllocation[' + action.cid + ']', chartObj);\n return newState;\n default:\n return state;\n }\n }\n\n function buildInitialState(action, chartType) {\n var _action$json2 = action.json,\n rawPortfolio = _action$json2[0],\n rawFundDetails = _action$json2[1],\n rawConfig = _action$json2[2];\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetails);\n\n var rawBreakdowns = (0, _get2.default)(rawPortfolio, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var rawBenchmarks = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.benchMrkList');\n var breakdown = _util.portfolioUtils.findObjInArray(rawBreakdowns, chartType);\n\n var geoObj = {};\n geoObj.isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, action.portfolioComponent, fundCategory);\n geoObj.visible = typeof breakdown !== 'undefined';\n\n if (geoObj.isSuppressed) {\n geoObj.visible = false;\n }\n\n if (geoObj.visible) {\n if (rawBenchmarks !== undefined) {\n geoObj.bmrkId = _util.portfolioUtils.getBenchmarkID(rawBenchmarks);\n }\n geoObj.missingBenchmarkData = geoObj.bmrkId !== undefined;\n\n var tempBreakdown = (0, _hierarchicalUtils.getHierarchicalBreakdown)(breakdown, {\n tableMappingKeys: {\n val: 'val.val',\n bmVal: null\n },\n filter: false\n });\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n geoObj.refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n geoObj.date = tempBreakdown.date;\n geoObj.calType = tempBreakdown.calType;\n geoObj.table = tempBreakdown.table;\n geoObj.chart = tempBreakdown.chart;\n geoObj.visible = tempBreakdown.visible;\n geoObj.hasNestedChildren = tempBreakdown.hasNestedChildren;\n geoObj.tableTwoLevel = tempBreakdown.tableTwoLevel;\n geoObj.hasOverflow = tempBreakdown.hasOverflow;\n geoObj.showChart = true;\n geoObj.spanRow = true;\n }\n return geoObj;\n }\n});\r\ndefine('components/products/portfolio/ft-holdings/etf/lib/etf/holdings.reducer',['exports', 'aurelia-framework', 'lodash/get', '../../../../../common/util/utils-config', '../../../../../common/util/utils-fund-details', '../../../../../lib/decorators/config-decorator', '../../../../util/util'], function (exports, _aureliaFramework, _get, _utilsConfig, _utilsFundDetails, _configDecorator, _util) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.holdings = holdings;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('holdings');\n var mdash = '\\u2014';\n\n function holdings(state, action) {\n switch (action.type) {\n case 'POPULATE_HOLDINGS_STATE_SUCCESS':\n logger.debug('Reducing: POPULATE_HOLDINGS_SUCCESS', action);\n var _action$json = action.json,\n portfolioData = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var assetClass = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetails);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, action.portfolioComponent, assetClass);\n\n var holdingsData = (0, _get2.default)(portfolioData, 'globalProductsValue.portfolioIntlValue.etfDailyHoldings');\n if (isSuppressed || !holdingsData) {\n return state;\n }\n\n var holdingsList = holdingsData.map(function (holding) {\n return {\n ticker: (0, _get2.default)(holding, 'securityTicker.val', mdash),\n isin: (0, _get2.default)(holding, 'IsinSecurityNumber.val', mdash),\n holdingName: (0, _get2.default)(holding, 'securityName.val', mdash),\n sector: (0, _get2.default)(holding, 'sectorName.val', mdash),\n weight: (0, _get2.default)(holding, 'pctOfNetAssets.val', mdash),\n marketValue: (0, _get2.default)(holding, 'marketValue.val', mdash),\n notionalValue: (0, _get2.default)(holding, 'notionalMarketValue.val', mdash)\n };\n });\n\n var asOfDate = (0, _get2.default)(portfolioData, 'globalProductsValue.portfolioIntlValue.etfDailyHoldings.0.asOfDate.val');\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n var refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n\n var showNotionalValue = holdingsList.some(function (holding) {\n return holding.notionalValue !== mdash;\n });\n var currencySymbol = _utilsFundDetails.utilsFundDetails.getFundCurrency(rawFundDetails);\n return Object.assign({}, state, {\n holdings: {\n asOfDate: asOfDate,\n holdingsList: holdingsList,\n showNotionalValue: showNotionalValue,\n currencySymbol: currencySymbol,\n refreshRate: refreshRate\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('text!components/products/performance/ft-backtested-performance-annualised/etf/ft-backtested-performance-annualised.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <div data-fti-component=\\\"backtested-performance-annualised\\\"> <div class=\\\"error-no-data\\\" if.bind=\\\"hasErrored\\\"> <ft-label label.bind=\\\"getLabel('no-data-available')\\\"></ft-label> </div> <div if.bind=\\\"!hasErrored\\\" data-fti-module=\\\"date-toggle\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('bt-performance-annual-component-heading')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceAnnualizedBacktestedProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"tab-content1\\\"> <div id=\\\"backtested-performance-annualised\\\" role=\\\"1tabpanel\\\" class=\\\"1tab-pane\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" id=\\\"performance-annualised-monthly\\\"> <ft-column-chart series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\" suffix.bind=\\\"'%'\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"backtested-performance-annualised-table\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel('month-end')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of performances.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"row.name\\\"></ft-label> (%) </th> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> </div> <ft-proximal placement=\\\"PerformanceAnnualizedBacktestedProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-backtested-performance-calendar/etf/ft-backtested-performance-calendar.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <div data-fti-component=\\\"backtested-performance-calendar\\\"> <div class=\\\"error-no-data\\\" if.bind=\\\"hasErrored\\\"> <ft-label label.bind=\\\"getLabel('no-data-available')\\\"></ft-label> </div> <div if.bind=\\\"!hasErrored\\\" data-fti-module=\\\"date-toggle\\\"> <div data-fti-module=\\\"date-toggle\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('bt-performance-calendar-component-heading')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceCalendarBacktestedProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"tab-content1\\\"> <div id=\\\"backtested-performance-calendar\\\" role=\\\"1tabpanel\\\" class=\\\"1tab-pane\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" id=\\\"performance-annualised-monthly\\\"> <ft-column-chart series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\" suffix.bind=\\\"'%'\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"backtested-performance-calendar-table\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel('month-end')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[0]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[1]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[2]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[3]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[4]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[5]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[6]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[7]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[8]\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"performances.years[9]\\\"></ft-label> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of performances.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"row.name\\\"></ft-label> (%) </th> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sevenYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.eightYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.nineYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> </div> <ft-proximal placement=\\\"PerformanceCalendarBacktestedProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-backtested-performance-cumulative/etf/ft-backtested-performance-cumulative.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <div data-fti-component=\\\"backtested-performance-cumulative\\\"> <div class=\\\"error-no-data\\\" if.bind=\\\"hasErrored\\\"> <ft-label label.bind=\\\"getLabel('no-data-available')\\\"></ft-label> </div> <div if.bind=\\\"!hasErrored\\\" data-fti-module=\\\"date-toggle\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('bt-performance-cumulative-component-heading')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceCumulativeBacktestedProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"sub-header\\\">${ getLabel('bt-performance-investment-growth') } ${fundCurrency}</div> <div><span repeat.for=\\\"date of dates\\\"><span if.bind=\\\"$last\\\"> ${getLabel('to')} </span>${date}</span></div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"tab-content1\\\"> <div id=\\\"backtested-performance-cumulative\\\" role=\\\"1tabpanel\\\" class=\\\"1tab-pane\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" id=\\\"performance-cumulative-monthly\\\"> <ft-performance-cumulative-chart graph-names.bind=\\\"graphNames\\\" data.bind=\\\"chartData\\\" val-prefix.bind=\\\"valPrefix\\\"></ft-performance-cumulative-chart> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"backtested-performance-cumulative-table\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel('month-end')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('ytd')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-mth')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-mth')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('6-mth')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of performances.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"row.name\\\"></ft-label> (%) </th> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.ytd | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneMth | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeMth | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixMth | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <ft-proximal placement=\\\"PerformanceCumulativeBacktestedProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> <div if.bind=\\\"populated\\\"></div> </template> \"; });\r\ndefine('text!components/products/performance/ft-calendar-year-returns/etf/ft-calendar-year-returns.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-calendar-year-returns\\\"> <div if.bind=\\\"isPopulated\\\"> <div data-fti-component=\\\"calendar-year-returns\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-calendar-component-heading')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceCalendarProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of tabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" aria-controls.bind=\\\"tab.ariaControl\\\" data-toggle=\\\"tab\\\" click.delegate=\\\"changeTab(tab.key)\\\"> <ft-label label.bind=\\\"getLabel(tab.labelKey)\\\"></ft-label> </a> </li> </ul> </div> </div> </div> <ft-legal-jump-link read-important=\\\"${ getLabel('read-important') }\\\"></ft-legal-jump-link> <ft-proximal placement=\\\"PerformanceCalendarProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div data-fti-module=\\\"ftichart\\\" role=\\\"tabpanel\\\" class=\\\"tab-pane\\\" id=\\\"calendar-year-returns-monthly\\\"> <div class=\\\"resize-print avoid-page-break-inside\\\" fti-chart-scale=\\\"0.95\\\" if.bind=\\\"data.showBenchmark\\\"> <ft-column-chart series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\" suffix.bind=\\\"'%'\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\" if.bind=\\\"tableData\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"calendar-year-returns-table-monthly\\\" class=\\\"table table-striped table--border-bottom avoid-page-break-inside\\\"> <thead> <tr class=\\\"row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(dateGroup)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\" data-testfund=\\\"true\\\" repeat.for=\\\"year of tableData.years\\\"> ${year} </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of tableData.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-sm-4 col-xm-6\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"row.name\\\"></ft-label> </th> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.twoYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fourYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sixYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.sevenYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.eightYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.nineYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> <ft-proximal placement=\\\"PerformanceCalendarProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/performance/ft-performance-annualised/etf/ft-performance-annualised.html', ['module'], function(module) { module.exports = \"<template class=\\\"ft-performance-annualised\\\"> <div if.bind=\\\"isPopulated\\\"> <div data-fti-component=\\\"performance-annualised\\\"> <div data-fti-module=\\\"date-toggle\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('performance-annualised-heading')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"performances.tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </h3> <ft-proximal placement=\\\"PerformanceAnnualizedProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"pull-left\\\"> <ul class=\\\"btn-group nav-tabs-button-group\\\"> <li repeat.for=\\\"tab of TimePeriodTabs\\\" role=\\\"presentation\\\" class=\\\"label-tab\\\" class.bind=\\\"tab.isActive ? 'active' : ''\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"btn\\\" click.delegate=\\\"changeTimePeriodTab(tab.key)\\\" innerhtml.bind=\\\"getLabel(tab.labelKey)\\\"></a> </li> </ul> </div> </div> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <div class=\\\"tab-content1\\\"> <div id=\\\"performance-annualised-monthly-pane\\\" role=\\\"1tabpanel\\\" class=\\\"1tab-pane\\\"> <div if.bind=\\\"chartData\\\" class=\\\"chart resize-print avoid-page-break-inside\\\" id=\\\"performance-annualised-monthly\\\"> <ft-column-chart hide-sm=\\\"true\\\" series.bind=\\\"chartData\\\" categories.bind=\\\"chartCategories\\\" suffix.bind=\\\"'%'\\\"></ft-column-chart> </div> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"performance-annualised-table-monthly\\\" class=\\\"table table-striped table--border-bottom\\\"> <thead> <tr class=\\\"header-sortable row\\\"> <th class=\\\"col-sm-4 col-xm-6\\\"> <ft-label label.bind=\\\"getLabel(currentTimePeriodTab)\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"performances.tableData.asOfDate | ftDashIfEmpty\\\"></ft-label> </small> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('1-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('3-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('5-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('10-yr')\\\"></ft-label> </th> <th scope=\\\"col\\\" class=\\\"text-right\\\"> <ft-label label.bind=\\\"getLabel('life')\\\"></ft-label> <small> <ft-label label.bind=\\\"getLabel('inception')\\\"></ft-label> <ft-label label.bind=\\\"performances[0].inceptionDate | ftDashIfEmpty\\\"></ft-label> </small> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of performances.tableData.rows\\\" class=\\\"row\\\"> <th scope=\\\"row\\\" class=\\\"col-xs-6 col-sm-4\\\"> <i class=\\\"chart-key chart-key-show-sm chart-color-${$index + 1}\\\"></i> <ft-label label.bind=\\\"row.name\\\"></ft-label> </th> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.oneYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.threeYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.fiveYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.tenYr | ftDashIfEmpty\\\"></td> <td class=\\\"text-right\\\" innerhtml.bind=\\\"row.life | ftDashIfEmpty\\\"></td> </tr> </tbody> </table> </div> </div> </div> <ft-proximal placement=\\\"PerformanceAnnualizedProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-fund-information/etf/ft-fund-information.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\" class=\\\"row\\\"> <div class=\\\"col-sm-6 col-md-8\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-12\\\" if.bind=\\\"fundInformation.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('fund-information')\\\"></span> </h3> <ft-proximal placement=\\\"FundInformationProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <div class=\\\"col-md-6\\\" if.bind=\\\"fundInformation.data.length\\\"> <table class=\\\"table table-text fund-information\\\"> <tbody> <tr repeat.for=\\\"item of fundInformationPart1\\\"> <th scope=\\\"row\\\" class=\\\"col-md-6\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> <div class=\\\"col-md-6\\\" if.bind=\\\"fundInformation.data.length\\\"> <table class=\\\"table table-text fund-information\\\"> <tbody> <tr repeat.for=\\\"item of fundInformationPart2\\\"> <th scope=\\\"row\\\" class=\\\"col-md-6\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> <div class=\\\"col-md-12\\\"> <ft-proximal placement=\\\"FundInformationProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </div> <div class=\\\"col-sm-6 col-md-4\\\"> <template if.bind=\\\"salesCharges.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('sales-charges')\\\"></span> <small if.bind=\\\"salesCharges.hasData\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"salesCharges.asOf | ftDashIfEmpty\\\"></span> <span innerhtml.bind=\\\"getLabel('updated-monthly')\\\"></span> </small> </h3> <table class=\\\"table table-text sales-charges\\\"> <tbody> <tr repeat.for=\\\"item of salesCharges.data\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </template> <template if.bind=\\\"identifiers.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('identifiers')\\\"></span> </h3> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of identifiers.data\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </template> </div> <div class=\\\"col-sm-6 col-md-4\\\"> <template if.bind=\\\"tradingCharacteristics.hasData\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('trading-characteristics')\\\"></span> <small if.one-time=\\\"tradingCharacteristics.value !== '&#8212;'\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"tradingCharacteristics.asOf\\\"></span> <span innerhtml.bind=\\\"getLabel('updated-daily')\\\"></span> </small> </h3> <table class=\\\"table table-text\\\"> <tbody> <tr> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel('shares-outstanding')\\\"></span> <ft-footnote if.one-time=\\\"tradingCharacteristics.value\\\" placement=\\\"SharesOutstandingOverview\\\"></ft-footnote> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"tradingCharacteristics.value\\\"></b> </td> </tr> </tbody> </table> </template> <template if.bind=\\\"distributions.hasData && distributions.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('distributions')\\\"></span> <ft-footnote placement=\\\"DividendsOverview\\\"></ft-footnote> </h3> <table class=\\\"table table-text dividends\\\"> <tbody> <tr repeat.for=\\\"item of distributions.data\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </template> </div> </div> </template> \"; });\r\ndefine('text!components/products/overview/ft-trading-information/etf/ft-trading-information.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated && hasData\\\"> <h2 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('trading-information')\\\"></span> </h2> <ft-proximal placement=\\\"TradingInformationProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped\\\"> <thead> <tr class=\\\"header-utilities\\\"> <th colspan=\\\"6\\\"> <div class=\\\"form-inline\\\"> <div class=\\\"form-group\\\"> <span innerhtml.bind=\\\"getLabel('select-exchange')\\\"></span> <select value.bind=\\\"selectedExchange\\\" class=\\\"form-control\\\"> <option model.bind=\\\"''\\\" innerhtml.bind=\\\"getLabel('list-all-exchanges')\\\"> </option> <option repeat.for=\\\"exchangeName of exchangeNames\\\" model.bind=\\\"exchangeName\\\" innerhtml.bind=\\\"exchangeName\\\"> </option> </select> </div> </div> </th> </tr> <tr class=\\\"header-sortable\\\"> <th as-element=\\\"ft-th-sortable\\\" sort.bind=\\\"sortFilters.exchangeName\\\" click-callback.call=\\\"changeSort('exchangeName')\\\" title.one-time=\\\"getLabel('exchange-name-column')\\\"></th> <th as-element=\\\"ft-th-sortable\\\" sort.bind=\\\"sortFilters.ticker\\\" click-callback.call=\\\"changeSort('ticker')\\\" title.one-time=\\\"getLabel('ticker-column')\\\"></th> <th as-element=\\\"ft-th-sortable\\\" sort.bind=\\\"sortFilters.currency\\\" click-callback.call=\\\"changeSort('currency')\\\" title.one-time=\\\"getLabel('currency-column')\\\"></th> <th as-element=\\\"ft-th-sortable\\\" sort.bind=\\\"sortFilters.bloombergTicker\\\" click-callback.call=\\\"changeSort('bloombergTicker')\\\" title.one-time=\\\"getLabel('bloomberg-ticker-column')\\\"></th> <th as-element=\\\"ft-th-sortable\\\" sort.bind=\\\"sortFilters.ric\\\" click-callback.call=\\\"changeSort('ric')\\\" title.one-time=\\\"getLabel('ric-column')\\\"></th> <th class=\\\"text-right\\\" as-element=\\\"ft-th-sortable\\\" sort.bind=\\\"sortFilters.sedol\\\" click-callback.call=\\\"changeSort('sedol')\\\" title.one-time=\\\"getLabel('sedol-column')\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"exchange of filteredExchanges\\\"> <td innerhtml.one-time=\\\"exchange.name\\\"></td> <td innerhtml.one-time=\\\"exchange.ticker\\\"></td> <td innerhtml.one-time=\\\"exchange.currency\\\"></td> <td innerhtml.one-time=\\\"exchange.bloombergTicker\\\"></td> <td innerhtml.one-time=\\\"exchange.ric\\\"></td> <td class=\\\"text-right\\\" innerhtml.one-time=\\\"exchange.sedol\\\"></td> </tr> </tbody> </table> </div> </div> <div> <ft-proximal placement=\\\"TradingInformationProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-geographic-allocation/etf/ft-geographic-allocation.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('geographic-breakdown-heading')\\\"></span> <ft-footnote placement=\\\"GeographicAllocation\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> (<span innerhtml.bind=\\\"data.calType\\\"></span>) <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement=\\\"GeographicAllocationProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-bar-chart suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table class=\\\"table table-text table-legend table-text--expandable\\\"> <thead> <tr> <td if.bind=\\\"data.hasNestedChildren\\\"> <a click.delegate=\\\"expandAll()\\\"><span innerhtml.bind=\\\"getLabel('expand-all')\\\"></span></a> | <a click.delegate=\\\"collapseAll()\\\"><span innerhtml.bind=\\\"getLabel('collapse-all')\\\"></span></a> </td> <td if.bind=\\\"!data.hasNestedChildren\\\"></td> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('market-capitalisation-fund')\\\"></th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('investment-universe')\\\"></th> </tr> </thead> <tbody repeat.for=\\\"row of data.tableTwoLevel\\\"> <tr if.bind=\\\"(!row.inOverflow || isShowingMore) && (row.isParentNode || row.isExpanded)\\\"> <th if.bind=\\\"row.isParentNode && row.hasChildren\\\" scope=\\\"row\\\" click.delegate=\\\"toggleRowExpansion(row)\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"table-text__toggle ${row.isExpanded ? 'table-text__toggle--expanded' : ''}\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper\\\"> <i class=\\\"chart-key ${row.graphColour}\\\"></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </a> </th> <th if.bind=\\\"row.isParentNode && !row.hasChildren\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper table-text__icon-wrapper--no-children\\\"> <i class=\\\"chart-key ${row.graphColour}\\\"></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </th> <td if.bind=\\\"row.isParentNode\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td if.bind=\\\"row.isParentNode\\\" class=\\\"col-xs-4\\\"> <b innerhtml.bind=\\\"row.bmVal | ftFormatPercentage\\\"></b> </td> <th if.bind=\\\"!row.isParentNode\\\" class=\\\"table-text__header--no-key\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__header-text table-text__header-nested\\\"> ${row.name} </span> </span> </th> <td if.bind=\\\"!row.isParentNode\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td if.bind=\\\"!row.isParentNode\\\"> <b innerhtml.bind=\\\"row.bmVal | ftFormatPercentage\\\"></b> </td> </tr> </tbody> </table> <p if.bind=\\\"data.hasOverflow\\\"> <a click.delegate=\\\"toggleShowMore()\\\"> <span if.bind=\\\"!isShowingMore\\\" innerhtml.bind=\\\"getLabel('view-more')\\\"></span> <span if.bind=\\\"isShowingMore\\\" innerhtml.bind=\\\"getLabel('view-less')\\\"></span> </a> </p> </div> </div> <ft-proximal placement=\\\"GeographicAllocationProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-holdings/etf/ft-holdings.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"'loaded-not-no-data' | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-6 col-xs-12\\\"> <h3 class=\\\"header-product container\\\"> <ft-label innerhtml.one-time=\\\"getLabel('holdings')\\\"></ft-label> <small> <ft-label innerhtml.one-time=\\\"getLabel('as-of')\\\"></ft-label> <ft-label innerhtml.one-time=\\\"holdings.asOfDate\\\"></ft-label> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(holdings.refreshRate)\\\"></span> </small> </h3> </div> <ft-proximal placement=\\\"HoldingsProximal\\\" position=\\\"top\\\"></ft-proximal> <p class=\\\"col-sm-6 col-xs-12\\\"> <a class=\\\"btn btn-secondary pull-right\\\" href.bind=\\\"downloadUrl & oneTime\\\" target=\\\"_blank\\\" download=\\\"\\\"> <i class=\\\"ft-icon ft-icon-download\\\"></i> <ft-label innerhtml.one-time=\\\"getLabel('download-all-holdings')\\\"></ft-label> (<span innerhtml.one-time=\\\"getLabel('xls-file-extension')\\\"></span>) </a> </p> </div> <div class=\\\"table-responsive\\\" if.bind=\\\"!hasResults\\\"> <table class=\\\"table table-striped responsive\\\"> <thead> <tr class=\\\"header-utilities\\\"> <th colspan=\\\"7\\\"> <div class=\\\"input-group hidden-print\\\"> <input type=\\\"text\\\" class=\\\"form-control filter-inbox\\\" placeholder.one-time=\\\"getLabel('search-fields')\\\" title.one-time=\\\"getLabel('search-fields')\\\" value.bind=\\\"searchString & debounce:500\\\"> <span class=\\\"input-group-addon bg-primary\\\"> <span class=\\\"ft-icon ft-icon-search\\\"></span> </span> </div> </th> </tr> <tr class=\\\"header-sortable\\\"> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ticker')\\\" sort.bind=\\\"sort.columns.get('TICKER')\\\" click-callback.call=\\\"changeSort('TICKER')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('isin')\\\" sort.bind=\\\"sort.columns.get('ISIN')\\\" click-callback.call=\\\"changeSort('ISIN')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('security-name')\\\" sort.bind=\\\"sort.columns.get('HOLDING_NAME')\\\" click-callback.call=\\\"changeSort('HOLDING_NAME')\\\" footnote-placement=\\\"Holdings\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('sector')\\\" sort.bind=\\\"sort.columns.get('SECTOR')\\\" click-callback.call=\\\"changeSort('SECTOR')\\\" footnote-placement=\\\"Sector\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('weight')\\\" sort.bind=\\\"sort.columns.get('WEIGHT')\\\" click-callback.call=\\\"changeSort('WEIGHT')\\\" footnote-placement=\\\"Weight\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('market-value')\\\" sort.bind=\\\"sort.columns.get('MARKET_VALUE')\\\" click-callback.call=\\\"changeSort('MARKET_VALUE')\\\" footnote-placement=\\\"MarketValue\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"holdings.showNotionalValue\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('notional-value')\\\" sort.bind=\\\"sort.columns.get('NOTIONAL_VALUE')\\\" click-callback.call=\\\"changeSort('NOTIONAL_VALUE')\\\" footnote-placement=\\\"NotionalValue\\\"></th> </tr> </thead> <tbody> <tr> <td colspan=\\\"7\\\"> <p innerhtml.bind=\\\"getLabel('no-results-message')\\\"></p> </td> </tr> </tbody> </table> </div> <div class=\\\"table-responsive table-responsive__no-bottom-margin\\\" if.bind=\\\"hasResults\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table table-striped responsive\\\"> <thead> <tr class=\\\"header-utilities\\\"> <th colspan=\\\"7\\\"> <div class=\\\"input-group hidden-print\\\"> <input type=\\\"text\\\" class=\\\"form-control filter-inbox\\\" placeholder.one-time=\\\"getLabel('search-fields')\\\" title.one-time=\\\"getLabel('search-fields')\\\" value.bind=\\\"searchString & debounce:500\\\"> <span class=\\\"input-group-addon bg-primary\\\"> <span class=\\\"ft-icon ft-icon-search\\\"></span> </span> </div> </th> </tr> <tr class=\\\"header-sortable\\\"> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('ticker')\\\" sort.bind=\\\"sort.columns.get('TICKER')\\\" click-callback.call=\\\"changeSort('TICKER')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('isin')\\\" sort.bind=\\\"sort.columns.get('ISIN')\\\" click-callback.call=\\\"changeSort('ISIN')\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('security-name')\\\" sort.bind=\\\"sort.columns.get('HOLDING_NAME')\\\" click-callback.call=\\\"changeSort('HOLDING_NAME')\\\" footnote-placement=\\\"Holdings\\\"></th> <th scope=\\\"col\\\" class=\\\"\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('sector')\\\" sort.bind=\\\"sort.columns.get('SECTOR')\\\" click-callback.call=\\\"changeSort('SECTOR')\\\" footnote-placement=\\\"Sector\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('weight')\\\" sort.bind=\\\"sort.columns.get('WEIGHT')\\\" click-callback.call=\\\"changeSort('WEIGHT')\\\" footnote-placement=\\\"Weight\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('market-value')\\\" sort.bind=\\\"sort.columns.get('MARKET_VALUE')\\\" click-callback.call=\\\"changeSort('MARKET_VALUE')\\\" footnote-placement=\\\"MarketValue\\\"></th> <th scope=\\\"col\\\" class=\\\"text-right\\\" if.one-time=\\\"holdings.showNotionalValue\\\" as-element=\\\"ft-th-sortable\\\" title.one-time=\\\"getLabel('notional-value')\\\" sort.bind=\\\"sort.columns.get('NOTIONAL_VALUE')\\\" click-callback.call=\\\"changeSort('NOTIONAL_VALUE')\\\" footnote-placement=\\\"NotionalValue\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of paginatedRows\\\"> <td innerhtml.bind=\\\"row.ticker\\\"></td> <td innerhtml.bind=\\\"row.isin\\\"></td> <td innerhtml.bind=\\\"row.holdingName\\\"></td> <td innerhtml.bind=\\\"row.sector\\\"></td> <td innerhtml.bind=\\\"row.weight | ftFormatPercentage\\\" class=\\\"text-right\\\"></td> <td innerhtml.bind=\\\"row.marketValue | ftFormatCurrency: holdings.currencySymbol\\\" class=\\\"text-right\\\"></td> <td if.bind=\\\"holdings.showNotionalValue\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"row.notionalValue\\\"></span> </td> </tr> </tbody> </table> </div> <ft-pagination if.bind=\\\"hasResults\\\" label.bind=\\\"label\\\" paging-info.bind=\\\"pagingInfo & debounce:0\\\" go-to-page.call=\\\"goToPage(page)\\\"></ft-pagination> <ft-proximal placement=\\\"HoldingsProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-portfolio-statistics-and-positions/etf/ft-portfolio-statistics-and-positions.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"row\\\"> <div class=\\\"col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('portfolio-statistics-heading')\\\"></ft-label> </h3> <ft-proximal placement=\\\"StatisticsProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row hidden-lg portfolio-stats\\\"> <div class=\\\"col-md-6\\\"> <table class=\\\"table table-text table-no-bottom-margin\\\"> <tbody> <tr repeat.for=\\\"item of dataFirstHalf\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> <div class=\\\"col-md-6\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of dataSecondHalf\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> </div> <div class=\\\"row hidden-xs hidden-md hidden-sm\\\"> <div class=\\\"col-lg-4\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of dataFirstThird\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> <div class=\\\"col-lg-4\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of dataSecondThird\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> <div class=\\\"col-lg-4\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of dataLastThird\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement=\\\"StatisticsProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-sector-allocation/etf/ft-sector-allocation.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> (<span innerhtml.bind=\\\"data.calType\\\"></span>) <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-bar-chart suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('market-capitalisation-fund')\\\"></th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('investment-universe')\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span if.bind=\\\"data.showChart\\\" class=\\\"table-text__icon-wrapper\\\"> <i class=\\\"chart-key ${row.graphColour}\\\"></i> </span> <span class=\\\"table-text__header-text\\\"> ${ row.name } </span> </span> </th> <td> <b> <span innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></span> </b> </td> <td> <b> <span innerhtml.bind=\\\"row.bmVal | ftFormatPercentage\\\"></span> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/tax/ft-german-tax/etf/ft-german-tax.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"asOf\\\"></ft-label> <ft-label label.bind=\\\"getLabel('updated-daily')\\\"></ft-label> </small> <table class=\\\"table table-striped\\\"> <thead> <tr> <th innerhtml.one-time=\\\"getLabel('fund-name')\\\"></th> <th innerhtml.one-time=\\\"getLabel('isin')\\\"></th> <th innerhtml.one-time=\\\"getLabel('fund-base-currency')\\\"></th> <th innerhtml.one-time=\\\"getLabel('nav')\\\"></th> <th innerhtml.one-time=\\\"getLabel('interim-profit')\\\"></th> <th innerhtml.one-time=\\\"getLabel('equity-gain')\\\"></th> <th innerhtml.one-time=\\\"getLabel('kstg-equity-gain')\\\"></th> <th innerhtml.one-time=\\\"getLabel('real-estate-gain')\\\"></th> <th innerhtml.one-time=\\\"getLabel('accumulated-deemed-dist')\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"fund of funds\\\"> <td innerhtml.one-time=\\\"fund.fundName\\\"></td> <td innerhtml.one-time=\\\"fund.isin|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td> <span innerhtml.one-time=\\\"fund.baseCurrency|ftReplaceDashWith:getLabel('no-information')\\\"></span> </td> <td innerhtml.one-time=\\\"fund.nav|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td> <span innerhtml.one-time=\\\"fund.interimProfit|ftReplaceDashWith:getLabel('no-information')\\\"></span> <ft-footnote if.bind=\\\"fund.intrmProfitStd && fund.intrmProfitStd>0\\\" placement=\\\"InterimProfitPositive\\\"></ft-footnote> <ft-footnote if.bind=\\\"fund.intrmProfitStd && fund.intrmProfitStd<0\\\" placement=\\\"InterimProfitNegative\\\"></ft-footnote> </td> <td innerhtml.one-time=\\\"fund.equityGainEstG|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td innerhtml.one-time=\\\"fund.equityGainKstG|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td innerhtml.one-time=\\\"fund.realEstateProfit|ftReplaceDashWith:getLabel('no-information')\\\"></td> <td innerhtml.one-time=\\\"fund.addi|ftReplaceDashWith:getLabel('no-information')\\\"></td> </tr> </tbody> </table> </div> </template> \"; });\r\n//# sourceMappingURL=web-platform-etf.js.map","define('configuration/en-gb/main',['exports', '../common/configure', '../gw/beans', '../gw/components', '../gw/reducers', '../gw/state', '../../components/products/overview/ft-fund-information/lib/en-gb/fund-information.reducer', '../../components/products/overview/ft-fund-information/lib/gw/fund-information.reducer'], function (exports, _configure, _beans, _components, _reducers, _state, _fundInformation, _fundInformation2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(aurelia) {\n var state = (0, _state.getState)();\n\n _reducers.reducers.products.specific.splice(1, _reducers.reducers.products.specific.indexOf(_fundInformation2.fundInformation), _fundInformation.fundInformation);\n\n (0, _configure.commonConfigure)(aurelia, {\n reducers: _reducers.reducers,\n state: state,\n beans: _beans.beans,\n components: _components.components,\n dataServiceConf: 'gw'\n });\n }\n});\r\ndefine('configuration/gw/beans',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var beans = exports.beans = {\n component: {\n caveats: ['gw.caveats'],\n caveatsFund: ['gw.caveats', 'gw.fund-details'],\n configuration: ['gw.fund-config'],\n findAFund: ['gw.ppss', 'gw.fund-config', 'gw.fund-alert'],\n fundDetails: ['gw.fund-details'],\n fundAlert: ['gw.fund-alert'],\n labels: ['gw.fund-labels'],\n labelsMarketing: ['gw.marketing-component-labels', 'gw.json-content-type-labels'],\n ppss: ['gw.ppss', 'gw.fund-config', 'gw.fund-alert'],\n portfolioFundMeasures: ['gw.portfolio', 'gw.performance', 'gw.fund-details', 'gw.fund-config'],\n portfolioStatisticsAndPositions: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config', 'gw.single-fund-lscs-data'],\n portfolioCharting: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config'],\n portfolioRiskContribution: ['gw.portfolio', 'gw.fund-config'],\n portfolioSecurityTypeExposure: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config', 'gw.fund-labels'],\n portfolioSectorExposure: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config'],\n valueAtRisk: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config'],\n topRiskAllocationByAssetClass: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config'],\n managerRosterAndAllocation: ['gw.portfolio', 'gw.fund-details', 'gw.fund-config', 'gw.manager-roster.shared', 'gw.manager-roster.fund'],\n performance: ['gw.performance', 'gw.performance-history', 'gw.fund-config', 'gw.fund-details'],\n performanceSimply: ['gw.performance', 'gw.fund-config', 'gw.fund-details'],\n pricingDistribution: ['gw.price-distribution', 'gw.fund-details', 'gw.fund-config'],\n priceHistory: ['gw.price-history', 'gw.fund-details', 'gw.fund-config'],\n distributionHistory: ['gw.distribution-history', 'gw.fund-details', 'gw.fund-config'],\n fundInformation: ['gw.overview', 'gw.fund-details', 'gw.price-distribution', 'gw.fund-config'],\n fundRatings: ['gw.overview', 'gw.fund-details', 'gw.fund-config'],\n fundStaticBar: ['gw.overview', 'gw.fund-details', 'gw.fund-config'],\n tax: ['gw.price-tax']\n },\n\n bean: {\n 'gw.fund-details': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.fund-labels': {\n parameters: new Map([['debug', 'debug']])\n },\n 'gw.manager-roster.fund': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.nav-history': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.overview': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.performance': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.performance-history': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.portfolio': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.price': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.price-distribution': {\n parameters: new Map([['fundId', 'FundID']])\n },\n 'gw.distribution-history': {\n parameters: new Map([['fundId', 'FundID'], ['shareClassCode', 'ShareClass']])\n },\n 'gw.price-history': {\n parameters: new Map([['fundId', 'FundID'], ['shareClassCode', 'ShareClass'], ['toDate', 'toDate'], ['fromDate', 'fromDate']])\n },\n 'gw.single-fund-lscs-data': {\n parameters: new Map([['fundId', 'FundID'], ['cmsTypeId', 'cmsTypeID']])\n }\n }\n };\n});\r\ndefine('configuration/gw/components',['exports'], function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var components = exports.components = ['components/products/overview/ft-fund-information/gw/ft-fund-information', 'components/products/overview/ft-fund-ratings/ft-fund-ratings', 'components/products/overview/ft-fund-static-bar/ft-fund-static-bar', 'components/products/overview/ft-performance-snapshot/ft-performance-snapshot', 'components/products/performance/ft-calendar-year-returns/ft-calendar-year-returns', 'components/products/performance/ft-calendar-year-returns/ft-calendar-year-tab', 'components/products/performance/ft-discrete-returns/ft-discrete-returns', 'components/products/performance/ft-performance-annualised/ft-performance-annualised', 'components/products/performance/ft-performance-cumulative/ft-performance-cumulative', 'components/products/performance/ft-performance-risk-statistics/ft-performance-risk-statistics', 'components/products/portfolio/ft-asset-allocation/gw/ft-asset-allocation', 'components/products/portfolio/ft-asset-class-exposure/gw/ft-asset-class-exposure', 'components/products/portfolio/ft-average-portfolio-exposure/gw/ft-average-portfolio-exposure', 'components/products/portfolio/ft-currency-breakdown/gw/ft-currency-breakdown', 'components/products/portfolio/ft-fund-measures/gw/ft-fund-measures', 'components/products/portfolio/ft-geographic-breakdown/gw/ft-geographic-breakdown', 'components/products/portfolio/ft-geographic-exposure/gw/ft-geographic-exposure', 'components/products/portfolio/ft-manager-roster/gw/ft-manager-roster', 'components/products/portfolio/ft-market-capitalisation/ft-market-capitalisation', 'components/products/portfolio/ft-portfolio-allocation/ft-portfolio-allocation', 'components/products/portfolio/ft-portfolio-exposure/gw/ft-portfolio-exposure', 'components/products/portfolio/ft-portfolio-no-data-message/ft-portfolio-no-data-message', 'components/products/portfolio/ft-portfolio-risk-and-return-analysis/gw/ft-portfolio-risk-and-return-analysis', 'components/products/portfolio/ft-portfolio-statistics-and-positions/gw/ft-portfolio-statistics-and-positions', 'components/products/portfolio/ft-sector-allocation/gw/ft-sector-allocation', 'components/products/portfolio/ft-sector-exposure/gw/ft-sector-exposure', 'components/products/portfolio/ft-security-type-exposure/gw/ft-security-type-exposure', 'components/products/portfolio/ft-strategy-breakdown/gw/ft-strategy-breakdown', 'components/products/portfolio/ft-top-exposures/ft-top-exposures', 'components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/ft-top-risk-allocation-by-asset-class', 'components/products/portfolio/ft-top-ten-holdings/gw/ft-top-ten-holdings', 'components/products/portfolio/ft-value-at-risk/gw/ft-value-at-risk', 'components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-actual', 'components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-forecast', 'components/products/ppss/ft-find-a-fund/ft-find-a-fund', 'components/products/ppss/ft-find-a-fund-btn/ft-find-a-fund-btn', 'components/products/ppss/ft-ppss-favorite/ft-ppss-favorite', 'components/products/ppss/ft-ppss-fund-filter/ft-ppss-fund-filter', 'components/products/ppss/ft-ppss-fund-identifiers/ft-ppss-fund-identifiers', 'components/products/ppss/ft-ppss-fund-name/ft-ppss-fund-name', 'components/products/ppss/ft-ppss-performance/ft-ppss-performance', 'components/products/ppss/ft-ppss-performance/ft-ppss-performance-cell', 'components/products/ppss/ft-ppss-search-box/ft-ppss-search-box', 'components/products/ppss/ft-ppss-tab-header/ft-ppss-tab-header', 'components/products/ppss/ft-ppss-table-toolbar/ft-ppss-table-toolbar', 'components/products/ppss/ft-ppss/ft-ppss', 'components/products/pricing-distribution/ft-dividends-historical/ft-dividends-historical', 'components/products/pricing-distribution/ft-dividends/ft-dividends', 'components/products/pricing-distribution/ft-nav-high-low/ft-nav-high-low', 'components/products/pricing-distribution/ft-price-chart/ft-price-chart', 'components/products/pricing-distribution/ft-pricing-distribution/ft-pricing-distribution', 'components/products/pricing-distribution/ft-share-prices/ft-share-prices', 'components/products/tax/ft-german-tax/ft-german-tax'];\n});\r\ndefine('configuration/gw/main',['exports', '../common/configure', './beans', './components', './reducers', './state'], function (exports, _configure, _beans, _components, _reducers, _state) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.configure = configure;\n function configure(aurelia) {\n var state = (0, _state.getState)();\n\n (0, _configure.commonConfigure)(aurelia, {\n reducers: _reducers.reducers,\n state: state,\n beans: _beans.beans,\n components: _components.components,\n dataServiceConf: 'gw'\n });\n }\n});\r\ndefine('configuration/gw/reducers',['exports', '../../components/products/lib/combine-products-reducers', '../common/marketing-reducers', '../../lib/general.reducer', '../../components/products/lib/reducers/labels/label-loader.reducer', '../../components/products/lib/reducers/fund-details/fund-details.reducer', '../../components/products/lib/reducers/fund-config/config-loader.reducer', '../../components/products/common/elements/ft-caveats/lib/caveats.reducer', '../../components/products/lib/reducers/caveats/caveats.reducer', '../../components/common/elements/ft-modal/lib/ft-modal.reducer', '../../components/products/ppss/ft-ppss/lib/ppss.reducer', '../../components/products/ppss/ft-find-a-fund/lib/find-a-fund.reducer', '../../components/products/common/elements/ft-fund-alert/lib/gw/fund-alert.reducer', '../../components/products/ppss/ft-ppss/lib/gw/ppss.reducer', '../../components/products/pricing-distribution/ft-pricing-distribution/lib/pricing-distribution.reducer', '../../components/products/pricing-distribution/ft-pricing-distribution/lib/gw/pricing-distribution.reducer', '../../components/products/performance/ft-performance-cumulative/lib/performance-cumulative.reducer', '../../components/products/performance/ft-performance-cumulative/lib/gw/performance-cumulative.reducer', '../../components/products/performance/ft-performance-annualised/lib/performance-annualised.reducer', '../../components/products/performance/ft-performance-annualised/lib/gw/performance-annualised.reducer', '../../components/products/performance/ft-calendar-year-returns/lib/calendar-year-returns.reducer', '../../components/products/performance/ft-calendar-year-returns/lib/gw/calendar-year-returns.reducer', '../../components/products/overview/ft-fund-information/lib/gw/fund-information.reducer', '../../components/products/overview/ft-fund-ratings/lib/gw/fund-ratings.reducer', '../../components/products/performance/ft-discrete-returns/lib/discrete-returns.reducer', '../../components/products/performance/ft-discrete-returns/lib/gw/discrete-returns.reducer', '../../components/products/common/elements/ft-share-class-filter/lib/share-class-filter.reducer', '../../components/products/performance/ft-performance-risk-statistics/lib/gw/performance-risk-statistics.reducer', '../../components/products/tax/ft-german-tax/lib/gw/german-tax.reducer', '../../components/products/tax/ft-german-tax/lib/tax.reducer', '../../components/products/overview/ft-fund-static-bar/lib/gw-etf/fund-static-bar.reducer', '../../components/products/portfolio/lib/gw/portfolio-chart.reducer', '../../components/products/portfolio/ft-portfolio-statistics-and-positions/lib/gw/portfolio-statistics-and-positions.reducer', '../../components/products/portfolio/ft-sector-exposure/gw/lib/gw/sector-exposure.reducer', '../../components/products/portfolio/ft-security-type-exposure/lib/gw/security-type-exposure.reducer', '../../components/products/portfolio/ft-value-at-risk/gw/lib/value-at-risk.reducer', '../../components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/lib/top-risk-allocation-by-asset-class.reducer', '../../components/products/portfolio/ft-manager-roster/gw/lib/gw/manager-roster.reducer', '../../components/products/portfolio/ft-risk-contribution/lib/gw/risk-contribution.reducer', '../../components/products/portfolio/ft-fund-measures/gw/lib/fund-measures.reducer', '../../components/products/portfolio/ft-portfolio-no-data-message/lib/portfolio-no-data-message.reducer'], function (exports, _combineProductsReducers, _marketingReducers, _general, _labelLoader, _fundDetails, _configLoader, _caveats, _caveats2, _ftModal, _ppss, _findAFund, _fundAlert, _ppss2, _pricingDistribution, _pricingDistribution2, _performanceCumulative, _performanceCumulative2, _performanceAnnualised, _performanceAnnualised2, _calendarYearReturns, _calendarYearReturns2, _fundInformation, _fundRatings, _discreteReturns, _discreteReturns2, _shareClassFilter, _performanceRiskStatistics, _germanTax, _tax, _fundStaticBar, _portfolioChart, _portfolioStatisticsAndPositions, _sectorExposure, _securityTypeExposure, _valueAtRisk, _topRiskAllocationByAssetClass, _managerRoster, _riskContribution, _fundMeasures, _portfolioNoDataMessage) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.reducers = undefined;\n var reducers = exports.reducers = {\n products: (0, _combineProductsReducers.combineProductsReducers)({\n general: [_shareClassFilter.shareClassFilterReducer, _fundDetails.fundDetailsReducer, _labelLoader.labelLoader, _caveats2.caveatsReducer, _caveats.caveatsReducer, _configLoader.configurationLoader, _ftModal.modalReducer, _fundAlert.fundAlert, _ppss.ppss, _ppss2.ppss, _findAFund.findAFund, _pricingDistribution.pricingDistribution, _performanceCumulative.performanceCumulative, _performanceAnnualised.performanceAnnualised, _portfolioChart.portfolioChartReducer, _calendarYearReturns.calendarYearReturns, _discreteReturns.discreteReturns, _germanTax.germanTax, _tax.tax],\n specific: [_portfolioStatisticsAndPositions.portfolioStatisticsAndPositions, _portfolioNoDataMessage.portfolioNoDataMessageReducer, _performanceCumulative2.performanceCumulative, _performanceAnnualised2.performanceAnnualised, _calendarYearReturns2.calendarYearReturns, _performanceRiskStatistics.performanceRiskStatistics, _fundInformation.fundInformation, _fundRatings.fundRatings, _fundStaticBar.fundStaticBar, _discreteReturns2.discreteReturns, _pricingDistribution2.pricingDistribution, _sectorExposure.sectorExposure, _securityTypeExposure.securityTypeExposure, _valueAtRisk.valueAtRisk, _topRiskAllocationByAssetClass.topRiskAllocationByAssetClass, _managerRoster.managerRoster, _riskContribution.riskContribution, _fundMeasures.fundMeasuresReducer]\n }),\n marketing: _marketingReducers.marketingReducers,\n general: _general.general\n };\n});\r\ndefine('configuration/gw/state',['exports', '../common/configure'], function (exports, _configure) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getState = getState;\n function getState() {\n var state = (0, _configure.getInitialState)();\n\n state.products.app.ppss.findAFund.searchProperties = [{ name: 'FUND_NAME_FULL', dataKey: 'fundNameFull' }, { name: 'TA_ID', dataKey: 'taId' }, { name: 'ISIN', dataKey: 'isin' }, { name: 'CUSIP', dataKey: 'cusip' }, { name: 'REUTERS', dataKey: 'reuters' }, { name: 'BLOOMBERG', dataKey: 'bloomberg' }, { name: 'WKN', dataKey: 'wkn' }, { name: 'SEDOL', dataKey: 'sedol' }, { name: 'VLN', dataKey: 'vln' }, { name: 'MEXID', dataKey: 'mexid' }, { name: 'APRI', dataKey: 'apri' }, { name: 'ARSN', dataKey: 'arsn' }, { name: 'FUND_CODE', dataKey: 'fundCode' }, { name: 'FRONT_END', dataKey: 'frontEnd' }, { name: 'LOW_LOAD', dataKey: 'lowLoad' }, { name: 'DSC', dataKey: 'dsc' }, { name: 'DB_CODE', dataKey: 'dbCode' }];\n\n state.products.app.ppss.config.showFundIdentifiersTab = true;\n state.products.app.ppss.config.showKeywordsFilter = true;\n\n state.products.app.ppss.filters = {\n favorites: false,\n dropdowns: [],\n keywords: {\n searchKeys: state.products.app.ppss.findAFund.searchProperties.map(function (prop) {\n return prop.dataKey;\n }),\n searchString: ''\n }\n };\n\n return state;\n }\n});\r\ndefine('components/products/overview/ft-fund-information/gw/ft-fund-information',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundInformation = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtFundInformation = exports.FtFundInformation = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtFundInformation, _ReduxComponentBase);\n\n function FtFundInformation(store, beans, element) {\n _classCallCheck(this, FtFundInformation);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _initDefineProp(_this, 'currentShareClass', _descriptor, _this);\n\n _this.store = store;\n _this.fundId = _this.fundId = element.getAttribute('fund-id');\n _this.beans = beans.component.fundInformation;\n var currentState = _this.store.getState();\n _this.currentShareClass = (0, _get2.default)(currentState, 'products.app.currentShareClass', false);\n _this.segment = (0, _get2.default)(currentState, 'general.segment');\n\n _this.currentShareClassChanged();\n return _this;\n }\n\n FtFundInformation.prototype.currentShareClassChanged = function currentShareClassChanged() {\n this.dispatch({\n type: 'POPULATE_FUND_INFORMATION',\n beans: this.beans,\n fundId: this.fundId,\n segment: this.segment,\n shareClassKey: this.currentShareClass\n });\n };\n\n FtFundInformation.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.currentShareClass = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!fundState || !fundState.fundInformation || !this.label) {\n this.isPopulated = false;\n return;\n }\n var vo = fundState.fundInformation;\n\n this.fundInformation = vo.fundInformation;\n this.salesCharges = vo.salesCharges;\n this.identifiers = vo.identifiers;\n this.distributions = vo.distributions;\n this.tradingCharacteristics = vo.tradingCharacteristics;\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtFundInformation;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'currentShareClass', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/portfolio/ft-asset-allocation/gw/ft-asset-allocation',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtAssetAllocation = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtAssetAllocation = exports.FtAssetAllocation = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtAssetAllocation, _FtGenericChartCompon);\n\n function FtAssetAllocation() {\n _classCallCheck(this, FtAssetAllocation);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtAssetAllocation.prototype.init = function init() {\n this.CHART_TYPE_ID = 'ASSET_ALLOCATION';\n this.COMPONENT_ID = 'asset-allocation';\n this.DATA_COLUMN_LABEL_ID = 'asset-allocation-fund';\n };\n\n return FtAssetAllocation;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-asset-class-exposure/gw/ft-asset-class-exposure',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtAssetClassExposure = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtAssetClassExposure = exports.FtAssetClassExposure = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-exposure-component.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_ReduxComponentBase) {\n _inherits(FtAssetClassExposure, _ReduxComponentBase);\n\n function FtAssetClassExposure(store, beans, element) {\n _classCallCheck(this, FtAssetClassExposure);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n chartType: 'ASSET_EXPOSURE',\n portfolioComponent: 'asset-class-exposure',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtAssetClassExposure.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtAssetClassExposure;\n }(_reduxComponentBase.ReduxComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-average-portfolio-exposure/gw/ft-average-portfolio-exposure',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtAveragePortfolioExposure = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtAveragePortfolioExposure = exports.FtAveragePortfolioExposure = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtAveragePortfolioExposure, _FtGenericChartCompon);\n\n function FtAveragePortfolioExposure() {\n _classCallCheck(this, FtAveragePortfolioExposure);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtAveragePortfolioExposure.prototype.init = function init() {\n this.CHART_TYPE_ID = 'AVERAGE_PORTFOLIO_EXPOSURE';\n this.COMPONENT_ID = 'average-portfolio-exposure';\n this.DATA_COLUMN_LABEL_ID = 'average-portfolio-exposure';\n };\n\n return FtAveragePortfolioExposure;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-currency-breakdown/gw/ft-currency-breakdown',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtCurrencyBreakdown = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtCurrencyBreakdown = exports.FtCurrencyBreakdown = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtCurrencyBreakdown, _FtGenericChartCompon);\n\n function FtCurrencyBreakdown() {\n _classCallCheck(this, FtCurrencyBreakdown);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtCurrencyBreakdown.prototype.init = function init() {\n this.CHART_TYPE_ID = 'CURRENCY_ALLOCATION';\n this.COMPONENT_ID = 'currency-breakdown';\n this.DATA_COLUMN_LABEL_ID = 'currency-breakdown-fund';\n };\n\n return FtCurrencyBreakdown;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-fund-measures/gw/ft-fund-measures',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtFundMeasures = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _initDefineProp(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n\n var _dec, _class, _desc, _value, _class2, _descriptor;\n\n var FtFundMeasures = exports.FtFundMeasures = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = (_class2 = function (_ReduxComponentBase) {\n _inherits(FtFundMeasures, _ReduxComponentBase);\n\n function FtFundMeasures(store, beans, element) {\n _classCallCheck(this, FtFundMeasures);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _initDefineProp(_this, 'shareClassKey', _descriptor, _this);\n\n var currentState = store.getState();\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioFundMeasures;\n _this.portfolioBeans.push(_this.cid);\n\n _this.populateAction = {\n type: 'POPULATE_FUND_MEASURES',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'fund-measure-actual-and-forecast',\n segment: currentState.general.segment\n };\n\n _this.shareClassKey = (0, _get2.default)(currentState, 'products.app.currentShareClass', false);\n return _this;\n }\n\n FtFundMeasures.prototype.shareClassKeyChanged = function shareClassKeyChanged() {\n this.populateAction.shareClassKey = this.shareClassKey;\n if (this.fundId) {\n this.dispatch(this.populateAction);\n }\n };\n\n FtFundMeasures.prototype.mapState = function mapState(newState) {\n try {\n this.shareClassKey = (0, _get2.default)(newState, 'products.app.currentShareClass', false);\n var fundState = (0, _get2.default)(newState, 'products.funds[' + this.fundId + ']', null);\n this.data = (0, _get2.default)(fundState, 'portfolio.fundMeasures');\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label || !this.data || !this.data.riskStats.visible || !this.data.forecastRiskStats.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtFundMeasures;\n }(_reduxComponentBase.ReduxComponentBase), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'shareClassKey', [_aureliaFramework.observable], {\n enumerable: true,\n initializer: null\n })), _class2)) || _class);\n});\r\ndefine('components/products/portfolio/ft-geographic-breakdown/gw/ft-geographic-breakdown',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGeographicBreakdown = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtGeographicBreakdown = exports.FtGeographicBreakdown = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtGeographicBreakdown, _FtGenericChartCompon);\n\n function FtGeographicBreakdown() {\n _classCallCheck(this, FtGeographicBreakdown);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtGeographicBreakdown.prototype.init = function init() {\n this.CHART_TYPE_ID = 'GEOGRAPHIC_BREAKDOWN';\n this.COMPONENT_ID = 'geographic-breakdown';\n this.DATA_COLUMN_LABEL_ID = 'geographic-breakdown-fund';\n };\n\n return FtGeographicBreakdown;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-geographic-exposure/gw/ft-geographic-exposure',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtGeographicExposure = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtGeographicExposure = exports.FtGeographicExposure = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-exposure-component.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_ReduxComponentBase) {\n _inherits(FtGeographicExposure, _ReduxComponentBase);\n\n function FtGeographicExposure(store, beans, element) {\n _classCallCheck(this, FtGeographicExposure);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n chartType: 'GEOGRAPHIC_EXPOSURE',\n cid: _this.cid,\n portfolioComponent: 'geographic-exposure',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtGeographicExposure.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtGeographicExposure;\n }(_reduxComponentBase.ReduxComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-manager-roster/gw/ft-manager-roster',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtManagerRoster = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtManagerRoster = exports.FtManagerRoster = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtManagerRoster, _ReduxComponentBase);\n\n function FtManagerRoster(store, beans, element) {\n _classCallCheck(this, FtManagerRoster);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.managerRosterAndAllocation;\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_MANAGER_ROSTER_AND_ALLOCATION',\n beans: beans.component.managerRosterAndAllocation,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'manager-roster-manager-allocation',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtManagerRoster.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n\n if (!this.label || !fundState || !fundState.managerRosterAndAllocation || !fundState.managerRosterAndAllocation.data.managerAllocations) {\n this.isPopulated = false;\n return;\n }\n\n this.data = fundState.managerRosterAndAllocation.data;\n this.caveats = fundState.managerRosterAndAllocation.caveats;\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtManagerRoster;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-portfolio-exposure/gw/ft-portfolio-exposure',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPortfolioExposure = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtPortfolioExposure = exports.FtPortfolioExposure = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtPortfolioExposure, _FtGenericChartCompon);\n\n function FtPortfolioExposure() {\n _classCallCheck(this, FtPortfolioExposure);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtPortfolioExposure.prototype.init = function init() {\n this.CHART_TYPE_ID = 'PORTFOLIO_EXPOSURE';\n this.COMPONENT_ID = 'portfolio-exposure';\n this.DATA_COLUMN_LABEL_ID = 'portfolio-exposure';\n };\n\n return FtPortfolioExposure;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-portfolio-risk-and-return-analysis/gw/ft-portfolio-risk-and-return-analysis',['exports', 'aurelia-framework', '../../common/ft-generic-hierarchical-component-base', 'lodash/get'], function (exports, _aureliaFramework, _ftGenericHierarchicalComponentBase, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPortfolioRiskAndReturnAnalysis = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtPortfolioRiskAndReturnAnalysis = exports.FtPortfolioRiskAndReturnAnalysis = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtGenericHierarchica) {\n _inherits(FtPortfolioRiskAndReturnAnalysis, _FtGenericHierarchica);\n\n function FtPortfolioRiskAndReturnAnalysis(store, beans, element) {\n _classCallCheck(this, FtPortfolioRiskAndReturnAnalysis);\n\n var _this = _possibleConstructorReturn(this, _FtGenericHierarchica.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n chartType: 'RISK_AND_RETURN_ANALYSIS',\n cid: _this.cid,\n portfolioComponent: 'portfolio-risk-and-return-analysis',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtPortfolioRiskAndReturnAnalysis.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPortfolioRiskAndReturnAnalysis;\n }(_ftGenericHierarchicalComponentBase.FtGenericHierarchicalComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-portfolio-statistics-and-positions/gw/ft-portfolio-statistics-and-positions',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtPortfolioStatisticsAndPositions = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtPortfolioStatisticsAndPositions = exports.FtPortfolioStatisticsAndPositions = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtPortfolioStatisticsAndPositions, _ReduxComponentBase);\n\n function FtPortfolioStatisticsAndPositions(store, beans, element) {\n _classCallCheck(this, FtPortfolioStatisticsAndPositions);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cmsTypeId = 'PORTFOLIO-HOLDINGS';\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioStatisticsAndPositions;\n _this.portfolioBeans.push(_this.cid);\n _this.portfolioBeans.push(_this.cmsTypeId);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_STATISTICS_AND_POSITIONS',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cmsTypeId: _this.cmsTypeId,\n cid: _this.cid,\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtPortfolioStatisticsAndPositions.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n if (!this.label || !fundState || !fundState.portfolioStatisticsAndPositions) {\n this.isPopulated = false;\n return;\n }\n var vo = fundState.portfolioStatisticsAndPositions;\n this.refreshRate = vo.refreshRate;\n this.isValid = vo.isValid;\n this.asOfDate = vo.asOfDate;\n\n this.holdingsPdf = vo.holdingsPdf;\n this.nbrOfIssuers = vo.nbrOfIssuers;\n this.nbrOfHoldings = vo.nbrOfHoldings;\n\n this.showIssuers = vo.showIssuers;\n\n this.statistics = vo.statistics;\n var halfWayPoint = Math.ceil(vo.statistics.data.length / 2);\n this.statisticsPart1 = vo.statistics.data.slice(0, halfWayPoint);\n this.statisticsPart2 = vo.statistics.data.slice(halfWayPoint, vo.statistics.data.length);\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtPortfolioStatisticsAndPositions;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-actual',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', '../../../lib/reducer-utils'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtRiskContributionActual = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtRiskContributionActual = exports.FtRiskContributionActual = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtRiskContributionActual, _ReduxComponentBase);\n\n function FtRiskContributionActual(store, beans, element) {\n _classCallCheck(this, FtRiskContributionActual);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioComponent = 'risk-contribution-actual';\n _this.assetClass = 'Equity';\n _this.portfolioBeans = beans.component.portfolioRiskContribution;\n _this.portfolioBeans.push(_this.cid);\n\n _this.dispatch({\n type: 'POPULATE_RISK_CONTRIBUTION',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: _this.portfolioComponent,\n assetClass: _this.assetClass\n });\n return _this;\n }\n\n FtRiskContributionActual.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n\n\n this.label = newState.products.label;\n this.data = fundState.riskContribution.data;\n this.caveats = fundState.riskContribution.caveats;\n\n var chartData = this.data.table.map(function (item) {\n return [item.name, (0, _reducerUtils.parseNumber)(item.portAvg)];\n });\n\n this.chartData = [{\n data: chartData,\n type: 'bar',\n colorByPoint: true\n }];\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n return FtRiskContributionActual;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-forecast',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', '../../../lib/reducer-utils'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtRiskContributionForecast = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtRiskContributionForecast = exports.FtRiskContributionForecast = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtRiskContributionForecast, _ReduxComponentBase);\n\n function FtRiskContributionForecast(store, beans, element) {\n _classCallCheck(this, FtRiskContributionForecast);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.populated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioComponent = 'risk-contribution-forecast';\n _this.assetClass = 'Equity';\n _this.portfolioBeans = beans.component.portfolioRiskContribution;\n _this.portfolioBeans.push(_this.cid);\n\n _this.dispatch({\n type: 'POPULATE_RISK_CONTRIBUTION',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: _this.portfolioComponent,\n assetClass: _this.assetClass\n });\n return _this;\n }\n\n FtRiskContributionForecast.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = newState.products.label;\n this.data = fundState.riskContribution.data;\n this.caveats = fundState.riskContribution.caveats;\n\n var chartData = this.data.table.map(function (item) {\n return [item.name, (0, _reducerUtils.parseNumber)(item.portForeCntr)];\n });\n\n this.chartData = [{\n data: chartData,\n type: 'bar',\n colorByPoint: true\n }];\n\n this.populated = true;\n } catch (e) {\n this.populated = false;\n }\n };\n\n return FtRiskContributionForecast;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-sector-allocation/gw/ft-sector-allocation',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtSectorAllocation = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _dec2, _class;\n\n var FtSectorAllocation = exports.FtSectorAllocation = (_dec = (0, _aureliaFramework.useView)('../../common/ft-generic-chart-component-base.html'), _dec2 = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = _dec2(_class = function (_FtGenericChartCompon) {\n _inherits(FtSectorAllocation, _FtGenericChartCompon);\n\n function FtSectorAllocation() {\n _classCallCheck(this, FtSectorAllocation);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtSectorAllocation.prototype.init = function init() {\n this.CHART_TYPE_ID = 'SECTOR_ALLOCATION';\n this.COMPONENT_ID = 'sector-allocation';\n this.DATA_COLUMN_LABEL_ID = 'sector-allocation-fund';\n };\n\n return FtSectorAllocation;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class) || _class);\n});\r\ndefine('components/products/portfolio/ft-sector-exposure/gw/ft-sector-exposure',['exports', 'aurelia-framework', '../../common/ft-generic-hierarchical-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _ftGenericHierarchicalComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtSectorExposure = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtSectorExposure = exports.FtSectorExposure = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtGenericHierarchica) {\n _inherits(FtSectorExposure, _FtGenericHierarchica);\n\n function FtSectorExposure(store, beans, element) {\n _classCallCheck(this, FtSectorExposure);\n\n var _this = _possibleConstructorReturn(this, _FtGenericHierarchica.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioSectorExposure;\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_SECTOR_EXPOSURE',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'sector-exposure',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtSectorExposure.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = (0, _get2.default)(fundState, 'sectorExposure.data');\n if (!this.label || !this.data || !this.data.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtSectorExposure;\n }(_ftGenericHierarchicalComponentBase.FtGenericHierarchicalComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-security-type-exposure/gw/ft-security-type-exposure',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtSecurityTypeExposure = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtSecurityTypeExposure = exports.FtSecurityTypeExposure = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtSecurityTypeExposure, _ReduxComponentBase);\n\n function FtSecurityTypeExposure(store, beans, element) {\n _classCallCheck(this, FtSecurityTypeExposure);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioSecurityTypeExposure;\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_SECURITY_TYPE_EXPOSURE',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'security-type-exposure',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtSecurityTypeExposure.prototype.mapState = function mapState(newState) {\n try {\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = (0, _get2.default)(fundState, 'securityTypeExposure.data');\n if (!this.label || !this.data || !this.data.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.chartData = fundState.securityTypeExposure.data.series;\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n FtSecurityTypeExposure.prototype.getValue = function getValue(data, id) {\n var rVal = void 0;\n var orderId = void 0;\n if (this.data !== undefined) {\n orderId = this.data.ordering[id];\n rVal = data[orderId];\n }\n return rVal;\n };\n\n FtSecurityTypeExposure.prototype.getCustomLabel = function getCustomLabel(id) {\n var rVal = void 0;\n if (this.data !== undefined) {\n rVal = this.data.mappedLabels.get(id) || '[!' + id + '!]';\n }\n return rVal;\n };\n\n return FtSecurityTypeExposure;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/ft-top-risk-allocation-by-asset-class',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTopRiskAllocationByAssetClass = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtTopRiskAllocationByAssetClass = exports.FtTopRiskAllocationByAssetClass = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtTopRiskAllocationByAssetClass, _ReduxComponentBase);\n\n function FtTopRiskAllocationByAssetClass(store, beans, element) {\n _classCallCheck(this, FtTopRiskAllocationByAssetClass);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.topRiskAllocationByAssetClass;\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_TOP_RISK_ALLOCATION_BY_ASSET_CLASS',\n beans: beans.component.topRiskAllocationByAssetClass,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'top-risk-allocation-by-asset-class',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtTopRiskAllocationByAssetClass.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n var compState = (0, _get2.default)(fundState, 'topRiskAllocationByAssetClass.data');\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = compState;\n\n if (!this.label || !compState || !compState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtTopRiskAllocationByAssetClass;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-top-ten-holdings/gw/ft-top-ten-holdings',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', 'lodash/get', '../../../../common/elements/charting/ft-charts-configs'], function (exports, _aureliaFramework, _reduxComponentBase, _get, _ftChartsConfigs) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtTopTenHoldings = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtTopTenHoldings = exports.FtTopTenHoldings = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtTopTenHoldings, _ReduxComponentBase);\n\n function FtTopTenHoldings(store, beans, element) {\n _classCallCheck(this, FtTopTenHoldings);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.portfolioCharting.slice(0);\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_PORTFOLIO_CHART',\n beans: _this.portfolioBeans,\n fundId: _this.fundId,\n cid: _this.cid,\n chartType: 'TOP_TEN_HOLDINGS',\n portfolioComponent: 'top-ten-holdings',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtTopTenHoldings.prototype.mapState = function mapState(newState) {\n try {\n var chartState = (0, _get2.default)(newState, 'products.app.portfolio.chart[' + this.cid + ']', false);\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = chartState;\n if (!this.label || !chartState || !chartState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.chartData = [{\n data: this.data.chart,\n type: 'bar',\n colorByPoint: false,\n color: _ftChartsConfigs.GENERIC_CHART_COLOUR\n }];\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtTopTenHoldings;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/ft-value-at-risk/gw/ft-value-at-risk',['exports', 'aurelia-framework', '../../../../../lib/redux-component-base', '../../../lib/map-state-utils', 'lodash/get'], function (exports, _aureliaFramework, _reduxComponentBase, _mapStateUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtValueAtRisk = undefined;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtValueAtRisk = exports.FtValueAtRisk = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_ReduxComponentBase) {\n _inherits(FtValueAtRisk, _ReduxComponentBase);\n\n function FtValueAtRisk(store, beans, element) {\n _classCallCheck(this, FtValueAtRisk);\n\n var _this = _possibleConstructorReturn(this, _ReduxComponentBase.call(this, store));\n\n _this.isPopulated = false;\n\n _this.fundId = element.getAttribute('fund-id');\n _this.cid = element.getAttribute('cid');\n _this.portfolioBeans = beans.component.valueAtRisk;\n _this.portfolioBeans.push(_this.cid);\n\n var currentState = store.getState();\n _this.dispatch({\n type: 'POPULATE_VALUE_AT_RISK',\n beans: beans.component.valueAtRisk,\n fundId: _this.fundId,\n cid: _this.cid,\n portfolioComponent: 'value-at-risk',\n segment: currentState.general.segment\n });\n return _this;\n }\n\n FtValueAtRisk.prototype.mapState = function mapState(newState) {\n try {\n this.logger.debug('mapState()');\n var fundState = (0, _mapStateUtils.getFundState)(newState, this.fundId);\n var compState = (0, _get2.default)(fundState, 'valueAtRisk.data');\n this.label = (0, _get2.default)(newState, 'products.label');\n this.data = compState;\n\n if (!this.label || !compState || !compState.visible) {\n this.isPopulated = false;\n return;\n }\n\n this.isPopulated = true;\n } catch (e) {\n this.logger.error(e);\n this.isPopulated = false;\n }\n };\n\n return FtValueAtRisk;\n }(_reduxComponentBase.ReduxComponentBase)) || _class);\n});\r\ndefine('components/products/portfolio/lib/gw/portfolio-chart.reducer',['exports', 'lodash/set', 'lodash/get', 'lodash/find', 'lodash/map', 'lodash/uniq', '../../util/util', '../../util/hierarchical-utils', '../../util/key-value-row-utils', '../../../common/util/utils-config', '../../../common/util/utils-fund-details', '../../../lib/decorators/config-decorator', '../../util/risk-and-analysis-special-utils', 'aurelia-framework'], function (exports, _set, _get, _find, _map, _uniq, _util, _hierarchicalUtils, _keyValueRowUtils, _utilsConfig, _utilsFundDetails, _configDecorator, _riskAndAnalysisSpecialUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CHART_TYPES_ENUM = exports.OUTPUT_STYLE_ENUM = exports.DATA_STORE_ENUM = undefined;\n exports.portfolioChartReducer = portfolioChartReducer;\n\n var _set2 = _interopRequireDefault(_set);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _map2 = _interopRequireDefault(_map);\n\n var _uniq2 = _interopRequireDefault(_uniq);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('portfolio-chart-reducer');\n\n var DATA_STORE_ENUM = exports.DATA_STORE_ENUM = {\n BREAKDOWN: {\n key: 'BREAKDOWN'\n },\n HOLDINGS: {\n key: 'HOLDINGS'\n },\n HOLDINGS_TOP_TEN: {\n key: 'HOLDINGS_TOP_TEN'\n },\n RISK_CONTROL: {\n key: 'RISK_CONTROL'\n }\n };\n var OUTPUT_STYLE_ENUM = exports.OUTPUT_STYLE_ENUM = {\n STANDARD_BREAKDOWN: {\n key: 'STANDARD_BREAKDOWN'\n },\n\n KEYVALUE_BREAKDOWN: {\n key: 'KEYVALUE_BREAKDOWN'\n },\n\n HIERARCHY_BREAKDOWN: {\n key: 'HIERARCHY_BREAKDOWN'\n }\n };\n\n var CHART_TYPES_ENUM = exports.CHART_TYPES_ENUM = {\n 'ASSET_ALLOCATION': {\n labelId: 'asset-allocation',\n dataKey: 'ASSET_ALLOCATION',\n caveatId: 'AssetAllocation',\n options: {\n suppressionCondition: function suppressionCondition(config, rawPortfolioFeed, currentBreakdown) {\n var rawBreakdowns = (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var assetExposureBreakdown = (0, _find2.default)(rawBreakdowns, { type: 'ASSET_EXPOSURE' }, null);\n return !!assetExposureBreakdown;\n },\n sorted: false\n },\n forceChart: true\n },\n 'ASSET_EXPOSURE': {\n labelId: 'asset-class-exposure',\n caveatId: 'AssetClassExposure',\n outputStyle: OUTPUT_STYLE_ENUM.KEYVALUE_BREAKDOWN,\n dataKey: 'ASSET_EXPOSURE',\n options: {\n nameKey: 'name2.val',\n kv_keyField: 'name.val',\n kv_valueField: 'val.val',\n hardcodedCalcLabelId: 'asset-class-exposure-calc'\n }\n },\n 'CURRENCY_ALLOCATION': {\n labelId: 'currency-breakdown-heading',\n dataKey: 'CURRENCY_ALLOCATION',\n caveatId: 'CurrencyBreakdown',\n options: {\n sorted: false,\n hasCalNameInRows: true\n },\n forceChart: true\n },\n 'GEOGRAPHIC_BREAKDOWN': {\n labelId: 'geographic-breakdown-heading',\n caveatId: 'GeographicBreakdown',\n dataKey: 'COUNTRY_ALLOCATION',\n options: {\n suppressionCondition: function suppressionCondition(config, rawPortfolioFeed, currentBreakdown) {\n var rows = (0, _get2.default)(currentBreakdown, 'brkDwnLst.lstDtls', []);\n return (0, _uniq2.default)((0, _map2.default)(rows, 'calNameStd.val')).length !== 1;\n },\n\n filterCondition: function filterCondition(o) {\n return (0, _get2.default)(o, 'rollupLevel.val', '1') === '1';\n },\n hasCalNameInRows: true\n },\n forceChart: false\n },\n 'GEOGRAPHIC_EXPOSURE': {\n labelId: 'geographic-exposure-heading',\n caveatId: 'GeographicExposure',\n dataKey: 'COUNTRY_ALLOCATION',\n outputStyle: OUTPUT_STYLE_ENUM.KEYVALUE_BREAKDOWN,\n options: {\n nameKey: 'name.val',\n kv_keyField: 'calType.val',\n kv_valueField: 'val.val',\n\n suppressionCondition: function suppressionCondition(config, rawPortfolioFeed, currentBreakdown) {\n var rows = (0, _get2.default)(currentBreakdown, 'brkDwnLst.lstDtls', []);\n return (0, _uniq2.default)((0, _map2.default)(rows, 'calNameStd.val')).length === 1;\n },\n\n filterCondition: function filterCondition(o) {\n return (0, _get2.default)(o, 'rollupLevel.val', '1') === '1';\n },\n hardcodedCalcLabelId: 'geographic-exposure-calc'\n },\n forceChart: false\n },\n 'SECTOR_ALLOCATION': {\n labelId: 'sector-allocation-heading',\n caveatId: 'SectorAllocation',\n dataKey: 'SECTOR_ALLOCATION',\n options: {\n suppressionCondition: function suppressionCondition(config, rawPortfolioFeed, currentBreakdown) {\n var rows = (0, _get2.default)(currentBreakdown, 'brkDwnLst.lstDtls', []);\n return (0, _uniq2.default)((0, _map2.default)(rows, 'calNameStd.val')).length !== 1;\n },\n sorted: false,\n hasCalNameInRows: true\n }\n },\n\n 'SECTOR_EXPOSURE': {\n buildChart: false,\n labelId: 'sector-exposure-heading',\n caveatId: 'SectorExposure',\n dataKey: 'K2_SECTOR_ALLOCATION',\n outputStyle: OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN,\n options: {\n nameFunc: function nameFunc(o) {\n var isParent = (0, _get2.default)(o, 'name2.val', null) === null;\n if (isParent) {\n return (0, _get2.default)(o, 'name.val');\n }\n return (0, _get2.default)(o, 'name2.val');\n },\n rangeKey: 'name.val',\n tableMappingKeys: {\n val: 'val.val',\n valOfTotal: 'val3.val'\n }\n },\n forceChart: false\n },\n 'MARKET_CAPITAL_ALLOCATION': {\n labelId: 'market-capitalisation-heading',\n caveatId: 'MarketCapitalisation',\n dataKey: 'MARKET_CAPITAL_ALLOCATION',\n options: {\n sorted: false,\n forceChart: true\n }\n },\n 'TOP_SHORT_EXPOSURES': {\n labelId: 'top-short-exposure',\n caveatId: 'TopShortExposures',\n dataStore: DATA_STORE_ENUM.HOLDINGS,\n dataKey: 'SHORT_EQUITY_AS_PCT_OF_EQUITY',\n options: {\n sorted: false\n }\n },\n 'TOP_LONG_EXPOSURES': {\n labelId: 'top-long-exposure',\n caveatId: 'TopLongExposures',\n dataStore: DATA_STORE_ENUM.HOLDINGS,\n dataKey: 'LONG_EQUITY_AS_PCT_OF_EQUITY',\n options: {\n sorted: false\n }\n },\n 'TOP_TEN_HOLDINGS': {\n labelId: 'top-ten-holdings-heading',\n caveatId: 'TopTenHoldings',\n dataStore: DATA_STORE_ENUM.HOLDINGS_TOP_TEN,\n options: {\n sorted: true\n }\n },\n 'RISK_AND_RETURN_ANALYSIS': {\n labelId: 'risk-and-return-analysis-heading',\n caveatId: 'PortfolioRiskAndReturnAnalysis',\n dataStore: DATA_STORE_ENUM.RISK_CONTROL,\n outputStyle: OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN,\n options: {\n buildChart: false,\n filterCondition: function filterCondition(o) {\n var monthPeriod = (0, _get2.default)(o, 'fPeriod.val', '1');\n return monthPeriod === '1';\n },\n nameFunc: _riskAndAnalysisSpecialUtils.getRiskContributionRowName,\n rangeKey: 'fact1.val',\n tableMappingKeys: {\n val: 'portAvg.val',\n performanceContribution: 'portCntr.val',\n riskContribution: 'portHistCntr.val',\n riskContributionForecast: 'portForeCntr.val',\n startDate: 'startDt.val',\n nameStd: 'fact1Std.val'\n },\n specialRiskConfigRules: true,\n filter: false\n }\n },\n 'AVERAGE_PORTFOLIO_EXPOSURE': {\n labelId: 'average-portfolio-exposure-heading',\n caveatId: 'AveragePortfolioExposure',\n dataStore: DATA_STORE_ENUM.RISK_CONTROL,\n outputStyle: OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN,\n options: {\n nameKey: 'fact1.val',\n chartValKey: 'portCntr.val',\n filterCondition: function filterCondition(o) {\n var isParentRow = (0, _riskAndAnalysisSpecialUtils.isRiskContributionParent)(o);\n var monthPeriod = (0, _get2.default)(o, 'fPeriod.val', '1');\n var is1MonthData = monthPeriod === '1';\n return isParentRow && is1MonthData;\n },\n tableMappingKeys: {\n val: 'portCntr.val',\n nameStd: 'fact1Std.val'\n },\n specialRiskConfigRules: true,\n filter: false,\n hardcodedCalcLabelId: 'average-portfolio-exposure-calc'\n }\n },\n 'PORTFOLIO_ALLOCATION': {\n labelId: 'portfolio-allocation-heading',\n caveatId: 'PortfolioAllocation',\n dataKey: 'K2_PORTFOLIO_ALLOCATION',\n outputStyle: OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN,\n options: {\n buildChart: false,\n nameFunc: function nameFunc(o) {\n var isParent = (0, _get2.default)(o, 'name2.val', null) === null;\n if (isParent) {\n return (0, _get2.default)(o, 'name.val');\n }\n return (0, _get2.default)(o, 'name2.val');\n },\n rangeKey: 'name.val',\n tableMappingKeys: {\n val: 'val.val',\n valOfTotal: 'val3.val'\n },\n filter: false,\n hardcodedCalcLabelId: 'portfolio-allocation-calc'\n }\n },\n 'STRATEGY_BREAKDOWN': {\n labelId: 'strategy-breakdown',\n caveatId: 'StrategyBreakdown',\n dataKey: 'HEDGE_ALLOCATION',\n options: {\n nameKey: 'name2.val',\n tableMappingKeys: {\n val: 'val.val',\n strategy: 'val2.val'\n },\n sorted: false,\n filter: false,\n filterCondition: {\n 'nameStd': {\n 'val': 'STRATEGY'\n }\n },\n hardcodedCalcLabelId: 'strategy-breakdown-calc'\n }\n },\n 'PORTFOLIO_EXPOSURE': {\n labelId: 'portfolio-exposure-heading',\n caveatId: 'PortfolioExposure',\n dataKey: 'HEDGE_ALLOCATION',\n options: {\n nameKey: 'name2.val',\n sorted: false,\n filter: false,\n filterCondition: {\n 'nameStd': {\n 'val': 'EXPOSURES'\n }\n },\n hardcodedCalcLabelId: 'portfolio-exposure-calc'\n }\n },\n\n 'COUPON_ALLOCATION': {\n dataKey: 'COUPON_ALLOCATION'\n },\n 'QUALITY_ALLOCATION': {\n dataKey: 'QUALITY_ALLOCATION'\n },\n 'PRODUCT_AUM': {\n dataKey: 'PRODUCT_AUM'\n },\n 'SECURITY_EXPOSURE': {\n dataKey: 'SECURITY_EXPOSURE'\n },\n 'ASSET_SECURITY_EXPOSURE': {\n dataKey: 'ASSET_SECURITY_EXPOSURE'\n },\n\n 'RISK_CONTRIBUTION_ACTUAL': {\n labelId: 'risk-contribution-actual-heading',\n caveatId: 'RiskContributionActual',\n dataStore: DATA_STORE_ENUM.RISK_CONTROL,\n outputStyle: OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN,\n options: {\n nameKey: 'fact1.val',\n chartValKey: 'portHistCntr.val',\n filterCondition: function filterCondition(o) {\n var isParentRow = (0, _riskAndAnalysisSpecialUtils.isRiskContributionParent)(o);\n var monthPeriod = (0, _get2.default)(o, 'fPeriod.val', '1');\n var is1MonthData = monthPeriod === '1';\n return isParentRow && is1MonthData;\n },\n tableMappingKeys: {\n val: 'portHistCntr.val',\n nameStd: 'fact1Std.val'\n },\n specialRiskConfigRules: true,\n hardcodedCalcLabelId: 'risk-contribution-actual-calc'\n }\n },\n\n 'RISK_CONTRIBUTION_FORECAST': {\n labelId: 'risk-contribution-forecast-heading',\n caveatId: 'RiskContributionForecast',\n dataStore: DATA_STORE_ENUM.RISK_CONTROL,\n outputStyle: OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN,\n options: {\n nameKey: 'fact1.val',\n chartValKey: 'portForeCntr.val',\n filterCondition: function filterCondition(o) {\n var isParentRow = (0, _riskAndAnalysisSpecialUtils.isRiskContributionParent)(o);\n var monthPeriod = (0, _get2.default)(o, 'fPeriod.val', '1');\n var is1MonthData = monthPeriod === '1';\n return isParentRow && is1MonthData;\n },\n tableMappingKeys: {\n val: 'portForeCntr.val',\n nameStd: 'fact1Std.val'\n },\n filter: false,\n specialRiskConfigRules: true,\n hardcodedCalcLabelId: 'risk-contribution-forecast-calc'\n }\n }\n };\n\n function portfolioChartReducer(state, action) {\n switch (action.type) {\n case 'POPULATE_PORTFOLIO_CHART_SUCCESS':\n if (!action.cid) {\n logger.error('no cid given');\n return state;\n }\n if (!CHART_TYPES_ENUM[action.chartType]) {\n logger.error('invalid chart type given : ' + action.chartType);\n return state;\n }\n var _action$json = action.json,\n rawPortfolioFeed = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2],\n rawPageJsonConfig = _action$json[3];\n\n var newState = Object.assign({}, state);\n var cid = action.cid;\n var key = !action.subKey ? 'app.portfolio.chart[' + cid + ']' : 'app.portfolio.chart[' + cid + '][' + action.subKey + ']';\n var chartObj = chartDataFactory(rawPortfolioFeed, rawFundDetails, rawConfig, rawPageJsonConfig, action);\n (0, _set2.default)(newState, key, chartObj);\n return newState;\n default:\n return state;\n }\n }\n\n function getBreakdown(rawPortfolioFeed, chartTypeConfig) {\n switch (chartTypeConfig.dataStore) {\n case DATA_STORE_ENUM.HOLDINGS_TOP_TEN:\n var rawTopTenHoldings = (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.holdings', []);\n chartTypeConfig.options = Object.assign({}, chartTypeConfig.options, { breakDownKey: 'hldingDetails.lstDtls' });\n return rawTopTenHoldings.length === 1 ? rawTopTenHoldings[0] : null;\n case DATA_STORE_ENUM.HOLDINGS:\n var rawHoldings = (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.holdings');\n chartTypeConfig.options = Object.assign({}, chartTypeConfig.options, { breakDownKey: 'hldingDetails.lstDtls' });\n return (0, _find2.default)(rawHoldings, { 'calNameStd': { val: chartTypeConfig.dataKey } });\n case DATA_STORE_ENUM.RISK_CONTROL:\n chartTypeConfig.options = Object.assign({}, chartTypeConfig.options, { breakDownKey: 'RiskFactDt.lstDtls' });\n return (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.riskCntr');\n case DATA_STORE_ENUM.BREAKDOWN:\n default:\n var rawBreakdowns = (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n return (0, _find2.default)(rawBreakdowns, { 'type': chartTypeConfig.dataKey });\n }\n }\n\n function chartDataFactory(rawPortfolioFeed, rawFundDetails, rawConfig, rawPageJsonConfig, action) {\n var chartType = action.chartType;\n\n var chartTypeConfig = CHART_TYPES_ENUM[chartType];\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetails);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, action.portfolioComponent, fundCategory);\n if (isSuppressed) {\n return {\n visible: false,\n isSuppressed: true\n };\n }\n\n if (chartTypeConfig.options.specialRiskConfigRules) {\n var isSuppressedRiskConfig = (0, _riskAndAnalysisSpecialUtils.isPortfolioComponentSuppressedByRiskConfig)(decoratedConfig, action.fundId, action.portfolioComponent);\n if (isSuppressedRiskConfig) {\n return {\n visible: false,\n isSuppressedRiskConfig: true\n };\n }\n }\n\n var currentBreakdown = getBreakdown(rawPortfolioFeed, chartTypeConfig);\n if (!currentBreakdown) {\n return {\n visible: false,\n isSuppressedByLackOfData: true\n };\n }\n\n var suppressionCondition = (0, _get2.default)(chartTypeConfig, 'options.suppressionCondition', null);\n if (suppressionCondition && suppressionCondition(decoratedConfig, rawPortfolioFeed, currentBreakdown)) {\n return {\n visible: false,\n isSuppressedByCondition: true\n };\n }\n\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n var refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n var obj = {\n caveatFootnote: chartTypeConfig.caveatId ? chartTypeConfig.caveatId : 'Portfolio',\n caveatProximal: chartTypeConfig.caveatId ? chartTypeConfig.caveatId + 'Proximal' : 'PortfolioProximal',\n labelId: chartTypeConfig.labelId,\n visible: true,\n showChart: null,\n spanRow: null,\n refreshRate: refreshRate\n };\n\n var tempBreakdown = void 0;\n switch (chartTypeConfig.outputStyle) {\n case OUTPUT_STYLE_ENUM.HIERARCHY_BREAKDOWN:\n tempBreakdown = (0, _hierarchicalUtils.getHierarchicalBreakdown)(currentBreakdown, chartTypeConfig.options, decoratedConfig, action.fundId);\n obj = Object.assign({}, obj, tempBreakdown);\n break;\n case OUTPUT_STYLE_ENUM.KEYVALUE_BREAKDOWN:\n tempBreakdown = (0, _keyValueRowUtils.getKVBreakdown)(currentBreakdown, chartTypeConfig.options);\n obj = Object.assign({}, obj, tempBreakdown);\n break;\n case OUTPUT_STYLE_ENUM.STANDARD_BREAKDOWN:\n default:\n tempBreakdown = _util.portfolioUtils.getIntlSimplifiedBreakdown(currentBreakdown, chartTypeConfig.options);\n if (chartTypeConfig.appendTableData) {\n var rawBreakdowns = (0, _get2.default)(rawPortfolioFeed, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var appendBreakdown = (0, _find2.default)(rawBreakdowns, { 'type': chartTypeConfig.appendTableData.dataKey });\n _util.portfolioUtils.appendTableData(tempBreakdown.table, appendBreakdown, chartTypeConfig.appendTableData);\n }\n obj = Object.assign({}, obj, tempBreakdown);\n break;\n }\n\n if (chartTypeConfig.forceChart) {\n obj.showChart = true;\n obj.spanRow = true;\n } else {\n var pageJsonConfig = _util.portfolioUtils.parsePageJsonConfig(rawPageJsonConfig);\n obj.showChart = pageJsonConfig.showChart;\n obj.spanRow = pageJsonConfig.spanRow;\n }\n return obj;\n }\n});\r\ndefine('components/products/portfolio/ft-strategy-breakdown/gw/ft-strategy-breakdown',['exports', 'aurelia-framework', '../../common/ft-generic-chart-component-base'], function (exports, _aureliaFramework, _ftGenericChartComponentBase) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FtStrategyBreakdown = undefined;\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _dec, _class;\n\n var FtStrategyBreakdown = exports.FtStrategyBreakdown = (_dec = (0, _aureliaFramework.inject)('Store', 'Beans', Element), _dec(_class = function (_FtGenericChartCompon) {\n _inherits(FtStrategyBreakdown, _FtGenericChartCompon);\n\n function FtStrategyBreakdown() {\n _classCallCheck(this, FtStrategyBreakdown);\n\n return _possibleConstructorReturn(this, _FtGenericChartCompon.apply(this, arguments));\n }\n\n FtStrategyBreakdown.prototype.init = function init() {\n this.CHART_TYPE_ID = 'STRATEGY_BREAKDOWN';\n this.COMPONENT_ID = 'sector-breakdown';\n this.DATA_COLUMN_LABEL_ID = 'n/a';\n };\n\n return FtStrategyBreakdown;\n }(_ftGenericChartComponentBase.FtGenericChartComponentBase)) || _class);\n});\r\ndefine('components/marketing/lists/ft-document-lister/lib/gw/ft-document-lister.reducer',['exports', 'lodash/get'], function (exports, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ftDocumentLister = ftDocumentLister;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function ftDocumentLister(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n var beanLabelData = (0, _get2.default)(labelData, 'labels');\n\n var otherLabel = (0, _get2.default)(beanLabelData, 'other-label');\n\n return Object.assign({}, state, {\n ftDocumentListerLabels: {\n otherLabel: otherLabel\n }\n });\n case 'DOCLISTER_CONFIG_SUCCESS':\n var data = (0, _get2.default)(action, 'data');\n var columnsObj = {};\n data.forEach(function (column) {\n var key = 'showCol' + column.value;\n columnsObj[key] = true;\n });\n\n return Object.assign({}, state, {\n ftDocumentLister: {\n columns: columnsObj\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/lists/ft-report-archive-a/lib/gw/report-archive-a.reducer',['exports', 'lodash/get', 'lodash/map', 'lodash/isArray', 'lodash/first', 'lodash/takeRight'], function (exports, _get, _map, _isArray, _first, _takeRight) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.reportArchiveA = reportArchiveA;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _map2 = _interopRequireDefault(_map);\n\n var _isArray2 = _interopRequireDefault(_isArray);\n\n var _first2 = _interopRequireDefault(_first);\n\n var _takeRight2 = _interopRequireDefault(_takeRight);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function reportArchiveA(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n var beanLabelData = (0, _get2.default)(labelData, 'labels');\n\n var searchFundKeyword = (0, _get2.default)(beanLabelData, 'search-fund-keyword');\n var onOffToggle = (0, _get2.default)(beanLabelData, 'on-off-toggle');\n var onState = (0, _get2.default)(beanLabelData, 'on-state');\n var offState = (0, _get2.default)(beanLabelData, 'off-state');\n\n return Object.assign({}, state, {\n reportArchiveALabels: {\n searchFundKeyword: searchFundKeyword,\n onOffToggle: onOffToggle,\n onState: onState,\n offState: offState\n }\n });\n case 'POPULATE_REPORT_ARCHIVE_A_SUCCESS':\n var _action$json2 = action.json,\n data = _action$json2[0];\n\n\n var beanData = (0, _get2.default)(data, 'config.providers.provider[reports-data]');\n\n\n var cols = (0, _get2.default)(beanData, 'documents.header.column');\n var rows = (0, _get2.default)(beanData, 'documents.row');\n var noresults = (0, _get2.default)(beanData, 'message');\n var footnote = (0, _get2.default)(beanData, 'caveat.footnote');\n var fundtitle = (0, _get2.default)(beanData, 'fundtitle');\n\n if (rows) {\n rows = (0, _isArray2.default)(rows) ? rows : [rows];\n rows = (0, _map2.default)(rows, function (row) {\n var columns = (0, _get2.default)(row, 'column');\n var label = (0, _first2.default)(columns).label;\n var otherColumns = (0, _takeRight2.default)(columns, columns.length - 1);\n var rowCols = (0, _map2.default)(otherColumns, function (col) {\n var column = {};\n if (typeof col.document === 'string') {\n column.noresults = col.document;\n } else {\n var documents = (0, _isArray2.default)(col.document) ? col.document : [col.document];\n column.documents = (0, _map2.default)(documents, function (doc) {\n return {\n url: doc.path,\n title: doc.title,\n label: doc.title,\n size: doc.size,\n extension: doc.extension\n };\n });\n }\n return column;\n });\n return {\n label: label,\n cols: rowCols\n };\n });\n } else {\n rows = [];\n }\n\n return Object.assign({}, state, {\n reportArchiveA: {\n title: fundtitle,\n noresults: noresults,\n footnote: footnote,\n cols: cols,\n rows: rows\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/lists/ft-report-archive-b/lib/gw/report-archive-b.reducer',['exports', 'lodash/get', 'lodash/map', 'lodash/isArray', 'lodash/first', 'lodash/takeRight'], function (exports, _get, _map, _isArray, _first, _takeRight) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.reportArchiveB = reportArchiveB;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _map2 = _interopRequireDefault(_map);\n\n var _isArray2 = _interopRequireDefault(_isArray);\n\n var _first2 = _interopRequireDefault(_first);\n\n var _takeRight2 = _interopRequireDefault(_takeRight);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function reportArchiveB(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n labelData = _action$json[0];\n\n var beanLabelData = (0, _get2.default)(labelData, 'labels');\n\n var searchFundKeyword = (0, _get2.default)(beanLabelData, 'search-fund-keyword');\n var onOffToggle = (0, _get2.default)(beanLabelData, 'on-off-toggle');\n var onState = (0, _get2.default)(beanLabelData, 'on-state');\n var offState = (0, _get2.default)(beanLabelData, 'off-state');\n\n return Object.assign({}, state, {\n reportArchiveBLabels: {\n searchFundKeyword: searchFundKeyword,\n onOffToggle: onOffToggle,\n onState: onState,\n offState: offState\n }\n });\n case 'POPULATE_REPORT_ARCHIVE_B_SUCCESS':\n var _action$json2 = action.json,\n data = _action$json2[0];\n\n var reportArchiveBData = {};\n\n var beanData = (0, _get2.default)(data, 'config.providers.provider[archive-data]');\n\n var cols = (0, _get2.default)(beanData, 'documents.header.column');\n if (cols) {\n reportArchiveBData.cols = cols;\n }\n var footnote = (0, _get2.default)(beanData, 'caveat.footnote');\n if (cols) {\n reportArchiveBData.footnote = footnote;\n }\n var rows = (0, _get2.default)(beanData, 'documents.row');\n\n if (rows) {\n rows = (0, _isArray2.default)(rows) ? rows : [rows];\n\n\n rows = (0, _map2.default)(rows, function (row) {\n var columns = (0, _get2.default)(row, 'column');\n var label = (0, _first2.default)(columns).label;\n\n var otherColumns = (0, _takeRight2.default)(columns, columns.length - 1);\n\n var rowCols = (0, _map2.default)(otherColumns, function (col) {\n var column = {};\n if (col.document) {\n column.documents = (0, _map2.default)((0, _isArray2.default)(col.document) ? col.document : [col.document], function (doc) {\n var document = {\n title: (0, _get2.default)(doc, 'title'),\n label: (0, _get2.default)(doc, 'title'),\n size: (0, _get2.default)(doc, 'size'),\n extension: (0, _get2.default)(doc, 'extension')\n };\n if (doc.path) {\n document.url = '' + doc.path;\n }\n return document;\n });\n }\n if (typeof col.message === 'string') {\n column.noresults = col.message;\n }\n return column;\n });\n return {\n label: label,\n cols: rowCols\n };\n });\n reportArchiveBData.rows = rows;\n }\n return Object.assign({}, state, { reportArchiveB: reportArchiveBData });\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/video/ft-video-switch/lib/gw/ft-video-switch.reducer',['exports', 'lodash/get'], function (exports, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ftVideoSwitch = ftVideoSwitch;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function ftVideoSwitch(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n data = _action$json[0];\n\n var beanData = (0, _get2.default)(data, 'labels');\n\n var transcriptLabel = (0, _get2.default)(beanData, 'transcript-label');\n var brightcoveVideoDirectLink = (0, _get2.default)(beanData, 'brightcove-video-direct-link');\n var brightcoveVideoEmbedCode = (0, _get2.default)(beanData, 'brightcove-video-embed-code');\n var brightcoveVideoFacebookAlt = (0, _get2.default)(beanData, 'brightcove-video-facebook-alt');\n var brightcoveVideoLinkedinAlt = (0, _get2.default)(beanData, 'brightcove-video-linkedin-alt');\n var brightcoveVideoModalCloseAlt = (0, _get2.default)(beanData, 'brightcove-video-modal-close-alt');\n var brightcoveVideoPlayAlt = (0, _get2.default)(beanData, 'brightcove-video-play-alt');\n var brightcoveVideoShareLink = (0, _get2.default)(beanData, 'brightcove-video-share-link');\n var brightcoveVideoTwitterAlt = (0, _get2.default)(beanData, 'brightcove-video-twitter-alt');\n\n return Object.assign({}, state, {\n ftVideoSwitch: {\n transcriptLabel: transcriptLabel,\n brightcoveVideoDirectLink: brightcoveVideoDirectLink,\n brightcoveVideoEmbedCode: brightcoveVideoEmbedCode,\n brightcoveVideoFacebookAlt: brightcoveVideoFacebookAlt,\n brightcoveVideoLinkedinAlt: brightcoveVideoLinkedinAlt,\n brightcoveVideoModalCloseAlt: brightcoveVideoModalCloseAlt,\n brightcoveVideoPlayAlt: brightcoveVideoPlayAlt,\n brightcoveVideoShareLink: brightcoveVideoShareLink,\n brightcoveVideoTwitterAlt: brightcoveVideoTwitterAlt\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/overview/ft-fund-information/lib/en-gb/fund-information.reducer',['exports', 'aurelia-framework', '../gw/fund-information.reducer', 'lodash/find', 'lodash/get', '../common/fund-information.reducer'], function (exports, _aureliaFramework, _fundInformation, _find, _get, _fundInformation2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundInformation = fundInformation;\n\n var _find2 = _interopRequireDefault(_find);\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-information');\n\n function fundInformation(state, action) {\n switch (action.type) {\n case 'POPULATE_FUND_INFORMATION_SUCCESS':\n logger.debug('Reducing: POPULATE_FUND_INFORMATION_SUCCESS for UK');\n var newState = (0, _fundInformation.fundInformation)(state, action);\n if (newState !== state && newState.fundInformation.distributions) {\n var _action$json = action.json,\n rawFundDetails = _action$json[1],\n rawPrice = _action$json[2];\n\n var priceShareClasses = (0, _get2.default)(rawPrice, 'globalProductsValue.prceDistbIntl.shClsPriceDet', []);\n var dividendYeild = (0, _find2.default)(priceShareClasses, { shClsCD: { val: action.shareClassKey } });\n var ukDistributionYeild = dividendYeild.navDet.dvndYldUK.val;\n var assetClass = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.assetClassStd.val');\n newState = (0, _fundInformation2.updateDistributionYield)(newState, ukDistributionYeild, assetClass);\n }\n return newState;\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/overview/ft-fund-information/lib/gw/fund-information.reducer',['exports', 'lodash/get', 'lodash/find', 'aurelia-framework', '../common/fund-information.reducer', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-fund-details', '../../../../lib/reducer-utils'], function (exports, _get, _find, _aureliaFramework, _fundInformation, _configDecorator, _utilsFundDetails, _reducerUtils) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DISTRIBUTION_FIELDS = exports.INFORMATION_FIELDS = exports.SALES_CHARGE_FIELDS = undefined;\n exports.fundInformation = fundInformation;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-information');\n\n var SALES_CHARGE_FIELDS = exports.SALES_CHARGE_FIELDS = {\n 'maximum-sales-charge': {\n dataKey: 'normalised.currentClass.maxInitChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'MaximumSalesChargeOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'maintenance-charge': {\n dataKey: 'normalised.currentClass.feeCharges.mtnceChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'MaintenanceChargeOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'management-charge': {\n dataKey: 'normalised.currentClass.feeCharges.mgmtChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'ManagementChargeOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'total-expenses': {\n dataKey: 'normalised.currentClass.feeCharges.expRatioWthWvr.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'TEROverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'ongoing-charges': {\n dataKey: 'normalised.currentClass.feeCharges.ongoingChrgeRatio.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'OngoingChargesOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'total-annual-charge': {\n dataKey: 'normalised.currentClass.feeCharges.totAnulChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'TotalAnnualChargeOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'initial-sales-charge': {\n dataKey: 'normalised.currentClass.feeCharges.initSalesChrge.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE\n },\n 'minimum-initial-amount': {\n dataKey: 'normalised.currentClass.invstmntMin.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'MinimumInitialAmountOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'minimum-subsequent-amount': {\n dataKey: 'normalised.currentClass.minSubsequentAmt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'MinimumSubsequentAmountOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }\n };\n\n var INFORMATION_FIELDS = exports.INFORMATION_FIELDS = {\n 'fund-inception-date': {\n dataKey: 'fundDetails.fundIncpDt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'fund-based-currency': {\n dataKey: 'fundDetails.fundBaseCur.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'share-class-currency': {\n dataKey: 'normalised.currentClass.shClsCur.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n\n 'share-class-inception-date': {\n dataKey: 'normalised.currentClass.shClsIncpDt.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'class-performance-inception-date': {\n dataKey: 'normalised.currentClass.perfIncDtLcl.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'benchmark-name': {\n dataKey: 'normalised.concattedHtmlBenchmarkNames',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'PrimaryBenchmarkOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n },\n keepUnavailableValue: false\n },\n 'asset-class': {\n dataKey: 'fundDetails.fundCategory.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'taxonomy-asset-class': {\n dataKey: 'fundDetails.assetClass.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'investment-category': {\n dataKey: 'fundDetails.classStrategy.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'region': {\n dataKey: 'fundDetails.classGeography.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'morning-star-category': {\n dataKey: 'fundDetails.fndRating.ms_category.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'total-net-assets': {\n dataKey: 'fundOverview.portDet.stats.totalNetAsset.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY,\n addendumData: {\n asOf: {\n dataKey: 'fundOverview.portDet.stats.asOfDate.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'TotalNetAssetsOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-monthly',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n\n 'aum': {\n dataKey: 'fundOverview.portDet.stats.totalNetAsset.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY,\n addendumData: {\n asOf: {\n dataKey: 'fundOverview.portDet.stats.asOfDate.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n caveatId: {\n dataKey: 'TotalNetAssetsOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n updateFreq: {\n dataKey: 'updated-monthly',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n\n 'fund-maturity-date': {\n dataKey: 'fundDetails.fundMaturityDate.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n keepUnavailableValue: false,\n addendumData: {\n caveatId: {\n dataKey: 'FundMaturityDateOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n\n 'ia-sector': {\n dataKey: 'fundDetails.fndRating.ima_sector.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n keepUnavailableValue: false,\n addendumData: {\n caveatId: {\n dataKey: 'IASectorOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n\n 'isa-status': {\n dataKey: 'fundDetails.isaStatusGB.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n keepUnavailableValue: false\n }\n };\n\n var DISTRIBUTION_FIELDS = exports.DISTRIBUTION_FIELDS = {\n 'distribution-per-unit': {\n dataKey: 'normalised.currentPriceClass.navDet.dividend.divPerUnit.val',\n type: _reducerUtils.FORMAT_TYPES.CURRENCY\n },\n 'distribution-date': {\n dataKey: 'normalised.currentPriceClass.navDet.dvndYldAsOfDate.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'dividend-frequency': {\n dataKey: 'normalised.currentClass.dvndFreq.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n 'distribution-yield': {\n dataKey: 'normalised.currentPriceClass.navDet.dvndYld.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'DistirbutionYieldOverview',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n },\n asOf: {\n dataKey: 'normalised.currentPriceClass.navDet.dvndYldAsOfDate.val',\n type: _reducerUtils.FORMAT_TYPES.STRING\n },\n updateFreq: {\n dataKey: 'updated-monthly',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }\n };\n\n function fundInformation(state, action) {\n switch (action.type) {\n case 'POPULATE_FUND_INFORMATION_SUCCESS':\n logger.debug('Reducing: POPULATE_FUND_INFORMATION_SUCCESS');\n return Object.assign({}, state, {\n fundInformation: _infoBuilder(action)\n });\n default:\n return state;\n }\n }\n\n function _infoBuilder(action) {\n var _action$json = action.json,\n rawOverview = _action$json[0],\n rawFundDetails = _action$json[1],\n rawPrice = _action$json[2],\n rawConfig = _action$json[3];\n\n var fundOverview = (0, _get2.default)(rawOverview, 'intlFundOverviewValue');\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var priceDetails = (0, _get2.default)(rawPrice, 'globalProductsValue.prceDistbIntl');\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var priceShareClasses = (0, _get2.default)(rawPrice, 'globalProductsValue.prceDistbIntl.shClsPriceDet', []);\n var normalised = {};\n normalised.currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var hasDistributions = (0, _get2.default)(normalised.currentClass, 'shClsDistributionFlag.val', 'Y').toUpperCase() === 'Y';\n\n normalised.currentShareClassCode = (0, _get2.default)(normalised.currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n normalised.currentPriceClass = (0, _find2.default)(priceShareClasses, { shClsCD: { val: normalised.currentShareClassCode } });\n\n normalised.asOf = (0, _get2.default)(fundOverview, 'xxxx.etfDet.expAsOfDt.val', '—');\n\n normalised.salesChargesAsOf = (0, _get2.default)(normalised, 'currentClass.feeCharges.asOfDate.val', '—');\n normalised.distributionsAsOf = (0, _get2.default)(normalised, 'currentPriceClass.navDet.dividend.distDt.val', '—');\n normalised.distributionsHasData = !!(0, _get2.default)(normalised, 'currentPriceClass.navDet.dividend.divPerUnit.val', false);\n normalised.baseCurrency = _utilsFundDetails.utilsFundDetails.getFundCurrency(fundDetails);\n normalised.shareClassCurrency = _utilsFundDetails.utilsFundDetails.getShareClassCurrency(fundDetails, normalised.currentShareClassCode);\n normalised.assetClass = _utilsFundDetails.utilsFundDetails.getAssetClass(fundDetails);\n normalised.keyedBenchMrks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, normalised.currentShareClassCode);\n\n normalised.concattedHtmlBenchmarkNames = _utilsFundDetails.utilsFundDetails.getConcattedHtmlBenchmarkNames(fundDetails, fundId, normalised.currentShareClassCode, decoratedConfig);\n\n var dataRepo = {\n fundOverview: fundOverview,\n fundDetails: fundDetails,\n priceDetails: priceDetails,\n normalised: normalised\n };\n\n var fundVehicle = (0, _get2.default)(fundDetails, 'fundUmbrella.val');\n var vehicleConfig = (0, _get2.default)(decoratedConfig, 'overview.investmentVehicles.' + fundVehicle);\n var desiredSaleChargeFieldIds = (0, _get2.default)(vehicleConfig, 'salesCharges', []);\n var desiredIdentifierFieldIds = (0, _get2.default)(vehicleConfig, 'fundIdentifiers', []);\n var desiredInformationFieldIds = (0, _get2.default)(vehicleConfig, 'fundInformationElements', []);\n var fields = {\n salesChargeFields: (0, _reducerUtils.extractCamelCaseIds)(SALES_CHARGE_FIELDS, desiredSaleChargeFieldIds),\n identifierFields: (0, _reducerUtils.extractCamelCaseIds)(_fundInformation.IDENTIFIER_FIELDS, desiredIdentifierFieldIds),\n informationFields: (0, _reducerUtils.extractCamelCaseIds)(INFORMATION_FIELDS, desiredInformationFieldIds),\n distributionFields: DISTRIBUTION_FIELDS\n };\n\n return (0, _fundInformation.buildFundInformation)(hasDistributions, false, dataRepo, fields);\n }\n});\r\ndefine('components/products/overview/ft-fund-ratings/lib/gw/fund-ratings.reducer',['exports', 'aurelia-framework', '../../../../lib/decorators/config-decorator', 'lodash/get'], function (exports, _aureliaFramework, _configDecorator, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundRatings = fundRatings;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-ratings');\n\n function fundRatings(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_FUND_RATINGS_SUCCESS') {\n logger.debug('Reducing: POPULATE_FUND_RATINGS_SUCCESS');\n var _action$json = action.json,\n rawOverview = _action$json[0],\n rawFundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var investmentVehicle = getInvestmentVehicle(rawFundDetails);\n var ratingsConfig = (0, _get2.default)(config, 'overview.investmentVehicles.' + investmentVehicle + '.ratings', []);\n var data = rawOverview.intlFundOverviewValue.fundDet.fndRating;\n var ratings = {\n showMorningStar: ratingsConfig.includes('morningStar'),\n msNumberOfStars: Number(data.ms_rating_ovrl.val),\n msCategory: data.ms_category.val,\n asOfDate: data.as_of_date.val,\n showLipper: ratingsConfig.includes('lipper'),\n lipperTotalReturn: (0, _get2.default)(data, 'ovrl_tot_rtn.val'),\n lipperConsistentReturn: (0, _get2.default)(data, 'ovrl_constnt_rtn.val'),\n lipperPreservation: (0, _get2.default)(data, 'ovrl_prsvtn.val'),\n lipperTaxEfficiency: (0, _get2.default)(data, 'ovrl_tax_eff.val'),\n lipperExpense: (0, _get2.default)(data, 'ovrl_expns.val'),\n showObsr: ratingsConfig.includes('obsr'),\n showAnalizy: ratingsConfig.includes('analizy')\n };\n stateOBJ = Object.assign({}, state, {\n fundRatings: ratings\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function getInvestmentVehicle(fundDetails) {\n return fundDetails.globalProductsValue.fundDetailIntl.fundUmbrella.val;\n }\n});\r\ndefine('components/products/performance/ft-calendar-year-returns/lib/gw/calendar-year-returns.reducer',['exports', 'lodash/get', 'lodash/find', 'lodash/orderBy', 'moment', 'moment-parseformat', 'aurelia-framework', '../calendar-utils', '../../../util/util', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config'], function (exports, _get, _find, _orderBy, _moment, _momentParseformat, _aureliaFramework, _calendarUtils, _util, _configDecorator, _utilsFundDetails, _utilsConfig) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.calendarYearReturns = calendarYearReturns;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _orderBy2 = _interopRequireDefault(_orderBy);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n var _momentParseformat2 = _interopRequireDefault(_momentParseformat);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('calendar-year-returns');\n function calendarYearReturns(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_CALENDAR_YEAR_RETURNS_SUCCESS') {\n logger.debug('Reducing: POPULATE_CALENDAR_YEAR_RETURNS_SUCCESS');\n\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2];\n\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n var showYTD = !(0, _get2.default)(config, 'performance.hideYTDForCumulativeAndCalendarYear', true);\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n var displayOEIC = _util.performanceUtils.displayOEIC(config, fundDetails);\n\n var thisMonthlyCalendar = void 0;\n var thisQuarterlyCalendar = void 0;\n var monthEnd = void 0;\n var quarterEnd = void 0;\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyCalendar = _getThisCalendar(monthlyData, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, displayOEIC);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyCalendar = _getThisCalendar(quarterlyData, peerRnksListQtly, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, displayOEIC);\n }\n\n if (typeof thisMonthlyCalendar !== 'undefined') {\n monthEnd = {\n calData: thisMonthlyCalendar.tableData,\n chartData: thisMonthlyCalendar.graphData,\n dateGroup: 'month-end',\n dynamicLabel: thisMonthlyCalendar.dynamicLabel,\n hideChart: thisMonthlyCalendar.hideChart,\n showData: thisMonthlyCalendar.showData,\n fundName: thisMonthlyCalendar.fundName\n };\n }\n\n if (typeof thisQuarterlyCalendar !== 'undefined') {\n quarterEnd = {\n calData: thisQuarterlyCalendar.tableData,\n chartData: thisQuarterlyCalendar.graphData,\n dateGroup: 'quarter-end',\n dynamicLabel: thisQuarterlyCalendar.dynamicLabel,\n hideChart: thisQuarterlyCalendar.hideChart,\n showData: thisQuarterlyCalendar.showData,\n fundName: thisQuarterlyCalendar.fundName\n };\n }\n\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', siteVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', siteVehicle);\n\n stateOBJ = Object.assign({}, state, {\n calendarYearReturns: {\n MONTH_END: monthEnd,\n QUARTER_END: quarterEnd,\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels,\n showYTD: showYTD\n }\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _getThisCalendar(performances, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, displayOEIC) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var inceptionDate = (0, _get2.default)(thisPerformanceObj, 'fundIncDt.val');\n var inceptionDateLoc = (0, _get2.default)(thisPerformanceObj, 'fundIncDtLoc.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var fundName = (0, _get2.default)(thisPerformanceObj, 'name.val');\n var informationLinkMain = (0, _get2.default)(config, 'performance.informationLinkMain');\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideCalendarYearChartFundList', showMDash, perfIncDt);\n\n var asOfFormat = (0, _momentParseformat2.default)(asOfDate);\n var lastYear = (0, _moment2.default)(asOfDate, asOfFormat).get('year');\n var calendarYears = _calendarUtils.calendarUtils.calendarYears(lastYear, true);\n var yearAry = calendarYears.yearAry;\n\n var rows = [];\n\n if (thisPerformanceObj) {\n thisPerformanceObj.link = informationLinkMain;\n rows.push(_calendarUtils.calendarUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails));\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.link = informationLinkMain;\n rows.push(_calendarUtils.calendarUtils.getBMTableRow(bm, false, mdash));\n }\n });\n\n if (displayOEIC) {\n var IASector = _util.performanceUtils.hasIASector(peersRankList, shareClassCode);\n if (IASector) {\n IASector.link = informationLinkMain;\n rows.push(_calendarUtils.calendarUtils.getIATableRow(IASector, mdash));\n }\n }\n\n var allRows = [];\n performances.forEach(function (item) {\n if (item !== thisPerformanceObj) {\n item.link = informationLinkMain;\n allRows.push(_calendarUtils.calendarUtils.getSHTableRow(item, showMDash, mdash, allShareClassDetails));\n }\n });\n var allRowsSorted = (0, _orderBy2.default)(allRows, ['name'], ['asc']);\n\n var chartColumns = calendarYears.chartColumns;\n var graphData = _util.performanceUtils.tableDataToChartData(rows, chartColumns);\n\n var showData = true;\n if (rows.length === 0 && allRows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'cumulativeDetail.sinceIncp.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n allRows: allRowsSorted,\n years: yearAry,\n asOfDate: asOfDate,\n rows: rows\n },\n inceptionDate: inceptionDateLoc,\n graphData: graphData,\n dynamicLabel: dynamicLabel,\n hideChart: hideChart,\n fundName: fundName,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-discrete-returns/lib/gw/discrete-returns.reducer',['exports', 'lodash/get', 'lodash/take', 'lodash/find', 'lodash/orderBy', '../discrete-returns-utils', '../../../util/util', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-fund-details', 'aurelia-framework'], function (exports, _get, _take, _find, _orderBy, _discreteReturnsUtils, _util, _utilsConfig, _configDecorator, _utilsFundDetails, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.discreteReturns = discreteReturns;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _take2 = _interopRequireDefault(_take);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _orderBy2 = _interopRequireDefault(_orderBy);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('discrete-returns');\n function discreteReturns(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_DISCRETE_RETURNS_SUCCESS') {\n logger.debug('Reducing: POPULATE_DISCRETE_RETURNS_SUCCESS', action);\n\n var _action$json = action.json,\n rawPerformanceFeed = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2],\n compConfig = _action$json[3];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n\n var fundVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', fundVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', fundVehicle);\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformanceFeed, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n var hideDiscreteBMOlderThanMainClass = (0, _get2.default)(compConfig, 'SuppressOldBenchmarkData.0', '') === 'YES';\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n var displayOEIC = _util.performanceUtils.displayOEIC(config, fundDetails);\n\n var thisMonthlyDiscrete = void 0;\n var thisQuarterlyDiscrete = void 0;\n\n var monthEnd = void 0;\n var quarterEnd = void 0;\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyDiscrete = _getThisDiscrete(monthlyData, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, hideDiscreteBMOlderThanMainClass, displayOEIC);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyDiscrete = _getThisDiscrete(quarterlyData, peerRnksListQtly, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, hideDiscreteBMOlderThanMainClass, displayOEIC);\n }\n\n if (typeof thisMonthlyDiscrete !== 'undefined') {\n monthEnd = {\n tableData: thisMonthlyDiscrete.tableData,\n chartData: thisMonthlyDiscrete.graphData,\n fundName: thisMonthlyDiscrete.fundName,\n dynamicLabel: thisMonthlyDiscrete.dynamicLabel,\n dateGroup: 'month-end',\n hideChart: thisMonthlyDiscrete.hideChart,\n showData: thisMonthlyDiscrete.showData\n };\n }\n\n if (typeof thisQuarterlyDiscrete !== 'undefined') {\n quarterEnd = {\n tableData: thisQuarterlyDiscrete.tableData,\n chartData: thisQuarterlyDiscrete.graphData,\n dynamicLabel: thisQuarterlyDiscrete.dynamicLabel,\n fundName: thisQuarterlyDiscrete.fundName,\n dateGroup: 'quarter-end',\n hideChart: thisQuarterlyDiscrete.hideChart,\n showData: thisQuarterlyDiscrete.showData\n };\n }\n\n stateOBJ = Object.assign({}, state, {\n discreteReturns: {\n MONTH_END: monthEnd,\n QUARTER_END: quarterEnd,\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels\n }\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _getThisDiscrete(performances, peersRankList, shareClassCode, allShareClassDetails, benchMarks, sortedBenchmarkOrder, config, fundId, hideDiscreteBMOlderThanMainClass, displayOEIC) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var shareClassDetails = (0, _find2.default)(allShareClassDetails, { shCls: { val: shareClassCode } });\n\n var inceptionDate = (0, _get2.default)(shareClassDetails, 'perfIncpDt.val');\n var inceptionDateLoc = (0, _get2.default)(shareClassDetails, 'perfIncDtLcl.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var allYears = _discreteReturnsUtils.discreteUtils.countYears(asOfDate, inceptionDate, true);\n var yearsSinceStartDate = _discreteReturnsUtils.discreteUtils.countYearsChart(asOfDate, inceptionDate, true);\n var fundName = (0, _get2.default)(thisPerformanceObj, 'name.val');\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideDiscreteAnnualChartFundList', showMDash, perfIncDt);\n\n var chartColumns = ['oneYr', 'twoYr', 'threeYr', 'fourYr', 'fiveYr'];\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var rows = [];\n var hasIAorBm = false;\n\n if (thisPerformanceObj) {\n rows.push(_discreteReturnsUtils.discreteUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails));\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n rows.push(_discreteReturnsUtils.discreteUtils.getBMTableRow(bm, false, mdash, yearsSinceStartDate.length, hideDiscreteBMOlderThanMainClass));\n }\n hasIAorBm = true;\n });\n\n if (displayOEIC) {\n var IASector = _util.performanceUtils.hasIASector(peersRankList, shareClassCode);\n if (IASector) {\n rows.push(_discreteReturnsUtils.discreteUtils.getIATableRow(IASector, mdash));\n hasIAorBm = true;\n }\n }\n var allRows = [];\n performances.forEach(function (item) {\n if (item !== thisPerformanceObj) {\n allRows.push(_discreteReturnsUtils.discreteUtils.getSHTableRow(item, showMDash, mdash, allShareClassDetails));\n }\n });\n var allRowsSorted = (0, _orderBy2.default)(allRows, ['name'], ['asc']);\n\n var chartCols = [];\n var graphData = [];\n\n if (!hideChart) {\n if (hasIAorBm) {\n chartCols = allYears;\n } else {\n chartCols = yearsSinceStartDate;\n }\n graphData = _util.performanceUtils.tableDataToChartData(rows, chartColumns);\n\n if (chartCols.length < 5) {\n graphData = graphData.map(function (row) {\n return (0, _take2.default)(row, chartCols.length);\n });\n }\n }\n\n var showData = true;\n if (rows.length === 0 && allRows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'discreteDetail.oneYr.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n asOfDate: asOfDate,\n rows: rows,\n allRows: allRowsSorted,\n years: allYears,\n chartCols: chartCols\n },\n graphData: graphData,\n inceptionDate: inceptionDateLoc,\n dynamicLabel: dynamicLabel,\n hideChart: hideChart,\n fundName: fundName,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-performance-annualised/lib/gw/performance-annualised.reducer',['exports', 'aurelia-framework', '../../../../lib/decorators/config-decorator', '../../../util/util', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../performance-annualised-utils', 'lodash/get', 'lodash/find', 'lodash/orderBy'], function (exports, _aureliaFramework, _configDecorator, _util, _utilsFundDetails, _utilsConfig, _performanceAnnualisedUtils, _get, _find, _orderBy) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceAnnualised = performanceAnnualised;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _orderBy2 = _interopRequireDefault(_orderBy);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-annualised');\n\n function performanceAnnualised(state, action) {\n var stateOBJ = void 0;\n stateOBJ = state;\n if (action.type === 'POPULATE_PERFORMANCE_ANNUALISED_SUCCESS') {\n logger.debug('Reducing: POPULATE_PERFORMANCE_ANNUALISED_SUCCESS', action);\n\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2];\n\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n var fundKey = action.fundId + '-' + shareClassCode;\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n var displayOEIC = _util.performanceUtils.displayOEIC(config, fundDetails);\n\n var thisMonthlyTable = void 0;\n var thisQuarterlyTable = void 0;\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyTable = _performanceBuilder(monthlyData, peersRankList, shareClassCode, config, benchMarks, sortedBenchmarkOrder, fundKey, allShareClassDetails, fundId, displayOEIC);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyTable = _performanceBuilder(quarterlyData, peerRnksListQtly, shareClassCode, config, benchMarks, sortedBenchmarkOrder, fundKey, allShareClassDetails, fundId, displayOEIC);\n }\n\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', siteVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', siteVehicle);\n\n stateOBJ = Object.assign({}, state, {\n performanceAnnualised: {\n MONTH_END: {\n performances: thisMonthlyTable,\n label: 'month-end'\n },\n QUARTER_END: {\n performances: thisQuarterlyTable,\n label: 'quarter-end'\n },\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels\n }\n }\n });\n }\n\n return stateOBJ;\n }\n\n function _performanceBuilder(performances, peersRankList, shareClassCode, config, benchMarks, sortedBenchmarkOrder, fundKey, allShareClassDetails, fundId, displayOEIC) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var inceptionDate = (0, _get2.default)(thisPerformanceObj, 'shClsIncDt.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var inceptionDateLoc = (0, _get2.default)(thisPerformanceObj, 'shClsIncDtLoc.val');\n var fundName = (0, _get2.default)(thisPerformanceObj, 'name.val');\n var informationLinkMain = (0, _get2.default)(config, 'performance.informationLinkMain');\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideAverageAnnualChartFundList', showMDash, perfIncDt);\n\n var rows = [];\n\n if (thisPerformanceObj) {\n thisPerformanceObj.link = informationLinkMain;\n rows.push(_performanceAnnualisedUtils.annualisedUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails));\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.link = informationLinkMain;\n rows.push(_performanceAnnualisedUtils.annualisedUtils.getBMTableRow(bm, false, mdash));\n }\n });\n\n if (displayOEIC) {\n var IASector = _util.performanceUtils.hasIASector(peersRankList, shareClassCode);\n if (IASector) {\n IASector.link = informationLinkMain;\n rows.push(_performanceAnnualisedUtils.annualisedUtils.getIATableRow(IASector, mdash));\n }\n }\n\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n\n var allRows = [];\n performances.forEach(function (item) {\n if (item !== thisPerformanceObj) {\n item.link = informationLinkMain;\n allRows.push(_performanceAnnualisedUtils.annualisedUtils.getSHTableRow(item, showMDash, mdash, allShareClassDetails));\n }\n });\n var allRowsSorted = (0, _orderBy2.default)(allRows, ['name'], ['asc']);\n\n var graphData = void 0;\n if (!hideChart) {\n if (showMDash || config.performance.hideAverageAnnualChartFundList.includes(fundKey)) {\n graphData = null;\n } else {\n var chartColumns = ['oneY', 'threeY', 'fiveY', 'tenY', 'fiftnY', 'life'];\n graphData = _util.performanceUtils.tableDataToChartData(rows, chartColumns);\n }\n }\n\n var showData = true;\n if (rows.length === 0 && allRows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'avgAnnual.sinceIncp.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n asOfDate: asOfDate,\n rows: rows,\n allRows: allRowsSorted\n },\n inceptionDate: inceptionDateLoc,\n graphData: graphData,\n dynamicLabel: dynamicLabel,\n fundName: fundName,\n hideChart: hideChart,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-performance-cumulative/lib/gw/performance-cumulative.reducer',['exports', 'lodash/get', 'lodash/find', 'lodash/orderBy', '../../../util/util', '../../../../common/util/utils-fund-details', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils-config', '../performance-cumulative-utils', '../../../../common/util/utils', 'aurelia-framework'], function (exports, _get, _find, _orderBy, _util, _utilsFundDetails, _configDecorator, _utilsConfig, _performanceCumulativeUtils, _utils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceCumulative = performanceCumulative;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _orderBy2 = _interopRequireDefault(_orderBy);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-cumulative');\n\n function performanceCumulative(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_PERFORMANCE_CUMULATIVE_SUCCESS') {\n logger.debug('Reducing: POPULATE_PERFORMANCE_CUMULATIVE_SUCCESS', action);\n\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n performanceGraph = _action$json[1],\n rawConfig = _action$json[2],\n rawFundDetails = _action$json[3];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var useDynamicLabels = !!(0, _get2.default)(config, 'performance.dynamicLabels');\n var show1M3M6M = (0, _get2.default)(config, 'performance.showYtd1M3M6M', true);\n var showYTD = !(0, _get2.default)(config, 'performance.hideYTDForCumulativeAndCalendarYear', true);\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var performance = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var fundId = (0, _get2.default)(fundDetails, 'fundId.val');\n var allShareClassDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl.shClsDet');\n\n var benchMarks = _utilsFundDetails.utilsFundDetails.benchmarkByKey(fundDetails, fundId, shareClassCode);\n var sortedBenchmarkOrder = _util.performanceUtils.getSortedBenchmarkOrder(benchMarks, fundDetails, fundId, shareClassCode, config);\n\n var monthlyData = (0, _get2.default)(performance, 'monthlyPerfDetailsList');\n var quarterlyData = (0, _get2.default)(performance, 'quarterlyPerfDetailsList');\n var peersRankList = (0, _get2.default)(performance, 'peerRnksList');\n var peerRnksListQtly = (0, _get2.default)(performance, 'peerRnksListQtly');\n var displayOEIC = _util.performanceUtils.displayOEIC(config, fundDetails);\n\n var thisMonthlyTable = {};\n var thisQuarterlyTable = {};\n\n if (typeof monthlyData !== 'undefined') {\n thisMonthlyTable = _performanceBuilder(monthlyData, peersRankList, shareClassCode, benchMarks, sortedBenchmarkOrder, config, allShareClassDetails, fundId, displayOEIC);\n }\n\n if (typeof quarterlyData !== 'undefined') {\n thisQuarterlyTable = _performanceBuilder(quarterlyData, peerRnksListQtly, shareClassCode, benchMarks, sortedBenchmarkOrder, config, allShareClassDetails, fundId, displayOEIC);\n }\n\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var showFundNumber = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideFundNumber', siteVehicle);\n var showCurrency = !_utilsConfig.utilsConfig.isValueInConfigKey(config, 'performance.hideCurrency', siteVehicle);\n\n stateOBJ = Object.assign({}, state, {\n performanceCumulative: {\n MONTH_END: {\n graphNames: thisMonthlyTable.graphNames,\n tableData: thisMonthlyTable.tableData,\n inceptionDate: thisMonthlyTable.inceptionDate,\n dynamicLabel: thisMonthlyTable.dynamicLabel,\n hideChart: (0, _utils.isNotEmptyDeep)(performanceGraph) ? thisMonthlyTable.hideChart : true,\n fundName: thisMonthlyTable.fundName,\n showData: thisMonthlyTable.showData,\n PC_1YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 0, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_3YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 1, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_5YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 2, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_10YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 3, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_15YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 4, 'monthlyGraphs', sortedBenchmarkOrder),\n PC_LIFE: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 5, 'monthlyGraphs', sortedBenchmarkOrder)\n },\n QUARTER_END: {\n graphNames: thisQuarterlyTable.graphNames,\n tableData: thisQuarterlyTable.tableData,\n inceptionDate: thisQuarterlyTable.inceptionDate,\n dynamicLabel: thisQuarterlyTable.dynamicLabel,\n hideChart: (0, _utils.isNotEmptyDeep)(performanceGraph) ? thisQuarterlyTable.hideChart : true,\n fundName: thisQuarterlyTable.fundName,\n showData: thisQuarterlyTable.showData,\n PC_1YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 0, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_3YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 1, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_5YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 2, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_10YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 3, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_15YR: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 4, 'quarterlyGraphs', sortedBenchmarkOrder),\n PC_LIFE: _performanceCumulativeUtils.cumulativeUtils.processPerformanceChartData(performanceGraph, 5, 'quarterlyGraphs', sortedBenchmarkOrder)\n },\n options: {\n showFundNumber: showFundNumber,\n showCurrency: showCurrency,\n useDynamicLabels: useDynamicLabels,\n show1M3M6M: show1M3M6M,\n showYTD: showYTD\n }\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _performanceBuilder(performances, peersRankList, shareClassCode, benchMarks, sortedBenchmarkOrder, config, allShareClassDetails, fundId, displayOEIC) {\n var thisPerformanceObj = (0, _find2.default)(performances, { shClsCde: { val: shareClassCode } });\n var asOfDate = (0, _get2.default)(thisPerformanceObj, 'asOfDate.val');\n var inceptionDate = (0, _get2.default)(thisPerformanceObj, 'fundIncDt.val');\n var inceptionDateLoc = (0, _get2.default)(thisPerformanceObj, 'fundIncDtLoc.val');\n var perfIncDt = (0, _get2.default)(thisPerformanceObj, 'perfIncDt.val');\n var fundName = (0, _get2.default)(thisPerformanceObj, 'name.val');\n var dynamicLabel = _util.performanceUtils.dynamicPerformanceLabels(asOfDate, perfIncDt);\n var informationLinkMain = (0, _get2.default)(config, 'performance.informationLinkMain');\n\n var mdash = '&#8212;';\n var showMDash = _util.performanceUtils.mustHidePerformanceData(config, inceptionDate);\n\n var rows = [];\n var graphNames = [];\n\n var hideChart = _util.performanceUtils.hideChart(config, fundId, 'hideCumulativeChartFundList', showMDash, perfIncDt);\n\n if (thisPerformanceObj) {\n thisPerformanceObj.link = informationLinkMain;\n var shRow = _performanceCumulativeUtils.cumulativeUtils.getSHTableRow(thisPerformanceObj, showMDash, mdash, allShareClassDetails);\n rows.push(shRow);\n graphNames.push(shRow.name);\n }\n\n sortedBenchmarkOrder.forEach(function (item) {\n var bm = (0, _find2.default)(performances, { bmrkID: { val: (0, _get2.default)(benchMarks, item + '.bmrkId.val') } });\n if (bm) {\n bm.link = informationLinkMain;\n var bmRow = _performanceCumulativeUtils.cumulativeUtils.getBMTableRow(bm, false, mdash);\n rows.push(bmRow);\n graphNames.push(bmRow.name);\n }\n });\n if (displayOEIC) {\n var IASector = _util.performanceUtils.hasIASector(peersRankList, shareClassCode);\n if (IASector) {\n IASector.link = informationLinkMain;\n rows.push(_performanceCumulativeUtils.cumulativeUtils.getIATableRow(IASector, mdash));\n }\n }\n var allRows = [];\n performances.forEach(function (item) {\n if (item !== thisPerformanceObj) {\n item.link = informationLinkMain;\n allRows.push(_performanceCumulativeUtils.cumulativeUtils.getSHTableRow(item, showMDash, mdash, allShareClassDetails));\n }\n });\n var allRowsSorted = (0, _orderBy2.default)(allRows, ['name'], ['asc']);\n\n var showData = true;\n if (rows.length === 0 && allRows.length === 0) {\n showData = false;\n }\n if (!thisPerformanceObj) {\n showData = false;\n }\n if (thisPerformanceObj && !(0, _get2.default)(thisPerformanceObj, 'cumulativeDetail.sinceIncp.val')) {\n showData = false;\n }\n\n return {\n tableData: {\n asOfDate: asOfDate,\n rows: rows,\n allRows: allRowsSorted\n },\n inceptionDate: inceptionDateLoc,\n dynamicLabel: dynamicLabel,\n fundName: fundName,\n graphNames: graphNames,\n hideChart: hideChart,\n showData: showData\n };\n }\n});\r\ndefine('components/products/performance/ft-performance-risk-statistics/lib/gw/performance-risk-statistics.reducer',['exports', 'aurelia-framework', '../../../../lib/decorators/config-decorator', 'lodash/get', 'lodash/find', 'lodash/includes', '../../../../common/util/utils-fund-details'], function (exports, _aureliaFramework, _configDecorator, _get, _find, _includes, _utilsFundDetails) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.performanceRiskStatistics = performanceRiskStatistics;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _find2 = _interopRequireDefault(_find);\n\n var _includes2 = _interopRequireDefault(_includes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('performance-risk-statistics');\n\n function performanceRiskStatistics(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_PERFORMANCE_RISK_STATISTICS_SUCCESS') {\n logger.debug('Reducing: POPULATE_PERFORMANCE_RISK_STATISTICS_SUCCESS');\n\n var fundID = action.fundId;\n var _action$json = action.json,\n rawPerformance = _action$json[0],\n rawConfig = _action$json[1],\n rawFundDetails = _action$json[2];\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n var performanceConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment).performance;\n logger.debug('action', action);\n var siteVehicle = _utilsFundDetails.utilsFundDetails.getSiteVehicle(rawFundDetails);\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shClsCde = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n var displayedFundId = (0, _get2.default)(currentClass, 'taID.val') || (0, _get2.default)(fundDetails, 'fundId.val');\n var fundName = (0, _get2.default)(fundDetails, 'fundName.val');\n\n var showAlpha = _checkConfigForGivenFund(performanceConfig, fundID, 'showAlpha');\n var showRSquared = _checkConfigForGivenFund(performanceConfig, fundID, 'showRSquared');\n var showCorrelation = _checkConfigForGivenFund(performanceConfig, fundID, 'showCorrelation');\n var showUpsideCapture = _checkConfigForGivenFund(performanceConfig, fundID, 'showUpsideCapture');\n var showDownsideCapture = _checkConfigForGivenFund(performanceConfig, fundID, 'showUpsideCapture');\n\n var defaultParam = true;\n var showStatistics = _checkConfigForGivenFund(performanceConfig, siteVehicle, 'hideStatistics', defaultParam);\n\n var showBeta = _checkConfigForGivenFund(performanceConfig, fundID, 'hideBeta', defaultParam);\n var showInfoRatio = _checkConfigForGivenFund(performanceConfig, fundID, 'hideBeta', defaultParam);\n var showTrackingError = _checkConfigForGivenFund(performanceConfig, fundID, 'hideTrackingError', defaultParam);\n var showFundNr = _checkConfigForGivenFund(performanceConfig, fundID, 'hideFundNumber', defaultParam);\n\n var riskStatistics = (0, _get2.default)(rawPerformance, 'globalProductsValue.performanceIntl.riskStatsList');\n var RSL = (0, _find2.default)(riskStatistics, { shareClassCode: { val: shClsCde } });\n\n var riskStatsLists = void 0;\n var asOfDate = void 0;\n if (typeof RSL !== 'undefined') {\n riskStatsLists = _riskStatsListBuilder(RSL, displayedFundId, fundName, shClsCde);\n try {\n asOfDate = RSL.asOfDate.val;\n } catch (e) {\n logger.debug('asOfDateStd not defined in data');\n asOfDate = null;\n }\n } else {\n riskStatsLists = null;\n asOfDate = null;\n showStatistics = false;\n }\n stateOBJ = Object.assign({}, state, {\n performanceRiskStatistics: {\n asOfDate: asOfDate,\n tables: riskStatsLists,\n showStatistics: showStatistics,\n showAlpha: showAlpha,\n showRSquared: showRSquared,\n showCorrelation: showCorrelation,\n showBeta: showBeta,\n showInfoRatio: showInfoRatio,\n showTrackingError: showTrackingError,\n showFundNr: showFundNr,\n showUpsideCapture: showUpsideCapture,\n showDownsideCapture: showDownsideCapture,\n shareClassCode: shClsCde\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _riskStatsListBuilder(RSL, displayedFundId, fundName, shClsCde) {\n var calcNameStd = _getCalcNameStd(RSL, fundName);\n\n var statisticsTable = {\n alphaRow: {\n name: 'rs-alpha',\n oneYr: RSL.alpha.oneYr.val,\n threeYr: RSL.alpha.threeYr.val,\n fiveYr: RSL.alpha.fiveYr.val\n },\n betaRow: {\n name: 'rs-beta',\n oneYr: RSL.beta.oneYr.val,\n threeYr: RSL.beta.threeYr.val,\n fiveYr: RSL.beta.fiveYr.val\n },\n infRatioRow: {\n name: 'rs-information-ratio',\n oneYr: RSL.infRatio.oneYr.val,\n threeYr: RSL.infRatio.threeYr.val,\n fiveYr: RSL.infRatio.fiveYr.val\n },\n histTrackRow: {\n name: 'rs-tracking-error',\n oneYr: RSL.histTrack.oneYr.val,\n threeYr: RSL.histTrack.threeYr.val,\n fiveYr: RSL.histTrack.fiveYr.val\n },\n correlationRow: {\n name: 'rs-correlation',\n oneYr: RSL.correlation.oneYr.val,\n threeYr: RSL.correlation.threeYr.val,\n fiveYr: RSL.correlation.fiveYr.val\n },\n rSquaredRow: {\n name: 'rs-r-squared',\n oneYr: RSL.rSquared.oneYr.val,\n threeYr: RSL.rSquared.threeYr.val,\n fiveYr: RSL.rSquared.fiveYr.val\n }\n };\n\n var standardDeviationTable = {\n fundRow: {\n name: calcNameStd,\n fundNr: displayedFundId,\n shareClassCode: shClsCde,\n oneYr: RSL.stdDev.oneYr.val,\n threeYr: RSL.stdDev.threeYr.val,\n fiveYr: RSL.stdDev.fiveYr.val\n },\n bmRow: {\n name: RSL.benchMrkName.val,\n oneYr: RSL.bmStdDev.oneYr.val,\n threeYr: RSL.bmStdDev.threeYr.val,\n fiveYr: RSL.bmStdDev.fiveYr.val\n }\n };\n\n var sharpeRatioTable = {\n fundRow: {\n name: calcNameStd,\n fundNr: displayedFundId,\n shareClassCode: shClsCde,\n oneYr: RSL.shRatio.oneYr.val,\n threeYr: RSL.shRatio.threeYr.val,\n fiveYr: RSL.shRatio.fiveYr.val\n },\n bmRow: {\n name: RSL.benchMrkName.val,\n oneYr: RSL.bmShRatio.oneYr.val,\n threeYr: RSL.bmShRatio.threeYr.val,\n fiveYr: RSL.bmShRatio.fiveYr.val\n }\n };\n\n return {\n statisticsTable: statisticsTable,\n standardDeviationTable: standardDeviationTable,\n sharpeRatioTable: sharpeRatioTable\n };\n }\n\n function _getCalcNameStd(RSL, fundName) {\n var calcNameStd = void 0;\n\n try {\n calcNameStd = RSL.shareClassCode.val === 'SINGLCLASS' ? fundName : RSL.shareClassName.val;\n } catch (e) {\n logger.debug('shareClassName/fundName not defined in data');\n calcNameStd = null;\n }\n\n return calcNameStd;\n }\n\n function _checkConfigForGivenFund(performanceConfig, fundID, paramToCheck) {\n var defaultParam = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var param = defaultParam;\n var returnParam = void 0;\n defaultParam === false ? returnParam = true : returnParam = false;\n try {\n var hasFund = (0, _includes2.default)(performanceConfig[paramToCheck], fundID);\n if (hasFund) {\n param = returnParam;\n }\n } catch (e) {\n logger.debug('returnParam stays default');\n }\n return param;\n }\n});\r\ndefine('components/products/portfolio/ft-fund-measures/gw/lib/fund-measures.reducer',['exports', 'lodash/get', 'lodash/set', 'lodash/find', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../../lib/reducer-utils', 'aurelia-framework'], function (exports, _get, _set, _find, _utilsFundDetails, _utilsConfig, _configDecorator, _reducerUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundMeasuresReducer = fundMeasuresReducer;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _set2 = _interopRequireDefault(_set);\n\n var _find2 = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-measures');\n\n function fundMeasuresReducer(state, action) {\n var componentObj = void 0;\n var newState = void 0;\n switch (action.type) {\n case 'POPULATE_FUND_MEASURES_SUCCESS':\n if (!action.cid) {\n logger.error('no cid given');\n return state;\n }\n componentObj = buildInitialState(action);\n newState = Object.assign({}, state);\n (0, _set2.default)(newState, 'portfolio.fundMeasures', componentObj);\n return newState;\n default:\n return state;\n }\n }\n\n function buildInitialState(action) {\n var _action$json = action.json,\n rawPortfolioDetails = _action$json[0],\n rawPerformanceDetails = _action$json[1],\n rawFundDetails = _action$json[2],\n rawConfig = _action$json[3];\n\n var fundDetails = (0, _get2.default)(rawFundDetails, 'globalProductsValue.fundDetailIntl');\n var shareClasses = (0, _get2.default)(fundDetails, 'shClsDet');\n\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetails);\n var currentClass = _utilsFundDetails.utilsFundDetails.getCurrentShareClass(action.shareClassKey, shareClasses);\n var shareClassCode = (0, _get2.default)(currentClass, 'shCls.val') || (0, _get2.default)(fundDetails, 'shClassCode.val');\n\n var performanceDetails = (0, _get2.default)(rawPerformanceDetails, 'globalProductsValue.performanceIntl');\n var riskStatsList = (0, _get2.default)(performanceDetails, 'riskStatsList', null);\n var riskStatsClassData = (0, _find2.default)(riskStatsList, { shareClassCode: { val: shareClassCode } });\n\n var portfolioDetails = (0, _get2.default)(rawPortfolioDetails, 'globalProductsValue.portfolioIntlValue');\n var forecastRiskStatsClassData = (0, _get2.default)(portfolioDetails, 'riskForecast', null);\n\n var componentObj = {\n riskStats: {\n visible: false\n },\n forecastRiskStats: {\n visible: false\n }\n };\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, action.portfolioComponent, fundCategory);\n\n if (!isSuppressed && riskStatsClassData) {\n var columnConfig = [{\n labelId: '1-yr',\n dataKey: 'oneYr.val'\n }, {\n labelId: '3-yr',\n dataKey: 'threeYr.val'\n }, {\n labelId: '5-yr',\n dataKey: 'fiveYr.val'\n }];\n\n var stdDevRow = {\n name: (0, _get2.default)(riskStatsClassData, 'name.val', '—'),\n data: columnConfig.map(function (o) {\n return {\n labelId: o.labelId,\n val: (0, _reducerUtils.formatPercentage)((0, _get2.default)(riskStatsClassData.stdDev, o.dataKey), true)\n };\n })\n };\n var bmStdDevRow = {\n name: (0, _get2.default)(riskStatsClassData, 'benchMrkName.val', '—'),\n data: columnConfig.map(function (o) {\n return {\n labelId: o.labelId,\n val: (0, _reducerUtils.formatPercentage)((0, _get2.default)(riskStatsClassData.bmStdDev, o.dataKey), true)\n };\n })\n };\n var betaRow = {\n betaVsName: (0, _get2.default)(riskStatsClassData, 'benchMrkName.val', '—'),\n data: columnConfig.map(function (o) {\n return {\n labelId: o.labelId,\n val: (0, _reducerUtils.formatPercentage)((0, _get2.default)(riskStatsClassData.beta, o.dataKey), true)\n };\n })\n };\n componentObj.riskStats = {\n visible: true,\n asOfDate: (0, _get2.default)(riskStatsClassData, 'asOfDate.val', '—'),\n stdDevRow: stdDevRow,\n bmStdDevRow: bmStdDevRow,\n betaRow: betaRow\n };\n }\n\n if (!isSuppressed && riskStatsClassData && forecastRiskStatsClassData) {\n var forecastStdDevRow = {\n name: (0, _get2.default)(riskStatsClassData, 'name.val', '—'),\n data: [{\n labelId: '1-yr',\n val: (0, _reducerUtils.formatPercentage)((0, _get2.default)(forecastRiskStatsClassData, 'stdDevOneYear.val'), true)\n }]\n };\n var forecastBmStdDevRow = {\n name: (0, _get2.default)(riskStatsClassData, 'benchMrkName.val', '—'),\n data: [{\n labelId: '1-yr',\n val: (0, _reducerUtils.formatPercentage)((0, _get2.default)(forecastRiskStatsClassData, 'bmkList[0].stdDev.val'), true)\n }]\n };\n var forecastBetaRow = {\n betaVsName: (0, _get2.default)(riskStatsClassData, 'benchMrkName.val', '—'),\n data: [{\n labelId: '1-yr',\n val: (0, _reducerUtils.formatPercentage)((0, _get2.default)(forecastRiskStatsClassData, 'betaOneYear.val'), true)\n }]\n };\n componentObj.forecastRiskStats = {\n visible: true,\n asOfDate: (0, _get2.default)(riskStatsClassData, 'asOfDate.val', '—'),\n stdDevRow: forecastStdDevRow,\n bmStdDevRow: forecastBmStdDevRow,\n betaRow: forecastBetaRow\n };\n }\n return componentObj;\n }\n});\r\ndefine('components/products/portfolio/ft-portfolio-statistics-and-positions/lib/gw/portfolio-statistics-and-positions.reducer',['exports', 'aurelia-framework', '../../../../lib/reducer-utils', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../util/util', 'lodash/get', 'moment'], function (exports, _aureliaFramework, _reducerUtils, _utilsFundDetails, _utilsConfig, _configDecorator, _util, _get, _moment) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.portfolioStatisticsAndPositions = portfolioStatisticsAndPositions;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('portfolio-statistics-and-positions');\n\n\n var STATISTICS_PORTFOLIO_SUPPRESSION_ID = 'statistics';\n var HOLDINGS_PORTFOLIO_SUPPRESSION_ID = 'positions-number-of-holdings';\n var ISSUERS_PORTFOLIO_SUPPRESSION_ID = 'positions-number-of-issuers';\n\n var STATISTIC_FIELDS = {\n 'weighted-average-maturity': {\n dataKey: 'maturityWgtAvg.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'WeightedAverageMaturity',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'average-duration': {\n dataKey: 'durationOADWgtAvg.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'AverageDuration',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'yield-to-maturity': {\n dataKey: 'yldToMatrtyWgtAvg.val',\n type: _reducerUtils.FORMAT_TYPES.PERCENTAGE,\n addendumData: {\n caveatId: {\n dataKey: 'YieldtoMaturity',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'average-credit-quality': {\n dataKey: 'avgCrdQltyRating.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'AverageCreditQuality',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'price-to-earnings-12-months-forward': {\n dataKey: 'priceToEarningRatioFwd.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'PriceToEarningForward',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'price-to-earnings-12-months-trailing': {\n dataKey: 'priceToEarnWgtAvg.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'PriceToEarningTrailing',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'price-to-book-value': {\n dataKey: 'priceToBValWgtAvg.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'PriceToBookValue',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'price-to-cash-flow': {\n dataKey: 'priceToCFlowWgtAvg.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'PriceToCashFlow',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n },\n 'blended-yield': {\n dataKey: 'weightedYield.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'BlendedYield',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }\n };\n\n function portfolioStatisticsAndPositions(state, action) {\n switch (action.type) {\n case 'POPULATE_PORTFOLIO_STATISTICS_AND_POSITIONS_SUCCESS':\n logger.debug('Reducing: POPULATE_PORTFOLIO_STATISTICS_AND_POSITIONS_SUCCESS');\n\n var statPositionsData = _populateStatPositions(action);\n\n return Object.assign({}, state, {\n portfolioStatisticsAndPositions: statPositionsData\n });\n default:\n return state;\n }\n }\n\n function _populateStatPositions(action) {\n var _action$json = action.json,\n rawPortfolio = _action$json[0],\n rawFundDetail = _action$json[1],\n rawConfig = _action$json[2],\n rawHoldings = _action$json[3];\n\n var portfolio = (0, _get2.default)(rawPortfolio, 'globalProductsValue.portfolioIntlValue');\n var fundInfo = (0, _get2.default)(rawFundDetail, 'globalProductsValue.fundDetailIntl');\n var stats = (0, _get2.default)(portfolio, 'stats');\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetail);\n\n var assets = (0, _get2.default)(rawHoldings, 'provider.LscsDocuments.assets');\n var holdingsPdf = '';\n if (assets) {\n if (!Array.isArray(assets)) {\n assets = [assets];\n }\n for (var _iterator = assets, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var asset = _ref;\n\n if (asset.document && asset.document.length > 0) {\n holdingsPdf = asset.document[0].path;\n } else if (asset.document) {\n holdingsPdf = asset.document.path;\n }\n }\n }\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n var monthAgoMoment = (0, _moment2.default)().subtract(1, 'months');\n var fundIncpMoment = (0, _moment2.default)((0, _get2.default)(fundInfo, 'fundIncpDtStd.val'), 'YYYY-MM-DD');\n\n var isStatsSuppressedByPerfInception = !fundIncpMoment.isBefore(monthAgoMoment);\n var showIssuers = decoratedConfig.portfolio.issuersList.includes(action.fundId);\n\n var isStatsSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, STATISTICS_PORTFOLIO_SUPPRESSION_ID, fundCategory);\n var isIssuersSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, ISSUERS_PORTFOLIO_SUPPRESSION_ID, fundCategory);\n var isHoldingsSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, HOLDINGS_PORTFOLIO_SUPPRESSION_ID, fundCategory);\n\n var asOfDate = (0, _get2.default)(stats, 'asOfDate.val');\n var statistics = void 0;\n var nbrOfIssuers = void 0;\n var nbrOfHoldings = void 0;\n var isValid = void 0;\n if (isStatsSuppressedByPerfInception) {\n statistics = {\n isValid: false,\n isSuppressedByPerfInception: true,\n data: []\n };\n } else if (isStatsSuppressed) {\n statistics = {\n isValid: false,\n isSuppressed: true,\n data: []\n };\n } else {\n statistics = {\n data: (0, _reducerUtils.extractFormattedValues)(stats, STATISTIC_FIELDS, null, false)\n };\n statistics.isValid = statistics.data.length > 0;\n }\n\n if (isIssuersSuppressed) {\n nbrOfIssuers = {\n isValid: false,\n isSuppressed: true\n };\n } else {\n nbrOfIssuers = (0, _reducerUtils.extractFormattedValue)(stats, 'number-of-issuers', {\n dataKey: 'nbrOfIssuers.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'NumberOfIssuers',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }, null);\n }\n\n if (isHoldingsSuppressed) {\n nbrOfHoldings = {\n isValid: false,\n isSuppressed: true\n };\n } else {\n nbrOfHoldings = (0, _reducerUtils.extractFormattedValue)(stats, 'number-of-holdings', {\n dataKey: 'nbrOfScrtyInclCash.val',\n type: _reducerUtils.FORMAT_TYPES.STRING,\n addendumData: {\n caveatId: {\n dataKey: 'NumberOfHoldings',\n type: _reducerUtils.FORMAT_TYPES.CONSTANT\n }\n }\n }, null);\n }\n\n isValid = statistics.isValid || nbrOfIssuers.isValid || nbrOfHoldings.isValid;\n\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n var refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n\n return {\n asOfDate: asOfDate,\n holdingsPdf: holdingsPdf,\n nbrOfHoldings: nbrOfHoldings,\n nbrOfIssuers: nbrOfIssuers,\n showIssuers: showIssuers,\n statistics: statistics,\n isValid: isValid,\n refreshRate: refreshRate\n };\n }\n});\r\ndefine('components/products/portfolio/ft-risk-contribution/lib/gw/risk-contribution.reducer',['exports', 'lodash/get', '../../../util/util', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../../lib/date-utils', 'aurelia-framework'], function (exports, _get, _util, _utilsConfig, _configDecorator, _dateUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.riskContribution = riskContribution;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('risk-contribution');\n\n function riskContribution(state, action) {\n switch (action.type) {\n case 'POPULATE_RISK_CONTRIBUTION_SUCCESS':\n var data = _riskContributionBuilder(action);\n logger.debug('Reducing: POPULATE_RISK_CONTRIBUTION');\n return Object.assign({}, state, {\n riskContribution: {\n data: data\n }\n });\n default:\n return state;\n }\n }\n\n function getROData(riskData, sorted) {\n var filteredItems = riskData.filter(function (item) {\n if ((0, _get2.default)(item, 'fact2.val', null) === null && (0, _get2.default)(item, 'parentFactSysNo.val', null) === null && (0, _get2.default)(item, 'fPeriod.val', null) === '1') return item;\n });\n\n filteredItems = filteredItems.map(function (item) {\n return {\n 'name': (0, _get2.default)(item, 'fact1.val'),\n 'portAvg': (0, _get2.default)(item, 'portAvg.val', ''),\n 'portForeCntr': (0, _get2.default)(item, 'portForeCntr.val', ''),\n 'rank': (0, _get2.default)(item, 'rank.val')\n };\n });\n\n if (sorted) {\n filteredItems = _util.portfolioUtils.sortBreakdown(filteredItems, 'rank');\n }\n\n return filteredItems;\n }\n\n function getRiskOverview(riskData) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var sorted = options.hasOwnProperty('sorted') ? options.sorted : true;\n var obj = { visible: false };\n var lstDtls = (0, _get2.default)(riskData, 'RiskFactDt.lstDtls');\n\n if (typeof lstDtls !== 'undefined') {\n obj.table = getROData(lstDtls, sorted);\n obj.visible = obj.table.length > 0;\n }\n\n obj.date = (0, _dateUtils.formatStdDateToLocaleDay)((0, _get2.default)(riskData, 'asOfDate.val') || (0, _get2.default)(riskData, 'asOfDateStd.val'));\n obj.currency = (0, _get2.default)(riskData, 'currency.val');\n\n return obj;\n }\n\n function _riskContributionBuilder(action) {\n var _action$json = action.json,\n rawPortfolio = _action$json[0],\n rawConfig = _action$json[1];\n\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var useSuppression = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, action.portfolioComponent, action.assetClass);\n\n var rawRisk = (0, _get2.default)(rawPortfolio, 'globalProductsValue.portfolioIntlValue.riskCntr');\n\n var visible = typeof rawRisk !== 'undefined';\n\n if (useSuppression) {\n visible = false;\n }\n\n var obj = {\n caveatSecName: 'Portfolio', tableID: 'risk-contribution-data', visible: visible\n };\n\n if (visible) {\n var riskOverview = getRiskOverview(rawRisk);\n obj = Object.assign({}, obj, riskOverview);\n\n obj.showChart = true;\n obj.spanRow = true;\n }\n return obj;\n }\n});\r\ndefine('components/products/portfolio/ft-security-type-exposure/lib/gw/security-type-exposure.reducer',['exports', 'lodash/get', 'lodash/findIndex', '../../../util/util', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../../lib/date-utils', '../../../../lib/reducer-utils', 'aurelia-framework'], function (exports, _get, _findIndex, _util, _utilsFundDetails, _utilsConfig, _configDecorator, _dateUtils, _reducerUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.securityTypeExposure = securityTypeExposure;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _findIndex2 = _interopRequireDefault(_findIndex);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('security-type-exposure');\n\n function securityTypeExposure(state, action) {\n switch (action.type) {\n case 'POPULATE_SECURITY_TYPE_EXPOSURE_SUCCESS':\n var data = _securityExposureBuilder(action);\n logger.debug('Reducing: POPULATE_SECURITY_TYPE_EXPOSURE');\n\n return Object.assign({}, state, {\n securityTypeExposure: {\n data: data\n }\n });\n default:\n return state;\n }\n }\n\n function processSecurityTypeLst(lstDtls) {\n var workLstDtls = [];\n var customLabels = {};\n var tempOrder = {};\n var ordering = [];\n\n for (var _iterator = lstDtls, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var item = _ref;\n\n var itemCategory = (0, _get2.default)(item, 'expoCategoryStd.val');\n var itemCategoryName = (0, _get2.default)(item, 'expoCategory.val');\n var itemType = (0, _get2.default)(item, 'expoTypeStd.val');\n var itemTypeName = (0, _get2.default)(item, 'expoType.val');\n var itemVal = (0, _get2.default)(item, 'brkdwnPercent.val');\n var itemRank = (0, _get2.default)(item, 'rank.val');\n var itemPrimary = (0, _get2.default)(item, 'expoSort.val', '2');\n\n var splitter = '_K2_' + itemType.split('SECURITY')[1];\n\n itemCategory = itemCategory.split(splitter)[0];\n customLabels[itemCategory] = itemCategoryName;\n customLabels[itemType] = itemTypeName;\n\n tempOrder[itemType] = itemPrimary;\n var index = (0, _findIndex2.default)(workLstDtls, { name: itemCategory });\n\n if (index === -1) {\n var newItem = { name: itemCategory, rank: itemRank, values: {} };\n newItem.values[itemType] = itemVal;\n workLstDtls.push(newItem);\n } else {\n var existItem = workLstDtls[index];\n existItem.values[itemType] = itemVal;\n workLstDtls[index] = existItem;\n }\n }\n\n for (var _iterator2 = Object.keys(tempOrder), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var key = _ref2;\n\n ordering[tempOrder[key] - 1] = key;\n }\n\n var mappedLabels = new Map(Object.keys(customLabels).map(function (key) {\n return [key, customLabels[key]];\n }));\n\n return { workLstDtls: workLstDtls, ordering: ordering, mappedLabels: mappedLabels };\n }\n\n function buildSeries(data) {\n var mappedLabels = data.mappedLabels;\n var primary = data.ordering[0];\n var secondary = data.ordering[1];\n\n var seriesObj = {};\n seriesObj[primary] = [];\n seriesObj[secondary] = [];\n var seriesA = [];\n for (var _iterator3 = data.workLstDtls, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var item = _ref3;\n\n seriesObj[primary].push((0, _reducerUtils.parseNumber)((0, _get2.default)(item.values, primary)));\n seriesObj[secondary].push((0, _reducerUtils.parseNumber)((0, _get2.default)(item.values, secondary)));\n }\n seriesA.push({\n name: mappedLabels.get(primary) || '[' + primary,\n data: seriesObj[primary]\n });\n\n seriesA.push({\n name: mappedLabels.get(secondary) || '[' + secondary,\n data: seriesObj[secondary]\n });\n return seriesA;\n }\n\n function buildCategories(data, labels) {\n return data.map(function (o) {\n return labels.get(o.name) || '[' + o.name + ']';\n });\n }\n\n function getSecurityType(breakdown, labels) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var sorted = options.hasOwnProperty('sorted') ? options.sorted : true;\n\n var obj = { visible: false };\n var lstDtls = (0, _get2.default)(breakdown, 'brkDwnLst.lstSecExpDtls');\n\n if (typeof lstDtls !== 'undefined') {\n var interSecurityTypeData = processSecurityTypeLst(lstDtls);\n\n if (sorted) {\n interSecurityTypeData.workLstDtls = _util.portfolioUtils.sortBreakdown(interSecurityTypeData.workLstDtls, 'rank');\n }\n\n obj.series = buildSeries(interSecurityTypeData, labels);\n obj.visible = obj.series.length > 0;\n\n obj.categories = buildCategories(interSecurityTypeData.workLstDtls, interSecurityTypeData.mappedLabels);\n\n obj.table = interSecurityTypeData.workLstDtls;\n\n obj.mappedLabels = interSecurityTypeData.mappedLabels;\n obj.ordering = interSecurityTypeData.ordering;\n }\n\n obj.date = (0, _dateUtils.formatStdDateToLocaleDay)((0, _get2.default)(breakdown, 'asOfDate.val') || (0, _get2.default)(breakdown, 'asOfDateStd.val'));\n obj.calType = (0, _get2.default)(breakdown, 'calType.val') || (0, _get2.default)(breakdown, 'calName.val') || labels.get('calculation-type-total') || '';\n\n return obj;\n }\n\n function _securityExposureBuilder(action) {\n var _action$json = action.json,\n rawPortfolio = _action$json[0],\n rawFundDetail = _action$json[1],\n rawConfig = _action$json[2],\n rawLabels = _action$json[3];\n\n var labels = new Map();\n\n if (rawLabels) {\n Object.keys(rawLabels).forEach(function (key) {\n labels.set(key, rawLabels[key]);\n });\n }\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetail);\n var useSuppression = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, action.portfolioComponent, fundCategory);\n\n var rawBreakdowns = (0, _get2.default)(rawPortfolio, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var breakdown = _util.portfolioUtils.findObjInArray(rawBreakdowns, 'SECURITY_EXPOSURE');\n var visible = typeof breakdown !== 'undefined';\n if (useSuppression) {\n visible = false;\n }\n var obj = {\n caveatSecName: 'Portfolio', tableID: 'security-type-exposure-data', visible: visible\n };\n\n if (visible) {\n var tempBreakdown = getSecurityType(breakdown, labels, { 'sorted': true });\n obj = Object.assign({}, obj, tempBreakdown);\n\n obj.showChart = true;\n obj.spanRow = true;\n\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n obj.refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n }\n return obj;\n }\n});\r\ndefine('components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/lib/top-risk-allocation-by-asset-class.reducer',['exports', 'aurelia-framework', 'lodash/filter', 'lodash/get', 'lodash/uniqBy', 'lodash/orderBy', 'lodash/groupBy', 'lodash/forEach', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../util/util'], function (exports, _aureliaFramework, _filter, _get, _uniqBy, _orderBy, _groupBy, _forEach, _utilsFundDetails, _utilsConfig, _configDecorator, _util) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.topRiskAllocationByAssetClass = topRiskAllocationByAssetClass;\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _uniqBy2 = _interopRequireDefault(_uniqBy);\n\n var _orderBy2 = _interopRequireDefault(_orderBy);\n\n var _groupBy2 = _interopRequireDefault(_groupBy);\n\n var _forEach2 = _interopRequireDefault(_forEach);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('top-risk-allocation-by-asset-class');\n\n function topRiskAllocationByAssetClass(state, action) {\n if (action.type === 'POPULATE_TOP_RISK_ALLOCATION_BY_ASSET_CLASS_SUCCESS') {\n logger.debug('Reducing: POPULATE_TOP_RISK_ALLOCATION_BY_ASSET_CLASS');\n var newState = Object.assign({}, state, {\n topRiskAllocationByAssetClass: {\n data: _dataBuilder(action)\n }\n });\n return newState;\n }\n return state;\n }\n\n function _dataBuilder(action) {\n var _action$json = action.json,\n portfolioData = _action$json[0],\n rawFundDetail = _action$json[1],\n rawConfig = _action$json[2],\n rawPageJsonConfig = _action$json[3];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetail);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, action.portfolioComponent, fundCategory);\n\n var pageJsonConfig = _util.portfolioUtils.parsePageJsonConfig(rawPageJsonConfig);\n\n var holdings = (0, _filter2.default)((0, _get2.default)(portfolioData, 'globalProductsValue.portfolioIntlValue.holdings'), function (o) {\n var holding = (0, _get2.default)(o, 'calNameStd.val');\n switch (holding) {\n case 'TOTAL_PCT_OF_TOTAL_RISK_COMMOD':\n case 'TOTAL_PCT_OF_TOTAL_RISK_EQ':\n case 'TOTAL_PCT_OF_TOTAL_RISK_FI':\n case 'TOTAL_PCT_OF_TOTAL_RISK_FX':\n case 'NET_TOTAL_PCT_OF_NET_TOTAL_RISK_COMMOD':\n case 'NET_TOTAL_PCT_OF_NET_TOTAL_RISK_EQ':\n case 'NET_TOTAL_PCT_OF_NET_TOTAL_RISK_FI':\n case 'NET_TOTAL_PCT_OF_NET_TOTAL_RISK_FX':\n return true;\n default:\n return false;\n }\n });\n\n var visible = typeof holdings !== 'undefined' && holdings.length !== 0;\n if (isSuppressed) {\n visible = false;\n }\n\n var obj = {\n visible: visible\n };\n\n if (visible) {\n obj.fundId = (0, _get2.default)(holdings[0], 'fundID.val');\n obj.showChart = pageJsonConfig.showChart;\n obj.spanRow = pageJsonConfig.spanRow;\n\n obj.date = (0, _get2.default)(holdings[0], 'asOfDate.val');\n var dates = (0, _uniqBy2.default)(holdings, 'asOfDate.val');\n if (dates.length !== 1) {\n logger.error('Multiple as-of dates exist for data which only displays one date');\n }\n\n var valuePairsGroupedByAssetClass = (0, _groupBy2.default)(holdings, 'hldingDetails.lstDtls[0].rolUp.val');\n var valuePairsSortedByPrimaryFlag = [];\n (0, _forEach2.default)(valuePairsGroupedByAssetClass, function (table) {\n valuePairsSortedByPrimaryFlag.push((0, _orderBy2.default)(table, 'hldingDetails.lstDtls[0].primFlag.val', 'desc'));\n });\n\n var tablesByAssetClass = [];\n (0, _forEach2.default)(valuePairsSortedByPrimaryFlag, function (pair) {\n tablesByAssetClass.push(_buildAssetClassTableData(pair[0], pair[1]));\n });\n\n obj.allocationsByAssetClass = (0, _orderBy2.default)(tablesByAssetClass, ['tableOrder']);\n obj.allocationsByAssetClass.forEach(function (table) {\n delete table.tableOrder;\n });\n }\n\n return obj;\n }\n\n function _buildAssetClassTableData(primaryHoldings, secondaryHoldings) {\n var table = {};\n try {\n table = {\n name: primaryHoldings.hldingDetails.lstDtls[0].asset.val,\n tableOrder: primaryHoldings.hldingDetails.lstDtls[0].rolUp.val,\n\n primaryCalculationName: primaryHoldings.calName === undefined ? primaryHoldings.calNameStd.val : primaryHoldings.calName.val,\n secondaryCalculationName: secondaryHoldings.calName === undefined ? secondaryHoldings.calNameStd.val : secondaryHoldings.calName.val,\n rows: []\n };\n\n primaryHoldings.hldingDetails.lstDtls.forEach(function (primaryElement) {\n var secondaryElement = secondaryHoldings.hldingDetails.lstDtls[primaryElement.rank.val - 1];\n table.rows[table.rows.length] = {\n name: primaryElement.name.val,\n\n rowOrder: primaryElement.rank.val * 1,\n primaryDataPct: primaryElement.val.val,\n secondaryDataPct: secondaryElement.val.val\n };\n }, this);\n\n table.rows = (0, _orderBy2.default)(table.rows, ['rowOrder']);\n table.rows.forEach(function (row) {\n delete row.rowOrder;\n });\n } catch (e) {\n logger.error('Something went wrong building table data', e);\n }\n return table;\n }\n});\r\ndefine('components/products/portfolio/ft-value-at-risk/gw/lib/value-at-risk.reducer',['exports', 'aurelia-framework', 'lodash/get', '../../../../common/util/utils-fund-details', '../../../../common/util/utils-config', '../../../../lib/decorators/config-decorator', '../../../util/util'], function (exports, _aureliaFramework, _get, _utilsFundDetails, _utilsConfig, _configDecorator, _util) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.valueAtRisk = valueAtRisk;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('value-at-risk');\n\n function valueAtRisk(state, action) {\n var stateObj = void 0;\n if (action.type === 'POPULATE_VALUE_AT_RISK_SUCCESS') {\n logger.debug('Reducing: POPULATE_VALUE_AT_RISK_SUCCESS');\n\n stateObj = Object.assign({}, state, {\n valueAtRisk: {\n data: _dataBuilder(action)\n }\n });\n } else {\n stateObj = state;\n }\n return stateObj;\n }\n\n function _dataBuilder(action) {\n var _action$json = action.json,\n portfolioData = _action$json[0],\n rawFundDetail = _action$json[1],\n rawConfig = _action$json[2],\n rawPageJsonConfig = _action$json[3];\n\n\n var risk = (0, _get2.default)(portfolioData, 'globalProductsValue.portfolioIntlValue.riskForecast');\n var visible = typeof risk !== 'undefined';\n var obj = {\n visible: visible\n };\n\n var pageJsonConfig = _util.portfolioUtils.parsePageJsonConfig(rawPageJsonConfig);\n\n obj.showChart = pageJsonConfig.showChart;\n obj.spanRow = pageJsonConfig.spanRow;\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetail);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, action.portfolioComponent, fundCategory);\n if (isSuppressed) {\n obj.visible = false;\n obj.isSuppressed = true;\n return obj;\n }\n\n if (visible) {\n obj.value = (0, _get2.default)(risk, 'varOneMo.val');\n obj.date = (0, _get2.default)(risk, 'asOfDate.val');\n if (obj.value === undefined) {\n obj.visible = false;\n obj.isSuppressedByLackOfData = true;\n logger.debug('Hiding component because value undefined');\n }\n if (obj.date === undefined) {\n obj.visible = false;\n obj.isSuppressedByLackOfDate = true;\n logger.debug('Hiding component because date is undefined');\n }\n }\n\n return obj;\n }\n});\r\ndefine('components/products/ppss/ft-ppss/lib/gw/ppss.reducer',['exports', 'aurelia-framework', 'lodash/get', 'lodash/kebabCase', 'moment', '../../../../common/elements/ft-fund-alert/lib/gw/fund-alert.reducer', '../../../../lib/reducer-utils', '../../../../lib/decorators/config-decorator'], function (exports, _aureliaFramework, _get, _kebabCase, _moment, _fundAlert, _reducerUtils, _configDecorator) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ppss = ppss;\n\n var _get2 = _interopRequireDefault(_get);\n\n var _kebabCase2 = _interopRequireDefault(_kebabCase);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('ppss');\n\n function ppss(state, action) {\n var newState = void 0;\n switch (action.type) {\n case 'POPULATE_PPSS_STATE_SUCCESS':\n logger.debug('Reducing: POPULATE_PPSS_STATE_SUCCESS', action, state);\n var _action$json = action.json,\n ppssData = _action$json[0],\n ppssConfig = _action$json[1],\n alertData = _action$json[2],\n ppssComponentConfig = _action$json[3];\n\n var segment = action.segment;\n var config = (0, _configDecorator.configDecorator)(ppssConfig, segment);\n\n var fundAlerts = (0, _fundAlert.parseFundAlerts)(alertData);\n\n var tabsets = (0, _get2.default)(config, 'tabSets.tabSet', []);\n if (!Array.isArray(tabsets)) {\n tabsets = [tabsets];\n }\n tabsets = tabsets.map(function (ts) {\n var baseLink = '/' + action.segment + '/' + (0, _get2.default)(ts, 'tabs.tab.0.page', '');\n if (!action.hideSite) {\n baseLink = '/' + action.site + baseLink;\n }\n return {\n id: ts.id,\n funds: (0, _get2.default)(ts, 'funds', '').split(','),\n baseLink: baseLink\n };\n });\n\n var softLaunchList = config.softLaunchList;\n var activeList = config.activeList;\n\n var funds = ppssData.globalProductsValue.ppsListIntl.map(_createFundMapper(activeList, softLaunchList, config, fundAlerts)).filter(_createFundFilter(activeList, softLaunchList, config)).map(_createFundLinks(tabsets));\n\n if (ppssComponentConfig) {\n var selectedDropdowns = ppssComponentConfig['Filters_Primary'];\n var allDropdowns = state.app.ppss.config.allDropdowns.map(function (dd) {\n var urlParam = action.params[dd.name];\n if (urlParam) {\n if (dd.name === 'MORNINGSTAR_RATING') {\n dd.selected = { value: urlParam.split(',').map(function (rating) {\n return parseInt(rating, 10);\n }) };\n } else {\n dd.selected = { value: urlParam };\n }\n }\n dd.visible = selectedDropdowns.includes(dd.name);\n return dd;\n });\n\n var filters = state.app.ppss.filters;\n filters.dropdowns = allDropdowns;\n var filterOptions = _createFilterOptions(funds);\n\n var performanceViewOptions = [];\n if (ppssComponentConfig['Annualised_Data_Refresh_Rate'].length) {\n performanceViewOptions.push({\n name: 'AVG_ANNUAL',\n labelKey: 'avg-annual',\n periodEnds: ppssComponentConfig['Annualised_Data_Refresh_Rate']\n });\n }\n if (ppssComponentConfig['Calendar_Year_Data_Refresh_Rate'].length) {\n performanceViewOptions.push({\n name: 'CALENDAR_YEAR',\n labelKey: 'calendar-year',\n periodEnds: ppssComponentConfig['Calendar_Year_Data_Refresh_Rate']\n });\n }\n if (ppssComponentConfig['Cumulative_Data_Refresh_Rate'].length) {\n performanceViewOptions.push({\n name: 'CUMULATIVE',\n labelKey: 'cumulative',\n periodEnds: ppssComponentConfig['Cumulative_Data_Refresh_Rate']\n });\n }\n if (ppssComponentConfig['Discrete_Data_Refresh_Rate'].length) {\n performanceViewOptions.push({\n name: 'DISCRETE',\n labelKey: 'discrete-annual',\n periodEnds: ppssComponentConfig['Discrete_Data_Refresh_Rate']\n });\n }\n performanceViewOptions.map(function (pvo) {\n pvo.defaultPerformanceView = {\n name: pvo.name,\n labelKey: pvo.labelKey,\n periodEnd: pvo.periodEnds[0]\n };\n return pvo;\n });\n\n var performanceView = performanceViewOptions.find(function (pvo) {\n return pvo.name === ppssComponentConfig['Default_Performance'][0];\n }).defaultPerformanceView;\n logger.debug('default performanceView:::', performanceView);\n\n var allIdentifiers = state.app.ppss.config.allFundIdentifiers;\n var selectedIdentifiers = ppssComponentConfig['Fund_Identifiers'];\n selectedIdentifiers = selectedIdentifiers.map(function (id) {\n return allIdentifiers.find(function (idObj) {\n return id === idObj.name;\n });\n });\n\n var showMorningStarColumn = (0, _get2.default)(ppssComponentConfig, 'Show_Ratings.0', '') === 'YES';\n\n var discreteMonthlyLabels = _createLabels('DISCRETE', funds[0].performanceAsOfDateMonthly);\n var discreteQuarterlyLabels = _createLabels('DISCRETE', funds[0].performanceAsOfDateQuarterly);\n var calendarYearMonthlyLabels = _createLabels('CALENDAR_YEAR', funds[0].performanceAsOfDateMonthly);\n var calendarYearQuarterlyLabels = _createLabels('CALENDAR_YEAR', funds[0].performanceAsOfDateQuarterly);\n\n newState = Object.assign({}, state, {\n fundAlerts: fundAlerts,\n ppss: {\n funds: funds,\n filterOptions: filterOptions,\n ytdAsOfDate: (0, _get2.default)(ppssData, 'globalProductsValue.ppsListIntl[0].navAsOfDate.val', ''),\n navAsOfDateMonth: (0, _get2.default)(ppssData, 'globalProductsValue.ppsListIntl[0].monthlyVal.perfAsOfDt.val', ''),\n navAsOfDateQuarter: (0, _get2.default)(ppssData, 'globalProductsValue.ppsListIntl[0].qtrlyVal.perfAsOfDt.val', ''),\n discreteMonthlyLabels: discreteMonthlyLabels,\n discreteQuarterlyLabels: discreteQuarterlyLabels,\n calendarYearMonthlyLabels: calendarYearMonthlyLabels,\n calendarYearQuarterlyLabels: calendarYearQuarterlyLabels\n }\n });\n newState.app.ppss.config.performanceViewOptions = performanceViewOptions;\n newState.app.ppss.config.fundIdentifiers = selectedIdentifiers;\n newState.app.ppss.config.showMorningStarColumn = showMorningStarColumn;\n newState.app.ppss.display.performanceView = performanceView;\n newState.app.ppss.filters = filters;\n } else {\n newState = Object.assign({}, state);\n if (!newState.ppss) {\n Object.assign(newState, { ppss: { funds: funds } });\n }\n }\n return newState;\n default:\n return state;\n }\n }\n\n function _createLabels(perfView, asOfDate) {\n var asOfMoment = (0, _moment2.default)(asOfDate, 'L');\n\n var labelObj = {};\n if (perfView === 'CALENDAR_YEAR') {\n var thisYear = asOfMoment.year();\n [1, 2, 3, 4, 5].forEach(function (yearsAgo) {\n Object.defineProperty(labelObj, 'calendar-year-' + yearsAgo + 'yr', { enumerable: true, value: thisYear - yearsAgo });\n });\n }\n if (perfView === 'DISCRETE') {\n [1, 2, 3, 4, 5].forEach(function (yearsAgo) {\n var startDate = asOfMoment.clone().subtract(yearsAgo, 'years').format('MMM-YY');\n var endDate = asOfMoment.clone().subtract(yearsAgo - 1, 'years').format('MMM-YY');\n var dateRange = startDate + ' / ' + endDate;\n Object.defineProperty(labelObj, 'discrete-' + yearsAgo + 'yr', { enumerable: true, value: dateRange });\n });\n }\n return labelObj;\n }\n\n function _createFundFilter(activeList, softLaunchList, config) {\n var filters = [];\n filters.push(function (fund) {\n return activeList.includes(fund.shareClassKey) || softLaunchList.includes(fund.shareClassKey);\n });\n if (config.general.currencyList.length) {\n filters.push(function (fund) {\n return config.general.currencyList.includes(fund.currency);\n });\n }\n if (config.general.shareClassList.length) {\n filters.push(function (fund) {\n return config.general.shareClassList.includes(fund.shareClassFeeStructure);\n });\n }\n if (config.ppss.investmentVehicleList.length) {\n filters.push(function (fund) {\n return config.ppss.investmentVehicleList.includes(fund.investmentVehicle);\n });\n }\n return function (fund) {\n return filters.reduce(function (pass, filter) {\n return pass && filter(fund);\n }, true);\n };\n }\n\n function _createFundLinks(tabsets) {\n return function (fund) {\n if (!fund.isActive || fund.isSoftLaunch) {\n fund.link = null;\n } else {\n fund.link = tabsets.reduce(function (link, tabset) {\n return tabset.id === 'default' || tabset.funds.includes(fund.fundId.toString()) ? tabset.baseLink : link;\n }, null);\n }\n if (fund.link) fund.link += '/' + fund.fundId + '/' + fund.shareClassCode + '/' + (0, _kebabCase2.default)(fund.fundLegalName);\n return fund;\n };\n }\n\n function _createFundMapper(activeList, softLaunchList, config, fundAlerts) {\n var mdash = '';\n var sixMonthsAgo = (0, _moment2.default)().subtract(6, 'months');\n var oneYearAgo = (0, _moment2.default)().subtract(1, 'years');\n return function (fund) {\n var fundId = parseInt(fund.fundInfo.fundNumber.val, 10);\n var currency = (0, _get2.default)(fund, 'fundInfo.shareClassCurrency.val', mdash);\n var nav = (0, _reducerUtils.cleanString)((0, _get2.default)(fund, 'navList.nav.val', mdash));\n var navChange = (0, _reducerUtils.cleanString)((0, _get2.default)(fund, 'navList.dlyNavChange.val', mdash));\n var mStarRatingOverall = parseInt((0, _get2.default)(fund, 'msRatingOverAll.val', ''), 10);\n var shareClassCode = (0, _get2.default)(fund, 'fundInfo.shareClassCode.val', '');\n var shareClassKey = shareClassCode ? fundId + '-' + shareClassCode : fundId;\n var shareClassInceptionDate = (0, _get2.default)(fund, 'fundInfo.shareClassInceptionDate.val', '');\n var performanceInceptionDate = (0, _get2.default)(fund, 'perfIncpDate.val', '');\n var showMDash = false;\n if (config.general.showMDashForUnder1Year) {\n showMDash = (0, _moment2.default)(performanceInceptionDate).isAfter(oneYearAgo);\n } else if (config.general.showMDashForUnder6Months) {\n showMDash = (0, _moment2.default)(performanceInceptionDate).isAfter(sixMonthsAgo);\n }\n\n var alerts = fundAlerts.filter(function (alert) {\n if (alert.shareClassCode) return alert.fundId === fundId.toString() && alert.shareClassCode === shareClassCode;\n\n return alert.fundId === fundId.toString();\n });\n var fundObj = {\n fundId: fundId,\n currency: currency,\n shareClassCode: shareClassCode,\n shareClassKey: shareClassKey,\n fundLegalName: fund.fundInfo.legalName.val,\n fundShortName: (0, _get2.default)(fund, 'fundInfo.fundShortName.val', ''),\n fundNameFull: fund.fundInfo.legalName.val + ' - ' + fund.fundInfo.shareClass.val,\n inceptionDate: (0, _get2.default)(fund, 'fundInfo.inceptionDate.val', ''),\n shareClassInceptionDate: shareClassInceptionDate,\n performanceInceptionDate: performanceInceptionDate,\n performanceInceptionDateLocal: (0, _get2.default)(fund, 'perfIncpDateLocal.val', ''),\n assetClass: (0, _get2.default)(fund, 'fundInfo.fndCategory.val', ''),\n assetClassTaxonomy: (0, _get2.default)(fund, 'fundInfo.assetClass.val', ''),\n assetClassTaxonomyStd: (0, _get2.default)(fund, 'fundInfo.assetClassStd.val', ''),\n classGeography: (0, _get2.default)(fund, 'fundInfo.classGeography.val', ''),\n classGeographyStd: (0, _get2.default)(fund, 'fundInfo.classGeographyStd.val', ''),\n classStrategy: (0, _get2.default)(fund, 'fundInfo.classStrategy.val', ''),\n classStrategyStd: (0, _get2.default)(fund, 'fundInfo.classStrategyStd.val', ''),\n shareClass: fund.fundInfo.shareClass.val,\n shareClassFeeStructure: (0, _get2.default)(fund, 'fundInfo.shrclsCodeFeeStruct.val', ''),\n msFundCategory: (0, _get2.default)(fund, 'fundInfo.fundClassifcationByRegional.val', ''),\n investmentVehicle: (0, _get2.default)(fund, 'invstmntVechleStd.val', ''),\n isActive: activeList.includes(shareClassKey),\n isSoftLaunch: softLaunchList.includes(shareClassKey),\n isSoftClosure: false,\n isHardClosure: false,\n fundAlerts: alerts,\n mStarRatingOverall: mStarRatingOverall,\n nav: (0, _reducerUtils.formatCurrency)(nav, currency),\n navChange: (0, _reducerUtils.formatCurrency)(navChange, currency),\n navChangeDirection: (0, _reducerUtils.navDirection)((0, _get2.default)(fund, 'navList.dlyNavChange.val', '')),\n navAsOfDate: (0, _get2.default)(fund, 'navList.navEffectiveDate.val', ''),\n\n distribution: (0, _get2.default)(fund, 'shClsDistCode.val', ''),\n reportingStatus: (0, _get2.default)(fund, 'ukDistrbStat.val', ''),\n\n taId: (0, _get2.default)(fund, 'ta_ID.val', ''),\n isin: (0, _get2.default)(fund, 'isin.val', ''),\n cusip: (0, _reducerUtils.formatCusip)((0, _get2.default)(fund, 'fundInfo.cusip.val', '')),\n reuters: (0, _get2.default)(fund, 'reuterSymbol.val', ''),\n bloomberg: (0, _get2.default)(fund, 'blmBerfIdentfr.val', ''),\n wkn: (0, _get2.default)(fund, 'wkn.val', ''),\n sedol: (0, _get2.default)(fund, 'sedol.val', ''),\n mexid: (0, _get2.default)(fund, 'mexId.val', ''),\n merrillLynchId: (0, _get2.default)(fund, 'mrlLyncIdntfr.val', ''),\n vln: (0, _get2.default)(fund, 'vlnSymbol.val', ''),\n rfi: (0, _get2.default)(fund, '', ''),\n apri: (0, _get2.default)(fund, '', ''),\n arsn: (0, _get2.default)(fund, '', ''),\n fundCode: (0, _get2.default)(fund, '', ''),\n frontEnd: (0, _get2.default)(fund, '', ''),\n lowLoad: (0, _get2.default)(fund, '', ''),\n dsc: (0, _get2.default)(fund, '', ''),\n dbCode: (0, _get2.default)(fund, '', ''),\n\n performanceAsOfDateMonthly: (0, _get2.default)(fund, 'monthlyVal.perfAsOfDt.val', ''),\n performanceAsOfDateQuarterly: (0, _get2.default)(fund, 'qtrlyVal.perfAsOfDt.val', ''),\n\n avgAnn1YearReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.avgAnnlRtn.ret1Yr.val', mdash),\n avgAnn3YearReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.avgAnnlRtn.ret3Yr.val', mdash),\n avgAnn5YearReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.avgAnnlRtn.ret5Yr.val', mdash),\n avgAnn10YearReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.avgAnnlRtn.ret10Yr.val', mdash),\n avgAnnSinceIncReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.avgAnnlRtn.avgAnnualYrRetActInc.val', mdash),\n\n avgAnn1YearReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.avgAnnlRtn.ret1Yr.val', mdash),\n avgAnn3YearReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.avgAnnlRtn.ret3Yr.val', mdash),\n avgAnn5YearReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.avgAnnlRtn.ret5Yr.val', mdash),\n avgAnn10YearReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.avgAnnlRtn.ret10Yr.val', mdash),\n avgAnnSinceIncReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.avgAnnlRtn.avgAnnualYrRetActInc.val', mdash),\n\n calendarYear1yrReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.calYrRt.ret1Yr.val', mdash),\n calendarYear2yrReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.calYrRt.ret2Yr.val', mdash),\n calendarYear3yrReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.calYrRt.ret3Yr.val', mdash),\n calendarYear4yrReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.calYrRt.ret4Yr.val', mdash),\n calendarYear5yrReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.calYrRt.ret5Yr.val', mdash),\n calendarYear6yrReturnMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.calYrRt.ret6Yr.val', mdash),\n\n calendarYear1yrReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.calYrRt.ret1Yr.val', mdash),\n calendarYear2yrReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.calYrRt.ret2Yr.val', mdash),\n calendarYear3yrReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.calYrRt.ret3Yr.val', mdash),\n calendarYear4yrReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.calYrRt.ret4Yr.val', mdash),\n calendarYear5yrReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.calYrRt.ret5Yr.val', mdash),\n calendarYear6yrReturnQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.calYrRt.ret6Yr.val', mdash),\n\n cumulativeRetYtdMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.cumulativeRet.cumulativeRetYtd.val', mdash),\n cumulativeRet1yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.cumulativeRet.ret1Yr.val', mdash),\n cumulativeRet3yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.cumulativeRet.ret3Yr.val', mdash),\n cumulativeRet5yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.cumulativeRet.ret5Yr.val', mdash),\n cumulativeRet10yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.cumulativeRet.ret10Yr.val', mdash),\n cumulativeRetIncMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.cumulativeRet.cumulativeRetActInc.val', mdash),\n\n cumulativeRetYtdQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.cumulativeRet.cumulativeRetYtd.val', mdash),\n cumulativeRet1yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.cumulativeRet.ret1Yr.val', mdash),\n cumulativeRet3yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.cumulativeRet.ret3Yr.val', mdash),\n cumulativeRet5yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.cumulativeRet.ret5Yr.val', mdash),\n cumulativeRet10yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.cumulativeRet.ret10Yr.val', mdash),\n cumulativeRetIncQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.cumulativeRet.cumulativeRetActInc.val', mdash),\n\n discreteAnnual1yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.discrAnnualRoll.ret1Yr.val', mdash),\n discreteAnnual2yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.discrAnnualRoll.ret2Yr.val', mdash),\n discreteAnnual3yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.discrAnnualRoll.ret3Yr.val', mdash),\n discreteAnnual4yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.discrAnnualRoll.ret4Yr.val', mdash),\n discreteAnnual5yrMonthly: showMDash ? mdash : (0, _get2.default)(fund, 'monthlyVal.discrAnnualRoll.ret5Yr.val', mdash),\n\n discreteAnnual1yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.discrAnnualRoll.ret1Yr.val', mdash),\n discreteAnnual2yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.discrAnnualRoll.ret2Yr.val', mdash),\n discreteAnnual3yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.discrAnnualRoll.ret3Yr.val', mdash),\n discreteAnnual4yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.discrAnnualRoll.ret4Yr.val', mdash),\n discreteAnnual5yrQuarterly: showMDash ? mdash : (0, _get2.default)(fund, 'qtrlyVal.discrAnnualRoll.ret5Yr.val', mdash)\n };\n return fundObj;\n };\n }\n\n function _createFilterOptions(funds) {\n return {\n ASSET_CLASS: (0, _reducerUtils.getUniqOptions)('assetClass')(funds),\n ASSET_CLASS_TAXONOMY: (0, _reducerUtils.getUniqOptions)('assetClassTaxonomy')(funds),\n CLASS_GEOGRAPHY: (0, _reducerUtils.getUniqOptions)('classGeography')(funds),\n CLASS_STRATEGY: (0, _reducerUtils.getUniqOptions)('classStrategy')(funds),\n CURRENCY: (0, _reducerUtils.getUniqOptions)('currency')(funds),\n DISTRIBUTION: (0, _reducerUtils.getUniqOptions)('distribution')(funds),\n MS_FUND_CATEGORY: (0, _reducerUtils.getUniqOptions)('msFundCategory')(funds),\n INVESTMENT_VEHICLE: (0, _reducerUtils.getUniqOptions)('investmentVehicle')(funds),\n MORNINGSTAR_RATING: [{\n value: [3, 4, 5],\n label: '3 +'\n }, {\n value: [4, 5],\n label: '4 +'\n }, {\n value: [5],\n label: '5'\n }],\n REPORTING_STATUS: (0, _reducerUtils.getUniqOptions)('reportingStatus')(funds),\n SHARE_CLASS: (0, _reducerUtils.getUniqOptions)('shareClassFeeStructure')(funds)\n };\n }\n});\r\ndefine('components/products/pricing-distribution/ft-pricing-distribution/lib/gw/pricing-distribution.reducer',['exports', 'aurelia-framework', 'lodash/cloneDeep', 'lodash/get', 'lodash/groupBy', 'lodash/has', 'lodash/sortedUniq', 'lodash/unionBy', 'moment', '../../../../performance/util/util', '../../../../lib/reducer-utils', '../../../../../../lib/sort-utils', '../../../../lib/decorators/config-decorator', '../../../../common/util/utils', '../utils'], function (exports, _aureliaFramework, _cloneDeep, _get, _groupBy, _has, _sortedUniq, _unionBy, _moment, _util, _reducerUtils, _sortUtils, _configDecorator, _utils, _utils2) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.pricingDistribution = pricingDistribution;\n\n var _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _groupBy2 = _interopRequireDefault(_groupBy);\n\n var _has2 = _interopRequireDefault(_has);\n\n var _sortedUniq2 = _interopRequireDefault(_sortedUniq);\n\n var _unionBy2 = _interopRequireDefault(_unionBy);\n\n var _moment2 = _interopRequireDefault(_moment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('pricing-distribution');\n\n function pricingDistribution(state, action) {\n var newState = void 0;\n var decoratoredConfig = void 0;\n\n switch (action.type) {\n case 'POPULATE_PRICING_DISTRIBUTION_ERROR':\n return Object.assign({}, state, {\n pricingDistribution: {\n error: true\n }\n });\n case 'POPULATE_PRICING_DISTRIBUTION_SUCCESS':\n logger.debug('Reducing: POPULATE_PRICING_DISTRIBUTION_SUCCESS', action);\n var _action$json = action.json,\n pdData = _action$json[0],\n fundDetails = _action$json[1],\n rawConfig = _action$json[2];\n\n if ((0, _utils.isEmptyDeep)(pdData) && (0, _utils.isEmptyDeep)(fundDetails)) {\n return Object.assign({}, state, {\n pricingDistribution: {\n error: true\n }\n });\n }\n decoratoredConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n\n newState = _getNewState(state, fundDetails, action.fundId, decoratoredConfig);\n logger.debug('_getNewState P&D:::', newState);\n\n newState.pricingDistribution.shareClasses.forEach(_createAppendPDData(pdData.globalProductsValue.prceDistbIntl.shClsPriceDet));\n return newState;\n case 'POPULATE_PRICE_HISTORY_SUCCESS':\n logger.debug('Reducing: POPULATE_PRICE_HISTORY_SUCCESS', action);\n var _action$json2 = action.json,\n priceHist = _action$json2[0],\n fundDetails2 = _action$json2[1],\n rawConfig2 = _action$json2[2];\n\n\n decoratoredConfig = (0, _configDecorator.configDecorator)(rawConfig2, action.segment);\n newState = _getNewState(state, fundDetails2, action.fundId, decoratoredConfig);\n _appendPriceHistData(newState, action.shareClassCode, priceHist, action.fromDate, action.toDate);\n\n return newState;\n case 'POPULATE_DISTRIBUTION_HISTORY_SUCCESS':\n logger.debug('Reducing: POPULATE_DISTRIBUTION_HISTORY_SUCCESS', action);\n var _action$json3 = action.json,\n divHist = _action$json3[0],\n fundDetails3 = _action$json3[1],\n rawConfig3 = _action$json3[2];\n\n\n decoratoredConfig = (0, _configDecorator.configDecorator)(rawConfig3, action.segment);\n newState = _getNewState(state, fundDetails3, action.fundId, decoratoredConfig);\n _appendDivHistData(newState, divHist);\n\n return newState;\n case 'POPULATE_DISTRIBUTION_HISTORY_ERROR':\n logger.debug('Reducing: POPULATE_DISTRIBUTION_HISTORY_ERROR', action);\n\n return state;\n default:\n return state;\n }\n }\n\n function _getNewState(state, fundDetails, fundId, config) {\n if ((0, _has2.default)(state, 'pricingDistribution')) {\n return (0, _cloneDeep2.default)(state);\n }\n\n var shareClasses = (0, _get2.default)(fundDetails, 'globalProductsValue.fundDetailIntl.shClsDet', []).map(_createParseBasicClassData(fundId, fundDetails, config)).sort(function (a, b) {\n return a.className.localeCompare(b.className);\n });\n return {\n pricingDistribution: {\n hasDistributionClasses: shareClasses.some(function (sc) {\n return sc.isDistributionClass;\n }),\n primaryShareClass: shareClasses.find(function (cls) {\n return cls.primary;\n }),\n shareClasses: shareClasses\n }\n };\n }\n\n function _createParseBasicClassData(fundId, fundDetails, config) {\n var toDate = (0, _moment2.default)();\n var toDateStd = toDate.format('YYYY-MM-DD');\n return function (sc) {\n var shareClassCode = (0, _get2.default)(sc, 'shCls.val', '');\n var shareClassKey = shareClassCode ? fundId + '-' + shareClassCode : fundId;\n var currency = (0, _get2.default)(sc, 'shClsCur.val', '');\n var shareClassInceptionDateStd = (0, _get2.default)(sc, 'shClIncDtStd.val');\n var performanceInceptionDateStd = (0, _get2.default)(sc, 'perfIncpDt.val');\n var inceptionDateMoment = (0, _moment2.default)(shareClassInceptionDateStd, 'YYYY-MM-DD');\n var showPerformanceData = !_util.performanceUtils.mustHidePerformanceData(config, performanceInceptionDateStd);\n\n var priceHistory = {};\n Object.entries(_utils2.DATE_RANGE_ENUM).forEach(function (obj) {\n var key = obj[0],\n val = obj[1];\n\n var ph = {};\n var fromDateMoment = void 0;\n ph.name = val.name;\n ph.labelKey = val.labelKey;\n ph.dataKey = val.dataKey;\n ph.downloadKey = val.downloadKey;\n ph.data = null;\n ph.dataFullyLoaded = false;\n ph.toDateStd = toDateStd;\n ph.fromDateStd = (0, _utils2.calculateFromDateStd)(key, shareClassInceptionDateStd, toDateStd);\n\n ph.toDateLoadedStd = null;\n ph.fromDateLoadedStd = null;\n\n ph.toDateActualStd = null;\n ph.fromDateActualStd = null;\n\n switch (key) {\n case 'CUSTOM_RANGE':\n ph.dataExists = null;\n break;\n case 'ONE_MONTH':\n ph.dataExists = true;\n break;\n case 'SINCE_INCEPTION':\n ph.dataExists = true;\n break;\n default:\n fromDateMoment = (0, _moment2.default)(ph.fromDateStd, 'YYYY-MM-DD');\n ph.dataExists = inceptionDateMoment.isBefore(fromDateMoment);\n }\n priceHistory[key] = ph;\n });\n\n return {\n className: (0, _get2.default)(sc, 'shClsNm.val', ''),\n primary: (0, _get2.default)(sc, 'prmryShCls.val', '').toUpperCase() === 'YES',\n shareClassCode: shareClassCode,\n shareClassKey: shareClassKey,\n shareClassInceptionDate: (0, _get2.default)(sc, 'shClsIncpDt.val', ''),\n shareClassInceptionDateStd: shareClassInceptionDateStd,\n performanceInceptionDateStd: performanceInceptionDateStd,\n showPerformanceData: showPerformanceData,\n\n isDistributionClass: (0, _get2.default)(sc, 'shClsDistributionFlag.val', '').toUpperCase() === 'Y',\n currency: currency,\n priceHistory: priceHistory,\n\n dividendHistory: [],\n dividendHistoryByYear: {},\n dividendYears: []\n };\n };\n }\n\n function _createAppendPDData(pdClasses) {\n return function (sc) {\n var matchingClass = pdClasses.find(function (pdc) {\n return (0, _get2.default)(pdc, 'shClsCD.val', '') === sc.shareClassCode;\n });\n if (matchingClass) {\n var navChange = (0, _get2.default)(matchingClass, 'navDet.dlyNavChange.val', '');\n sc.nav = (0, _reducerUtils.formatCurrency)((0, _reducerUtils.cleanString)((0, _get2.default)(matchingClass, 'navDet.nav.val', '')), sc.currency);\n sc.navChange = (0, _reducerUtils.formatCurrency)((0, _reducerUtils.cleanString)(navChange), sc.currency);\n sc.navChangeDirection = (0, _reducerUtils.navDirection)(navChange);\n sc.asOfDate = (0, _get2.default)(matchingClass, 'navDet.asOfDate.val', '');\n sc.dividend = _parseDividend(matchingClass.navDet.dividend, sc.currency);\n sc.highLowNav = (0, _get2.default)(matchingClass, 'highLowNav', []).filter(function (hl) {\n return (0, _get2.default)(hl, 'highNav.val', '') && (0, _get2.default)(hl, 'lowNav.val', '');\n }).map(function (hl) {\n return {\n year: (0, _get2.default)(hl, 'year.val', ''),\n highNav: (0, _reducerUtils.formatCurrency)((0, _reducerUtils.cleanString)((0, _get2.default)(hl, 'highNav.val', '')), sc.currency),\n lowNav: (0, _reducerUtils.formatCurrency)((0, _reducerUtils.cleanString)((0, _get2.default)(hl, 'lowNav.val', '')), sc.currency)\n };\n });\n }\n };\n }\n\n function _appendPriceHistData(newState, shareClassCode, priceHist, fromDateStd, toDateStd) {\n logger.debug('_appendPriceHistData():::', newState, shareClassCode, priceHist, fromDateStd, toDateStd);\n\n if (shareClassCode) {\n var shareClass = newState.pricingDistribution.shareClasses.find(function (sc) {\n return sc.shareClassCode === shareClassCode;\n });\n if (shareClass) {\n var currency = (0, _get2.default)(priceHist, 'globalProductsValue.navHistoryIntlValue.shareClassCurrency.val', []);\n var navArray = (0, _get2.default)(priceHist, 'globalProductsValue.navHistoryIntlValue.navDetailValue', []).map(_createParseNavHistory(currency)).filter(function (nav) {\n return (0, _moment2.default)(nav.navDate, 'YYYY-MM-DD').isBetween(fromDateStd, toDateStd, null, '[]');\n }).sort((0, _sortUtils.createCompare)('navDate', 'DESC'));\n\n var fromDateMoment = (0, _moment2.default)(fromDateStd, 'YYYY-MM-DD');\n var toDateMoment = (0, _moment2.default)(toDateStd, 'YYYY-MM-DD');\n\n Object.keys(_utils2.DATE_RANGE_ENUM).forEach(function (key) {\n var ph = shareClass.priceHistory[key];\n\n if (!ph.dataFullyLoaded && (!ph.data || toDateMoment.isSameOrAfter(ph.fromDateLoadedStd) && fromDateMoment.isSameOrBefore(ph.toDateLoadedStd))) {\n ph.data = (0, _unionBy2.default)(ph.data, navArray, 'navDate');\n\n ph.fromDateLoadedStd = ph.fromDateLoadedStd ? _moment2.default.min(fromDateMoment, (0, _moment2.default)(ph.fromDateLoadedStd, 'YYYY-MM-DD')).format('YYYY-MM-DD') : fromDateMoment.format('YYYY-MM-DD');\n ph.toDateLoadedStd = ph.toDateLoadedStd ? _moment2.default.max(toDateMoment, (0, _moment2.default)(ph.toDateLoadedStd, 'YYYY-MM-DD')).format('YYYY-MM-DD') : toDateMoment.format('YYYY-MM-DD');\n\n ph.dataFullyLoaded = (0, _moment2.default)(ph.fromDateLoadedStd).isSameOrBefore(ph.fromDateStd) && ph.toDateLoadedStd === ph.toDateStd;\n\n ph.data = ph.data.filter(function (nav) {\n return (0, _moment2.default)(nav.navDate, 'YYYY-MM-DD').isBetween(ph.fromDateStd, ph.toDateStd, null, '[]');\n });\n\n if (ph.data && ph.data.length > 0) {\n ph.toDateActualStd = ph.data[0].navDate;\n ph.fromDateActualStd = ph.data[ph.data.length - 1].navDate;\n }\n }\n });\n }\n }\n }\n\n function _appendDivHistData(newState, divHist) {\n var shareClassCode = (0, _get2.default)(divHist, 'globalProductsValue.divHistoryIntlValue.shareClassCode.val');\n\n if (shareClassCode) {\n var shareClass = newState.pricingDistribution.shareClasses.find(function (sc) {\n return sc.shareClassCode === shareClassCode;\n });\n if (shareClass) {\n var dividendData = (0, _get2.default)(divHist, 'globalProductsValue.divHistoryIntlValue.divDetailValue', []);\n shareClass.dividendHistory = dividendData.map(function (dvd) {\n var currency = (0, _get2.default)(dvd, 'curryCode.val', '');\n var asOfDateStd = (0, _get2.default)(dvd, 'asOfDtStd.val', '');\n var asOfDateMoment = (0, _moment2.default)(asOfDateStd);\n return {\n asOfDateStd: asOfDateStd,\n asOfDate: (0, _get2.default)(dvd, 'asOfDt.val', ''),\n asOfDateYear: asOfDateMoment.year(),\n recordDate: (0, _get2.default)(dvd, 'incmDistRecdDt.val', ''),\n exDividendDate: (0, _get2.default)(dvd, 'incmDistExDivDt.val', ''),\n distributionDate: (0, _get2.default)(dvd, 'incmDistPayableDt.val', ''),\n dividendsPerShare: (0, _reducerUtils.formatCurrency)((0, _reducerUtils.cleanString)((0, _get2.default)(dvd, 'divPerShare.val', '')), currency)\n };\n });\n shareClass.dividendYears = (0, _sortedUniq2.default)(shareClass.dividendHistory.map(function (dh) {\n return dh.asOfDateYear;\n }));\n shareClass.dividendHistoryByYear = (0, _groupBy2.default)(shareClass.dividendHistory, 'asOfDateYear');\n }\n }\n }\n\n function _createParseNavHistory(currency) {\n return function (navObj) {\n var nav = (0, _get2.default)(navObj, 'nav.val', '');\n var navChange = (0, _get2.default)(navObj, 'dlyNavChange.val', '');\n\n var navDate = (0, _moment2.default)((0, _get2.default)(navObj, 'navEffectiveDate.val', ''), 'DD/MM/YYYY').format('YYYY-MM-DD');\n\n var navDateFormatted = (0, _get2.default)(navObj, 'navEffectiveDate.val', '');\n var navChangePercent = (0, _get2.default)(navObj, 'dlyNavPcnt.val', '');\n return {\n navDate: navDate,\n navDateFormatted: navDateFormatted,\n nav: (0, _reducerUtils.parseNumber)(nav),\n navChange: (0, _reducerUtils.parseNumber)(navChange),\n navChangePercent: navChangePercent,\n navFormatted: (0, _reducerUtils.formatCurrency)(nav, currency, true),\n navChangeFormatted: (0, _reducerUtils.formatCurrency)(navChange, currency, true),\n navChangePercentFormatted: (0, _reducerUtils.formatPercentage)(navChangePercent, true)\n };\n };\n }\n\n function _parseDividend(dvd, currency) {\n if (!dvd) return null;\n if (!(0, _has2.default)(dvd, 'divPerUnit.val', false)) return null;\n return {\n asOfDateStd: (0, _get2.default)(dvd, 'asOfDt.val', ''),\n asOfDate: (0, _get2.default)(dvd, 'asOfDt.val', ''),\n recordDate: (0, _get2.default)(dvd, 'recordDt.val', ''),\n exDividendDate: (0, _get2.default)(dvd, 'exDivDt.val', ''),\n distributionDate: (0, _get2.default)(dvd, '', ''),\n dividendsPerShare: (0, _reducerUtils.formatCurrency)((0, _reducerUtils.cleanString)((0, _get2.default)(dvd, 'divPerUnit.val', '')), currency)\n };\n }\n});\r\ndefine('components/products/tax/ft-german-tax/lib/gw/german-tax.reducer',['exports', 'aurelia-framework', '../../../../lib/reducer-utils', 'lodash/get'], function (exports, _aureliaFramework, _reducerUtils, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.germanTax = germanTax;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('german-tax');\n\n function germanTax(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_GERMAN_TAX_SUCCESS') {\n logger.debug('Reducing: POPULATE_GERMAN_TAX_SUCCESS', state, action);\n var _action$json = action.json,\n taxData = _action$json[0],\n taxComponentConfig = _action$json[1];\n\n var showTaxColumns = (0, _get2.default)(taxComponentConfig, 'hideTaxColumns.0', 'false') === 'false';\n var showTaId = (0, _get2.default)(taxComponentConfig, 'ISIN-or-FundNumber.0', 'Fund-Number') === 'Fund-Number';\n var showIsin = !showTaId;\n var filterFunds = (0, _get2.default)(taxComponentConfig, 'Display-For-Funds', []);\n var includeOrExcludeFunds = (0, _get2.default)(taxComponentConfig, 'Funds-For-Display.0', '');\n if (includeOrExcludeFunds === 'Exclude') includeOrExcludeFunds = 'EXCLUDE';\n if (includeOrExcludeFunds === 'Include') includeOrExcludeFunds = 'INCLUDE';\n\n var selectedDropdowns = (0, _get2.default)(taxComponentConfig, 'Filters', []);\n\n if (!Array.isArray(selectedDropdowns)) selectedDropdowns = [selectedDropdowns];\n\n var funds = (0, _get2.default)(taxData, 'globalProductsValue.priceTaxIntl', []).map(function (fund) {\n return {\n fundId: (0, _get2.default)(fund, 'fundID.val'),\n fundName: (0, _get2.default)(fund, 'fundName.val', '—'),\n investmentVehicleCode: (0, _get2.default)(fund, 'umbrella.val', '—'),\n baseCurrency: (0, _get2.default)(fund, 'fundBaseCur.val', '—'),\n shareClasses: (0, _get2.default)(fund, 'shareClsDet', [])\n };\n });\n\n var shareClasses = funds.reduce(function (classes, fund) {\n fund.shareClasses.forEach(function (sc) {\n sc.fundId = fund.fundId;\n sc.fundName = fund.fundName;\n sc.baseCurrency = fund.baseCurrency;\n sc.investmentVehicleCode = fund.investmentVehicleCode;\n });\n return classes.concat(fund.shareClasses);\n }, []).map(function (sc) {\n var currency = (0, _get2.default)(sc, 'shClsCurncy.val', '—');\n var shareClassName = (0, _get2.default)(sc, 'shareClassName.val', '—');\n var shareClassCode = (0, _get2.default)(sc, 'shareClassCode.val', '—');\n var interimProfitStd = parseFloat((0, _get2.default)(sc, 'interimProfitSTD.val', '0'));\n return {\n fundId: sc.fundId,\n fundName: sc.fundName,\n investmentVehicleCode: sc.investmentVehicleCode,\n showCurrencyFootnote: sc.baseCurrency !== currency,\n showPositiveProfitFootnote: interimProfitStd > 0,\n showNegativeProfitFootnote: interimProfitStd < 0,\n\n shareClassName: shareClassName,\n fundShareClassName: sc.fundName + ' - ' + shareClassName,\n shareClassKey: sc.fundId + '-' + shareClassCode,\n investmentVehicle: (0, _get2.default)(sc, 'umbrellaDesc.val', '—'),\n shareClassCode: shareClassCode,\n taId: (0, _get2.default)(sc, 'ta_id.val', ''),\n redemptionPrice: (0, _reducerUtils.formatCurrency)((0, _get2.default)(sc, 'navValue.val'), currency, true),\n\n isin: (0, _get2.default)(sc, 'isin.val', '—'),\n currency: currency,\n nav: (0, _reducerUtils.formatCurrency)((0, _get2.default)(sc, 'gemOfferPriceValue.val'), currency, true),\n interimProfit: (0, _reducerUtils.formatCurrency)((0, _get2.default)(sc, 'interimProfit.val'), currency, true),\n interimProfitStd: interimProfitStd,\n equityGainEstG: (0, _reducerUtils.formatPercentage)((0, _get2.default)(sc, 'equityGain.val'), true),\n equityGainKstG: (0, _reducerUtils.formatPercentage)((0, _get2.default)(sc, 'kstgEquityGain.val'), true),\n realEstateProfit: (0, _reducerUtils.formatCurrency)((0, _get2.default)(sc, 'realEstateGain.val'), currency, true),\n accumulatedDividendIncome: (0, _reducerUtils.formatCurrency)((0, _get2.default)(sc, 'accuDeemedDist.val'), currency, true),\n asOf: (0, _get2.default)(sc, 'asOfDate.val', '—')\n };\n }).filter(function (sc) {\n switch (includeOrExcludeFunds) {\n case 'INCLUDE':\n return filterFunds.includes(sc.shareClassKey);\n case 'EXCLUDE':\n return !filterFunds.includes(sc.shareClassKey);\n default:\n return true;\n }\n });\n\n var allDropdowns = state.app.tax.config.allDropdowns.map(function (dd) {\n var urlParam = action.params[dd.name];\n if (urlParam) {\n dd.selected = { value: urlParam };\n }\n dd.visible = selectedDropdowns.includes(dd.name);\n return dd;\n });\n\n var filters = state.app.tax.filters;\n filters.dropdowns = allDropdowns;\n var filterOptions = _createFilterOptions(shareClasses);\n\n stateOBJ = Object.assign({}, state, {\n tax: {\n filterOptions: filterOptions,\n funds: funds,\n shareClasses: shareClasses\n }\n });\n stateOBJ.app.tax.config.showTaxColumns = showTaxColumns;\n stateOBJ.app.tax.config.showTaId = showTaId;\n stateOBJ.app.tax.config.showIsin = showIsin;\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _createFilterOptions(shareClasses) {\n return {\n INVESTMENT_VEHICLE: (0, _reducerUtils.getUniqOptions)('investmentVehicle')(shareClasses),\n FUND_NAME: (0, _reducerUtils.getUniqOptions)('fundShareClassName')(shareClasses)\n };\n }\n});\r\ndefine('components/marketing/common/elements/ft-multi-select-bar/lib/gw/ft-multi-select-bar.reducer',['exports', 'lodash/get'], function (exports, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ftMultiSelectBar = ftMultiSelectBar;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function ftMultiSelectBar(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n data = _action$json[0];\n\n var beanData = (0, _get2.default)(data, 'labels');\n\n var selectMultiple = (0, _get2.default)(beanData, 'doclister-select-multiple');\n var selectedPdfs = (0, _get2.default)(beanData, 'selected-pdf-labels');\n var editLabel = (0, _get2.default)(beanData, 'edit-label');\n var emailSelectedLabel = (0, _get2.default)(beanData, 'email-selected-label');\n var downloadLink = (0, _get2.default)(beanData, 'download-link');\n var onState = (0, _get2.default)(beanData, 'on-state');\n var offState = (0, _get2.default)(beanData, 'off-state');\n var editSelectedDocumentsText = (0, _get2.default)(beanData, 'edit-selected-documents-text');\n var emailSelectedDocumentsText = (0, _get2.default)(beanData, 'email-selected-documents-text');\n var downloadSelectedDocumentsText = (0, _get2.default)(beanData, 'download-selected-documents-text');\n var fromNameText = (0, _get2.default)(beanData, 'from-name-text');\n var removeRecipientText = (0, _get2.default)(beanData, 'remove-recipient-text');\n var recipientNameText = (0, _get2.default)(beanData, 'recipient-name-text');\n var recipientEmailText = (0, _get2.default)(beanData, 'recipient-email-text');\n var addRecipientText = (0, _get2.default)(beanData, 'add-recipient-text');\n var messageLabel = (0, _get2.default)(beanData, 'message-label');\n var yourDocumentsSentText = (0, _get2.default)(beanData, 'your-documents-sent-text');\n var backLabel = (0, _get2.default)(beanData, 'back-label');\n var continueLabel = (0, _get2.default)(beanData, 'continue-label');\n var sendLink = (0, _get2.default)(beanData, 'send-link');\n var validFromName = (0, _get2.default)(beanData, 'doclister-valid-from-name');\n var validToName = (0, _get2.default)(beanData, 'doclister-valid-to-name');\n var validEmail = (0, _get2.default)(beanData, 'doclister-valid-email');\n\n return Object.assign({}, state, {\n ftMultiSelectBar: {\n selectMultiple: selectMultiple,\n selectedPdfs: selectedPdfs,\n editLabel: editLabel,\n emailSelectedLabel: emailSelectedLabel,\n onState: onState,\n offState: offState,\n downloadLink: downloadLink,\n editSelectedDocumentsText: editSelectedDocumentsText,\n emailSelectedDocumentsText: emailSelectedDocumentsText,\n downloadSelectedDocumentsText: downloadSelectedDocumentsText,\n fromNameText: fromNameText,\n removeRecipientText: removeRecipientText,\n recipientNameText: recipientNameText,\n recipientEmailText: recipientEmailText,\n addRecipientText: addRecipientText,\n messageLabel: messageLabel,\n yourDocumentsSentText: yourDocumentsSentText,\n backLabel: backLabel,\n continueLabel: continueLabel,\n sendLink: sendLink,\n validFromName: validFromName,\n validToName: validToName,\n validEmail: validEmail\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/marketing/common/elements/ft-type-ahead-search/lib/gw/ft-type-ahead-search.reducer',['exports', 'lodash/get'], function (exports, _get) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ftTypeAheadSearch = ftTypeAheadSearch;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function ftTypeAheadSearch(state, action) {\n switch (action.type) {\n case 'LOAD_LABELS_MARKETING_SUCCESS':\n var _action$json = action.json,\n data = _action$json[0];\n\n var beanData = (0, _get2.default)(data, 'labels');\n\n var classLabel = (0, _get2.default)(beanData, 'class-label');\n var emptyResults = (0, _get2.default)(beanData, 'empty-results');\n var searchInput = (0, _get2.default)(beanData, 'search-input');\n\n return Object.assign({}, state, {\n ftTypeAheadSearch: {\n classLabel: classLabel,\n searchInput: searchInput,\n emptyResults: emptyResults\n }\n });\n default:\n return state;\n }\n }\n});\r\ndefine('components/products/common/elements/ft-fund-alert/lib/gw/fund-alert.reducer',['exports', 'aurelia-framework', 'lodash/get', '../../../../util/utils-config'], function (exports, _aureliaFramework, _get, _utilsConfig) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fundAlert = fundAlert;\n exports.parseFundAlerts = parseFundAlerts;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('fund-alert');\n\n function fundAlert(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_FUND_ALERT_SUCCESS') {\n logger.debug('Reducing: POPULATE_FUND_ALERT_SUCCESS', action, state);\n var _action$json = action.json,\n alertData = _action$json[0];\n\n\n stateOBJ = Object.assign({}, state, {\n fundAlerts: parseFundAlerts(alertData)\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function parseFundAlerts(alertData) {\n var alerts = _utilsConfig.utilsConfig.arrayConvertListOfFields(alertData, ['provider.LscsDocuments.assets.document']);\n return (0, _get2.default)(alerts, 'provider.LscsDocuments.assets.document', []).map(_alertMapper);\n }\n\n function _alertMapper(alert) {\n var fields = (0, _get2.default)(alert, 'metadata.field', []);\n var fundId = fields.find(function (f) {\n return f.name === 'TeamSite/Metadata/frk_oneTISNumber';\n });\n var shareClassCode = fields.find(function (f) {\n return f.name === 'TeamSite/Metadata/frk_shareClassCode';\n });\n return {\n fundId: (0, _get2.default)(fundId, 'content', null),\n shareClassCode: (0, _get2.default)(shareClassCode, 'content', null),\n alert: (0, _get2.default)(alert, 'content.generic.content.fund_alert', ''),\n title: (0, _get2.default)(alert, 'content.generic.content.title', ''),\n content: (0, _get2.default)(alert, 'content.generic.content.content', '')\n };\n }\n});\r\ndefine('components/products/portfolio/ft-manager-roster/gw/lib/gw/manager-roster.reducer',['exports', 'aurelia-framework', 'lodash/filter', 'lodash/get', 'lodash/orderBy', 'lodash/groupBy', 'lodash/forEach', '../../../../../common/util/utils-fund-details', '../../../../../common/util/utils-config', '../../../../../lib/decorators/config-decorator'], function (exports, _aureliaFramework, _filter, _get, _orderBy, _groupBy, _forEach, _utilsFundDetails, _utilsConfig, _configDecorator) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.managerRoster = managerRoster;\n\n var _filter2 = _interopRequireDefault(_filter);\n\n var _get2 = _interopRequireDefault(_get);\n\n var _orderBy2 = _interopRequireDefault(_orderBy);\n\n var _groupBy2 = _interopRequireDefault(_groupBy);\n\n var _forEach2 = _interopRequireDefault(_forEach);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('manager-roster');\n\n function managerRoster(state, action) {\n var stateOBJ = void 0;\n if (action.type === 'POPULATE_MANAGER_ROSTER_AND_ALLOCATION_SUCCESS') {\n logger.debug('Reducing: POPULATE_MANAGER_ROSTER_AND_ALLOCATION_SUCCESS');\n\n stateOBJ = Object.assign({}, state, {\n managerRosterAndAllocation: {\n data: _dataBuilder(action)\n }\n });\n } else {\n stateOBJ = state;\n }\n return stateOBJ;\n }\n\n function _dataBuilder(action) {\n var _action$json = action.json,\n portfolioData = _action$json[0],\n rawFundData = _action$json[1],\n rawConfig = _action$json[2],\n managerRosterData = _action$json[3],\n managerRosterFundData = _action$json[4];\n\n var config = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundData);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(config, action.fundId, action.portfolioComponent, fundCategory);\n\n var managerData = (0, _filter2.default)((0, _get2.default)(portfolioData, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet'), { 'type': 'MANAGER_ALLOCATION' });\n\n var rosterContent = (0, _get2.default)(managerRosterFundData, 'provider.manager-roster.manager');\n if (!rosterContent) {\n rosterContent = (0, _get2.default)(managerRosterData, 'provider.manager-roster.manager');\n }\n\n var visible = typeof managerData !== 'undefined' && managerData.length !== 0;\n if (isSuppressed) {\n visible = false;\n }\n\n var obj = {\n caveatSecName: 'Portfolio',\n tableID: 'manager-roster-and-allocation-data',\n showAllocations: false,\n visible: visible\n };\n\n if (visible) {\n obj.date = (0, _get2.default)(managerData, '[0]asOfDate.val');\n obj.showAllocations = config.portfolio.showManagerAllocations !== undefined ? config.portfolio.showManagerAllocations : false;\n\n var allocations = [];\n\n var allocationsGroupedByName = (0, _groupBy2.default)(managerData[0].brkDwnLst.lstDtls, 'name.val');\n (0, _forEach2.default)(allocationsGroupedByName, function (group) {\n var allocationGroup = {\n name: (0, _get2.default)(group, '[0]name.val'),\n total: (0, _get2.default)(group, '[0]val.val'),\n managers: (0, _orderBy2.default)(group.slice(1), function (o) {\n return parseInt(o.val.val, 10);\n }, 'desc')\n };\n (0, _forEach2.default)(allocationGroup.managers, function (manager) {\n manager.displayName = manager.name2.val;\n var detail = (0, _filter2.default)(rosterContent, { 'name': manager.name2.val });\n if (detail !== undefined && detail.length > 0) {\n var name = (0, _get2.default)(detail, '[\"0\"][\"display-name\"]');\n if (name) {\n manager.displayName = name;\n }\n manager.image = (0, _get2.default)(detail, '[\"0\"][\"image\"]');\n manager.fullDesc = (0, _get2.default)(detail, '[\"0\"][\"full-description\"]');\n manager.shortDesc = (0, _get2.default)(detail, '[\"0\"][\"short-description\"]');\n }\n });\n allocations.push(allocationGroup);\n });\n\n obj.managerAllocations = allocations;\n }\n\n return obj;\n }\n});\r\ndefine('components/products/portfolio/ft-sector-exposure/gw/lib/gw/sector-exposure.reducer',['exports', 'lodash/get', '../../../../util/util', '../../../../../common/util/utils-fund-details', '../../../../../common/util/utils-config', '../../../../../lib/decorators/config-decorator', '../../../../util/hierarchical-utils', 'aurelia-framework'], function (exports, _get, _util, _utilsFundDetails, _utilsConfig, _configDecorator, _hierarchicalUtils, _aureliaFramework) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.sectorExposure = sectorExposure;\n\n var _get2 = _interopRequireDefault(_get);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var logger = _aureliaFramework.LogManager.getLogger('sector-exposure');\n\n function sectorExposure(state, action) {\n switch (action.type) {\n case 'POPULATE_SECTOR_EXPOSURE_SUCCESS':\n var data = _infoBuilder(action);\n logger.debug('Reducing: POPULATE_SECTOR_EXPOSURE');\n\n return Object.assign({}, state, {\n sectorExposure: {\n data: data\n }\n });\n default:\n return state;\n }\n }\n\n function _infoBuilder(action) {\n var _action$json = action.json,\n rawPortfolio = _action$json[0],\n rawFundDetail = _action$json[1],\n rawConfig = _action$json[2];\n\n\n var decoratedConfig = (0, _configDecorator.configDecorator)(rawConfig, action.segment);\n var fundCategory = _utilsFundDetails.utilsFundDetails.getFundCategory(rawFundDetail);\n var isSuppressed = _utilsConfig.utilsConfig.isPortfolioComponentSuppressed(decoratedConfig, action.fundId, action.portfolioComponent, fundCategory);\n\n var rawBreakdowns = (0, _get2.default)(rawPortfolio, 'globalProductsValue.portfolioIntlValue.breakdown.brkdwnDet');\n var breakdown = _util.portfolioUtils.findObjInArray(rawBreakdowns, 'K2_SECTOR_ALLOCATION');\n var visible = typeof breakdown !== 'undefined';\n if (isSuppressed) {\n visible = false;\n }\n var seObj = {\n caveatSecName: 'Portfolio',\n visible: visible\n };\n\n if (visible) {\n var tempBreakdown = (0, _hierarchicalUtils.getHierarchicalBreakdown)(breakdown, {\n buildChart: false,\n tableMappingKeys: {\n val: 'val.val',\n val2: 'val2.val',\n val3: 'val3.val'\n },\n nameFunc: function nameFunc(o) {\n var isParent = (0, _get2.default)(o, 'name2.val', null) === null;\n if (isParent) {\n return (0, _get2.default)(o, 'name.val');\n }\n return (0, _get2.default)(o, 'name2.val');\n },\n rangeKey: 'name.val'\n });\n\n seObj = Object.assign({}, seObj, tempBreakdown);\n\n seObj.showChart = true;\n seObj.spanRow = true;\n\n var dateObj = _util.portfolioUtils.getDateAndCalType(breakdown, {});\n seObj.date = dateObj.date;\n seObj.calType = dateObj.calType;\n seObj.calTypeStd = dateObj.calTypeStd;\n\n var refreshRateFromConfig = (0, _get2.default)(decoratedConfig, 'portfolio.refreshRate');\n seObj.refreshRate = _util.portfolioUtils.convertRefreshFrequencyIntoLabelId(refreshRateFromConfig);\n\n seObj.table = tempBreakdown.table;\n seObj.tableTwoLevel = tempBreakdown.tableTwoLevel;\n seObj.chart = tempBreakdown.chart;\n seObj.visible = tempBreakdown.visible;\n seObj.showChart = true;\n seObj.spanRow = true;\n seObj.hasNestedChildren = tempBreakdown.hasNestedChildren;\n seObj.missingBenchmarkData = seObj.bmrkId !== undefined;\n }\n return seObj;\n }\n});\r\ndefine('text!components/products/overview/ft-fund-information/gw/ft-fund-information.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\" class=\\\"row\\\"> <div class=\\\"col-xs-12 col-sm-6 ${distributions.hasData && distributions.data.length ? 'col-md-4' : 'col-md-6'}\\\"> <div if.bind=\\\"fundInformation.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('fund-information')\\\"></span> </h3> <ft-proximal placement=\\\"FundInformationProximal\\\" position=\\\"top\\\"></ft-proximal> <div> <table class=\\\"table table-text fund-information\\\"> <tbody> <tr repeat.for=\\\"item of fundInformation.data\\\"> <th scope=\\\"row\\\" class=\\\"col-md-6\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </div> </div> </div> <div class=\\\"col-xs-12 col-sm-6 ${distributions.hasData && distributions.data.length ? 'col-md-4' : 'col-md-6'}\\\"> <template if.bind=\\\"salesCharges.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('sales-charges')\\\"></span> <small if.bind=\\\"salesCharges.hasData\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"salesCharges.asOf | ftDashIfEmpty\\\"></span> <span innerhtml.bind=\\\"getLabel('updated-monthly')\\\"></span> </small> </h3> <table class=\\\"table table-text sales-charges\\\"> <tbody> <tr repeat.for=\\\"item of salesCharges.data\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </template> <template if.bind=\\\"identifiers.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('identifiers')\\\"></span> </h3> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of identifiers.data\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </template> </div> <div class=\\\"col-xs-12 col-sm-6 col-md-4\\\" if.bind=\\\"distributions.hasData && distributions.data.length\\\"> <template if.bind=\\\"distributions.hasData && distributions.data.length\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('distributions')\\\"></span> <ft-footnote placement=\\\"DividendsOverview\\\"></ft-footnote> </h3> <table class=\\\"table table-text dividends\\\"> <tbody> <tr repeat.for=\\\"item of distributions.data\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> <small if.one-time=\\\"item.asOf && item.isValid\\\"> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"item.asOf.val\\\"></span> <span if.one-time=\\\"item.updateFreq\\\" innerhtml.bind=\\\"getLabel(item.updateFreq.val)\\\"></span> </small> </th> <td class=\\\"text-right\\\"> <b innerhtml.bind=\\\"item.val\\\"></b> </td> </tr> </tbody> </table> </template> </div> <div class=\\\"col-xs-12\\\"> <ft-proximal placement=\\\"FundInformationProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-fund-measures/gw/ft-fund-measures.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"col-sm-12\\\"> <div> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('fund-measures-heading')\\\"></span> <ft-footnote placement=\\\"FundMeasures\\\"></ft-footnote> </h3> <ft-proximal placement=\\\"FundMeasuresProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <div class=\\\"row\\\"> <div class=\\\"col-md-6\\\" if.bind=\\\"data.riskStats.visible\\\"> <h4 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('fund-measures-actual-heading')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.riskStats.asOfDate\\\"></span> </small> </h4> <table class=\\\"table table-text\\\"> <thead> <tr> <th class=\\\"text-left\\\"> <span innerhtml.bind=\\\"getLabel('standard-deviation')\\\"></span> </th> <th repeat.for=\\\"row of data.riskStats.stdDevRow.data\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"getLabel(row.labelId)\\\"></span> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"> <span innerhtml.bind=\\\"data.riskStats.stdDevRow.name\\\"></span> </td> <th repeat.for=\\\"row of data.riskStats.stdDevRow.data\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.val\\\"></th> </tr> <tr> <td class=\\\"text-left\\\"> <span innerhtml.bind=\\\"data.riskStats.bmStdDevRow.name\\\"></span> </td> <th repeat.for=\\\"row of data.riskStats.bmStdDevRow.data\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.val\\\"></th> </tr> </tbody> </table> <table class=\\\"table table-text\\\"> <thead> <tr> <th class=\\\"text-left\\\"> <span innerhtml.bind=\\\"getLabel('statistics')\\\"></span> </th> <th repeat.for=\\\"row of data.riskStats.betaRow.data\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"getLabel(row.labelId)\\\"></span> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"> <span innerhtml.bind=\\\"getLabel('beta-vs')\\\"></span> <span innerhtml.bind=\\\"data.riskStats.betaRow.betaVsName\\\"></span> </td> <th repeat.for=\\\"row of data.riskStats.betaRow.data\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.val\\\"></th> </tr> </tbody> </table> </div> <div class=\\\"col-md-6\\\" if.bind=\\\"data.forecastRiskStats.visible\\\"> <h4 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('fund-measures-forecast-heading')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.forecastRiskStats.asOfDate\\\"></span> </small> </h4> <table class=\\\"table table-text\\\"> <thead> <tr> <th class=\\\"text-left\\\"> <span innerhtml.bind=\\\"getLabel('forecast-standard-deviation')\\\"></span> </th> <th repeat.for=\\\"row of data.forecastRiskStats.stdDevRow.data\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"getLabel(row.labelId)\\\"></span> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"> <span innerhtml.bind=\\\"data.forecastRiskStats.stdDevRow.name\\\"></span> </td> <th repeat.for=\\\"row of data.forecastRiskStats.stdDevRow.data\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.val\\\"></th> </tr> <tr> <td class=\\\"text-left\\\"> <span innerhtml.bind=\\\"data.forecastRiskStats.bmStdDevRow.name\\\"></span> </td> <th repeat.for=\\\"row of data.forecastRiskStats.bmStdDevRow.data\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.val\\\"></th> </tr> </tbody> </table> <table class=\\\"table table-text\\\"> <thead> <tr> <th class=\\\"text-left\\\"> <span innerhtml.bind=\\\"getLabel('statistics')\\\"></span> </th> <th repeat.for=\\\"row of data.forecastRiskStats.betaRow.data\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"getLabel(row.labelId)\\\"></span> </th> </tr> </thead> <tbody> <tr> <td class=\\\"text-left\\\"> <span innerhtml.bind=\\\"getLabel('forecast-beta-vs')\\\"></span> <span innerhtml.bind=\\\"data.forecastRiskStats.betaRow.betaVsName\\\"></span> </td> <th repeat.for=\\\"row of data.forecastRiskStats.betaRow.data\\\" class=\\\"text-right\\\" innerhtml.bind=\\\"row.val\\\"></th> </tr> </tbody> </table> </div> </div> <ft-proximal placement=\\\"FundMeasuresProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-manager-roster/gw/ft-manager-roster.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"'loaded-not-no-data' | ftJson\\\" hidden> </div> <div class=\\\"col-xs-12\\\" if.bind=\\\"isPopulated\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-6 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <template if.bind=\\\"!data.showAllocations\\\"> <ft-label label.bind=\\\"getLabel('manager-roster-heading')\\\"></ft-label> <ft-footnote placement.one-time=\\\"'ManagerRoster'\\\"></ft-footnote> </template> <template if.bind=\\\"data.showAllocations\\\"> <ft-label label.bind=\\\"getLabel('manager-allocation-heading')\\\"></ft-label> <ft-footnote placement.one-time=\\\"'ManagerAllocation'\\\"></ft-footnote> </template> <small if.bind=\\\"data.showAllocations\\\"> <ft-label label.bind=\\\"getLabel('manager-allocation-calculation')\\\"></ft-label> </small> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label>&nbsp;<span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> </small> </h3> </div> </div> <div class=\\\"row\\\"> <template repeat.for=\\\"table of data.managerAllocations\\\"> <div class=\\\"col-sm-6\\\"> <table id=\\\"manager-allocation\\\" class=\\\"table table-text\\\"> <thead if.bind=\\\"data.showAllocations && $index <= 1\\\"> <tr> <th colspan=\\\"3\\\" class=\\\"text-right ${ $index == 1 ? 'hidden-xs hidden-sm' : '' }\\\"> <ft-label label.bind=\\\"getLabel('manager-allocation-column-heading')\\\"></ft-label> </th> </tr> </thead> <tbody> <tr> <th scope=\\\"row\\\" class=\\\"text-left\\\" colspan=\\\"2\\\"> <b innerhtml.bind=\\\"table.name\\\"></b> </th> <td if.bind=\\\"data.showAllocations\\\" class=\\\"text-right\\\"> <b><nobr innerhtml.bind=\\\"table.total | ftFormatPercentage\\\"></nobr></b> </td> </tr> <tr repeat.for=\\\"manager of table.managers\\\"> <td class=\\\"text-left\\\" colspan=\\\"2\\\"> <template if.bind=\\\"!manager.fullDesc\\\"> <span innerhtml.bind=\\\"manager.displayName\\\"></span> <div if.bind=\\\"manager.shortDesc\\\" class=\\\"description\\\" innerhtml.bind=\\\"manager.shortDesc\\\"> </div> </template> <template if.bind=\\\"manager.fullDesc\\\"> <a href=\\\"#\\\" data-toggle=\\\"modal\\\" data-target=\\\"#manager-allocation-modal-${$parent.$index}-${$index}\\\" innerhtml.bind=\\\"manager.displayName\\\"></a> <div if.bind=\\\"manager.shortDesc\\\" class=\\\"description\\\" innerhtml.bind=\\\"manager.shortDesc\\\"> </div> <div class=\\\"modal fade\\\" data-fti-component=\\\"manager-allocation-modal\\\" id=\\\"manager-allocation-modal-${$parent.$index}-${$index}\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\" aria-hidden=\\\"true\\\"> <div class=\\\"modal-dialog\\\"> <div class=\\\"modal-content\\\"> <div class=\\\"modal-body\\\"> <div class=\\\"banner\\\"> <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\" aria-label=\\\"Close\\\"> <ft-label label.bind=\\\"getLabel('close')\\\"></ft-label> <span aria-hidden=\\\"true\\\"><i class=\\\"ft-icon ft-icon-cross\\\"></i></span> </button> </div> <img if.bind=\\\"manager.image\\\" src=\\\"${manager.image}\\\" alt=\\\"${manager.displayName}\\\" class=\\\"manager-icon\\\"> <h3 innerhtml.bind=\\\"manager.displayName\\\"></h3> <p innerhtml.bind=\\\"manager.fullDesc\\\"> </p> </div> </div> </div> </div> </template> </td> <td if.bind=\\\"data.showAllocations\\\" class=\\\"text-right\\\"> <nobr innerhtml.bind=\\\"manager.val.val | ftFormatPercentage\\\"></nobr> </td> </tr> </tbody> </table> </div> <div class=\\\"clearfix\\\" if.bind=\\\"$odd || $last\\\"></div> </template> </div> </div> <div class=\\\"clearfix\\\" if.bind=\\\"isPopulated\\\"></div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-portfolio-risk-and-return-analysis/gw/ft-portfolio-risk-and-return-analysis.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date\\\"></span> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <div class=\\\"table-responsive table-text--expandable\\\" if.bind=\\\"!data.riskConfig.showHierarchy\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table\\\"> <thead> <tr> <th class=\\\"col-xs-4\\\"> <span innerhtml.bind=\\\"getLabel('strategies-by-category')\\\"></span> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.performanceExposure\\\"> <span innerhtml.bind=\\\"getLabel('portfolio-exposure')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.performanceContribution\\\"> <span innerhtml.bind=\\\"getLabel('performance-contribution-universe')\\\"></span> <small> <span innerhtml.bind=\\\"data.tableTwoLevel[0].startDate\\\"></span> <span>-</span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.riskContributionActual\\\"> <span innerhtml.bind=\\\"getLabel('risk-contribution-actual')\\\"></span> <small> <span innerhtml.bind=\\\"data.tableTwoLevel[0].startDate\\\"></span> <span>-</span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.riskContributionForecast\\\"> <span innerhtml.bind=\\\"getLabel('risk-contribution-forecast')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> </tr> </thead> <tbody repeat.for=\\\"row of data.tableTwoLevel\\\"> <tr if.bind=\\\"row.isParentNode\\\"> <th scope=\\\"row\\\" class=\\\"table-text__header\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper table-text__icon-wrapper--no-children\\\"> <i></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </th> <td class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.performanceExposure\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.performanceContribution\\\"> <b innerhtml.bind=\\\"row.performanceContribution | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.riskContributionActual\\\"> <b innerhtml.bind=\\\"row.riskContribution | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.riskContributionForecast\\\"> <b innerhtml.bind=\\\"row.riskContributionForecast | ftFormatPercentage\\\"></b> </td> </tr> </tbody> </table> </div> <div class=\\\"table-responsive table-text--expandable\\\" if.bind=\\\"data.riskConfig.showHierarchy\\\"> <ft-visual-hint></ft-visual-hint> <table class=\\\"table\\\"> <thead> <tr> <th class=\\\"col-xs-4\\\"> <span innerhtml.bind=\\\"getLabel('strategies-by-category')\\\"></span> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.performanceExposure\\\"> <span innerhtml.bind=\\\"getLabel('portfolio-exposure')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.performanceContribution\\\"> <span innerhtml.bind=\\\"getLabel('performance-contribution-universe')\\\"></span> <small> <span innerhtml.bind=\\\"data.tableTwoLevel[0].startDate\\\"></span> <span>-</span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.riskContributionActual\\\"> <span innerhtml.bind=\\\"getLabel('risk-contribution-actual')\\\"></span> <small> <span innerhtml.bind=\\\"data.tableTwoLevel[0].startDate\\\"></span> <span>-</span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> <th class=\\\"text-right\\\" if.bind=\\\"data.riskConfig.shownRiskColumns.riskContributionForecast\\\"> <span innerhtml.bind=\\\"getLabel('risk-contribution-forecast')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date\\\"></span> </small> </th> </tr> <tr class=\\\"header-utilities hidden-print\\\" if.bind=\\\"data.hasNestedChildren\\\"> <td colspan=\\\"5\\\"> <a click.delegate=\\\"expandAll()\\\"><span innerhtml.bind=\\\"getLabel('expand-all-strategies')\\\"></span></a> | <a click.delegate=\\\"collapseAll()\\\"><span innerhtml.bind=\\\"getLabel('collapse-all-strategies')\\\"></span></a> </td> </tr> </thead> <tbody repeat.for=\\\"row of data.tableTwoLevel\\\"> <tr if.bind=\\\"(!row.inOverflow || isShowingMore) && (row.isParentNode || row.isExpanded)\\\"> <th if.bind=\\\"row.isParentNode && row.hasChildren\\\" click.delegate=\\\"toggleRowExpansion(row)\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"table-text__toggle ${row.isExpanded ? 'table-text__toggle--expanded' : ''}\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper\\\"> <i></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </a> </th> <th if.bind=\\\"row.isParentNode && !row.hasChildren\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper table-text__icon-wrapper--no-children\\\"> <i></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </th> <td class=\\\"text-right\\\" if.bind=\\\"row.isParentNode && data.riskConfig.shownRiskColumns.performanceExposure\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"row.isParentNode && data.riskConfig.shownRiskColumns.performanceContribution\\\"> <b innerhtml.bind=\\\"row.performanceContribution | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"row.isParentNode && data.riskConfig.shownRiskColumns.riskContributionActual\\\"> <b innerhtml.bind=\\\"row.riskContribution | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"row.isParentNode && data.riskConfig.shownRiskColumns.riskContributionForecast\\\"> <b innerhtml.bind=\\\"row.riskContributionForecast | ftFormatPercentage\\\"></b> </td> <th if.bind=\\\"!row.isParentNode\\\" class=\\\"table-text__header--no-key\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__header-text table-text__header-nested\\\"> ${row.name} </span> </span> </th> <td class=\\\"text-right\\\" if.bind=\\\"!row.isParentNode && data.riskConfig.shownRiskColumns.performanceExposure\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"!row.isParentNode && data.riskConfig.shownRiskColumns.performanceContribution\\\"> <b innerhtml.bind=\\\"row.performanceContribution | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"!row.isParentNode && data.riskConfig.shownRiskColumns.riskContributionActual\\\"> <b innerhtml.bind=\\\"row.riskContribution | ftFormatPercentage\\\"></b> </td> <td class=\\\"text-right\\\" if.bind=\\\"!row.isParentNode && data.riskConfig.shownRiskColumns.riskContributionForecast\\\"> <b innerhtml.bind=\\\"row.riskContributionForecast | ftFormatPercentage\\\"></b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-portfolio-statistics-and-positions/gw/ft-portfolio-statistics-and-positions.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"col-sm-12\\\"> <h2 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('portfolio-and-positions-heading')\\\"></span> </h2> <div class=\\\"row\\\"> <div if.bind=\\\"statistics.isValid\\\" class=\\\"${(nbrOfIssuers.isValid || nbrOfHoldings.isValid) ? 'col-lg-8 col-md-6' : 'col-md-12'}\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('statistics-heading')\\\"></span> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span>&nbsp; <span innerhtml.bind=\\\"asOfDate | ftDashIfEmpty\\\"></span>&nbsp; <span if.bind=\\\"refreshRate\\\" innerhtml.bind=\\\"getLabel(refreshRate)\\\"></span> </small> </h3> <div class=\\\"row portfolio-stats\\\"> <div class=\\\"col-lg-6 col-md-12\\\"> <table class=\\\"table table-text table-no-bottom-margin\\\"> <tbody> <tr repeat.for=\\\"item of statisticsPart1\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> </th> <td> <b><span innerhtml.bind=\\\"item.val\\\"></span></b> </td> </tr> </tbody> </table> </div> <div class=\\\"col-lg-6 col-md-12\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr repeat.for=\\\"item of statisticsPart2\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(item.id)\\\"></span> <ft-footnote if.one-time=\\\"item.isValid && item.caveatId\\\" placement.one-time=\\\"item.caveatId.val\\\"></ft-footnote> </th> <td> <b><span innerhtml.bind=\\\"item.val\\\"></span></b> </td> </tr> </tbody> </table> </div> </div> </div> <div class=\\\"col-lg-4 col-md-6\\\"> <div class=\\\"row portfolio-issuers\\\" if.bind=\\\"showIssuers && nbrOfIssuers.isValid\\\"> <div class=\\\"col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('issuers')\\\"></span> <ft-footnote placement.one-time=\\\"'NumberOfIssuers'\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span>&nbsp;<span innerhtml.bind=\\\"asOfDate | ftDashIfEmpty\\\"></span> </small> </h3> </div> <div class=\\\"col-sm-12 col-md-12\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(nbrOfIssuers.id)\\\"></span> </th> <td> <b><span innerhtml.bind=\\\"nbrOfIssuers.val\\\"></span></b> </td> </tr> </tbody> </table> <p if.bind=\\\"holdingsPdf != ''\\\" class=\\\"hidden-print\\\"> <a href=\\\"/${holdingsPdf}\\\" class=\\\"btn btn-default btn-secondary\\\" target=\\\"_blank\\\"> <span class=\\\"ft-icon ft-icon-download\\\"></span> <span innerhtml.bind=\\\"getLabel('download-fund-issuers')\\\"></span> </a> </p> </div> </div> <div class=\\\"row portfolio-holdings\\\" if.bind=\\\"!showIssuers && nbrOfHoldings.isValid\\\"> <div class=\\\"col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('holdings')\\\"></span> <ft-footnote placement.one-time=\\\"'NumberOfHoldings'\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span>&nbsp;<span innerhtml.bind=\\\"asOfDate | ftDashIfEmpty\\\"></span> </small> </h3> </div> <div class=\\\"col-sm-12 col-md-12\\\"> <table class=\\\"table table-text\\\"> <tbody> <tr> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel(nbrOfHoldings.id)\\\"></span> </th> <td> <b><span innerhtml.bind=\\\"nbrOfHoldings.val\\\"></span></b> </td> </tr> </tbody> </table> <p if.bind=\\\"holdingsPdf != ''\\\" class=\\\"hidden-print\\\"> <a href=\\\"/${holdingsPdf}\\\" class=\\\"btn btn-default btn-secondary\\\" target=\\\"_blank\\\"> <span class=\\\"ft-icon ft-icon-download\\\"></span> <span innerhtml.bind=\\\"getLabel('download-fund-holdings')\\\"></span> </a> </p> </div> </div> </div> </div> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-actual.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"data.visible\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('risk-contribution-actual-heading')\\\"></ft-label> <ft-footnote placement.one-time=\\\"'RiskContributionActual'\\\"></ft-footnote> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"data.date | ftDashIfEmpty\\\"></ft-label> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> (<ft-label label.bind=\\\"getLabel('updated-daily')\\\"></ft-label>) </small> </h3> <ft-proximal placement=\\\"RiskContributionActualProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-bar-chart hide-sm=\\\"true\\\" suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table id=\\\"asset-mix-data\\\" class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('risk-contribution-fund')\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <i if.bind=\\\"data.showChart\\\" class=\\\"chart-key chart-color-${(($index) % 20)+1}\\\"></i> ${ row.name } </th> <td> <b> <ft-label label.bind=\\\"row.portAvg | ftFormatPercentage\\\"></ft-label> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement=\\\"RiskContributionActualProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-risk-contribution/gw/ft-risk-contribution-forecast.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"data.visible\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('risk-contribution-forecast-heading')\\\"></ft-label> <ft-footnote placement.one-time=\\\"'RiskContributionForecast'\\\"></ft-footnote> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"data.date | ftDashIfEmpty\\\"></ft-label> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> (<ft-label label.bind=\\\"getLabel('updated-daily')\\\"></ft-label>) </small> </h3> <ft-proximal placement=\\\"RiskContributionForecastProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-bar-chart hide-sm=\\\"true\\\" suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table id=\\\"asset-mix-data\\\" class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('risk-contribution-fund')\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <i if.bind=\\\"data.showChart\\\" class=\\\"chart-key chart-color-${(($index) % 20)+1}\\\"></i> ${ row.name } </th> <td> <b> <ft-label label.bind=\\\"row.portForeCntr | ftFormatPercentage\\\"></ft-label> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement=\\\"RiskContributionForecastProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-sector-exposure/gw/ft-sector-exposure.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12 col-md-12' : 'col-sm-6 col-md-6'}\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('sector-exposure-heading')\\\"></span> <ft-footnote placement=\\\"SectorExposure\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> <span innerhtml.bind=\\\"getLabel('sector-exposure-calc')\\\"></span> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement=\\\"SectorExposureProximal\\\" position=\\\"top\\\"></ft-proximal> <div class=\\\"table-responsive\\\"> <ft-visual-hint></ft-visual-hint> <table id=\\\"sector-allocation-table\\\" class=\\\"table table-text table-legend table-text--expandable\\\"> <thead> <tr> <td if.bind=\\\"data.hasNestedChildren\\\"> <a click.delegate=\\\"expandAll()\\\">Expand All</a> | <a click.delegate=\\\"collapseAll()\\\">Collapse All</a> </td> <td if.bind=\\\"!data.hasNestedChildren\\\"></td> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('sector-exposure-long')\\\"></th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('sector-exposure-short')\\\"></th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getLabel('sector-exposure-net')\\\"></th> </tr> </thead> <tbody repeat.for=\\\"row of data.tableTwoLevel\\\"> <tr if.bind=\\\"(!row.inOverflow || isShowingMore) && (row.isParentNode || row.isExpanded)\\\"> <th if.bind=\\\"row.isParentNode && row.hasChildren\\\" scope=\\\"row\\\" click.delegate=\\\"toggleRowExpansion(row)\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <a href=\\\"javascript:void(0)\\\" class=\\\"table-text__toggle ${row.isExpanded ? 'table-text__toggle--expanded' : ''}\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper\\\"> <i></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </a> </th> <th if.bind=\\\"row.isParentNode && !row.hasChildren\\\" scope=\\\"row\\\" class=\\\"table-text__header\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__icon-wrapper table-text__icon-wrapper--no-children\\\"> <i></i> </span> <span class=\\\"table-text__header-text\\\">${row.name}</span> </span> </th> <td if.bind=\\\"row.isParentNode\\\" width=\\\"24%\\\"> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> <td if.bind=\\\"row.isParentNode\\\" width=\\\"24%\\\"> <b innerhtml.bind=\\\"row.val2 | ftFormatPercentage\\\"></b> </td> <td if.bind=\\\"row.isParentNode\\\" width=\\\"24%\\\"> <b innerhtml.bind=\\\"row.val3 | ftFormatPercentage\\\"></b> </td> <th if.bind=\\\"!row.isParentNode\\\" class=\\\"table-text__header--no-key\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span class=\\\"table-text__header-text table-text__header-nested\\\"> ${row.name} </span> </span> </th> <td if.bind=\\\"!row.isParentNode\\\"> <span innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></span> </td> <td if.bind=\\\"!row.isParentNode\\\" width=\\\"24%\\\"> <span innerhtml.bind=\\\"row.val2 | ftFormatPercentage\\\"></span> </td> <td if.bind=\\\"!row.isParentNode\\\" width=\\\"24%\\\"> <span innerhtml.bind=\\\"row.val3 | ftFormatPercentage\\\"></span> </td> </tr> </tbody> </table> <p if.bind=\\\"data.hasOverflow\\\"> <a click.delegate=\\\"toggleShowMore()\\\"> <span if.bind=\\\"!isShowingMore\\\" innerhtml.bind=\\\"getLabel('view-more')\\\"></span> <span if.bind=\\\"isShowingMore\\\" innerhtml.bind=\\\"getLabel('view-less')\\\"></span> </a> </p> </div> </div> <ft-proximal placement=\\\"SectorExposureProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-security-type-exposure/gw/ft-security-type-exposure.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <ft-label label.bind=\\\"getLabel('security-type-exposure-heading')\\\"></ft-label> <ft-footnote placement.one-time=\\\"'SecurityTypeExposure'\\\"></ft-footnote> <small> <ft-label label.bind=\\\"getLabel('as-of')\\\"></ft-label> <ft-label label.bind=\\\"data.date | ftDashIfEmpty\\\"></ft-label> (<ft-label label.bind=\\\"data.calType\\\"></ft-label>) <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement=\\\"SecurityTypeExposureProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-multi-bar-chart hide-sm=\\\"true\\\" suffix.bind=\\\"'%'\\\" data.bind=\\\"chartData\\\" categories.bind=\\\"data.categories\\\"></ft-multi-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getCustomLabel(data.ordering[0])\\\"></th> <th class=\\\"text-right\\\" innerhtml.bind=\\\"getCustomLabel(data.ordering[1])\\\"></th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <ft-label label.bind=\\\"getCustomLabel(row.name)\\\"></ft-label> </th> <td> <b> <ft-label label.bind=\\\"getValue(row.values, 0) | ftFormatPercentage\\\"></ft-label> </b> </td> <td> <b> <ft-label label.bind=\\\"getValue(row.values, 1) | ftFormatPercentage\\\"></ft-label> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement=\\\"SecurityTypeExposureProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-strategy-breakdown/gw/ft-strategy-breakdown.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-xs-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> <span if.bind=\\\"!data.calType && data.calTypeStd\\\" innerhtml.bind=\\\"getLabel(data.calTypeStd)\\\"></span> <span if.bind=\\\"data.refreshRate\\\" innerhtml.bind=\\\"getLabel(data.refreshRate)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-7\\\" if.bind=\\\"data.showChart\\\"> <ft-bar-chart suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"${data.showChart ? 'col-sm-5' : 'col-sm-12'}\\\"> <table class=\\\"table table-text table-legend\\\"> <thead> <tr> <th>&nbsp;</th> <th class=\\\"text-right\\\"> <span innerhtml.bind=\\\"getLabel('target-allocation')\\\"></span> <small innerhtml.bind=\\\"getLabel('perc-of-invested-capital')\\\"></small> </th> <th class=\\\"text-right\\\"> <span innerhtml.bind=\\\"getLabel('actual-allocation')\\\"></span> <small innerhtml.bind=\\\"getLabel('perc-of-invested-capital')\\\"></small> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> <span class=\\\"table-text__header-wrapper\\\"> <span if.bind=\\\"data.showChart\\\" class=\\\"table-text__icon-wrapper\\\"> <i class=\\\"chart-key ${row.graphColour}\\\"></i> </span> <span class=\\\"table-text__header-text\\\"> ${ row.name } </span> </span> </th> <td> <b> <span innerhtml.bind=\\\"row.strategy\\\"></span> </b> </td> <td> <b> <span innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></span> </b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-top-risk-allocation-by-asset-class/gw/ft-top-risk-allocation-by-asset-class.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\" class=\\\"col-xs-12\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('top-risk-allocations-by-asset-class-heading')\\\"></span> <ft-footnote placement.one-time=\\\"'TopRiskAllocationByAssetClass'\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span>&nbsp; <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> <span innerhtml.bind=\\\"getLabel('top-risk-allocation-by-asset-class-calc')\\\"></span> </small> </h3> <ft-proximal placement=\\\"TopRiskAllocationByAssetClassProximal\\\" position=\\\"top\\\"></ft-proximal> </div> <template repeat.for=\\\"table of data.allocationsByAssetClass\\\"> <div class=\\\"col-sm-6\\\"> <table class=\\\"table table-text top-risk-allocations-by-asset-class\\\"> <thead> <tr> <th class=\\\"text-left\\\" innerhtml.bind=\\\"table.name\\\"></th> <th width=\\\"27%\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"table.primaryCalculationName\\\"></span> </th> <th width=\\\"27%\\\" class=\\\"text-right\\\"> <span innerhtml.bind=\\\"table.secondaryCalculationName\\\"></span> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of table.rows\\\"> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"row.name\\\"></span> </th> <td width=\\\"27%\\\"> <b><nobr innerhtml.bind=\\\"row.primaryDataPct | ftFormatPercentage\\\"></nobr></b> </td> <td width=\\\"27%\\\"> <b><nobr innerhtml.bind=\\\"row.secondaryDataPct | ftFormatPercentage\\\"></nobr></b> </td> </tr> </tbody> </table> </div> <div class=\\\"clearfix\\\" if.bind=\\\"$odd || $last\\\"></div> </template> </div> <ft-proximal placement=\\\"TopRiskAllocationByAssetClassProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-top-ten-holdings/gw/ft-top-ten-holdings.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\" class=\\\"col-sm-12\\\"> <div class=\\\"row\\\"> <div class=\\\"${(data.showChart || data.spanRow) ? 'col-sm-12' : 'col-sm-6'}\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel(data.labelId)\\\"></span> <ft-footnote placement.bind=\\\"data.caveatFootnote\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span> <span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> <span if.bind=\\\"data.calType\\\">(<span innerhtml.bind=\\\"data.calType\\\"></span>)</span> <span if.bind=\\\"!data.calType && data.calTypeStd\\\" innerhtml.bind=\\\"getLabel(data.calTypeStd)\\\"></span> </small> </h3> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"top\\\"></ft-proximal> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-sm-6 hidden-print\\\" if.bind=\\\"data.showChart\\\"> <span class=\\\"chart-text\\\"> <ft-label label.bind=\\\"data.total | ftFormatPercentage\\\"></ft-label> </span> <div class=\\\"chart-scale\\\"> <div class=\\\"chart-val\\\" style.bind=\\\"data.total | ftFormatStyleWidthPercent\\\"></div> <div class=\\\"chart-val-other\\\" style.bind=\\\"data.total | ftFormatStyleWidthPercent:true\\\"> <span innerhtml.bind=\\\"getLabel('other')\\\"></span> </div> </div> <span class=\\\"text-muted pull-left\\\">0%</span> <span class=\\\"text-muted pull-right\\\">100%</span> <ft-bar-chart suffix.bind=\\\"'%'\\\" series.bind=\\\"chartData\\\"></ft-bar-chart> </div> <div class=\\\"col-md-6 col-sm-6\\\"> <table id=\\\"portfolio-top-ten-holdings-data\\\" class=\\\"table table-text\\\"> <thead class=\\\"sr-only\\\"> <tr> <th colspan=\\\"2\\\" scope=\\\"colgroup\\\" innerhtml.bind=\\\"getLabel('holdings-table-heading')\\\"> </th> </tr> </thead> <tbody> <tr repeat.for=\\\"row of data.table\\\"> <th scope=\\\"row\\\"> ${row.name} </th> <td> <b innerhtml.bind=\\\"row.val | ftFormatPercentage\\\"></b> </td> </tr> </tbody> </table> </div> </div> <ft-proximal placement.bind=\\\"data.caveatProximal\\\" position=\\\"bottom\\\"></ft-proximal> </div> </template> \"; });\r\ndefine('text!components/products/portfolio/ft-value-at-risk/gw/ft-value-at-risk.html', ['module'], function(module) { module.exports = \"<template> <div if.bind=\\\"!isPopulated && data.visible === false\\\" class=\\\"portfolio-debug\\\" innerhtml.bind=\\\"data | ftJson\\\" hidden> </div> <div if.bind=\\\"isPopulated\\\" class=\\\"col-xs-12\\\"> <div class=\\\"row\\\"> <div class=\\\"col-sm-12 col-md-6\\\"> <h3 class=\\\"header-product\\\"> <span innerhtml.bind=\\\"getLabel('value-at-risk-heading')\\\"></span> <ft-footnote placement=\\\"ValueAtRisk\\\"></ft-footnote> <small> <span innerhtml.bind=\\\"getLabel('as-of')\\\"></span>&nbsp;<span innerhtml.bind=\\\"data.date | ftDashIfEmpty\\\"></span> </small> </h3> <table class=\\\"table table-text\\\"> <tbody> <tr> <th scope=\\\"row\\\"> <span innerhtml.bind=\\\"getLabel('value-at-risk-fund')\\\"></span> </th> <td> <b><span innerhtml.bind=\\\"data.value | ftFormatPercentage\\\"></span></b> </td> </tr> </tbody> </table> </div> </div> </div> <div class=\\\"clearfix\\\" if.bind=\\\"isPopulated && data.visible\\\"></div> </template> \"; });\r\n//# sourceMappingURL=web-platform-gw.js.map"]}