├── resources
├── dashboard.edn
├── public
│ ├── system.css
│ ├── underscore-min.js
│ ├── bootstrap-theme.min.css
│ ├── underscore-min.map
│ ├── bootstrap.min.js
│ └── sequence-diagram-min.js.map
└── templates
│ ├── sequence.html.mustache
│ ├── graph.html.mustache
│ └── big-graph.html.mustache
├── .gitignore
├── dev
└── src
│ └── clojure
│ ├── env.clj
│ ├── user.clj
│ └── dev.clj
├── src
└── milesian
│ ├── system_diagrams
│ └── webclient
│ │ ├── main.clj
│ │ ├── websocket.clj
│ │ ├── utils.clj
│ │ ├── system.clj
│ │ └── webapp.clj
│ └── system_diagrams.clj
├── project.clj
└── README.md
/resources/dashboard.edn:
--------------------------------------------------------------------------------
1 | {:webapp {:port 8011}
2 | :websocket {:port 8012}}
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.DS_Store
2 | .nrepl-port
3 | /target
4 | /lib
5 | /classes
6 | /checkouts
7 | pom.xml
8 | pom.xml.asc
9 | *.jar
10 | *.class
11 | .lein-deps-sum
12 | .lein-failures
13 | .lein-plugins
14 | .lein-repl-history
15 |
--------------------------------------------------------------------------------
/dev/src/clojure/env.clj:
--------------------------------------------------------------------------------
1 | (require 'clojure.tools.namespace.repl)
2 |
3 | (ns ^{:clojure.tools.namespace.repl/load false
4 | :clojure.tools.namespace.repl/unload false}
5 | env)
6 |
7 | (def env #{})
8 |
9 | (println "Welcome developer!")
10 |
--------------------------------------------------------------------------------
/dev/src/clojure/user.clj:
--------------------------------------------------------------------------------
1 | (ns user)
2 |
3 | ;; This is an old trick from Pedestal. When system.clj doesn't compile,
4 | ;; it can prevent the REPL from starting, which makes debugging very
5 | ;; difficult. This extra step ensures the REPL starts, no matter what.
6 |
7 | (defn dev
8 | []
9 | (require 'dev)
10 | (in-ns 'dev))
11 |
--------------------------------------------------------------------------------
/resources/public/system.css:
--------------------------------------------------------------------------------
1 | svg {
2 | border: 1px solid #999;
3 | overflow: hidden;
4 | }
5 |
6 | .node {
7 | white-space: nowrap;
8 | }
9 |
10 | .node rect,
11 | .node cicrce,
12 | .node ellipse {
13 | stroke: #333;
14 | fill: #fff;
15 | stroke-width: 1.5px;
16 | }
17 |
18 | .cluster rect {
19 | stroke: #333;
20 | fill: #000;
21 | fill-opacity: 0.1;
22 | stroke-width: 1.5px;
23 | }
24 |
25 | .edgePath path.path {
26 | stroke: #333;
27 | stroke-width: 1.5px;
28 | fill: none;
29 | }
30 |
--------------------------------------------------------------------------------
/src/milesian/system_diagrams/webclient/main.clj:
--------------------------------------------------------------------------------
1 | (ns milesian.system-diagrams.webclient.main
2 | "Main entry point"
3 | (:gen-class))
4 |
5 | (defn -main [& args]
6 | ;; We eval so that we don't AOT anything beyond this class
7 | (eval '(do (require 'milesian.system-diagrams.webclient.system)
8 | (require 'com.stuartsierra.component)
9 | ;; TODO: Get from arguments
10 | (com.stuartsierra.component/start (milesian.system-diagrams.webclient.system/new-prod-system))
11 | (println "system-diagrams")
12 | (println "Ready..."))))
13 |
--------------------------------------------------------------------------------
/resources/templates/sequence.html.mustache:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Sequence Diagram Dashboard
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
26 |
27 |
28 |
29 | Listening port {{webapp-port}}
30 |
31 |
32 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/project.clj:
--------------------------------------------------------------------------------
1 | (defproject milesian/system-diagrams "0.1.4-SNAPSHOT"
2 | :description "system diagrams formats and web client"
3 | :url "https://github.com/milesian/system-diagrams"
4 | :license {:name "MIT License"
5 | :url "http://opensource.org/licenses/MIT"}
6 | :dependencies [[org.clojure/clojure "1.6.0"]
7 | [com.stuartsierra/component "0.2.2"]
8 | [juxt.modular/http-kit "0.5.3"]
9 | [juxt.modular/bidi "0.6.1"]
10 | [juxt.modular/clostache "0.6.0"]
11 | [cheshire "5.3.1"]
12 | [camel-snake-kebab "0.1.4"]
13 | [org.clojure/tools.logging "0.2.6"]]
14 | :main milesian.system-diagrams.webclient.main
15 | :repl-options {:init-ns user}
16 | :profiles {:dev {:dependencies [[org.clojure/tools.namespace "0.2.5"]]
17 | :source-paths ["dev/src/clojure" ]
18 | :resource-paths ["test/resources"]}
19 |
20 | :uberjar {:main milesian.system-diagrams.webclient.main
21 | :aot [milesian.system-diagrams.webclient.main]}})
22 |
--------------------------------------------------------------------------------
/dev/src/clojure/dev.clj:
--------------------------------------------------------------------------------
1 | (ns dev
2 | (:require
3 | [clojure.pprint :refer (pprint)]
4 | [clojure.reflect :refer (reflect)]
5 | [clojure.repl :refer (apropos dir doc find-doc pst source)]
6 | [com.stuartsierra.component :as component]
7 | [clojure.tools.namespace.repl :refer (refresh refresh-all)]
8 | [clojure.tools.logging :refer (infof)]
9 | [milesian.system-diagrams.webclient.system :refer [new-prod-system]]
10 | env
11 | ))
12 |
13 | (def system nil)
14 |
15 | (defn init
16 | "Constructs the current development system."
17 | ([]
18 | (init env/env))
19 | ([env]
20 | (alter-var-root #'system
21 | (constantly (new-prod-system)))))
22 |
23 | (defn start
24 | "Starts the current development system."
25 | []
26 | (alter-var-root #'system component/start))
27 |
28 |
29 | (defn stop
30 | "Shuts down and destroys the current development system."
31 | []
32 | (alter-var-root #'system
33 | (fn [s] (when s (component/stop s)))))
34 |
35 | (defn go
36 | "Initializes the current development system and starts it running."
37 | []
38 | (init)
39 | (start))
40 |
41 | (defn reset []
42 | (stop)
43 | (refresh :after 'dev/go))
44 |
--------------------------------------------------------------------------------
/src/milesian/system_diagrams/webclient/websocket.clj:
--------------------------------------------------------------------------------
1 | (ns milesian.system-diagrams.webclient.websocket
2 | (:require [com.stuartsierra.component :as component]
3 | [bidi.ring :refer (make-handler)]
4 |
5 |
6 | [clojure.tools.logging :as log]
7 | [org.httpkit.server :refer [run-server with-channel send! on-close close]]))
8 |
9 | (defn ws
10 | [req clients]
11 | (with-channel req con
12 | (swap! clients assoc con true)
13 | (println con " connected")
14 | (on-close con (fn [status]
15 | (swap! clients dissoc con)
16 | (println con " disconnected. status: " status)))))
17 |
18 |
19 |
20 |
21 | (defrecord Websocket [port]
22 | component/Lifecycle
23 | (start [this]
24 | (let [clients (atom {})
25 | ;
26 | handler (make-handler ["/diagram_ws" (fn [req] (ws req clients))])
27 | server (run-server handler {:port port})]
28 | (log/debugf "About to start WebSocket server on port %d" port)
29 |
30 | (assoc (assoc this :server server) :clients clients)
31 | ))
32 | (stop [this]
33 | (when-let [server (:server this)]
34 | (log/debugf "About to stop WebSocket server")
35 | (server))
36 | this))
37 |
38 | (defn new-websocket
39 | [opts]
40 | (map->Websocket opts))
41 |
--------------------------------------------------------------------------------
/src/milesian/system_diagrams/webclient/utils.clj:
--------------------------------------------------------------------------------
1 | (ns milesian.system-diagrams.webclient.utils
2 | (:require [clojure.walk :refer (postwalk)]
3 | [clojure.string :as str]
4 | [cheshire.core :refer (decode decode-stream encode)]
5 | [clojure.edn :as edn]
6 | [clojure.java.io :as io]
7 | [camel-snake-kebab :refer (->kebab-case-keyword ->camelCaseString)]
8 | ))
9 |
10 | (defprotocol Body
11 | (read-edn-body [body])
12 | (read-json-body [body]))
13 |
14 | (extend-protocol Body
15 | String
16 | (read-edn-body [body] (edn/read-string body))
17 | (read-json-body [body] (decode body keyword))
18 | org.httpkit.BytesInputStream
19 | (read-edn-body [body] (io! (edn/read (java.io.PushbackReader. (io/reader body)))))
20 | (read-json-body [body] (io! (decode-stream (io/reader body) true))))
21 |
22 | (defn process-maps [fm t]
23 | (postwalk (fn [fm]
24 | (cond
25 | (map? fm) (reduce-kv (fn [acc k v] (assoc acc (t k) v)) {} fm)
26 | :otherwise fm)) fm))
27 |
28 | (defn ->clj
29 | "Convert JSON keys into Clojure keywords. This is because we receive
30 | JSON but want to process it as Clojure."
31 | [fm]
32 | (process-maps fm ->kebab-case-keyword))
33 |
34 | (defn ->js
35 | "Convert Clojure keywords into JSON keys. This is because we respond
36 | with JSON."
37 | [fm]
38 | (process-maps fm ->camelCaseString))
39 |
--------------------------------------------------------------------------------
/resources/templates/graph.html.mustache:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | System Diagram dashboard
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
29 |
30 |
31 |
32 | Drawing systems: listening port {{webapp-port}}
33 |
34 |
35 |
36 |
37 |
38 |
87 |
92 |
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/resources/templates/big-graph.html.mustache:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | System Diagram dashboard
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
29 |
30 |
31 |
32 | Drawing systems: listening port {{webapp-port}}
33 |
34 |
35 |
36 |
37 |
38 |
87 |
92 |
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/src/milesian/system_diagrams/webclient/system.clj:
--------------------------------------------------------------------------------
1 | (ns milesian.system-diagrams.webclient.system
2 | (:refer-clojure :exclude [read])
3 | (:require
4 |
5 | [com.stuartsierra.component :as component :refer (system-map system-using using)]
6 |
7 | [clojure.string :as str]
8 | [clojure.tools.logging :refer :all]
9 |
10 | ;; Pre-baked components
11 | [modular.http-kit :refer (new-webserver) :rename {new-webserver new-http-listener}]
12 | [modular.bidi :refer (new-router new-web-service)]
13 |
14 |
15 | [milesian.system-diagrams.webclient.websocket :refer (new-websocket)]
16 |
17 | [milesian.system-diagrams.webclient.webapp :refer (new-webapp)]
18 |
19 | [clojure.java.io :as io]
20 | [clojure.tools.reader :refer (read)]
21 | [clojure.tools.reader.reader-types :refer (indexing-push-back-reader)]))
22 |
23 |
24 |
25 | (defn add-websocket [system config]
26 | (assoc system
27 | ::ws-bridge (-> (new-websocket {:port (get-in config [:websocket :port])}))))
28 |
29 | (defn add-webapp-server
30 | [system config]
31 | (assoc system
32 | ::webapp
33 | (-> (new-webapp :port (get-in config [:webapp :port]))
34 | (using {:ws ::ws-bridge}))
35 |
36 | ::webapp-router
37 | (-> (new-router)
38 | (using [::webapp]))
39 |
40 | ::webapp-listener
41 | (-> (new-http-listener :port (get-in config [:webapp :port]))
42 | (using {:request-handler ::webapp-router}))))
43 |
44 | (defn configurable-system-map
45 | "Build the system map, piece by piece"
46 | [config]
47 | (infof "Building system map")
48 | (apply system-map
49 | (apply concat
50 | (-> {}
51 | (add-websocket config)
52 | (add-webapp-server config)))))
53 |
54 | (defn ^:private read-file
55 | [f]
56 | (read
57 | ;; This indexing-push-back-reader gives better information if the
58 | ;; file is misconfigured.
59 | (indexing-push-back-reader
60 | (java.io.PushbackReader. (io/reader f)))))
61 |
62 | (defn ^:private config-from
63 | [f]
64 | (if (.exists f)
65 | (read-file f)
66 | {}))
67 |
68 | (defn ^:private user-config
69 | []
70 | (config-from (io/file (System/getProperty "user.home") ".dashboard.edn")))
71 |
72 | (defn ^:private config-from-classpath
73 | []
74 | (if-let [res (io/resource "dashboard.edn")]
75 | (config-from (io/file res))
76 | {}))
77 |
78 |
79 | (defn config
80 | "Return a map of the static configuration used in the component
81 | constructors."
82 | []
83 | (merge (config-from-classpath)
84 | (user-config)))
85 |
86 | (defn new-prod-system []
87 | (let [s-map (configurable-system-map (config))]
88 | (component/system-using s-map {})))
89 |
--------------------------------------------------------------------------------
/src/milesian/system_diagrams/webclient/webapp.clj:
--------------------------------------------------------------------------------
1 | (ns milesian.system-diagrams.webclient.webapp
2 | (:require
3 | [bidi.ring :refer (make-handler ->ResourcesMaybe ->Files)]
4 | [ring.util.response :refer (response redirect file-response)]
5 | [modular.bidi :refer (WebService)]
6 | [com.stuartsierra.component :as component :refer (using)]
7 | [org.httpkit.server :refer (send!)]
8 | [milesian.system-diagrams.webclient.utils :refer (->clj read-json-body)]
9 | [clostache.parser :refer (render-resource render)]
10 | [cheshire.core :refer (generate-string)]
11 | ))
12 |
13 | (defn render-page
14 | ([data page]
15 | (render-resource
16 | (str (format "templates/%s.html.mustache" page))
17 | data)))
18 |
19 |
20 | (def routes
21 | ["/" [["sequence" :sequence]
22 | ["graph" :graph]
23 | ["big-graph" :big-graph]
24 | ["publish-sequence" :publish-sequence]
25 | ["publish-graph" :publish-graph]
26 | ["" (->ResourcesMaybe {:prefix "public/"})]]])
27 |
28 | (defn publish-message [ws m]
29 | (doseq [client @(:clients ws)]
30 | (send! (key client) (generate-string
31 | {:sequence m}) false))
32 | (println "try to publish message!")
33 | )
34 |
35 | (defn publish-graph [ws m]
36 | (doseq [client @(:clients ws)]
37 | (send! (key client) (generate-string
38 | {:graph m
39 | ;;"digraph {A -> B -> C; B -> D; D -> E; C -> E; A -> D; F -> J; E -> J;}"
40 | }) false))
41 | (println "try to publish message!")
42 | )
43 |
44 |
45 | (defrecord WebApp [ws port]
46 | WebService
47 | (request-handlers [this] {:publish-sequence (fn [req]
48 | (when-let [sequence-diagram (:sequence (-> (:body req) read-json-body ->clj))]
49 | (println sequence-diagram)
50 |
51 | (publish-message ws sequence-diagram)
52 | (response " >>>> sequence diagram published!")))
53 | :publish-graph (fn [req]
54 | (when-let [graph-diagram (:graph (-> (:body req) read-json-body ->clj))]
55 | (println graph-diagram)
56 |
57 | (publish-graph ws graph-diagram)
58 | (response " >>>> graph diagram published!")))
59 |
60 | :sequence (fn [req] (response (render-page {:webapp-port port :port (:port ws)} "sequence")))
61 | :graph (fn [req] (response (render-page {:webapp-port port :port (:port ws)} "graph")))
62 | :big-graph (fn [req] (response (render-page {:webapp-port port :port (:port ws)} "big-graph")))
63 | })
64 | (routes [_] routes)
65 | (uri-context [_] ""))
66 |
67 |
68 | (defn new-webapp [& {:as opts}]
69 | (using (map->WebApp opts) [:ws]))
70 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # milesian/system-diagrams
2 | This project is intended to get real time system visualisations, thus include:
3 |
4 | + a standalone tool to visualise your system in real time. Using clojure to get webserver entrypoints and websocket, and a couple of html pages to render data using js.
5 | + a system graph formatter fns utilities
6 |
7 | So far it's ready for rendering **sequence call system diagrams** (using js lib: [bramp/js-sequence-diagrams](https://github.com/bramp/js-sequence-diagrams)) and **system graphs** (using js lib: [cpettitt/dagre](https://github.com/cpettitt/dagre) and [cpettitt/dagre-d3](https://github.com/cpettitt/dagre-d3)).
8 |
9 | Besides these js resources it's written in clojure and mainly based on [http-kit](http://www.http-kit.org/), [stuartsierra/component](https://github.com/stuartsierra/component), [juxt/modular](https://github.com/juxt/modular) and [milesian/aop](https://github.com/milesian/aop)
10 |
11 | ###Snapshots:-
12 | The example project used to obtain these snapshots is build with [juxt/modular](https://github.com/juxt/modular) and uses [juxt/cylon](https://github.com/juxt/cylon) oauth2 feature
13 | [
](https://user-images.githubusercontent.com/731829/36782346-f9a90b0a-1c78-11e8-8e62-24a91cc67463.png)
14 | [
](https://user-images.githubusercontent.com/731829/36782351-fcaef904-1c78-11e8-95a5-37193c5d7888.png)
15 |
16 |
17 | #### Releases and Dependency Information
18 |
19 |
20 | ```clojure
21 | [milesian/system-diagrams "0.1.2"]
22 | ```
23 |
24 | ```clojure
25 | :dependencies [[org.clojure/clojure "1.6.0"]
26 | [com.stuartsierra/component "0.2.2"]
27 | [juxt.modular/http-kit "0.5.3"]
28 | [juxt.modular/bidi "0.6.1"]
29 | [juxt.modular/clostache "0.6.0"]
30 | [cheshire "5.3.1"]
31 | [camel-snake-kebab "0.1.4"]
32 | [org.clojure/tools.logging "0.2.6"]]
33 | ```
34 |
35 |
36 |
37 |
38 | # Instructions to use it in your stuartsierra/component system to visualise your system calls
39 |
40 | **Update your project deps**
41 |
42 | ```clojure
43 | ;; Update your dev dependencies
44 | :profiles {:dev {:dependencies [ ...
45 | [milesian/system-diagrams "0.1.3"]
46 | [milesian/bigbang "0.1.1"]
47 | [milesian/aop "0.1.5"]
48 | [milesian/identity "0.1.4"]
49 | ...
50 | ]
51 | ...
52 | }}
53 | ```
54 |
55 | **Add dashboard.edn config to resources folder**
56 |
57 | ```clojure
58 | {:webapp {:port 8011}
59 | :websocket {:port 8012}}
60 | ```
61 |
62 |
63 |
64 |
65 |
66 | **Update your dev.clj**
67 |
68 | ```clojure
69 |
70 | (ns dev
71 | (:require
72 | ...
73 | [milesian.bigbang :as bigbang]
74 | [milesian.identity :as identity]
75 | [milesian.aop :as aop]
76 | [milesian.aop.utils :refer (extract-data)]
77 | [milesian.system-diagrams :refer (store-message try-to-publish store)]
78 | [milesian.system-diagrams.webclient.system :as wsd]
79 |
80 | ...))
81 |
82 | ...
83 |
84 | (defn new-dev-system
85 | "Create a development system"
86 | []
87 | (let [config (config)
88 | s-map (->
89 | (new-system-map config)
90 | (wsd/add-websocket (wsd/config))
91 | (wsd/add-webapp-server (wsd/config))
92 |
93 | #_(assoc
94 | ))]
95 | (-> s-map
96 | (component/system-using (new-dependency-map))
97 | (co-dependency/system-co-using (new-co-dependency-map))
98 | )))
99 |
100 | ...
101 |
102 | (defn diagram
103 | "to get sequence diagram we need the ->start-fn-call and
104 | the <-return-fn-call times of the fn invocation call.
105 | The sequence will be published if all fns are finished (:closed)"
106 | [*fn* this & args]
107 | (let [invocation-data (extract-data *fn* this args)]
108 | (store-message invocation-data :opened)
109 | (let [res (apply *fn* (conj args this))]
110 | (store-message invocation-data :closed)
111 | (try-to-publish system)
112 | res)))
113 |
114 | ; replace your current start fn by this one
115 | (defn start
116 | "Starts the current development system."
117 | []
118 | (alter-var-root #'system #(bigbang/expand % {:before-start [[identity/add-meta-key %]
119 | [identity/assoc-meta-who-to-deps]]
120 | :after-start [[aop/wrap diagram]]})))
121 |
122 | ```
123 |
124 |
125 |
126 | **Invoke your component-app and check your browsers:** [[sequence diagram]](http://localhost:8011/sequence) - [[graph diagram]](http://localhost:8011/graph)
127 |
128 |
129 |
130 | ### Instructions to use it as a standalone tool
131 | [here](https://github.com/milesian/system-diagrams/wiki/Instructions-to-use-it-as-a-standalone-tool)
132 |
133 |
134 | ## License
135 |
136 |
137 | Copyright © 2014 Juan Antonio Ruz
138 |
139 | Distributed under the [MIT License](http://opensource.org/licenses/MIT). This means that pieces of this library may be copied into other libraries if they don't wish to have this as an explicit dependency, as long as it is credited within the code.
140 |
--------------------------------------------------------------------------------
/src/milesian/system_diagrams.clj:
--------------------------------------------------------------------------------
1 | (ns milesian.system-diagrams
2 | (:require [camel-snake-kebab :refer (->kebab-case-keyword ->camelCaseString)]
3 | [cheshire.core :refer (encode decode)]
4 | [clojure.pprint :refer (pprint)]
5 | [clojure.string :as st]
6 | [clojure.walk :refer (postwalk)]
7 | [com.stuartsierra.component :as component]
8 | [org.httpkit.client :refer (request) :rename {request http-request}]))
9 |
10 |
11 | (defn process-maps [fm t]
12 | (postwalk (fn [fm]
13 | (cond
14 | (map? fm) (reduce-kv (fn [acc k v] (assoc acc (t k) v)) {} fm)
15 | :otherwise fm)) fm))
16 |
17 | (defn ->clj
18 | "Convert JSON keys into Clojure keywords. This is because we receive
19 | JSON but want to process it as Clojure."
20 | [fm]
21 | (process-maps fm ->kebab-case-keyword))
22 |
23 | (defn ->js
24 | "Convert Clojure keywords into JSON keys. This is because we respond
25 | with JSON."
26 | [fm]
27 | (process-maps fm ->camelCaseString))
28 |
29 | (defn request [method uri & {:keys [data]}]
30 | @(http-request
31 | (merge
32 | {:method method
33 | :url uri
34 | :headers
35 | (merge
36 | {"Content-Type" "application/json"
37 | "Accept" "application/json"})}
38 |
39 | (when data {:body (str (encode (->js data)))}))
40 | identity))
41 |
42 | (defn replace- [s]
43 | (clojure.string/replace s #"-" "_"))
44 |
45 | (def example-seq "a->b:....\n c->d:....\n e->e:....")
46 |
47 |
48 | (def store (atom []))
49 |
50 | (defn store-message [m k]
51 | (swap! store conj [m k]))
52 | (def port 8011)
53 | (def url-seq (format "http://localhost:%s/publish-sequence" port))
54 | (def url-graph (format "http://localhost:%s/publish-graph" port))
55 |
56 |
57 | (defn protocol+fn [protocol fn-name]
58 | (str (last (st/split (str protocol) #"\.")) "/" fn-name ))
59 |
60 | (defn protocol+fn+html [protocol fn-name]
61 | (str ""(last (st/split (str protocol) #"\.")) "/" ""
62 | ""
63 | fn-name ""))
64 |
65 | ;;example sequence: "Alice->Bob: Hello Bob, how are you? \n Note right of Bob: Bob thinks \n Bob-->Alice: I am good thanks!"
66 | (defn publish-sequence [store]
67 | (let [sequence (reduce (fn [s [{:keys [id who fn-name fn-args protocol]} k]]
68 | (let [step-sequence (if (= :opened k)
69 | (format "%s->%s: %s" (replace- who) (replace- id) (protocol+fn protocol fn-name))
70 | (format "%s->%s:" (replace- id) (replace- who))
71 | )]
72 | (str s step-sequence "\n"))) "" @store)]
73 | (request :post url-seq :data {:sequence sequence})))
74 |
75 | (defn graph-dagree [store system]
76 | (let [highlight-nodes (reduce (fn [s [{:keys [id who fn-name fn-args]} k]]
77 | (conj s (replace- id) (replace- who))
78 | ) #{} @store)
79 | highlight-nodes-str (reduce #(str % (str %2 " [style=\"fill: #f77; font-weight: bold\"]; ")) "" highlight-nodes)
80 |
81 | opened-messages (reduce (fn [v [{:keys [id who fn-name fn-args protocol]} _]]
82 | (conj v [who id (protocol+fn+html protocol fn-name)])
83 | ) [] (filter #(= :opened (last %)) @store))
84 |
85 |
86 | opened-messages-deps (reduce
87 | (fn [v [who id label]]
88 | (let [dep (-> (map #(vector who (name (last %)) "")
89 | (component/dependencies (get system (keyword who))))
90 | set
91 | )]
92 | (if (empty? dep)
93 | v
94 | (apply conj v dep))
95 | )
96 | )
97 |
98 | [] opened-messages)
99 |
100 | opened-messages-bis (reduce (fn [v [who id _]]
101 | (let [f (filter (fn [[who* id* _]]
102 | (= (str who* id*) (str who id) )
103 | ) opened-messages)]
104 |
105 | (if (empty? f)
106 | (conj v [who id ""])
107 | v
108 | ))
109 | ) [] opened-messages-deps)
110 | ;; _ (println "\nOPENED MESSAGES\n")
111 | ;; _ (clojure.pprint/pprint opened-messages)
112 | ;; _ (println "\nOPENED MESSAGES-DEPS\n")
113 | ;; _ (clojure.pprint/pprint opened-messages-deps)
114 | ;; _ (println "\nOPENED MESSAGES-BIS\n")
115 | ;; _ (clojure.pprint/pprint opened-messages-bis)
116 | opened-messages (if (empty? opened-messages-bis)
117 | opened-messages
118 | (apply conj opened-messages opened-messages-bis))
119 |
120 | ]
121 | (str "digraph {node [rx=5 ry=5 labelStyle=\"font: 300 14px Helvetica\"]; edge [labelStyle=\"font: 300 14px Helvetica\" ]; "
122 | highlight-nodes-str
123 | (reduce (fn [s [who id label]] (str s (replace- (name who)) " -> " (replace- (name id)) "[labelType=\"html\" label= \"" label "\"];"))
124 | "" opened-messages)
125 |
126 | "}")
127 | ))
128 |
129 |
130 | ;;example graph format: "digraph {A -> B -> C; B -> D; D -> E;}"
131 | ; node [rx=5 ry=5 labelStyle=\"font: 300 14px 'Helvetica Neue', Helvetica\"]
132 | ; edge [labelStyle=\"font: 300 14px 'Helvetica Neue', Helvetica\"]
133 | ;; E [style="fill: #f77; font-weight: bold"];
134 | (defn publish-graph [store system]
135 | (let [graph (graph-dagree store system)]
136 | (request :post url-graph :data {:graph graph})))
137 |
138 | (defn try-to-publish [system]
139 | (let [closed (filter (fn[[_ k]] (= k :closed)) @store)]
140 | (when (= (count closed) (count (filter (fn[[_ k]] (= k :opened)) @store)))
141 | (let [m (reduce (fn [s [m _]] (str s m "\n")) "" @store)]
142 | ; (clojure.pprint/pprint @s)
143 | ; (println "\n-----\n")
144 | (publish-sequence store)
145 | (publish-graph store system)
146 | )
147 | (reset! store []))))
148 |
--------------------------------------------------------------------------------
/resources/public/underscore-min.js:
--------------------------------------------------------------------------------
1 | (function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.4";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2),e=w.isFunction(t);return w.map(n,function(n){return(e?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t,r){return w.isEmpty(t)?r?null:[]:w[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.findWhere=function(n,t){return w.where(n,t,!0)},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var k=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=k(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.indexi;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i},w.bind=function(n,t){if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));var r=o.call(arguments,2);return function(){return n.apply(t,r.concat(o.call(arguments)))}},w.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},w.bindAll=function(n){var t=o.call(arguments,1);return 0===t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var I=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=I(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&I(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return I(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),"function"!=typeof/./&&(w.isFunction=function(n){return"function"==typeof n}),w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return n===void 0},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var M={escape:{"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}};M.unescape=w.invert(M.escape);var S={escape:RegExp("["+w.keys(M.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(M.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(S[n],function(t){return M[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),D.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=++N+"";return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var T=/(.)^/,q={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},B=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){var e;r=w.defaults({},r,w.templateSettings);var u=RegExp([(r.escape||T).source,(r.interpolate||T).source,(r.evaluate||T).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(B,function(n){return"\\"+q[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,w);var c=function(n){return e.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},w.chain=function(n){return w(n).chain()};var D=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],D.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
--------------------------------------------------------------------------------
/resources/public/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
--------------------------------------------------------------------------------
/resources/public/underscore-min.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["root","this","previousUnderscore","_","ArrayProto","Array","prototype","ObjProto","Object","FuncProto","Function","push","slice","concat","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","keys","nativeBind","bind","obj","_wrapped","exports","module","VERSION","createCallback","func","context","argCount","value","call","other","index","collection","accumulator","apply","arguments","iteratee","identity","isFunction","isObject","matches","property","each","forEach","i","length","map","collect","currentKey","results","reduceError","reduce","foldl","inject","memo","TypeError","reduceRight","foldr","find","detect","predicate","result","some","list","filter","select","reject","negate","every","all","any","contains","include","target","values","indexOf","invoke","method","args","isFunc","pluck","key","where","attrs","findWhere","max","computed","Infinity","lastComputed","min","shuffle","rand","set","shuffled","random","sample","n","guard","Math","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","has","indexBy","countBy","sortedIndex","array","low","high","mid","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","output","isArguments","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","item","j","zip","object","lastIndexOf","from","idx","range","start","stop","step","ceil","Ctor","bound","self","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","pairs","invert","functions","methods","names","extend","source","prop","pick","omit","String","defaults","clone","tap","interceptor","eq","aStack","bStack","className","aCtor","constructor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","isFinite","isNaN","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","pair","accum","floor","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","matcher","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","define","amd"],"mappings":"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"}
--------------------------------------------------------------------------------
/resources/public/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.1",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.1",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})
7 | })}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
--------------------------------------------------------------------------------
/resources/public/sequence-diagram-min.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"build/sequence-diagram-min.js","sources":["build/diagram-grammar.js","src/jquery-plugin.js","fonts/daniel/daniel_700.font.js","src/sequence-diagram.js"],"names":["Diagram","this","title","undefined","actors","signals","ParseError","message","hash","_","extend","name","prototype","getActor","alias","s","exec","trim","replace","i","push","Actor","length","setTitle","addSignal","signal","index","Signal","actorA","signaltype","actorB","type","linetype","arrowtype","isSelf","Note","actor","placement","hasManyActors","Error","isArray","LINETYPE","SOLID","DOTTED","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","grammar","Parser","yy","parser","trace","symbols_","error","start","document","EOF","line","statement","NL","participant","note_statement","note","over","actor_pair",",","left_of","right_of","ACTOR","LINE","DOTLINE","ARROW","OPENARROW","MESSAGE","$accept","$end","terminals_",2,5,8,9,13,15,17,19,20,21,23,26,27,28,29,30,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","$0","$","substring","table",3,4,1,6,7,10,11,12,14,22,24,16,25,18,"defaultActions",36,"parseError","str","recoverable","parse","input","lex","token","self","lexer","stack","vstack","lstack","recovering","TERROR","setInput","yylloc","yyloc","ranges","options","Object","getPrototypeOf","symbol","preErrorSymbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","loc","Array","_$","first_line","last_line","first_column","last_column","range","call","slice","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","k","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","Math","abs","pushState","stateStackSize","case-insensitive","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","require","exports","apply","arguments","main","args","console","log","process","exit","source","readFileSync","normalize","module","argv","jQuery","fn","sequenceDiagram","each","$this","diagram","html","drawSVG","Raphael","registerFont","w","face","font-family","font-weight","font-stretch","units-per-em","panose-1","ascent","descent","x-height","bbox","underline-thickness","underline-position","unicode-range","glyphs"," ","\t","!","d","\"","#","%","&","'","(",")","*","+","-",".","/","0",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","`","a","b","e","f","g","h","j","l","m","o","q","t","u","v","x","y","z","{","|","}","~","Ä","Å","Ç","É","Ñ","Ö","Ü","á","à","â","ä","ã","å","ç","é","è","ê","ë","í","ì","î","ï","ñ","ó","ò","ô","ö","õ","ú","ù","û","ü","†","°","¢","£","§","•","¶","ß","®","©","™","´","¨","≠","Æ","Ø","∞","±","≤","≥","¥","µ","∂","∑","∏","π","∫","ª","º","Ω","æ","ø","¿","¡","¬","√","ƒ","≈","∆","«","»","…"," ","À","Ã","Õ","Œ","œ","–","—","“","”","‘","’","÷","◊","ÿ","Ÿ","⁄","¤","€","‹","›","","","‡","∙","‚","„","‰","Â","Ê","Á","Ë","È","Í","Î","Ï","Ì","Ó","Ô","","Ò","Ú","Û","Ù","ı","ˆ","˜","¯","˘","˙","˚","¸","˝","˛","ˇ","\r","AssertException","assert","exp","getCenterX","box","width","getCenterY","height","DIAGRAM_MARGIN","ACTOR_MARGIN","ACTOR_PADDING","SIGNAL_MARGIN","SIGNAL_PADDING","NOTE_MARGIN","NOTE_PADDING","NOTE_OVERLAP","TITLE_MARGIN","TITLE_PADDING","SELF_SIGNAL_WIDTH","stroke","stroke-width","RECT","fill","toString","String","x1","y1","x2","y2","all","isFinite","path","wobble","sqrt","r1","random","r2","xfactor","yfactor","p1","p2","text_bbox","font","_obj","print_center","attr","bb","getBBox","remove","handRect","handLine","string","size","letter_spacing","print","dx","dy","matrix","translate","mapPath","BaseTheme","init","_paper","_font","_title","_actors_height","_signals_height","arrow_types","line_types","init_paper","container","init_font","draw_line","draw_rect","rect","draw","layout","title_height","setStart","setSize","draw_title","draw_actors","draw_signals","setFinish","actor_ensure_distance","max","padding_right","distances","paper","text_bb","extra_width","min","actors_x","distance","draw_text_box","offsetY","draw_actor","aX","draw_self_signal","draw_signal","draw_note","draw_text","stroke-dasharray","bX","arrow-end","overlap","toFront","margin","padding","RaphaëlTheme","font-size","HandRaphaëlTheme","getFont","themes","simple","hand","default_options","theme","defaults","drawing"],"mappings":"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"}
--------------------------------------------------------------------------------